Programmiersprache Jasic Janitza electronics GmbH Vor dem Polstück 1 D-35633 Lahnau Support Tel.: (06441) 9642-22 Fax (06441) 9642-30 e-mail: info@janitza.de Internet: http://www.janitza.de Stand vom 17.07.
Inhaltsverzeichnis Programmiersprache Jasic.......................................................................................................... 3 Einleitung ................................................................................................................................... 3 Was ist JASIC ........................................................................................................................ 3 Jasic Konzept.................................................................
Jasic-Hilfe DRAW_BARGRAPH.............................................................................................................. 30 DRAW_GRAPH ...................................................................................................................... 32 DRAW_HWW ......................................................................................................................... 36 DRAW_REC..................................................................................................
Inhaltsverzeichnis INIT_REC ................................................................................................................................ 80 INIT_RECGRAPH................................................................................................................... 82 Input ......................................................................................................................................... 83 Image_To_File ...........................................................
Jasic-Hilfe Pos: ..................................................................................................................................... 115 Strcmp: ............................................................................................................................... 115 ASC: ................................................................................................................................... 115 CUT:........................................................................
Programmiersprache Jasic ® Janitza electronics GmbH Vor dem Polstück 1 D-35633 Lahnau Support Tel.: (06441) 9642-22 Fax (06441) 9642-30 e-mail: info@janitza.de Internet: http://www.janitza.de Stand vom 17.07.
Programmiersprache Jasic Einleitung Was ist JASIC JASIC ist eine spezielle Programmiersprache/Scriptsprache für die neueste Generation von universal einsetzbaren Messgeräten der Firma "Janitza electronics GmbH". Die Programmiersprache orientiert sich an Basic, was die Einarbeitung für viele Anwender vereinfacht.
Jasic-Hilfe Jasic Konzept Variablen Die Variablen eines Jasic Programms lassen sich in folgende Gruppen einteilen: Lokale Variablen, Stringvariablen, Arrayvariablen, Autosave Variablen, Globale Variablen und Systemvariablen. Lokale Variablen Sie sind die einfachste Form einer Variable. Jasic interpretiert alle ihm unbekannten Ausdrücke als lokale Variable vom Typ double. Es ist also nicht nötig eine Variable vor zu definieren wie zum Bsp. in C/C++ oder Pascal.
Programmiersprache Jasic Syntax: dim Variablenname [intnumber] Syntax: dim Stringvariablenname$ [intnumber] Arrayvariablen werden mit DIM deklariert. Die Elemente des Arrays sind immer vom Typ double oder vom Typ string. Die Größe des Arrays muss immer fest angegeben werden. Das Array kann nur eindimensional sein. Der Zugriff auf ein Element des Arrays erfolgt mit: Variablenname[index] bzw.
Jasic-Hilfe goto loop1 Siehe AUTOSAVE Globale Variablen Syntax: GLOBAL (Typ,Name,Initvalue,ModbusAdr,Einheit/Bezeichnung, Autosave) Die global Deklaration dient zum Bereitstellen von Variablen über die JASICProgrammgrenzen hinweg. Der Name muss wie eine Systemvariable mit einem Unterstrich beginnen. Nachdem die Variable so deklariert ist, kann Sie von allen JASIC Programmen wie eine normale Systemvariable verwendet werden.
Programmiersprache Jasic Aufzeichnungen Bei einer Aufzeichnung werden ein oder mehrere beliebige Messwerte, globale oder lokale JASIC Variablen periodisch erfasst und gespeichert. Es ist möglich, einzelne spezielle Messwerte, oder den Mittelwert der Messwerte (in einer Periode) zu speichern. Zusätzlich zu dem Mittelwert können auch der Maximalwert und der Minimalwert innerhalb der Periode gespeichert werden. Das UMG 604 kann bis zu 16 Aufzeichnungen parallel verarbeiten.
Jasic-Hilfe INIT_REC initialisiert eine Aufzeichnung. Durch einen Aufruf von INIT_REC bei einer schon laufenden Aufzeichnung werden alle Daten seit dem letzten Speichern verworfen. Auch der Startzeitpunkt wird auf den aktuellen Zeitpunkt gesetzt (wichtig für die Aufzeichnung von Samples und gesetztem FLG_CLOSETIME). DO_REC führt selbsttätig alle nötigen Operationen (AVG_REC und SAVE_REC) einer laufenden Aufzeichnung aus. Die Periode muss für diese Art von Aufzeichnungen immer größer gleich 1 Sekunde sein.
Programmiersprache Jasic Systemfunktionen Die Systemfunktionen stellen dem Anwender speziell auf das Gerät abgestimmte Funktionen zur Verfügung, die den Sprachumfang gegenüber einem "normalen" Basic stark erweitert. Mit den DRAW_XXX Funktionen können Beispielsweise direkt graphische Darstellungen von Messwerten, Aufzeichnungen, Transienten, usw erzeugt werden, ohne sämtliche Linien, Punkte und Textausgaben "von Hand" zu programmieren. Die Systemfunktionen werden mit dem "call" Befehl aufgerufen.
Jasic-Hilfe DRAW_WAVE Erzeugt eine Grafik mit der aktuellen Wellenform eines Messwertes (Strom oder Spannung) einer Phase. EDIT_ADDR Ermöglicht die Eingabe eines Zahlenwertes in den linken 4 Stellen des Displays EDIT_CONTENT Ermöglicht die Eingabe eines Zahlenwertes in den rechten 4 Stellen des Displays EMAX Führt die zyklische Emax-Berechnung aus (optional) EMAX_INIT Initialisiert die EMax Funktion (optional) EMAX_RESET Setzt den Messzyklus incl.
Programmiersprache Jasic INFO_TRANS Liefert die Detailinformationen zu einer Transiente. INIT_REC Dieser Befehl initialisiert eine Aufzeichnung. INIT_RECGRAPH Diese Funktion initialisiert einen Messwertverlauf. OPENDIR Öffnet ein Verzeichnis zum Lesen. READ_MODBUS_485 Mit dieser Funktion können Daten aus einem Modbusgerät ausgelesen werden, welches über RS484 angeschlossen ist.
Jasic-Hilfe STOP_JASIC Beendet ein JASIC-Programm UPDATE_RECGRAPH Diese Funktion aktualisiert einen Messwertverlauf. WRITE_MODBUS_485 Mit dieser Funktion können Daten in ein Modbusgerät geschrieben werden welches über RS484 angeschlossen ist. WRITE_MODBUS_UDP Mit dieser Funktion können Daten in ein Modbusgerät geschrieben werden welches über Ethernet (UDP) angeschlossen ist.
Programmiersprache Jasic Die Verzeichnisse und Namen der JASIC-Dateien Das UMG-604 unterstützt das FTP-Protokoll. Somit kann der Benutzer die Dateien mit einem entsprechendem Programm direkt auf das Gerät übertragen oder von dem Gerät herunterladen. Alle JASIC-Programm Dateien sind durch die Endung ".jas" gekennzeichnet. Die Benutzerprogramme werden im Verzeichnis "/JASIC" gespeichert und müssen "PRG1.JAS" - "PRG7.JAS" genannt werden.
Jasic-Hilfe Graphische Funktionen Mit diesen Funktionen kann direkt der grafische Zeichenbereich bearbeitet werden. Jedes JASIC Programm besitzt einen eigenen Zeichenbereich. Der grafische Zeichenbereich ist ein virtuelles Display mit einer Größe von 320 * 240 Punkten und 256 Farben. Der Zeichenbreich kann für die Erzeugung von Bitmap-Dateien genutzt werden. Diese eignen sich wiederum hervorragend für die Homepage des Gerätes.
Programmiersprache Jasic Befehlsübersicht Hier eine Übersicht über die Standardbefehle sowie der dazugehörigen Syntax: Befehl Syntax AddRecord ADDRECORD recordname = (Typ,Name,Einheit/Bezeichnung)(...
Jasic-Hilfe Befehle If then else If Ausdruck then Anweisungen else Anweisungen endif Input Input #device recordvariable Lable Labelname: OnError OnError Subfunktionsname OnKey OnKey Subfunktionsname Open Open parameter(record) AS #devicenummer Operatoren = ( ) + - * / ^ < > == <> >= <= Print print #device string / print #device variable Record RECORD recordname! = (Typ,Name,Einheit/Bezeichnung)(...) Rem REM Kommentar Sleep sleep math.
Programmiersprache Jasic Befehle ADDRECORD Syntax: ADDRECORD recordname = (Typ,Name,Einheit/Bezeichnung)(...) Da sich eine Recorddeklaration nicht über mehrere Programmzeilen erstrecken kann, wird im Falle komplexer Recordstrukturen die Lesbarkeit und Wartbarkeit des Jasic-Programmes durch Verwendung des Befehls Addrecord verbessert. Der Recordname muss schon vor der Benutzung von ADDRECORD mit dem Befehl RECORD definiert worden sein.
Jasic-Hilfe Autosave Syntax: AUTOSAVE (Name,initvalue) Syntax: AUTOSAVE (Name[0..n], initvalue_0, initvalue_1, .. , initvalue_n) Mit der "AUTOSAVE" Deklaration kann eine Variable oder ein Array von Variablen angelegt werden. Die "autosave" Variablen werden alle 90 Sekunden auf der Flashdisk gespeichert. Bei einem Systemneustart werden die Variablen und deren letzter Wert von der Flashdisk geladen.
Programmiersprache Jasic AVG_REC Diese Systemfunktion berechnet die Min/Max und Durchschnittswerte für eine Aufzeichnung. Mit dieser Funktion kann der Zeitpunkt der Mittelwertberechnung selbst gewählt werden. Falls das Flag "1" (Messwert speichern) gesetzt ist, wird der aktuelle Messwert für die Speicherung vorgemerkt. Recorddefinition siehe Aufzeichnungen Beispiel: record rec3 = (int,error) (string,name$) (int,maxtime) (int,flags)(system,_ULN[0..3])(system,_IL[0..3]) rec3.name$="recSpannung_3_3" rec3.
Jasic-Hilfe Call Syntax: Call Funktionsname parameter(record) Mit diesem Befehl werden Systemfunktionen aufgerufen. Den Systemfunktionen wird als Parameter genau eine auf die Funktion abgestimmte Recordstruktur übergeben. Eine Auflistung der Systemfunktionen, sowie die Definition des jeweiligen Records finden Sie unter dem Punkt Systemfunktionen. Als Beispiel ein Programm, welches die Wellenform der Spannung und des Stromes in L1 als Bitmap-Datei erzeugt.
Programmiersprache Jasic Close Syntax: Close #devicenummer Dieser Befehl schließt eine vorhandene Verbindung zu einem Device. Siehe auch: Open, Input, Print record print_rec = (int,Error)(char,data[0..4]) record input_rec = (int,Error)(char,data[0..3]) record deviceUDP = (string,type$)(int,Error)(int,port)(string,ip$) deviceUDP.Type$ = "UDP" deviceUDP.port = 502 deviceUDP.IP$ = "192.168.2.143" open deviceUDP AS #1 print.data[0] = 4 print.data[1] = 0 print.data[2] = 0 print.data[3] = 0 print.
Jasic-Hilfe Clr_Error Syntax: Clr_Error Jedes JASIC Programm hat eine spezielle Fehlervariable ("ERROR"), in welcher ein aufgetretener Fehler gespeichert wird. Sofern eine OnError Subroutine definiert ist, kann in dieser Funktion die Fehlervariable wieder zurückgesetzt werden. Falls ein Fehler auftritt und er nicht in der mit OnError definierten Subroutine zurückgesetzt wird, wird das JASIC Programm beendet, und der aufgetretene Fehler wird in der Log-Datei gespeichert.
Programmiersprache Jasic 23
Jasic-Hilfe Clear_LCD Syntax: Clear_LCD Mit dieser Funktion wird die aktuelle LCD-Anzeige gelöscht. Die Ansteuerung des Displays sollte immer nur aus einem JASIC Programm heraus erfolgen, da alle Programme parallel verarbeitet werden und nur ein Display existiert. Aus diesem Grund wurde für die Ansteuerung des Displays festgelegt, dass sie nur aus dem Programm "/sys/config/DISPLAY.jas" heraus erfolgen soll.
Programmiersprache Jasic Clearimage Syntax: Clearimage oder: Clearimage (color) Mit dieser Funktion kann der aktuelle Zeichenbereich gelöscht werden (siehe auch Graphische Funktionen). Falls eine Farbe mit dem Parameter "color" übergeben wird, wird der Zeichenbereich mit dieser Farbe gefüllt. Jedes JASIC Programm verfügt über genau einen eigenen Zeichenbereich.
Jasic-Hilfe Color Syntax: Color (WertR,WertG,WertB) Diese Funktion berechnet aus dem übergebenen RGB Wert einen Farbwert. Dieser kann dann in den Funktionen SetPenColor und SetTextColor verwendet werden. Der Farbwert wird anhand einer Farbtabelle erstellt. Für das UMG604 stehen 255 Farben zur Verfügung. Für das UMG511 stehen 511 Farben zur Verfügung.
Programmiersprache Jasic DIM Syntax: dim Variablenname [intnumber] Syntax: dim Stringvariablenname$ [intnumber] DIM deklariert ein Array von Variablen. Die Elemente des Arrays sind immer vom Typ double oder vom Typ string. Die Größe des Arrays muss immer fest angegeben werden. Das Array kann nur eindimensional sein. Der Zugriff auf ein Element des Arrays erfolgt mit : Variablenname[index] bzw.
Jasic-Hilfe DO_REC Diese Funktion übernimmt alle Aufgaben, die bei einer Aufzeichnung zyklisch ausgeführt werden müssen. Die Funktion überprüft, ob die Min/Max sowie die Mittelwerte berechnet werden müssen (siehe AVG_REC), oder ob ein neuer Datensatz der Aufzeichnung gespeichert werden muss. Das Speichern erfolgt immer, wenn die vergangene Zeit seit dem letzten Speichern größer oder gleich der vorgegebenen Zeitbasis ist (siehe SAVE_REC).
Programmiersprache Jasic wait(msync) call do_rec rec1 call do_rec rec2 call do_rec rec3 call do_rec rec4 goto lb_do_rec siehe auch INIT_REC, AVG_REC, SAVE_REC 29
Jasic-Hilfe DRAW_BARGRAPH Erzeugt ein Balkendiagramm mit den übergebenen Werten. Syntax: record rec = (int,error) (string,title$) (string,unit$) (string,xlabel$)(string,legende$) addrecord rec = (int,data_cnt) (short,color) (float,min) (float,max) (float,startpos) addrecord rec = (float,data1[0..
Programmiersprache Jasic loop1: wait (msync) max=0.01 for i=1 to 49 do bargraphHarm.data1[i]=_fft_ul1[i]/_fft_ul1[0]*100 if (bargraphHarm.data1[i] > max) then max = bargraphHarm.data1[i]; endif if ((i>16)and(bargraphHarm.data1[i]>=schwelle)) then schwelle = schwelle + 0.1; endif sm = 1; next i bargraphHarm.xlabel$="Ordnung 2 - 50" bargraphHarm.title$="Harmon. U1 (rel)" bargraphHarm.legende$="Uln1" bargraphHarm.unit$[0]="%" bargraphHarm.min = 0; bargraphHarm.max = max; bargraphHarm.
Jasic-Hilfe DRAW_GRAPH Erzeugt ein Diagramm aus den übergebenen Werten. Das Diagramm kann maximal 2 Messgrößen verarbeiten. Insgesamt können bis zu acht Messwerte gezeichnet werden. Jeder Messwert kann in einer eigenen Farbe dargestellt werden. Pro Messwert können maximal 1024 Werte übergeben werden. Die Graphik wird auf eine Breite von 270 Punkte skaliert.
Programmiersprache Jasic addrecord graph = (int,data_cnt[0..7]) (short,data_unit[0..7]) (short,color[0..7]) addrecord graph = (float,data1[0..269]) (float,data2[0..269]) (float,data3[0..269])(float,data4[0..269]) addrecord graph = (float,data5[0..269]) (float,data6[0..269]) (float,data7[0..269])(float,data8[0..269]) graph.title$="UMG - Schreiber" graph.unit$[0]="V" graph.unit$[1]="A" graph.xlabel$[0]="Test" graph.legende$[0]="Uln1" graph.legende$[1]="Uln2" graph.legende$[2]="Uln3" graph.
Jasic-Hilfe graph.data_unit[6] = 1; j = 0; graph.data1[j]=_uln[0] graph.data2[j]=_uln[1] graph.data3[j]=_uln[2] graph.data4[j]=_uln[3] graph.data5[j]=_il[0] graph.data6[j]=_il[1] graph.data7[j]=_il[2] loop1: wait (msync) if (j<134) then j = j + 1; else for i=1 to j do graph.data1[i-1]=graph.data1[i] graph.data2[i-1]=graph.data2[i] graph.data3[i-1]=graph.data3[i] graph.data4[i-1]=graph.data4[i] graph.data5[i-1]=graph.data5[i] graph.data6[i-1]=graph.data6[i] graph.data7[i-1]=graph.data7[i] next i endif graph.
Programmiersprache Jasic graph.data_cnt[0]=j+1; graph.data_cnt[1]=j+1; graph.data_cnt[2]=j+1; graph.data_cnt[3]=j+1; graph.data_cnt[4]=j+1; graph.data_cnt[5]=j+1; graph.
Jasic-Hilfe DRAW_HWW Erzeugt eine Grafik einer aufgezeichneten HWW Messung. Der Wert von HWWNummer gibt die Nummer der zu zeichnenden HWW Messung an. Es werden die letzten 32 Messungen gespeichert, wobei die Messung 0 die Neueste ist. Syntax: record rec = (int,error) (int,HWWNummer) call DRAW_HWW rec error : Dieser Wert sollte vor der Ausführung 0 sein und enthält nach korrekter Ausführung 0 und einen negativen Wert, falls ein Fehler aufgetreten ist.
Programmiersprache Jasic DRAW_REC Erzeugt eine Grafik aus Aufzeichnungsdaten. Syntax des Records: record rec = (int,error) (string,Titel$) (int,Zeitbasis) (int,StartZeit) (int,Grafiktyp) (int, count) addrecord rec = (string,Name1$) (short,Farbe1) (string,Name2$) (short,Farbe2)...
Jasic-Hilfe rec.name$="recSpannung600_3" rec.maxtime=600 rec.flags=14 call init_rec rec rec_draw.Titel$ = "recSpannung600_3"; rec_draw.StartZeit = systime(localtime)-(280*600); rec_draw.Grafiktyp = 1; rec_draw.Zeitbasis = 600; rec_draw.count = 4; rec_draw.Name1$ = "_ULN[0]"; rec_draw.farbe1 = CL_RED rec_draw.Name2$ = "_ULN[1]"; rec_draw.farbe2 = CL_BLUE rec_draw.Name3$ = "_ULN[2]"; rec_draw.farbe3 = CL_GREEN rec_draw.Name4$ = "_ULN[3]"; rec_draw.
Programmiersprache Jasic DRAW_RECGRAPH Stellt den aktuellen Verlauf von bis zu bis zu 8 Messwerten dar. Bevor die Werte dargestellt werden können, muss die Darstellung erst mit Init_RecGraph (siehe Beispiel) initialisiert werden. Syntax des Records: record graphrec = (int,error) (string,title$) (string,unit$[0..1]) (string,xlabel$[0..1])(string,legende$[0..7]) addrecord graphrec = (short,data_unit[0..7]) (short,color[0..7]) (system,_value1) (system,_value2)...
Jasic-Hilfe graphrec.legende$[1]="Il1_AVG" graphrec.legende$[2]="Il1_FFT" graphrec.color[0] = CL_BLUE graphrec.color[1] = CL_YELLOW graphrec.color[2] = CL_GREEN graphrec.data_unit[0] = 0; graphrec.data_unit[1] = 0; graphrec.data_unit[2] = 0; call init_recgraph graphrec count = 0 loop1: wait (tsec) count = count +1 call update_recgraph graphrec ClearImage call draw_recgraph graphrec if count > 120 then Image_to_File("/html/strom.
Programmiersprache Jasic Draw_Rect Syntax: Draw_Rect X1,Y1,X2,Y2 Diese Funktion zeichnet ein Rechteck auf dem Zeichenbereich. X1, Y1 und X2,Y2 geben zwei sich gegenüberliegende Ecken (z.B.: links oben und rechts unten) des Rechteckes an. Die Farbe des Rechteckes kann mit SetPenColor festgelegt werden.
Jasic-Hilfe DRAW_TRANS Erzeugt eine Grafik einer aufgezeichneten Transiente. Der Wert von TransNummer gibt die Nummer der zu zeichnenden Transiente an. Es werden die letzten 128 Transienten gespeichert. Wobei die Transiente 0 die neueste ist.
Programmiersprache Jasic data$ = data$ , format("Transiente %f.0 vom ",i+1),info.time$,"\r\n" clearimage call draw_trans info image_to_file ("/html/trans.bmp") mail.dir1$="/html/trans.bmp" mail.
Jasic-Hilfe DRAW_WAVE Erzeugt eine Grafik mit der aktuellen Wellenform eines oder mehreren Messwerten (Strom oder Spannung). Syntax: record rec = (int,error) (int,value) call DRAW_WAVE rec Die Parameter der Recordstruktur haben folgende Bedeutung: error : Dieser Wert sollte vor der Ausführung 0 sein und enthält nach korrekter Ausführung 0 und einen negativen Wert, falls ein Fehler aufgetreten ist. Der Wert für den Parameter "value" ergibt sich aus der Addition der unten aufgeführten Konstanten.
Programmiersprache Jasic EDIT_ADDR Editierfunktion am Display für die linken 4 Stellen des 8stelligen Zahlenbereiches. Das Symbol "Addr" wird eingeschaltet und die linken 4 Stellen mit dem Wert von "value" initialisiert. Syntax: record rec = (int,error) (float, value) (float, min) (float, max) call EDIT_ADDR rec Der Wert von "value" kann dann mit der Tastatur in den Grenzen von „min“ bis “max“ bearbeitet werden.
Jasic-Hilfe EDIT_CONTENT Editierfunktion am Display für die rechten 4 Stellen des 8stelligen Zahlenbereiches. Das Symbol "content" wird eingeschaltet und die rechten 4 Stellen mit dem Wert von "value" initialisiert; Syntax: record rec = (int,error) (float, value) (float, min) (float, max) call EDIT_CONTENT rec Der Wert von "value" kann dann mit der Tastatur in den Grenzen von „min“ bis “max“ bearbeitet werden.
Programmiersprache Jasic EMAX (optional) EMax ist eine Systemfunktion zur Abschaltung von Verbrauchern, um eine Leistungsvorgabe innerhalb einer gegebenen Periode (Zeit) einzuhalten. Die Konfiguration der Verbraucher und weiterer Parameter erfolgt über Systemvariablen. Alle berechneten Werte (z.B. Trendwert) liegen in Systemvariablen ab. Die Weiterverarbeitung der Schaltausgänge muss durch ein JASIC-Programm erfolgen oder wird durch externe Schaltmodule (via Feldbus) vom Gerät gepollt.
Jasic-Hilfe _emax_trend: Enthält den Trendwert der aktuellen EMAX-Messperiode _emax_c_trend: Enthält den korregierten Trendwert der aktuellen EMAX-Messperiode. Bei diesem Wert werden die Verbraucher schon mit eingerechnet. Einstellen digitaler Verbraucher _emax_d_status[MAX_DIG_CH] Enthält den Status des Verbrauchers, 1 falls Verbraucher aktiv ist. _emax_d_active[MAX_DIG_CH]: Wenn der Verbraucher als aktiv gekennzeichnet ist, wird der Verbraucher in die EmaxBerechnung mit einbezogen.
Programmiersprache Jasic 1. Selten benutzte Verbraucher: ca. 10% 2. Häufig benutzte Verbraucher: max. 85% Einstellen analoger Verbraucher _emax_a_status[MAX_ANA_CH] Enthält den Wert 0..100 falls Verbraucher aktiv ist. _emax_a_active[MAX_ANA_CH]: Wenn der Verbraucher als aktiv gekennzeichnet ist. wird der Verbraucher in die EmaxBerechnung mit einbezogen. _emax_a_desc[MAX_ANA_CH]: Beschreibung Hier kann dem Verbraucher eine kurze Beschreibung (maximal 32 Zeichen) zugewiesen werden.
Jasic-Hilfe EMAX_INIT (optional) Initialisierung der Emax Funktion. Diese Funktion muß aufgerufen werden bevor Emax genutzt werden kann.
Programmiersprache Jasic EMAX_RESET (optional) Emax-Rücksetzung: Initialisiert eine neue Emax-Periode und berechnet die Monatshöchstwerte neu. Wird in durch die Funktion "EMAX" automatisch aufgerufen , wenn die Periode abgelaufen ist, kann aber auch durch ein JASIC-Programm aufgerufen werden (z.B.
Jasic-Hilfe EXISTS Syntax: exists (Variablenname) Exists überprüft, ob eine Variable mit dem Namen Variablenname schon deklariert oder benutzt wurde. Die Funktion liefert 0 oder 1 zurück. Exists eignet sich besonders für die Abfragen, ob bestimmte Environment Variablen bei einer HTML-Anfrage gesetzt wurden.
Programmiersprache Jasic Exit Syntax: Exit Mit dieser Funktion kann das JASIC-Programm beendet werden. Beispiel: ... if a
Jasic-Hilfe Fill_Rect Syntax: Fill_Rect X1,Y1,X2,Y2 Diese Funktion zeichnet ein gefülltes Rechteck auf dem Display. X1, Y1 und X2,Y2 geben zwei sich gegenüberliegende Ecken (z.B.: links oben und rechts unten) des Rechteckes an. Die Farbe des Rechteckes kann mit SetPenColor festgelegt werden.
Programmiersprache Jasic For Schleife Syntax: For i=1 to 10 (step 1) do Anweisungen next i Mit diesem Befehl kann ein Programmteil mehrfach durchlaufen werden. Dafür wird eine Laufvariable definiert (hier i). Der Programmteil wird so oft durchlaufen bis die Laufvariable den Wert erreicht hat welcher nach 'to' oder 'downto' angegeben ist. Die Laufvariable wird standardmäßig um 1 erhöht (bei 'to') bzw. um 1 erniedrigt (bei 'downto').
Jasic-Hilfe Format Syntax: format (''formatstring'',variable) Die Formatfunktion kann genau eine Variable in einem vorgegebenen Format ausgeben, bzw. in den Formatstring einbetten. Zudem kann genau ein String in den Formatstring eingefügt werden. Bsp.1: print #log format("Zahl: 0x%x",18) Ergebnis in der Log-Datei: Zahl: 0x12 Bsp.2: print #log format(" _ctprim[2] = %4.3f ",ctprim[2]) Ergebnis in der Log-Datei: _ctprim[2] = 100.
Programmiersprache Jasic GET_HWW_DATA Liefert die Werte einer aufgezeichneten HWW Messung. Das UMG604 liefert bei einer HWW Messung eine konfigurierbare Anzahl von Vollwelleneffektivwerte. Syntax: record rec = (int,error) (int,HWWNummer) (int,Anzahl) (float,werte[0..
Jasic-Hilfe loop1: hww_info.HWWNummer = 1 hww_data.HWWNummer = 1 call info_hww hww_info graph.xlabel$[0]=hww_info.EvtText$ call get_hww_data hww_data clearimage color(160,160,160) for i=0 to 269 do wert = hww_data.werte[i*4] + hww_data.werte[(i*4) + 1] + hww_data.werte[(i*4)+2]+ hww_data.werte[(i*4)+3] wert = wert / 4 graph.data1[i] = wert next i graph.
Programmiersprache Jasic GET_REC_DATA Liefert die Daten aus einer Aufzeichnung. Syntax: record recd = (int,error) (string,VarName$) (int,Zeitbasis) (int,StartZeit) (int,DatenAnzahl) (int,Read) (double,Time[0..n]) (float,Daten[0..n]) record recd = (int,error) (string,VarName$) (string,Aufzeichnung$) (int,StartZeit) (int,DatenAnzahl) (int,Read) (double,Time[0..n]) (float,Daten[0..
Jasic-Hilfe graph.data_cnt[0] = 280; graph.color[0] = CL_BLUE; graph.data_unit[0] = 0; rec_data.VarName$ = "_uln[0]" rec_data.Zeitbasis = 600 rec_data.Startzeit = SYSTIME(LOCALTIME) - (600*280) rec_data.count = 280 loop1: call get_rec_data rec_data wait (msync) for i=0 to (rec_data.read-1) do graph.data1[i]=rec_data.data[i] next i clearimage color(160,160,160) call draw_graph graph Image_to_file loop1: call get_rec_data rec_data wait (msync) for i=0 to 279 do graph.data1[i]=rec_data.
Programmiersprache Jasic GET_REC_LIST Liefert alle aktuellen Aufzeichnungen mit Namen, Zeitbasis und Anzahl der Variablen. Syntax: record rec = (int,error) (int,count) (string,namen$[0..15]) (int,timebase[0..15]) (int,reccount[0..15]) call GET_REC_LIST rec Die Parameter der Recordstruktur haben folgende Bedeutung: error : Dieser Wert sollte vor der Ausführung 0 sein und erhält nach der Ausführung 0 bei korrekter Ausführung der Funktion zurück und einen negativen Wert falls ein Fehler aufgetreten ist.
Jasic-Hilfe TextOut reclist.namen$[i-1] x=170 GotoXY x,y timebase[i-1] = reclist.timebase[i-1]; if (timebase[i-1] >= 60) then timebase[i-1] = timebase[i-1] / 60; if (timebase[i-1] >= 60) then timebase[i-1] = timebase[i-1] / 60 TextOut format("(Time: %.f h)",timebase[i-1]) else TextOut format("(Time: %.f min)",timebase[i-1]) endif else TextOut format("(Time: %.f sec)",timebase[i-1]) endif x=270 GotoXY x,y TextOut format("(C: %.f)",reclist.
Programmiersprache Jasic GET_REC_VARLIST Liefert maximal alle Variablennamen einer aktuellen Aufzeichnung record reclist = (int,error) (string,recname$) (int,count) (string,varname$[0..count-1]) Die Variable "recname$" muß den Namen der Aufzeichnung enthalten. Die Anzahle der zu ermittelnden Variablennamen wird in "count" übergeben. Beispiel: record reclist = (int,error) (int,count) (string,namen$[0..15]) (int,timebase[0..15]) (int,reccount[0..
Jasic-Hilfe GotoXY x,y next i UPDATE_DISP wait (msync) 64
Programmiersprache Jasic GET_TRANS_DATA Liefert die Werte einer aufgezeichneten Transiente einer Phase. Der Wert von TransNummer gibt die Nummer der Transiente an. Es werden die letzten 128 Transienten gespeichert. Wobei die Transiente 0 die Neueste ist. record rec = (int,error) (int,TransNummer) (int,phase) (int,Anzahl) (float,werte[0..n]) Mögliche Werte für den Parameter "phase": 0 = UL1 1 = UL2 2 = UL3 3 = UL4 4 = IL1 5 = IL2 6 = IL3 7 = IL4 Die Funktion versucht das ganze Array "Werte" zu füllen.
Jasic-Hilfe loop1: trans_info.TransNummer = 0 trans_data.TransNummer = 0 call info_trans trans_info trans_data.phase = trans_info.phase t = trans_data.phase+1 graph.legende$[0]=format("Ul%.f",t) graph.xlabel$[0]=trans_info.time$ call get_trans_data trans_data clearimage color(160,160,160) for i=0 to 269 do wert = (trans_data.werte[i*2]) + (trans_data.werte[(i*2) + 1]) wert = wert / 2 graph.data1[i] = wert next i graph.
Programmiersprache Jasic GET_WAVE_DATA Liefert die aktuellen Werte der Wellenform eines Wertes (Strom oder Spannung) Syntax: record rec = (int,error) (int,value) (double,time) (int,Anzahl) (float,werte[0..n]) call GET_WAVE_DATA rec error : Dieser Wert sollte vor der Ausführung 0 sein und enthält nach korrekter Ausführung 0 und einen negativen Wert, falls ein Fehler aufgetreten ist.
Jasic-Hilfe graph.unit$[0]="V" graph.legende$[0]="Ul1" graph.color[0] = CL_BLUE graph.data_unit[0] = 0; graph.data_unit[1] = 1; loop1: wave_data.value = 0 call get_wave_data wave_data time_rec.time = wave_data.time call set_timerec time_rec graph.xlabel$[0] = format("%.0f",time_rec.Tag),format(".%.0f",time_rec.Monat),for mat(".%.0f",time_rec.Jahr),format(" %.0f",time_rec.Stunde),format(":%.0f",time_rec.Minute),format (":%.0f",time_rec.
Programmiersprache Jasic Global Syntax: GLOBAL (Typ,Name,Initvalue,ModbusAdr,Einheit/Bezeichnung,Autosave) Die global Deklaration dient zum Bereitstellen von Variablen über die JASICProgrammgrenzen hinweg. Der Name muss wie eine Systemvariable mit einem Unterstrich beginnen. Nachdem die Variable so deklariert ist, kann sie von allen Jasic Programmen wie eine normale Systemvariable verwendet werden.
Jasic-Hilfe wait(t_sec) REM führe diese Endlosschleife einmal pro Sekunde durch clearimage color(160,160,160) den zeichenbereich REM lösche gotoxy 20,120 Anfangspunkt der Textausgabe REM setze den textout format(" Gesamtlaufzeit: %i",_runtime_counter) REM gebe die aktuelle Gesamtlaufzeit des Gerätes in Minuten aus image_to_file goto loop1 70
Programmiersprache Jasic Goto Syntax: Goto Labelname Das Programm springt zu dem angegebenen Label (Programmpunkt). Das Programm wird von dort ab weiter ausgeführt.
Jasic-Hilfe GotoXY Syntax: GotoXY X,Y Diese Funktion setzt den Textcursor des Zeichenbereiches auf den Punkt (X,Y). Mit der Funktion TextOut kann dann an dieser Stelle ein Text ausgegeben werden.
Programmiersprache Jasic If then else Syntax: If Bedingung then Anweisungen else Anweisungen endif Mit der If-Anweisung kann aufgrund einer Bedingung (dem Ausdruck) in verschiedene Programmteile verzweigt werden. Der ''Elsezweig'' ist optional. Der Ausdruck muss mathematisch auswertbar sein. Sofern die Bedingung erfüllt ist, werden die Anweisungen zwischen ''then'' und ''else'' bzw. ''endif'' ausgeführt.
Jasic-Hilfe INFO_EVENT Liefert die Detailinformationen zu einem Event Syntax: record rec = (int,error) (int,EvtNummer) (string,EvtText$) (double,StartZeit) (double,EndZeit) (float,bound) (float,MaxVal) (float,MinVal) (float,AvgVal) (int,Grund) call INFO_EVT rec Die Parameter der Recordstruktur haben folgende Bedeutung: error : Dieser Wert sollte vor der Ausführung 0 sein und enthält nach korrekter Ausführung 0 und einen negativen Wert, falls ein Fehler aufgetreten ist.
Programmiersprache Jasic UMAX_EVENT 0x00000004 UMIN_EVENT 0x00000400 IMAX_EVENT 0x00040000 UNULL_EVENT 0x04000000 Phase 4 UMAX_EVENT 0x00000008 UMIN_EVENT 0x00000800 IMAX_EVENT 0x00080000 UNULL_EVENT 0x08000000 Beispiel: record evt_info = (int,error) (int,HWWNummer) (string,EvtText$) addrecord evt_info = (double,StartZeit)(double,EndZeit) (float,bound) (float,MaxVal) (float,MinVal) (float,AvgVal) (int,Grund) record graph = (int,error) (string,title$) (string,unit$[0..1]) (string,xlabel$[0..
Jasic-Hilfe graph.xlabel$[0]=evt_info.EvtText$ call get_hww_data hww_data clearimage color(160,160,160) for i=0 to 269 do wert = hww_data.werte[i*4] + hww_data.werte[(i*4) + 1] + hww_data.werte[(i*4)+2]+ hww_data.werte[(i*4)+3] wert = wert / 4 graph.data1[i] = wert next i graph.
Programmiersprache Jasic INFO_HWW Liefert die Detailinformationen zu einer HWW Messung Syntax: record rec = (int,error) (int,HWWNummer) (string,EvtText$) (double,StartZeit) (double,EndZeit) (float,MaxVal) (float,MinVal) (float,AvgVal) (string,filename$) call INFO_HWW rec error : Dieser Wert sollte vor der Ausführung 0 sein und enthält nach korrekter Ausführung 0 und einen negativen Wert, falls ein Fehler aufgetreten ist. Das Gerät speichert immer die letzten 32 HWW Aufzeichnungen.
Jasic-Hilfe INFO_TRANS Liefert die Detailinformationen zu einer aufgezeichneten Transiente. Syntax: record info = (int,error) (int,TransNr) (string,time$) (double, time) (int,phase) (int,mode) addrecord info = (int,flag) (int,pre) (int,data_cnt) (int,s_freq) (string,filename$) call INFO_TRANS info error : Dieser Wert sollte vor der Ausführung 0 sein und enthält nach korrekter Ausführung 0 und einen negativen Wert, falls ein Fehler aufgetreten ist.
Programmiersprache Jasic 79
Jasic-Hilfe INIT_REC Dieser Befehl initialisiert eine Aufzeichnung. Danach können die Funktionen "AVG_REC", "DO_REC" und "SAVE_REC" ausgeführt werden. Recorddefinition siehe Aufzeichnungen Bevor dieser Befehl ausgeführt werden kann muss der Parameter "record" gefüllt werden. Bei einer Aufzeichnung sind das die ersten vier Parameter. Alle weiteren Parameter enthalten die Messwerte, welche aufgezeichnet werden sollen.
Programmiersprache Jasic call do_rec rec1 goto lb_do_rec Siehe auch: Aufzeichnungen, AVG_REC, DO_REC, SAVE_REC 81
Jasic-Hilfe INIT_RECGRAPH Diese Funktion initialisiert einen Messwertverlauf. Einmal angelegt kann der Messwertverlauf kontinuierlich mit UPDATE_RECGRAPH aktualisiert werden. Der aktuelle verlauf kann mit DRAW_RecGraph im Zeichenbereich dargestellt werden. Syntax des Records: record graphrec = (int,error) (string,title$) (string,unit$[0..1]) (string,xlabel$[0..1])(string,legende$[0..7]) addrecord graphrec = (short,data_unit[0..7]) (short,color[0..7]) (system,_value1) (system,_value2)...
Programmiersprache Jasic Input Syntax: record rec = (string,error) (BYTE,data[0..maxdata]) Input #device rec Dieser Befehl empfängt Daten von einem Device. Die Parameter der Recordstruktur haben folgende Bedeutung: error : Dieser Wert sollte vor der Ausführung 0 sein und enthält nach korrekter Ausführung 0 oder einen negativen Wert, falls ein Fehler aufgetreten ist. Danach folgt der Speicher der von der Routine gefüllt wird. Beispiel: record print_rec = (int,Error)(char,data[0..
Jasic-Hilfe Image_To_File Syntax: IMAGE_TO_FILE IMAGE_TO_FILE ("Dateiname") IMAGE_TO_FILE "Dateiname" Mit diesem Befehl wird der aktuelle Zeichenbereich in der Datei "html/disp.bmp" oder in dem optional angegebenen Dateinamen abgespeichert. Diese Bild kann z.B. in die Homepage eingebunden werden.
Programmiersprache Jasic Label Syntax: Labelname: Mit dieser Anweisung wird ein Label gesetzt. Mit dem GOTO-Befehl kann zu diesem Label gesprungen werden.
Jasic-Hilfe LCD_To_File Syntax: LCD_TO_File LCD_TO_File "Dateinamen" LCD_TO_File ("Dateinamen") Mit diesem Befehl wird die aktuelle Anzeige des LCD-Displays in der Datei "html/disp.bmp" abgespeichert. Von dort kann das Bild z.B. in die Homepage eingebunden werden.
Programmiersprache Jasic LineTo Syntax: LineTo X,Y Zeichnet eine Linie von der aktuellen Position aus bis zu dem Punkt (X,Y). Die aktuelle Position kann mit der Funktion MoveTo gesetzt werden oder ist der Endpunkt der zuletzt gezeichneten Linie. Die Farbe der Linie kann mit SetPenColor festgelegt werden.
Jasic-Hilfe MoveTo Syntax: MoveTo X,Y Diese Funktion setzt den Startpunkt einer Linie auf den Punkt (X,Y). Mit der Funktion LineTo kann dann von dieser Stelle aus eine Linie gezeichnet werden.
Programmiersprache Jasic Numerische Operationen Syntax: variable = Wert/Berechnung Für die Berechnung von Werten stehen folgende Operatoren/Operationen zur Verfügung: +, -,*, /, ^, SQRT, ASIN, ACOS, ATAN, SIN, COS, TAN, ATAN2 NOT, AND, OR, FRAC, ROUND, CEIL, FLOOR, 89
Jasic-Hilfe On_Error Syntax: On_Error Subfunktionsname Mit diesem Befehl kann eine Subfunktion festgelegt werden die in einem Fehlerfall angesprungen wird. Zum Beispiel bei einem fehlgeschlagenen OPEN Befehl oder einer Zeitüberschreitung bei einem INPUT. Nach der Ausführung der Fehlerbehandlungsroutine wird das JASIC Programm beendet sofern noch ein ERROR gespeichert ist. Der Error kann in der Variable "ERROR" abgefragt werden Mit der Funktion Clr_Error kann der Fehler zurückgesetzt werden.
Programmiersprache Jasic On_Key Syntax: On_Key Subfunktionsname Die Angegebene Subfunktion wird immer dann angesprungen wenn eine Taste am Display gedrückt wird. Beispiel: sub onkey ...
Jasic-Hilfe Open Syntax: Open parameter(record) AS #devicenummer Dieser Befehl öffnet eine Verbindung zu einem Device. Folgende Devicetypen werden unterstützt: UDP Prameter: Type : UDP (string) Error (int) Port (int) IP-Adresse (string) Siehe auch: Close, Input, Print Beispiel: record deviceUDP = (string,type$)(int,Error)(int,port)(string,ip$) deviceUDP.Type$ = "UDP" deviceUDP.port = 502 deviceUDP.IP$ = "192.168.2.
Programmiersprache Jasic Print Syntax: print Es wird nichts ausgegeben (außer auf dem Standarddevice: dort wird eine Leerzeile ausgegeben) Syntax: print #device string Der String wird auf dem angegebenen device ausgegeben, falls kein device angegeben wurde, wird auf dem Standarddevice ausgegeben. Syntax: print #device string , string... Es können mehrere Strings hintereinander ausgegeben werden, indem diese durch ein Komma getrennt werden. Beendet wird die Ausgabe auf jeden Fall durch das Zeilenende.
Jasic-Hilfe Syntax: print #device record Siehe auch: Open, Input, Close Beispiel (Modbus via UDP): record print_rec = (integer,Error)(char,data[0..4]) record input_rec = (integer,Error)(char,data[0..3]) record deviceUDP = (string,type$)(integer,Error)(integer,port)(string,ip$) deviceUDP.Type$ = "UDP" deviceUDP.port = 502 deviceUDP.IP$ = "192.168.2.143" open deviceUDP AS #1 print_rec.data[0] = 4 print_rec.data[1] = 0 print_rec.data[2] = 0 print_rec.data[3] = 0 print_rec.
Programmiersprache Jasic READ_MODBUS_485 Liest einen Modbusslave (RTU) über die RS485 aus. Syntax: record modbus_rec = (int,error) (String,hostname$) (int,port) (int,addr) (int,fcode) (int,index) (HFLOAT,daten) ...
Jasic-Hilfe READ_MODBUS_UDP Liest einen Modbusslave (Modbus TCP(UDP)) über das Ethernet aus. Syntax: record modbus_rec = (int,error) (String,hostname$) (int,dport) (int,sport) (int,addr) (int,fcode) (int,index) (HFLOAT,daten) ...
Programmiersprache Jasic READ_PBUS Liest den Ausgabebereich der „SPS“ in einen Record ein.
Jasic-Hilfe READDIR Kann die Parameter eines File/Verzeichnis auslesen, sofern das Verzeichnis zum Lesen geöffnet wurde. (siehe OPENDIR). Syntax: record dir = (int,error) (string,dirname$) (int,file_index) (int,dir_index) (int,dir_index1) (int,flag) (int,size) (int,time) (string,name$) call READDIR dir Für jeden Eintrag in dem Verzeichnis (Verzeichnis oder Datei) muss einmal Readdir aufgerufen werden. es wird jeweils der nächste folgende Eintrag zurückgeliefert.
Programmiersprache Jasic Record Syntax: RECORD recordname = (Typ,Name,Einheit/Bezeichnung)(...) Die Recorddeklaration dient zum Bereitstellen von komplexen Datenstrukturen wie z.B. für Systemfunktionnen, Input und Output Funktionen. Für die Erweiterung einer komplexen Datenstruktur steht noch die Funktion AddRecord zur Verfügung.
Jasic-Hilfe 100
Programmiersprache Jasic Rem Syntax: REM Mit dieser Funktion können Kommentare eingefügt werden. Alle Zeichen dieser Zeile welche nach diesem Befehl folgen werden nicht beachtet.
Jasic-Hilfe SAVE_REC Mit dieser Funktion können die errechneten Min-, Max-, Mittelwerte seit des letzten Speicherns und der aktuelle Messwert gespeichert werden. Die Daten werden nur dann gespeichert wenn auch die entsprechenden Flags gesetzt wurden. Mit dem Speichern werden die Min-, Max-, Mittelwerte zurückgesetzt. Um diese Messwerte zu berechnen, muss AVG_REC aufgerufen werden.
Programmiersprache Jasic SENDMAIL Ermöglicht das Versenden einer EMail (sofern eine Zugriffsmöglichkeit auf den EMail-server besteht) Syntax: record mail = (int,error) (string,server$) (int,authmode) (string,user$) (string,password$) (string,mailto$) (string,mailfrom$) (string,subject$) (string,data$) addrecord mail = (int,time) (string,dir1$) call SENDMAIL mail error: 0 wenn die Email erfolgreich versendet wurde mail_server: Hostname oder IP-Adresse des Mailservers authmode: 0 = keine Authentifizierung nö
Jasic-Hilfe mail.user$="UMG604"; mail.password$=""; mail.mailto$="Ihr.Name@XXX.de"; mail.mailfrom$="UMG604@Janitza.de"; mail.subject$="Messdaten UMG604"; data$="Hallo\r\ndiese Testmail Stromwerte \r\nmfg UMG604"; mail.time = 0; mail.dir1$="/html/strom.bmp" mail.data$= data$ for i = 1 to 2 do call sendmail wait (tmin) wait (tmin) next i 104 mail informiert Sie über akt.
Programmiersprache Jasic SET_TIMEREC Zerlegt die übergeben Zeit "time" in Sekunden (seit 1.1.
Jasic-Hilfe FloatFormat Syntax: FloatFormat "C-FormatString" Mit dieser Funktion kann das Standardformat für die Ausgabe von Float-Werten in Print oder TextOut Funktionen verändert werden. Beispiel: Test = 08.17 FloatFormat ("%.0f") Print "Test=",Test Ergebnis : Test=8.
Programmiersprache Jasic SetFont Syntax: SetFont Font Mit dieser Funktion kann die Schriftgröße des auszugebenden Textes definiert werden.
Jasic-Hilfe SetPenColor Syntax: SetPenColor Farbkonstante / color(WertR,WertG,WertB) Mit dieser Funktion kann die Farbe der auszugebenden Linien und Rechtecke definiert werden.
Programmiersprache Jasic 109
Jasic-Hilfe SetSeg Syntax: SETSEG Segment Mit dieser Funktion kann ein Segment auf der LCD Anzeige des UMG604 eingeschaltet werden. Die Anzeige wird erst beim nächsten Aufruf von LCD sichtbar. Danach müssen wieder alle Segmente, die angezeigt werden sollen, erneut gesetzt werden.
Programmiersprache Jasic 24 = SEG_A 25 = SEG_R 26 = SEG_H 27 = SEG_MID 28 = SEG_ADDR 29 = SEG_CONTENT 30 = SEG_RXD 31 = SEG_TXD 32 = SEG_INPUT 33 = SEG_OUTPUT 34 = SEG_L1 35 = SEG_L2 36 = SEG_L3 37 = SEG_L4 38 = SEG_P1 39 = SEG_P2 40 = SEG_P3 41 = SEG_P4 42 = SEG_P5 43 = SEG_P6 44 = SEG_P7 45 = SEG_P8 46 = SEG_P9 47 = SEG_P10 111
Jasic-Hilfe SetTextColor Syntax: SetTextColor Farbkonstante / color(WertR,WertG,WertB) Mit dieser Funktion kann die Farbe des auszugebenden Textes definiert werden.
Programmiersprache Jasic image_to_file Zeichenbereich als BMP-Datei REM Speichere den 113
Jasic-Hilfe Sleep Syntax: sleep math. Ausdruck / wert / variable Mit dieser Funktion kann eine definierte Zeit gewartet werden. Der Wert gibt die Wartezeit in Millisekunden an. Beispiel: sleep(1000) REM wartet genau 1 sec.
Programmiersprache Jasic String Operationen Strlen: Berechnet die Länge von einem String: Syntax: länge = Strlen(string) Beispiel : a=strlen(„Hallo Welt“); b = 4*strlen(test$); Val: Berechnet den Zahlenwert von einem String: Syntax: wert = val (string) Beispiel : a=val(3.1415); test$ = „52.
Jasic-Hilfe Gibt den Asciiwert von einem Buchstaben an einer bestimmten Stelle im String zurück Syntax: a = asc(string,pos) Beispiel : a=asc(„Hallo Andre“,6); rem -> a=65; CUT: Gibt einen Teilstring ab einer bestimmten Position mit einer bestimmten Anzahl Buchstaben zurück Syntax: test$ = cut(string,pos,count) Beispiel: a$=cut(„Hallo Andre“,6,5); rem -> a$=“Andre“; CHAR: Gibt einen Buchstaben von einem bestimmten Asciiwert zurück Syntax: a$ = char(asciiwert) Beispiel : a$=“Ausgabe = “,char(65); rem -> a$=
Programmiersprache Jasic 117
Jasic-Hilfe GOSUB Syntax: GoSub Subfunktionsname Diese Funktion ruft eine Subfunktion auf. Das Programm wird nach der Ausführung der Subfunktion an genau dieser Stelle weiter ausgeführt. Die Ausführung einer Subfunktion ist beendet, falls das Programm den Befehl "endsub" oder "return" ausführt.
Programmiersprache Jasic SUB/ENDSUB Syntax: Sub Subfunktionsname Anweisungen Endsub Zur Verbesserung der Programmstruktur können Unterfunktionen definiert werden. Es gibt aber keine lokalen Variablen. Sobald in der Funktion ein ''return'' aufgerufen wird, wird die Funktion beendet und das Programm wird an der Stelle weiter ausgeführt, an der die Subfunktion gerufen wurde. Wird kein ''return'' aufgerufen, wird bei dem Erreichen von ''EndSub'' automatisch an die Stelle des Aufrufs zurückgesprungen.
Jasic-Hilfe TextOut Syntax: TextOut string , string... Diese Funktion gibt an der aktuellen Textcursor Position den übergebenen Text aus. Für die Parameter gelten die gleichen Regeln wie bei der Print-Anweisung, allerdings ohne Deviceangabe. Die Position des Textcursors kann mit der Funktion GotoXY gesetzt werden, oder es wird die Position hinter der letzten Textausgabe benutzt. Die Farbe des Textes kann mit SetTextColor festgelegt werden. Die Schriftart des Textes kann mit SetFont festgelegt werden.
Programmiersprache Jasic Update_LCD Syntax: Update_LCD Mit dieser Funktion wird das LCD-Display aktualisiert. Alle gesetzten Segmente, sowie der mit "Print #LCD" geschriebene Text (auf der 7 Segmentanzeige) werden ausgegeben. Alle gesetzten Segmente, sowie der Text werden gelöscht und müssen vor dem nächsten Update wieder gesetzt bzw. geschrieben werden.
Jasic-Hilfe UPDATE_RECGRAPH Diese Funktion aktualisiert einen Messwertverlauf. Vor der Aktualisierung muss der Verlauf einmal mit INIT_RECGRAPH angelegt werden. Der aktuelle Verlauf kann mit DRAW_RECGRAPH im Zeichenbereich dargestellt werden. Syntax des Records: record graphrec = (int,error) (string,title$) (string,unit$[0..1]) (string,xlabel$[0..1])(string,legende$[0..7]) addrecord graphrec = (short,data_unit[0..7]) (short,color[0..7]) (system,_value1) (system,_value2)...
Programmiersprache Jasic Wait Syntax: wait (Ereignis) Die Waitanweisung wartet auf das nächste angegebene Ereignis. Zur Auswahl stehen MSYNC: Die Funktion wartet, bis der nächste Messzyklus abgeschlossen ist. TSEC: Es wird gewartet, bis sich der Sekundenwert der Uhr geändert hat. TMIN: Es wird gewartet, bis sich der Minutenwert der Uhr geändert hat. THOUR: Es wird gewartet, bis sich der Stundenwert der Uhr geändert hat. TDAY: Wartet auf den nächsten Datumswechsel.
Jasic-Hilfe WRITE_MODBUS_485 Beschreibt einen Modbusslave (RTU) über die RS485 . Syntax: record modbus_rec = (int,error) (String,hostname$) (int,port) (int,addr) (int,fcode) (int,index) (HFLOAT,daten) ... call write_modbus_485 modbus_rec Die Schnittstellenparameter müssen über die Systemvariablen eingestellt werden.
Programmiersprache Jasic WRITE_MODBUS_UDP Beschreibt einen Modbusslave (Modbus TCP(UDP)) über das Ethernet . Syntax: record modbus_rec = (int,error) (String,hostname$) (int,dport) (int,sport) (int,addr) (int,fcode) (int,index) (HFLOAT,daten) ...
Jasic-Hilfe WRITE_PBUS Schreibt einen Record in den Eingabebereich einer „SPS“, wenn das Angeforderte Profil größer ist, als die Systemprofile (größer 16) Error: Null wenn kein Fehler aufgetreten ist 126
Programmiersprache Jasic UMG 604 spezifische Befehle Die folgenden Befehle erweitern den J-SIC Standardbefehlssatz.
Jasic-Hilfe Liste der Systemvariablen Die Systemvariablen werden in folgende Bereiche unterteilt: Messwerte (incl. max., avg., max.avg., min und deren Zeitpunkte ), Konfiguration und EMax.
Programmiersprache Jasic _fft_il2 [40] Harmonsiche des Stroms Phase L2-N (0 – 40) A float X X X _fft_il3 [40] Harmonsiche des Stroms Phase L3-N (0 – 40) A float X X X _fft_il4 [40] Harmonsiche des Stroms Phase L4-N (0 – 40) A float X X X _fft_pl1 [40] Harmonsiche der Wirkleistung Phase L1-N (0 – 40) W float X X X _fft_pl2 [40] Harmonsiche der Wirkleistung Phase L2-N (0 – 40) W float X X X _fft_pl3 [40] Harmonsiche der Wirkleistung Phase L3-N (0 – 40) W float X X X _
Jasic-Hilfe Phasen 1-4 _qln [4] Blindleistung zwischen L und N der Phasen 1-4 VAr float X X X _sln [4] Scheinleistung zwischen L und N der Phasen 1-4 VA float X X X _ull [3] Spannungen zwischen L1 und L2, V L2 und L3, L3 und L1 float X X X _i_sum3 Summenstrom der Phasen 1-3 A float X X X _i_sum Summenstrom aller 4 Phasen A float X X X _s_sum3 Summe der Scheinleistungen der Phasen L1-L3 VA float X X X _p_sum3 Summe der Leistungen der Phasen W L1-L3 float X X X _
Programmiersprache Jasic Spannung der Phasen L1-L4 _cos_phi [4] Phasenwinkel der Phasen 1-4 float _ind_cap [4] Zeigt an ob der cos_phi induktiv oder kapazitive ist (+1 / -1) float _freq Frequenz _n float X X X X Spannung des Nullsystems für das V Dreileiternetz von L1-L3 float X X X X _m Spannung des Mittsystems für das V Dreileiternetz von L1-L3 float X X X _g Spannung des Gegensystems für das Dreileiternetz von L1-L3 V float X X X X _sym Symetrie des Dreileiternetzes in
Jasic-Hilfe Der Variablenname des maximalen Durchschnittswertes ergibt sich durch das Anhängen von ´´_avg_max´´ Bsp.: _uln => _uln_avg_max Für den Zeitpunkt der Minimal- und Maximalwerte wird an deren Namen noch ein ´´_t´´ angehängt. Bsp.
Programmiersprache Jasic _time_qh Laufzeit der Blindarbeit s _spu012 Virtuelle berechnete Sternpunktspannung V _digout_stat [2] Status der digitalen Ausgänge n _digin_stat [2] Status der digitalen Eingänge n _evt_count Anzahl der Events seit dem letzten Neustart n _flag_count Anzahl der Flags seit dem letzten Neustart n _trans_count Anzahl der Transienten seit dem letzten Neustart n _hww_count Anzahl der Vollwelleneffektivwert Aufzeichnungen seit dem letzten Neustart n _rx232_count
Jasic-Hilfe _ctsec [4] Enthält die Konfiguration des Stromwandlers (sekundär Seite) A _vtprim [4] Enthält die Konfiguration des Spannungswandlers (primär Seite) V _vtsec [4] Enthält die Konfiguration des Spannungswandlers (sekundär Seite) V _irated [4] Nennstrom für K-Faktor A _dev_name Gerätenamen _dev_desc Geräte Beschreibung _language Sprache („DE“) _sernr Seriennummer _prodnr Reserviert uint _mbusaddr ModBus Adresse int _mode485 Modus der RS485 (MBUS_SLAVE = 0x00; MBUS_MASTER
Programmiersprache Jasic _thermoelement Typ des Temperatursensors (0 = PT100; 1 = PT1000; 2 = KTY83; 3 = KTY84) int _key1 Zustand der Taste 1 „Pfeil nach Links“ (0 = nicht gedrückt; 0x0000ffff = gedrückt; 0xffff0000 = gehalten) int _key2 Zustand der Taste 2 „Pfeil nach Oben“ (0 = nicht gedrückt; 0x0000ffff = gedrückt; 0xffff0000 = gehalten) int _key3 Zustand der Taste 3 „Service“ (0 = nicht gedrückt; 0x0000ffff = gedrückt; 0xffff0000 = gehalten) int _debug_ip Reserviert uint _time_zone Zeitz
Jasic-Hilfe _trns_abs_ [4] Konfigurationswert der Transientenerkennung (absoluter Maximalwert) % _trns_pre Größe (Anzahl der Werte) des Vorlaufes bei einer Transientenaufzeichnung n short _trns_post Größe (Anzahl der Werte) der Transientenaufzeichnung ab der Transientenerkennung n short _i_evt_max [4] Konfigurationswert für das Überstrom-Event % float _u_evt_max [4] Konfigurationswert für das ÜberspannungsEvent % float _u_evt_min [4] Konfigurationswert für das UnterspannungsEvent % flo
Programmiersprache Jasic _pulswert[2] Impulswertigkeit n/Wh float _maxsize_rec Größe des Speichers für Aufzeichnungen (auf der Flashdisk) % float _maxsize_trns Größe des Speichers für Transienten (auf der Flashdisk) % float _maxsize_vww Größe des Speichers für Vollwellenefektivwerte (auf der Flashdisk) % float _maxsize_evt Größe des Speichers für Ereignisse (auf der Flashdisk) % float _maxsize_flags Größe des Speichers für Flags (auf der Flashdisk) % float _tftp_file_nr TFTP Nummer
Jasic-Hilfe _fft_ul1_avg_t) _fft_il1_ avg_t [40] Konfiguration der Mittlungszeit (siehe _fft_ul1_avg_t) n _fft_il2_ avg_t [40] Konfiguration der Mittlungszeit (siehe _fft_ul1_avg_t) n _fft_il3_ avg_t [40] Konfiguration der Mittlungszeit (siehe _fft_ul1_avg_t) n _fft_il4_ avg_t [40] Konfiguration der Mittlungszeit (siehe _fft_ul1_avg_t) n _fft_pl1_avg_t [40] Konfiguration der Mittlungszeit (siehe _fft_ul1_avg_t) n _fft_pl2_ avg_t [40] Konfiguration der Mittlungszeit (siehe _fft_ul1_avg_t) n
Programmiersprache Jasic _s_sum3_avg_t Konfiguration der Mittlungszeit (siehe _fft_ul1_avg_t) n _p_sum3_avg_t Konfiguration der Mittlungszeit (siehe _fft_ul1_avg_t) n _q_sum3_avg_t Konfiguration der Mittlungszeit (siehe _fft_ul1_avg_t) n _s_sum_avg_t Konfiguration der Mittlungszeit (siehe _fft_ul1_avg_t) n _p_sum_avg_t Konfiguration der Mittlungszeit (siehe _fft_ul1_avg_t) n _q_sum_avg_t Konfiguration der Mittlungszeit (siehe _fft_ul1_avg_t) n _freq_avg_t Konfiguration der Mittlungszeit (
Jasic-Hilfe _emax_sperrzeit Wartezeit am Beginn einer Messperiode s short _emax_pausenzeit Wartezeit zwischen zwei Schaltvorgängen s short _emax_leistung Die aktuelle Leistung der EMAXBerechnung W float _emax_max Maximaler Wert von EMAX W _emax_max_t Zeitpunkt des maximalen Wertes von EMAX float uint _emax_d_status [MAX_DIG_CH] Status eines digital zu schaltenden Verbrauchers (1 = aktiv) short _emax_a_status [MAX_ANA_CH] float Status eines analog zu schaltenden Verbrauchers (1 = aktiv)
Programmiersprache Jasic _emax_a_generator [MAX_ANA_CH] Verbraucher oder Generator (0 = Verbraucher; 1 = Generator) short _emax_a_maxpower [MAX_ANA_CH] Maximale Anschlussleistung des Verbrauchers W float _emax_a_minpower [MAX_ANA_CH] Minimale Anschlussleistung des Verbrauchers W float _emax_a_maxsave [MAX_ANA_CH] Maximale Einsparung W float _emax_a_startup [MAX_ANA_CH] Hochlaufzeit / Vorlaufzeit des Generators s short _emax_a_minactive [MAX_ANA_CH] Mindestlaufzeit eines Generators s in
Jasic-Hilfe Fehlerlisten Scanner Fehler: NO_TOKEN_FOUND= -1 UNEXPECTED_CHAR= -2 Parser Fehlerliste: INCORRECT_CRLF = 0x100, INCORRECT_VARIABLETYPE = 0x101, INCORRECT_ARRAY_INDEX = 0x102, INCORRECT_FORMATSTRING = 0x103, INCORRECT_DEVICENUMBER = 0x104, INCORRECT_INDEX_SIZE = 0x105, INCORRECT_RECORD_DECLARATION = 0x106, INCORRECT_TIMEBASE = 0x107, INCORRECT_UNITCOUNT = 0x108, DUPLICATE_LABLE = 0x200, INCORRECT_LABLENAME= 0x201, UNKNOWN_EXPRESSION = 0x300, UNKNOWN_VARIABLETYPE = 0x301, UNKNOWN_SYSVAR = 0x302,
Programmiersprache Jasic UNEXPECTED_TOKEN_RETURN = 0x506, UNEXPECTED_TOKEN_NEXT = 0x507, UNEXPECTED_TOKEN_TO = 0x508, UNEXPECTED_TOKEN_EQUAL = 0x509, UNEXPECTED_TOKEN_ENDOFFILE = 0x510, BRACKET_OPEN_EXPECTED = 0x600, BRACKET_CLOSE_EXPECTED = 0x601, FORMAT_STRING_EXPECTED = 0x602, COMMA_EXPECTED = 0x603, EQUAL_EXPECTED = 0x604, INTNUMBER_EXPECTED = 0x605, SQUAREBRACKET_OPEN_EXPECTED = 0x606, SQUAREBRACKET_CLOSE_EXPECTED = 0x607, DOT_EXPECTED = 0x608, RECORDVARIABLE_EXPECTED = 0x609, STRING_EXPECTED = 0x60A,
Jasic-Hilfe CONST_STRING_OVERFLOW = 0x902, STRING_VAR_OVERFLOW = 0x903, VARABLE_COUNT_OVERFLOW = 0x904, FALSE_MBUSADDR = 0x905, CONST_VAR_OVERFLOW = 0x906 Laufzeit Fehler: ARRAY_INDEX_EXCEEDED = 0xA00, DEVICE_IS_ALLREADY_OPEN = 0xF00, DEVICE_NOT_FOUND = 0xF01, WRONG_ARGUMENT_COUNT = 0xF02, WRONG_ARGUMENT_TYPE = 0xF03, IP_NOT_FOUND = 0xF04, UNKNOWN_DEVICE = 0xF05, ERROR_OPEN_SOCKET = 0xF06, ERROR_CONNECT_SOCKET = 0xF07 144
Index A Add_Record ............................................