8
1 OMRON OMRON 1 FINS Befehle schicken mit CX – Server Lite gabe : - Aufzugsfahrten der Mieter in einem Wohnhaus zähle - max 120 Wohnungen, jede Wohnung hat einen Eingang - Abspeicherung der Gesammtfahrten im Monat und eine komplette Auflistung der Fahrten mit Datum u Uhrzeit sollte möglich sein - darausfolgt ein großes Datenaufkommen was auf der Flashkarte der SPS gespeichert wird - die Auswertung erfolgt über Modem und Server Lite - Steuerung CJ1M CPU 12

OMRON 1 1 FINS Befehle schicken mit CX – Server Lite Aufgabe : - Aufzugsfahrten der Mieter in einem Wohnhaus zählen - max 120 Wohnungen, jede Wohnung hat

Embed Size (px)

Citation preview

Page 1: OMRON 1 1 FINS Befehle schicken mit CX – Server Lite Aufgabe : - Aufzugsfahrten der Mieter in einem Wohnhaus zählen - max 120 Wohnungen, jede Wohnung hat

1

OMRON OMRON

1

FINS Befehle schicken mit CX – Server Lite

Aufgabe :

- Aufzugsfahrten der Mieter in einem Wohnhaus zählen - max 120 Wohnungen, jede Wohnung hat einen Eingang - Abspeicherung der Gesammtfahrten im Monat und eine komplette Auflistung der Fahrten mit Datum und Uhrzeit sollte möglich sein - darausfolgt ein großes Datenaufkommen was auf der Flashkarte der SPS gespeichert wird - die Auswertung erfolgt über Modem und Server Lite - Steuerung CJ1M CPU 12

Page 2: OMRON 1 1 FINS Befehle schicken mit CX – Server Lite Aufgabe : - Aufzugsfahrten der Mieter in einem Wohnhaus zählen - max 120 Wohnungen, jede Wohnung hat

2

OMRONProbleme bei der Verwirklichung

• Flashkarte über Server Lite auslesen, es gibt keine fertige Funktion dafür, sie muß mit FINS Befehlen ausgelesen werden

• Ab der CX Server Lite Version 1.1 ist es möglich FINS Befehle zu Senden und Empfangen mit RawFins

• SPS sollte FINS fähig sein (CQM1 ist es nicht )• Zusammenstellung der Befehlsketten und Auswerten der Antworten• Abschalten der Fehlermeldungen durch die Comms1 Controlle• Probleme mit der Typzuweisung bei Variablen in VBA• Beschreibung wie man auf das Root Directory der Flashkarte

zugreift fehlte in Handbüchern• Wird die Display Komponente verwendet funktioniert die Hex -

Umwandlung von VBA nicht mehr

Page 3: OMRON 1 1 FINS Befehle schicken mit CX – Server Lite Aufgabe : - Aufzugsfahrten der Mieter in einem Wohnhaus zählen - max 120 Wohnungen, jede Wohnung hat

3

OMRONFINS Befehlarten

• Befehl als String: Läßt sich durch Stringaddition sehr gut zusammensetzen, Daten müssen als String vorliegen oder gewandelt werden und bei großen Datenmengen schlechtere Zugriff auf die Daten ( es ist ein großer String )

• Befehl als Array of Bytes : Jedes Byte muß extra Beschrieben werden ( aufwendig), Vorteile bei großen Datenmengen da sie als Byte mit Index vor- liegen. Wandlung der Daten in andere Formate ist einfacher.

Page 4: OMRON 1 1 FINS Befehle schicken mit CX – Server Lite Aufgabe : - Aufzugsfahrten der Mieter in einem Wohnhaus zählen - max 120 Wohnungen, jede Wohnung hat

4

OMRONBeispiel FINS Befehl als String

Tag = Left(Date, 2)Monat = Mid(Date, 4, 2)Jahr = Right(Date, 2)Stunde = Left(Time, 2)Minuten = Mid(Time, 4, 2)Sekunden = Right(Time, 2)

Fins_Befehl = "0702" + Jahr + Monat + Tag + Stunde + Minuten + Sekunden + "00"

Fins_Antwort = Comms1.RawFINS(Fins_Befehl, "NeueSPS1", AsString)Label13.Caption = Fins_Antwort

Dim Tag As StringDim Monat As StringDim Jahr As StringDim Sunden As StringDim Minuten As StringDim Sekunde As String

Die Variablen mußten als String deklariert werden,weil sonst die String Funktionen (Left, Mid, Right) nicht richtig ausgeführt werden. VBA weißt den Variablen einen Standard Typen zu der passt.Beim Zusammensetzen des Strings gibt es dann Fehler. Der Wert wird z.B. in Integer gewandelt.

