Technical Note 0501 ewon Sammlung BASIC Beispiele - 1 -
Inhaltsverzeichnis 1 Allgemeines... 3 1.1 Information... 3 1.2 Hinweis... 3 1.3 Anschluss PC und ewon... 3 2 Getting Started BASIC... 4 2.1 Skripte bearbeiten... 4 2.2 Skripte zur Laufzeit kontrollieren... 5 2.3 Skript-Bearbeitung starten... 5 3 SMS Funktion... 6 3.1 SMS Versand mit aktuellem Wert bei Ereignis... 6 3.2 SMS Versand mit aktuellem Wert bei SMS Empfang... 7 3.3 SMS Empfang und Variable steuern... 8 4 Email Funktion... 9 4.1 Email Versand mit aktuellem Wert bei Ereignis... 9 5 Mobilfunk... 10 5.1 Auswerten der Feldstärke und Anzeigen über eine Variable... 10 6 WAN Zugang... 12 6.1 Internetzugang über eine Variable ein-/ausschalten... 12 6.2 Fallback für DSL auf Mobilfunk... 13 7 VPN Funktion... 14 7.1 Anzeigen ob eine VPN-Verbindung aufgebaut wurde... 14 8 Variablenbearbeitung... 15 8.1 Variable Bitweise maskieren... 15 8.2 Variable umrechnen... 16 9 Dateimanagement... 17 9.1 FTP Upload von geloggten Daten mit flexiblem Dateinamen... 17 10 Weitere Informationen... 18-2 -
1 Allgemeines 1.1 Information In dieser Technical Note zeigen wir verschiedene Beispiele auf, welche Funktionen mit den integrierten BASIC Skripten zu realisieren sind. 1.2 Hinweis Wir werden in dieser Technical Note anhand verschiedener Beispiele die grundsätzliche Vorgehensweise beschreiben. Diese Technical Note ersetzt nicht das Handbuch. Sie dient rein als Einstieg. Für alle weiteren Fragen ist das Handbuch zurate zu ziehen. Diese Technical Note dient als Beispiel einer funktionierenden Anwendung. Eine Haftung ist für Sach- und Rechtsmängel dieser Dokumentation, insbesondere für deren Richtigkeit, Fehlerfreiheit, Freiheit von Schutz- und Urheberrechten Dritter, Vollständigkeit und/oder Verwendbarkeit außer bei Vorsatz oder Arglist ausgeschlossen. 1.3 Anschluss PC und ewon Um das ewon in Betrieb zu nehmen, müssen Sie es zunächst mit Ihrem PC/ Laptop verbinden. Dazu gibt es verschiedene Möglichkeiten. Grundsätzlich muss der PC mit einer der LAN Schnittstellen des ewon verbunden werden. Switch Ethernet Bei einem x005cd benötigen Sie entweder eine gekreuzte oder standard Ethernetleitung zwischen PC und ewon. Bei einem x101cd benötigen Sie entweder eine gekreuzte Ethernetleitung, oder einen Switch zwischen PC und ewon. - 3 -
2 Getting Started BASIC Im ewon ist ein Skript Editor integriert, mit dem die zahlreichen ewon Funktionen nach eigenen Anforderungen erweitert werden können. Die in ewon integrierte BASIC Sprache basiert auf BASIC, enthält aber noch einige ewon spezifische Befehle. Der Skript Editor ist in drei Funktionen unterteilt: Skripte bearbeiten Hier wird der Code erstellt Skript Kontrolle Hier werden zur Laufzeit Fehler oder Anwenderhinweise ausgegeben Start-/ Stop-Funktion Hier wird die Skript Funktion gestartet & gestoppt 2.1 Skripte bearbeiten In diesem Menüpunkt werden die Skripte erstellt und bearbeitet. Der gesamte Code wird in Unterprogrammen (Sektionen) aufgebaut Init Section einmalige Ausführung bei Start Cyclic Section zyklische Ausführung im RUN- Betrieb Sektionen Unterprogramme nach Bedarf Besonderheiten: Der Ablauf der einzelnen Sektionen erfolgt sequenziell (nacheinander) in einzelnen Schritten. Die Zykluszeit der Abarbeitung ist abhängig von dem Programmumfang. Besonderheit der Init Section : Es können ereignisorientierte Funktionen (ON ) gestartet werden, die nach Ablauf der Init Section im Hintergrund ständig überwacht werden. - 4 -
2.2 Skripte zur Laufzeit kontrollieren In diesem Menüpunkt kann während des Ablaufs auf etwaige Fehler kontrolliert werden. Die Kontrolle besteht aus drei Komponenten Ausgabebildschirm Autorun-Modus Direkte Befehlseingabe Ausgabeschirm Hier kann ein Text über den Befehl PRINT ausgegeben werden. Dient zur Anzeige eventueller Programmfehler. Autorun-Modus Dies muss aktiviert sein, damit die Skript Abarbeitung nach jedem ewon Neustart automatisch erfolgt. Direkte Befehlseingabe Hier können zur Laufzeit BASIC Befehle direkt ausgeführt werden. 2.3 Skript-Bearbeitung starten In diesem Menüpunkt wird die Abarbeitung gestartet. Die Ausführung der Skripte kann über einen Button jederzeit gestartet und gestoppt werden. In der Klammer steht der aktuelle Zustand. - 5 -
3 SMS Funktion In diesem Abschnitt zeigen wir BASIC Funktionen für SMS Empfang und Versand. 3.1 SMS Versand mit aktuellem Wert bei Ereignis Um eine SMS zu versenden, wenn eine Variable den Wert HIGH hat, wird dieses Skript verwendet. Dabei wird in der SMS noch der aktuelle Wert einer Integer-Variable integriert. Wenn der Wert der Variable MyTag1 den Status von 0 nach 1 wechselt, wird eine SMS mit dem aktuellen Wert der Variable MyTag2 versendet. 1. Erstellen Sie bitte einen Tag für die Ereignissteuerung und nehmen folgende Einstellungen vor: Tag Name: MyTag1 Adresse: MyTag1 Typ: Digital 2. Erstellen Sie bitte einen Tag für den Wertinhalt und nehmen folgende Einstellungen vor: Tag Name: MyTag2 Adresse: MyTag2 3. Kopieren Sie in die Init Section folgendes Skript: ONCHANGE "MyTag1", "goto SMS_send" 4. Erstellen Sie danach eine neue Sektion namens "SMS_Versand" und kopieren folgendes hinein: SMS_send: REM Hier die Handynummer fuer den Empfang einsetzen a$ = "01701234567,gsm,0" REM Inhalt der SMS bestimmen b$ = "Aktueller Wert der Variable 2: " + STR$ MyTag2@ REM Versand der SMS If (MyTag1@ = 1) THEN Sendsms a$, b$ - 6 -
3.2 SMS Versand mit aktuellem Wert bei SMS Empfang Um eine SMS zu versenden, wenn eine SMS empfangen wurde, wird dieses Skript verwendet. Dabei wird in der SMS noch der aktuelle Wert einer Integer-Variable integriert. Wenn eine SMS mit dem Textinhalt Wert empfangen wird, wird eine SMS mit dem aktuellen Wert der Variable MyTag2 an den Absender der SMS versendet. 1. Erstellen Sie bitte einen Tag für den Wertinhalt und nehmen folgende Einstellungen vor: Tag Name: MyTag2 Adresse: MyTag2 2. Kopieren Sie in die Init Section folgendes Skript: ONSMS "Goto SMS_rec" 3. Erstellen Sie danach eine neue Sektion namens "SMS_Empfang" und kopieren folgendes hinein: SMS_rec: REM SMS auswerten a% = Getsys Prg,"SmsRead" If (a%<>0) Then f$ = Getsys Prg,"smsfrom" m$ = Getsys Prg,"smsmsg" b$ = f$+",gsm,0" Goto SMS_rec Endif REM Wenn der Textinhalt der SMS stimmt, wird eine SMS zurueckgeschickt If (m$ = "Wert") Then c$ = "Aktueller Wert der Variable 2: " + STR$ MyTag2@ Sendsms b$,c$ Endif - 7 -
3.3 SMS Empfang und Variable steuern Um eine Variable zu steuern, wenn eine SMS empfangen wurde, wird dieses Skript verwendet. Dabei wird ein fester Wert in eine Variable geschrieben, der von dem empfangenen Text abhängig ist. Wenn eine SMS mit dem Textinhalt Ein empfangen wird, wird eine Variable auf 1 gesteuert. Wenn eine SMS mit dem Textinhalt Aus empfangen wird, wird eine Variable auf 0 gesteuert. 1. Erstellen Sie bitte einen Tag für den Wertinhalt und nehmen folgende Einstellungen vor: Tag Name: MyTag2 Adresse: MyTag2 2. Kopieren Sie in die Init Section folgendes Skript: ONSMS "Goto SMS_rec" 3. Erstellen Sie danach eine neue Sektion namens "SMS_Empfang" und kopieren folgendes hinein: SMS_rec: REM SMS auswerten a% = Getsys Prg,"SmsRead" If (a%<>0) Then m$ = Getsys Prg,"smsmsg" Goto SMS_rec Endif REM Wenn der Textinhalt der SMS stimmt, wird die Variable auf 1 gesetzt If (m$ = "Ein") Then MyTag2@ = 1 Endif REM Wenn der Textinhalt der SMS stimmt, wird die Variable auf 0 gesetzt If (m$ = "Aus") Then MyTag2@ = 0 Endif - 8 -
4 Email Funktion In diesem Abschnitt zeigen wir BASIC Funktionen für Email Versand. 4.1 Email Versand mit aktuellem Wert bei Ereignis Um eine Email zu versenden, wenn eine Variable den Wert HIGH hat, wird dieses Skript verwendet. Dabei wird in der Email noch der aktuelle Wert einer Integer-Variable integriert. Wenn der Wert der Variable MyTag1 den Status von 0 nach 1 wechselt, wird eine Email mit dem aktuellen Wert der Variable MyTag2 versendet. 1. Erstellen Sie bitte einen Tag für die Ereignissteuerung und nehmen folgende Einstellungen vor: Tag Name: MyTag1 Adresse: MyTag1 Typ: Digital 2. Erstellen Sie bitte einen Tag für den Wertinhalt und nehmen folgende Einstellungen vor: Tag Name: MyTag2 Adresse: MyTag2 3. Kopieren Sie in die Init Section folgendes Skript: ONCHANGE "MyTag1", "goto Email_send" 4. Erstellen Sie danach eine neue Sektion namens "Email_Versand" und kopieren folgendes hinein: Email_send: a$ = "test@test.de" REM Hier den Betreff eintragen b$ = "Test Email mit Variable" REM Inhalt der Email bestimmen c$ = "Aktueller Wert der Variable 2: " + STR$ MyTag2@ REM Versand der Email If (MyTag1@ = 1) THEN Sendmail a$, "", b$, c$ - 9 -
5 Mobilfunk In diesem Abschnitt zeigen wir BASIC Funktionen die sich mit dem Mobilfunkempfang befassen. 5.1 Auswerten der Feldstärke und Anzeigen über eine Variable Im ewon kann die Feldstärke sowie der genutzte Dienst ausgewertet werden. Abhängig von diesen beiden Parametern kann festgestellt werden, ob genügend Empfang für den Betrieb im Mobilfunk vorhanden ist. Die beiden Parameter für Feldstärke und Dienst werden im 10 Sekundentakt ausgelesen und bewertet. In eine Variable wird dann eine 1 geschrieben, wenn der Empfang i.o. ist. Dabei ist zu beachten, dass bei UMTS und HSxPA eine kleinere Feldstärke ausreicht! 1. Erstellen Sie bitte einen Tag für den Wertinhalt und nehmen folgende Einstellungen vor: Tag Name: MyTag2 Adresse: MyTag2 2. Erstellen Sie bitte einen Tag für die Feldstärke und nehmen folgende Einstellungen vor: Tag Name: GSM_Level Server Name: EWON SYS Adresse: GSM_Level 2. Kopieren Sie in die Init Section folgendes Skript: TSET 1, 10 ONTIMER 1, "goto Level" 3. Erstellen Sie danach eine neue Sektion namens " GSM_Level" und kopieren folgendes hinein: Level: a$= "UMTS" b$= "HSPA" REM Aktuelle Netzversion laden SETSYS INF,"load" e$ = GETSYS INF,"GsmNetRegTxt" - 10 -
REM pruefen ob UMTS oder HSPA genutzt wird e% = 0 a% = INSTR 1, e$, a$ If (a% > 1) Then e% = 1 b% = INSTR 1, e$, b$ If (b% > 1) Then e% = 1 REM abhaengig vom Netz wird der GSM-Level gewaehlt MyTag2@=0 If (GSM_Level@ >=5 AND e% = 1) Then MyTag2@=1 If (GSM_Level@ >=18 AND e% = 0) Then MyTag2@=1-11 -
6 WAN Zugang In diesem Abschnitt zeigen wir BASIC Funktionen die sich mit dem WAN Zugang befassen. 6.1 Internetzugang über eine Variable ein-/ausschalten Der WAN (Internet) Zugang von ewon kann über eine Variable gesteuert werden. Wenn der Wert der Variable MyTag1 den Status wechselt, wird bei Wert=1 der WAN-Zugang einund bei Wert=0 ausgeschaltet. 1. Erstellen Sie bitte einen Tag für die Ereignissteuerung und nehmen folgende Einstellungen vor: Tag Name: MyTag1 Adresse: MyTag1 Typ: Digital 2. Kopieren Sie in die Init Section folgendes Skript: Onchange "MyTag1", "goto Connect" 3. Erstellen Sie danach eine neue Sektion namens "Process_Connect" und kopieren folgendes hinein: Connect: If (MyTag1@=1) Then Setsys COM,"load" Setsys COM,"WANPermCnx","1" Setsys COM,"WANCnx","1" Setsys COM,"save" Else Setsys COM,"load" Setsys COM,"WANPermCnx","0" Setsys COM,"save" Setsys PRG,"PPPIP", 0 Endif Hinweis: Der Parameter WANCnx ist abhängig der Anzahl der Modems im ewon. 0 = Kein Internet Zugang 1 = x101cd-geräte Modem; x005cd-geräte Modem oder Ethernet-WAN wenn ohne Modem 2 = x005cd-geräte Ethernet-WAN wenn mit Modem - 12 -
6.2 Fallback für DSL auf Mobilfunk In einigen x005cd Geräten ist außer dem WAN-Anschluß auch noch ein Mobilfunkmodem zur redundanten Verbindung eingebaut. Sollte der DSL-Anschluß nicht verfügbar sein, kann das ewon automatisch auf Mobilfunk umschalten. Um zu prüfen, ob die WAN-Verbindung aktiv ist, wird die VPN-IP-Adresse ausgelesen. Ist diese gleich 0.0.0.0, ist keine Verbindung aktiv. Diese Prüfung findet alle 900 Sekunden (15 Minuten) statt. Wenn die Fallback-Funktion aktiv ist, wird nach 7200 Sekunden (2 Stunden) wieder auf WAN zurückgeschaltet. 1. Kopieren Sie in die Init Section folgendes Skript: Tset 1,900 Ontimer 1,"goto TestVPN" Tset 2,0 Ontimer 2,"goto ReturnToWAN" 2. Erstellen Sie danach eine neue Sektion namens "Fallback" und kopieren folgendes hinein: TestVPN: Setsys INF,"load" a$ = Getsys INF,"VPNIP" If (a$="0.0.0.0") THEN Tset 1,0 Tset 2,7200 Setsys COM,"load" Setsys COM,"WanCnx",1 Setsys COM,"save" Print "MODEM aktiv" Endif End ReturnToWAN: Setsys COM,"load" Setsys COM,"WanCnx",2 Setsys COM,"save" Tset 1,900 Tset 2,0 Print "Ethernet WAN aktiv" - 13 -
7 VPN Funktion In diesem Abschnitt zeigen wir BASIC Funktionen die sich mit dem VPN befassen. 7.1 Anzeigen ob eine VPN-Verbindung aufgebaut wurde Wenn eine VPN-Verbindung aufgebaut wurde, kann man diese auswerten. Wenn der Status der VPN-Verbindung sich ändert, wird bei aufgebautem VPN eine 1 in eine Variable geschrieben, ansonsten eine 0. 1. Erstellen Sie bitte einen Tag für den Wertinhalt und nehmen folgende Einstellungen vor: Tag Name: MyTag1 Adresse: MyTag1 2. Kopieren Sie in die Init Section folgendes Skript: ONVPN "Goto VPN" 3. Erstellen Sie danach eine neue Sektion namens " VPN_Action" und kopieren folgendes hinein: VPN: a%=getsys PRG,"EVTINFO" If (a%=1) Then MyTag1@=1 REM VPN ist aufgebaut Else MyTag1@=0 REM VPN ist abgebaut Endif - 14 -
8 Variablenbearbeitung In diesem Abschnitt zeigen wir BASIC Funktionen die sich mit Variablenbearbeitung befassen. 8.1 Variable Bitweise maskieren Um aus einer vorhandenen analogen Variable ein Bit zu selektieren, und dieses auf eine Bitvariable umzulegen, kann dieses Skript genutzt werden. Aus der Variable MyTag2 wird das dritte Bit extrahiert und der Wert in die Bitvariable MyTag1 gespeichert. 1. Erstellen Sie bitte einen Tag für den Wertinhalt und nehmen folgende Einstellungen vor: Tag Name: MyTag1 Adresse: MyTag1 Typ: Digital 2. Erstellen Sie bitte einen Tag für den Wertinhalt und nehmen folgende Einstellungen vor: Tag Name: MyTag2 Adresse: MyTag2 3. Kopieren Sie in die Cyclic Section folgendes Skript: MyTag1@ = MyTag2@#3-15 -
8.2 Variable umrechnen Um zwei Variablen miteinander umzurechnen kann dieses Skript genutzt werden Die Summe aus den beiden Variablen MyTag2 und MyTag3 wird in MyTag1 als Ergebnis gespeichert. 1. Erstellen Sie bitte einen Tag für das Ergebnis und nehmen folgende Einstellungen vor: Tag Name: MyTag1 Adresse: MyTag1 2. Erstellen Sie bitte einen Tag für den Wert 1 und nehmen folgende Einstellungen vor: Tag Name: MyTag2 Adresse: MyTag2 3. Erstellen Sie bitte einen Tag für den Wert 2 und nehmen folgende Einstellungen vor: Tag Name: MyTag3 Adresse: MyTag3 4. Kopieren Sie in die Cyclic Section folgendes Skript: MyTag1@ = MyTag2@ + MyTag3@ - 16 -
9 Dateimanagement In diesem Abschnitt zeigen wir BASIC Funktionen die sich mit Dateien befassen. 9.1 FTP Upload von geloggten Daten mit flexiblem Dateinamen Das ewon kann zyklisch die geloggten Daten auf einen FTP-Server laden. Wenn Sie möchten, dass der Dateiname sich aus den aktuellen Zeitstempeln zusammensetzt, können Sie dieses Skript verwenden. Mit der Funktion ONDATE wird täglich um 0:00Uhr ein Unterprogramm aufgerufen. Dort wird aus der ewon-uhrzeit ein Dateiname zusammengestellt (Ergebnis in A$). Dann wird mit Hilfe des Export Block Descriptor ein FTP Upload der geloggten Daten der Variable MyTag aus den letzten 24 Stunden ausgeführt. 1. Kopieren Sie in die Init Section folgendes Skript: ONDATE 1,"0 0 * * *","GOTO MyAction" 2. Erstellen Sie danach eine neue Sektion namens "File_Action" und kopieren folgendes hinein: MyAction: T$=Time$ A$="/usr/Data"+T$(7 To 10)+"-"+T$(4 To 5)+"-"+T$(1 To 2)+".csv" PUTFTP A$,"[$dtHL $ftt $st_h24 $et_s0 $tnmytag]" - 17 -
10 Weitere Informationen Weitere Informationen und Hilfestellungen finden Sie auf der Homepage von Wachendorff Prozesstechnik GmbH & Co. KG (www.wachendorff.de/wp) Unsere Anwendungsberatung und Support erreichen Sie unter: Tel.: +49 (0) 6722 / 9965 966 Email: eea@wachendorff.de - 18 -