1. Einführung von Custom-Protokoll - Anweisungen
Benutzerfreundliche Anweisungen sind, um Benutzer in einigen Projekten in den Prozess der Verwendung von anderen Protokollen zu erleichtern, nicht nur auf das TDFH-Standardprotokoll beschränkt, erweitert den Umfang der Verwendung von Protokollen, wie: Modbus-Protokoll kann in den Projekten verwendet werden, benutzerdefinierte Protokoll besteht aus zwei großen Modulen, eine ist das Senden-Modul des benutzerdefinierten Protokolls, und die andere ist die benutzerdefinierte Anweisungen Empfang Analyse-Modul.
2. Wie man ein benutzerdefiniertes Protokoll sendet
Erstellen oder öffnen Sie eine vorhandene Projektdatei, wählen Sie die Steuerelemente, nehmen Sie nun die Tastensteuerelemente als Beispiel, fügen Sie ein Ereignis hinzu, setzen Sie die Verarbeitungsmethode für "Befehl senden → [Benutzerdefiniertes Protokoll] Senden Sie seriellen Port-Befehl", können Sie die Steuerung benutzerdefinierten Protokolls senden, wie in Abbildung 2.1 dargestellt.
Abbildung 2.1 benutzerdefinierte Protokollsendung hinzufügen
3. Wie benutzerdefinierte Protokoll Nachricht
Senden 1, benutzerdefinierte Befehl Funktion Beschreibung
Klicken Sie auf das Eingabefeld unter dem Befehl, pop-up benutzerdefinierte Befehl Funktion Beschreibung Fenster, in das Eingabefeld können 16 - Dezimal Zahlen eingeben, können auch Algorithmus-Operationen und CRC-Algorithmus, entsprechend der benutzerdefinierten Befehl Funktion Beschreibung Fenster Einstellung benutzerdefinierte Protokollsendung, Wie in Abbildung 3.1 gezeigt.
Abbildung 3.1 Beschreibung der benutzerdefinierten Befehlfunktion
BYTE
Das Schlüsselwort ist ein einzelnes Byte, z. B. $BYTE(#3000), was bedeutet, dass der Wert der Variable mit dem Index 3000 an dieser Stelle das niedrigste Byte nimmt, z. B. der Wert der Variable mit dem Index 3000 ist 0x1024, zum Beispiel muss das benutzerdefinierte Protokoll 55AA $BYTE(#3000) 10ff gesendet werden, dann ist die benutzerdefinierte Protokoll-Befehl:
55 AA 24 10 FF.
Es ist auch möglich, die Operation: 55AA $BYTE (#3000+2) 10ff zu implementieren, so dass die benutzerdefinierte Protokollbefehl: 55AA26 10FF gesendet wird.
2Bytem
entspricht der Verwendung von BYTE, aber das Schlüsselwort wird als zwei Byte dargestellt, das am Ende des 'M' steht für die höchste Position vor, z. B. der Wert der Variable Index3000 ist 0x1234, dann ist diese Position 0x12 0x34, vorausgesetzt, dass Sie ein benutzerdefiniertes Protokoll 55AA $2BYTEM (#3000) 10ff senden müssen, dann ist die benutzerdefinierte Protokoll Anweisung: 55 AA 12 34 10 FF.
2BYTEL
entspricht der Verwendung von 2BYTEM, wobei das ' L ' am Ende der niedrigen Position steht, z. B. der Wert der Variable Index 3000 ist 0x1234, dann ist diese Position 0x34 0x12, vorausgesetzt, dass das benutzerdefinierte Protokoll 55AA $2BYTEL(#3000) 10ff gesendet werden muss, dann ist die benutzerdefinierte Protokoll Anweisung: 55AA34 12 10FF gesendet.
4Bytem
entspricht der Verwendung von BYTE, aber das Schlüsselwort wird als vier Byte dargestellt, wobei das ' M ' am Ende steht für die erste höchste Position, z. B. der Wert der Variable Index 3000 ist 0x12345678, dann ist die Position 0x12 0x34 0x56 0x78, vorausgesetzt, dass ein benutzerdefiniertes Protokoll 55AA $4BYTEM(#3000) 10ff gesendet werden muss, dann ist die benutzerdefinierte Protokoll-Befehl: 55 AA 12 34 56 78 10 FF.
4BYTEL
ist im Einklang mit der Verwendung von 4BYTEL, hat vier Bytes und die niedrigste Position vor, dasselbe ist auch für die Operation und den Wert der Variable, zum Beispiel $4BYTEL (#3000), wenn der Wert der Variable ist 1, dann ist die Position 01
00
00
00, vorausgesetzt, dass Sie ein benutzerdefiniertes Protokoll 55AA $4BYTEL (#3000) 10ff senden müssen, dann ist die benutzerdefinierte Protokoll Anweisung: 55AA 01 00 00 00 10 FF.
CRC16MODBUS
Dieses Schlüsselwort gibt die Überprüfung an diesem Standort mit Standard-MODBUS an, hat eine Größe von zwei Byte, wird als $CRC16MODBUS(a, b) geschrieben, und der Parameter a gibt an, an welcher Stelle die Überprüfung beginnt, z. B. von Bit 1.(Hier kein Bit 0), dann ist der Parameter a 1, und der Parameter b stellt die gewünschte Prüflänge dar, z. B. AB CD $BYTE(#3000) $CRC16MODBUS (1,3) wo der Parameter a 1 ist, das heißt, die Prüflänge beginnt mit dem ersten Byte, und der Parameter b 3 ist, das heißt, die Prüflänge beträgt 3.
DELAY
Dieses Schlüsselwort wird hinter der benutzerdefinierten Anweisung geschrieben, um anzuzeigen, wie viele Millisekunden die Anweisung verzögern muss, wie z. B. $DELAY (1000) ist eine Verzögerung von 1000ms, wenn Sie ein benutzerdefiniertes Protokoll 55AA11 10 ff $DELAY (1000) senden müssen, dann ist die benutzerdefinierte Protokoll Anweisung mit einer Verzögerung von 1000ms: 55AA11 10
FF.
SUM8
Dieses Schlüsselwort stellt eine 1 - Byte-Akkumulationsprüfung an dieser Stelle dar, geschrieben als $SUM8(a, b), ab verwendet mit CRC16MODBUS
WAIT
Dieses Schlüsselwort stellt eine Blockade dar, die zusammen mit dem privaten Schlüsselwort WAITBYTES verwendet wird, wie z. B. $WAIT (300,9, $WAITBYTES(0x45,0-R)), dann bedeutet er, dass er nach dem Senden der Anweisung, nach dem Erhalt der Antwort mit 0x45,0-R, die Länge von 9 bis zum Senden des nächsten Frames Anweisung oder warten 300 ms empfangen Timeout (keine Antwort) und dann senden Sie den nächsten Frames Anweisung, um Verwirrung der Daten zu vermeiden, WAITBYTES Schlüsselwort Wartezeiten für den Empfang von Datensegmenten
BITS
Dieses Schlüsselwort steht für eine 1 - Byte-Verarbeitung mit 8 Bits fest, z. B.: $BITS (1,0,0,0,0,1,0,1), das heißt: 0x8d, und er kann auch die Variable verwenden:$BITS (#3000, #3001, 1, 1, 0, 0, 0), wenn das Element in der Klammer nicht 0, wird auf 1, weniger als 8 Elemente festgelegt, wird automatisch 0
(Benutzerdefinierte Protokoll-Send - Header-Einstellungen)
Header-Einstellungen, die Header sind hexadezimal Zahlen, die je nach Bedarf festgelegt werden können, z. B. Header-Eingabe
3, wie man Datenbits einrichtet
Dateneinstellungen, bestimmen Sie die Variablen, die gesendet werden müssen, und dann bestimmen Sie die Anzahl der Bytes, in denen die Daten algorithmische Operationen wie $BYTE durchgeführt werden können.((#3000 + 45) * 2): Wenn der Wert der Variable #3000 6 ist, dann ist der Wert dieser Position: (6 + 45) * 2 = 102 = 0x66, dann sollte das Datenbit 66
4, Simulation Demonstration
Klicken Sie auf die Taste Simulation Laufen
Öffnen Sie das Simulationsfenster.
Senden Sie Befehl: AAFF 04 05 06 $BYTE((#3000+45) *2) $CRC16MODBUS (1,6) $DELAY(3000)
Das heißt, klicken Sie auf die Schaltfläche und erhalten Sie nach 3000ms die Anweisung "FF AA04 05 06 66 9E B7", wie in Abbildung 3.2 dargestellt.
Abbildung 3.2 Übertragung des benutzerdefinierten Protokolls
4. Wie man benutzerdefinierte Resolution hinzufügt
Klicken Sie auf Projekt Pop-up - Projektfenster, klicken Sie auf Protokoll-Einstellungen → Protokoll-Typ Einstellung auf "Benutzerdefiniertes Protokoll" → klicken Sie auf benutzerdefinierte Protokoll-Auslösung Einstellungen → Pop-up - Analyse-Einstellungen Fenster → klicken Sie auf Hinzufügen Pop-up benutzerdefinierte Analyse-Einstellungen Fenster, je nach Bedarf und Anforderungen Einstellungen können Sie eine benutzerdefinierte Protokoll-Auslösung hinzufügen, wie in Abbildung 4.1 dargestellt.
Abbildung 4.1 Hinzufügen benutzerdefinierter Protokolle
5. Benutzerdefinierte Protokoll-Auflösung einrichten
1. Frame-Header einrichten
Frame-Header kann weniger als 10 Byte langen Frame-Header eingeben, jeder Analyse-Header muss anders sein, klicken Sie auf den Frame-Header, um das Fenster der Beschreibung der benutzerdefinierten Befehlfunktion zu öffnen, in den Frame-Header eingeben Befehlfunktion, kann die Rolle der genauen Analyse des Geräts spielen, wie in den Frame-Header eingeben $BYTE (#3000), dann ist der Variablenindex 0x3000 diese Variable als Adress-Variable, nachdem der Variablenindex für 0x3000 Variable die Gerätadresse gesetzt hat, Der Frame-Header AB CD $BYTE (#3000) lässt das Gerät genau analysieren, wie in Abbildung 5.1 gezeigt.
Abbildung 5.1 Einrichtung des Kopfes
2, wie man Frame-Tail
Einstellung Check Frame-Tail, das heißt, hinzufügen Frame-Tail - Check, kann Eingabe kleiner oder gleich 10 Byte-Längen - Daten, nicht Check Frame-Tail, das heißt, nicht hinzufügen. Klicken Sie auf das Eingabefeld Frame End Verification, öffnen Sie das Fenster für die Beschreibung der benutzerdefinierten Befehlfunktion, geben Sie die Befehlfunktion $CRC16MODBUS (1,6) in den Frame End ein, um die MODBUS-Prüfung der Befehl durchzuführen, Frame End 00 $CRC16MODBUS (1,6) wie in Abbildung 5.2 dargestellt.
5.2 Einrichtung des Endes
3, wie man die Gesamtlänge des Frames festlegt
Die Gesamtlänge des zu empfangenden Frames, einschließlich Frame-Header, Datenbits und Frame-End, wie in Abbildung 5.3 dargestellt.
Abbildung 5.3 Gesamtlänge des Frames
4, wie die assoziierte Variable
Assoziierte Variable, die verwendet wird, um die Analyse-Methode mit Variablen zu assoziieren, füllen Sie den Wert der Variablenindex, wie 201, das heißt, der endgültige Wert der Variablenverwertung ist der Wert der Variablen 201, zum Beispiel Index der Variablen ist das Jahr der Systemzeit, durch Befehl können Sie das Jahr der Systemzeit festlegen.
Abbildung 5.4 Verknüpfte Variablen
5. Wie man den Datenstart-Ofset (Bytes) festlegt
Das Datenbeginn-Ofset - Byte, d.h. das Byte, von dem der Dateninhalt in diesem Frame beginnt, wie in Abbildung 5.5 gezeigt.
Abbildung 5.5 Einrichten von Daten-Start - Offset-Byte
6, wie man die Datenlänge (Bytes)
Die Datenlänge Bytes ist, wie viele Bytes Daten sind nach dem Datenbeginn Offset-Byte, wie in Abbildung 5.6 gezeigt.
Abbildung 5.6 Einstellung der Datenlänge (Bytes)
7, Wie man die Datenbit-Offset
Datenbit-Offset: Es wird nur angezeigt, wenn der Datentyp 1 oder 2 Bit ausgewählt wird, was bedeutet, dass der Bit des Bytes ausgewählt wird (Zahl von 0 an), zum Beispiel Datenformat wählt 1 Bit, Datenbit Offset ist 3, empfangene Daten sind 0, Binär-Anzeige ist: 10101010, dann wird der Wert 1 zu dieser Zeit erhalten. Wenn das Datenformat 2 Bits wählt, 10101010, dann wird der Wert 01 (binär) erhalten, wie in Abbildung 5.7
gezeigt.
Abbildung 5.7 Einrichtung von Daten-Bit - Offset
8, wie man das Datenformat
1 Bit: Single Byte zum Beispiel 0x41, dann seine Binär-Anzeige als 01000001, jedes ist ein Bit, zum Beispiel (rechts) die erste Bit ist: 1,
der zweite Bit ist: 0, und so weiter
2 Bit: Wie 1 bit wird es als binär ausgeführt, aber zwei Bits, z. B. 01 oder 00, nehmen.
1 Byte: Das Datenformat ist ein einzelnes Byte, wie z. B. a1.
2 Byte (vor der hohen Bit): Wenn die Daten 1 sind, müssen die empfangenen Daten 00 01
2 Byte (vor der niedrigen Bit): Wenn die Daten 1 sind, müssen die empfangenen Daten 01 00 sein.
4 Byte (vor der hohen Bit): Wenn die Daten 1 sind, müssen die empfangenen Daten 00 00 00 01
4 Byte (vor der niedrigen Bit): Wenn die Daten 1 sind, müssen die empfangenen Daten 01 00 00 00
Wie in Abbildung 5.8 gezeigt.
Abbildung 5.8 Datenformate
9. Wie man den Datentyp
Schalter festlegt: Hier muss man die Spalte für den Datenvergleich betrachten:
Wenn der erworbene Dateninhalt und Datenvergleich füllen genau den gleichen Wert, ist der Datenwert 1, und umgekehrt ist 0, wenn Datenvergleich schreiben: 26 14, empfangene Daten sind 26 14, dann sind die Daten richtig, Schalter-Menge wird auf, das ist 1, umgekehrt, Schalter-Menge ist aus, das ist 0, so dass Schalter-Ziel erreicht wird. Der Datenvergleich von 1 Bit wird mit 0, 1 verglichen, 2 Bit entnehmen die Daten 0, 1, 2, 3, so dass die Vergleichsdaten 0 - 3 sind.
Kontinuierliche Menge:
In der kontinuierlichen Menge kann die Formel ausfüllen, wenn nicht ausfüllen, dann sind die Daten nach dem Empfang der ursprünglichen Daten, wenn Sie die Formel hinzufügen, wie in der obigen Abbildung gezeigt: @ steht für die empfangenen Daten, #3000 steht für die Variable 3000, alle Variablen müssen mit # hinzugefügt werden.
10. Wie man die Ereignisnummer erstellt
Setzen Sie die Ereignisverarbeitung ein, d. h. nach dem Erhalt der Befehlsanalyse, führen Sie gleichzeitig die Ereignisverarbeitungsmethode aus und füllen Sie die Ereignisverarbeitungsnummer aus, wie in Abbildung 5.9 dargestellt.
Abbildung 5.9 Einrichtung der Ereignisnummer
6. Einrichten der Ereignisverarbeitung
Setzen Sie die Ereignisverarbeitung ein, d. h. nach dem Erhalt der Anweisung, um die Ereignisverarbeitungsmethode gleichzeitig auszuführen.
1. Wie man Ereignisse verarbeitet
Klicken Sie auf das Ereignis in der Menüleiste, wählen Sie Ereignisverarbeitung → Pop-up - Ereignisverarbeitung Fenster → Klicken Sie auf Hinzufügen → Einstellen der Ereignisnummer (Ereignisnummer ist 100 - 65535) wie in Abbildung 6.1.
Abbildung 6.1 Hinzufügen von Ereignisverarbeitung
2. Wie man Datenformat
Das Datenformat legt seinen Datentyp fest, wie in Abbildung 6.2 dargestellt.
Abbildung 6.2 Einrichten von Datenformaten
3. Wie man die Verarbeitungsebethode
einstellt Klicken Sie auf Ereignisverarbeitungsebethode hinzufügen → Klicken Sie auf „... Die Schaltfläche öffnet das Fenster der Verarbeitungsmethode → Setzen Sie die Verarbeitungsmethode gemäß den Einstellungsbedürfnissen ein (ein Ereignis kann mehrere Verarbeitungsmethoden hinzufügen
), wie in Abbildung 6.3 dargestellt.
Abbildung 6.3 Hinzufügen von Ereignisverarbeitung
4. Simulation der Demonstration
empfängt die Befehl AB CD0007E4 00CE D1, das Systemzeitjahr wird auf 2020 geändert, während die Schnittstelle zum NEW2 - Fenster wechselt und die Befehl 11 22 33 44
sendet, bevor die Befehlsauswertung, wie in Abbildung 6.4
Abbildung 6.4 Simulation-Demonstration
Nach der Anweisung analysiert, wie in Abbildung 6.5 gezeigt.
6.5 Simulation der Demonstration
7. Wie man Triggerereignisse durch benutzerdefinierte Befehle löst
Triggerereignisse werden durch benutzerdefinierte Befehle in zwei Arten unterteilt, die durch einen Vergleich von Schaltvolumen und durch eine kontinuierliche Menge direkt ausgelöst werden.
1. Durch die Auslösung der Schaltermenge, wie folgt eingestellt
assoziierte Variable nicht ausgefüllt, Framesend selektiv ausgefüllt, andere erforderlich, bedeutet, wenn die Länge, die Datenlänge und die Framekopfler (Framesend) entsprechen, durch den Vergleich von Daten, ob 0001 (Muss dem Datenformat entsprechen) Entscheiden, ob das Ereignis mit der Nummer 100 ausgelöst wird
2, direkt ausgelöst, wie folgt gesetzt:
Umwandlungsformeln und assoziierte Variablen nicht ausgefüllt, Frame-End kann optional ausgefüllt werden, andere obligatorisch, wenn Länge, Datenlänge und Frame-Header (Frame-End) entsprechen, wenn direkt ausgelöst.























Wenn es eine Ernte gibt, dann loben Sie es.
Antwort veröffentlichen