„0702“ ist der FINS Befehl zum SPS Uhr stellenDie Antwort kommt dann auch als String zurückund anhand der Stelle eines Zeichen muß mandann den Fehlercode usw ermitteln.

Page 5: OMRON 1 1 FINS Befehle schicken mit CX – Server Lite Aufgabe : - Aufzugsfahrten der Mieter in einem Wohnhaus zählen - max 120 Wohnungen, jede Wohnung hat

5

OMRONBeispiel FINS Befehl als Array of BytesFins_Befehl(0) = &H22Rem Befehl zum Datei lesenFins_Befehl(1) = &H2Fins_Befehl(2) = &H80Rem von der SpeicherkarteFins_Befehl(3) = &H0Fins_Befehl(4) = &H44Rem Dateiname "D"Fins_Befehl(5) = &H41Rem "A"Fins_Befehl(6) = &H54Rem "T"Fins_Befehl(7) = Monat_HFins_Befehl(8) = Monat_LFins_Befehl(9) = Jahr_HFins_Befehl(10) = Jahr_LFins_Befehl(11) = DateiteilRem Teil A,B,C,D,E,FFins_Befehl(12) = &H2ERem "."Fins_Befehl(13) = &H54Rem "t"Fins_Befehl(14) = &H58Rem "x"Fins_Befehl(15) = &H54Rem "t"Fins_Befehl(16) = &H0Fins_Befehl(17) = &H0Fins_Befehl(18) = &H0Fins_Befehl(19) = &H0Fins_Befehl(20) = &HFFRem Daten länge = max 32000Fins_Befehl(21) = &HFFFins_Befehl(22) = &H0Rem "0" für Root DirectoryFins_Befehl(23) = &H0Rem "0" für Root Directory

Zusammenstellung des Befehls mit Hilfe eines Arrays.Ist bei großen Datenmengen hilfreichda auf den Inhalt über den Index zu-gegriffen wird(Verwendung von Schleifen).

Dateiname auf der Flashkarte:

DAT1102A.txt

Teil des Monats, da ein Monatmehrere Dateien haben kann.

2 Byte mit jeweils 0 müssen angehängt werden für das Root Directory.

Page 6: OMRON 1 1 FINS Befehle schicken mit CX – Server Lite Aufgabe : - Aufzugsfahrten der Mieter in einem Wohnhaus zählen - max 120 Wohnungen, jede Wohnung hat

6

OMRONBeispiel FINS Befehl als Array of Bytes

Rem FINS Befehl zur SPS schicken

Fins_Antwort = Comms1.RawFINS(Fins_Befehl, "NeueSPS1", AsArrayOfBytes)

Rem überprüfen ob der Befehl richtig ausgeführt wird

Fehlercode = Hex(Fins_Antwort(3))If Fehlercode = 0 Or Fehlercode = 11 ThenFor Count = 14 To UBound(Fins_Antwort) Step 10

Befehle senden und Auswerten was für ein Fehlercode kommt. Fehlercode 11bedeutet das die Datei weniger Zeichen enthält als ich lesen will, sie wird trotzdemvollständig gelesen. Sonst muß vorher die Dateilänge ausgelesen werden, das wirdaber mit Nummern gemacht und nicht dem Dateinamen. Somit muß man wissen anwelcher Stelle die Datei steht (aufwendig). Ein weiterer Fehlercode ist Datei existiert nicht, in diesem Projekt ist das kein Fehler sonder die Abbruchbedingung für Dateienauslesen.

Fehlercode Auswertung

Ubound gibt die Anzahl der Zeichen des Arrays FINS_Antwortwieder, da man nicht weiß wieviel Daten ausgelesen wurden.

Page 7: OMRON 1 1 FINS Befehle schicken mit CX – Server Lite Aufgabe : - Aufzugsfahrten der Mieter in einem Wohnhaus zählen - max 120 Wohnungen, jede Wohnung hat

7

OMRONAbschalten der Comms Fehler Meldungen

Eigenschaften der Comms1 Control nur im Design Mode verfügbar.

Abschalten derFehler ist nur über das Eigenschaftsfensterim VBA möglich.DisplayErrors von True auf False setzen.

Page 8: OMRON 1 1 FINS Befehle schicken mit CX – Server Lite Aufgabe : - Aufzugsfahrten der Mieter in einem Wohnhaus zählen - max 120 Wohnungen, jede Wohnung hat

8

OMRONDisplay wieder entfernen

Nur löschen der Komponente von der Seite reicht nicht, man muß unter Extras -> Verweise die Zuweisung löschen.

1234.5Display Komponente

Hier entfernen