Startseite > Forum > Controller SlimLine e Netsyst (LogicLab) > Verbindung mit TRP Dezentrale Peripherie über Modbus RTU
- Dieses Thema hat 9 Antworten, 3 Teilnehmer und wurde zuletzt aktualisiert 10 Jahre, 12 Monate da Sergio Bertana.
-
AutorPost
-
November 29, 2010 bei 9: 13 #34931AnonymLeerlauf
Ich habe einige verteilte Trycom-E / A-Module gekauft und wollte damit ein Hausautomationssystem bauen. In der Praxis möchte ich die Schalter an die digitalen 16-Eingänge des TRPC26-Moduls anschließen, während ich an die 16-Ausgänge des TRPC24-Moduls die Benutzersteuerungsausgänge (Lampen, Geräte usw.) anschließen möchte.
Ich habe überlegt, Ihr CPU-SLine-Modul für die logische Verwaltung der Anlage zu verwenden. Ist es möglich, diese über das Modbus-Protokoll verteilten E / A-Module von Ihrer CPU aus zu verwalten?
November 29, 2010 bei 9: 15 #36594Sergio BertanaAdministrator des Forumsdas Modul TRPC26 Verwenden Sie den Modbus-Befehl 01-Lesespulenstatus zum Lesen des Status der 16 digitalen Eingänge, während das Modul TRPC24 Verwenden Sie den Modbus-Befehl 15 Mehrere Spulen erzwingen zum Schreiben von 16-Digitalausgängen. Verwendung des Funktionsbausteins ModbusRTUMaster (Handbuch extrahieren) ist es möglich, die Eingänge vom TRPC26-Modul zu lesen und die Ausgänge in das TRPC24-Modul zu schreiben.
Ich habe auf SLine ein Programm erstellt, das die 16 Eingänge des Eingangsmoduls zyklisch liest und sie in 16 BOOL-Variablen (TRPC26Input [0..15]) unterstützt und 16 BOOL-Variablen (TRPC24Output [0..15]) auf die 16 kopiert Logikausgänge des Ausgangsmoduls. Die beiden Module wurden mit dem RS485-Netzwerk verbunden. Es ist erforderlich, die Adresse 0x01 (Standard) für das Logikeingangsmodul und die Adresse 0x02 für das Logikeingangsmodul zu definieren Post.
Im Programm finden Sie ein Kontaktplanprogramm Logik, der den DI0-Eingang der Eingangsmodule auf den DO0-Ausgang des Ausgangsmoduls legt. Sie können die gesamte benötigte Logik hinzufügen, indem Sie dieser Datei Zeilen hinzufügen und / oder dem Projekt andere Programme hinzufügen.
das Programm TRPCom führt zyklisches Lesen und Schreiben von E / A-Modulen und Programmen durch EingabeLesen e AusgabeSchreiben, tauschen sie die Lesebits aus und schreiben sie in die TRP-Module, um die BOOL-Variablen entsprechend der E / A auf dem Modul anzuordnen. Programm drucken, Programm herunterladen.
November 30, 2010 bei 7: 38 #36598Sergio BertanaAdministrator des ForumsAls Hausautomationssystem empfehle ich Sie in den Dateien EingabeLesen ed AusgabeSchreiben Umbenennen der verteilten E / A-Variablen unter Verwendung von Namen, die für Ihr System typisch sind.
Für die Eingänge TRPC26Input [0] kann werden Pls Light Salon, TRPC26Input [1] kann werden Pls leichte Küche, Etc.
Für Ausgänge TRPC24Output [0] kann werden CdoLuceSalone, TRPC24Output [1] kann werden CdoLuceCucina, Etc.Juni 18, 2011 bei 10: 02 am #36794RaffaelePartecipanteIch bitte um Klarstellung bezüglich des Beispiels IOoverTRP die erfolgreich auf verschiedenen Modbus IO Herstellern getestet wurden.
Ich führe gerade Kommunikationstests mit einer Siemens S7-200 durch, die als Modbus-Slave des angeschlossenen Geräts verwendet wird SlimLine. Die einzige Änderung, die ich vorgenommen habe, um den oben genannten Modbus-Slave lesen zu können, war das Einstellen FCode= 16 # 03 und Parameter einstellen Adresse rechtzeitig.
Ich bin auf die Situation gestoßen, die sich aus dem ableiten lässt Abbildung, oder dass das Array TRPC26Read es wird nicht richtig bewertet. In der Tat aus dem Fenster Ansehen Nur das niedrigstwertige Bit des Arrays wird korrekt ausgewertet, während die Anzeige von% MW100.0 anzeigt, dass die Kommunikation erfolgreich ist.
Juni 20, 2011 bei 6: 24 am #36795Sergio BertanaAdministrator des ForumsWir müssen den Unterschied verstehen zwischen FCode 16 # 01 (Spulenstatus lesen) e 16 # 03 (Lese Holding-Register).
Der Befehl 16 # 01 liest den Status logischer Kontakte, dh boolesche Variablen, und liest dann 16 Variablen Punkte = 16wie in meinem Programm TRPComwerden die 16 aufeinanderfolgenden BOOL-Werte des Arrays bewertet TRPC26Read.
Der Befehl 16 # 03 führt das Lesen von Wörtern (16-Bits) des Speichers durch und liest dann die Variable 1 Punkte = 1 Wie in Ihrem Beispiel wird nur eine Programm-USINT-Variable ausgewertet. Wie Sie sehen können % MW100.0 Es wird mit dem Wert 16 # 0005 bewertet, der dem in der Siemens-SPS vorhandenen Wert entspricht.
Wenn Ihr Problem darin besteht, eine USINT-Variable in 16 BOOL-Variablen aufzuteilen, können Sie Funktionsblöcke verwenden WordToByte e ByteToBit (Handbuch extrahieren).
Juni 20, 2011 bei 6: 46 am #36796Sergio BertanaAdministrator des ForumsIch füge einen Tipp hinzu, der hilfreich sein kann, um die Adressierung von Systemen zu verstehen SlimLine. SlimLine basiert auf einem ARM-Prozessor, der Datenspeicher in der verwendet Little-Endian, beginnt mit dem niedrigstwertigen Byte und endet mit dem höchstwertigen.
Wie Sie dem Beispiel la entnehmen können % MW100.0 Es wird mit dem Wert 16 # 0005 bewertet, also an der Stelle mit dem Offset 0 des Arrays TRPC26Read auf die gleiche Adresse von% MW100.0 zugewiesen entspricht LSB des Wortes Wert, während der Ort mit Offset 1 entspricht MSB.
Da der Wert von Wort 16 # 0005 ist, unterscheidet sich sein LSB von Null, dh TRUE, während sein MSB gleich oder dh FALSE ist. Wenn der Wortwert 16 # 0101 gewesen wäre, hätten wir sowohl MSB als auch LSB auf TRUE-Wert gehabt.
Juni 21, 2011 bei 4: 14 pm #36804RaffaelePartecipanteIch wollte die Kodierung von klären SlimLine für WIRKLICHE Daten. Grundsätzlich muss ich eine über MODBUS-RTU von einer S32-7-SPS erfasste Gleitkommazahl (200 Bit) als real behandeln FCode= 16 # 03 e Punkte= 2.
Aus dem LogicLab-Handbuch geht hervor, dass der Realtyp nur einen Bereich von -3.4E38 - + 3.4E38 aufweist, während das von der S7-200 verwendete Format "REAL 32-Bit-IEEE-32-Bit-Gleitkommazahl von + 1,175495E-" lautet. 38 bis + 3,402823E + 38 von -1,175495E-38 bis -3,402823E + 38 "
Ich habe erwartet, dass die Codierung identisch ist, aber ich kann den erfassten Wert nicht in einer REAL-Variablen speichern, die ich anhänge ScreenshotsIch hoffe, die durchgeführten Tests sind klar.
Juni 21, 2011 bei 4: 40 pm #36805Sergio BertanaAdministrator des ForumsDas für REAL-Variablen verwendete Format ist IEEE 754, wie in erwähnt questo BeitragIhre Screenshots zeigen, dass es sich um dasselbe Format handelt, das von der S7-200 verwendet wird. Tatsächlich ist in diesem Darstellungsformat der REAL 2.0-Wert hexadezimal 16 # 40000000 (wie Sie im Debug-Fenster von S7-200 sehen können).
Achtung! Beim Lesen von 32-Bit-Variablen über Modbus muss auf die Endigkeit der Daten geachtet werden. Tatsächlich gibt das Modbus-Protokoll nicht an, in welcher Reihenfolge die beiden 16-Bit-Teile der 32-Bit-Daten zurückgegeben werden müssen. Daher ist es möglich, dass in einigen Systemen der höchstwertige Teil vor dem niedrigstwertigen Teil zurückgegeben wird oder umgekehrt.
Su SlimLine wie bereits in anderen Beiträgen erwähnt Little-Endian Dies beginnt mit dem niedrigstwertigen Byte und endet mit dem höchstwertigen Byte. Aus meiner Sicht handelt es sich um dieselbe Art der Darstellung, die Siemens in der S7-200 verwendet (wahrscheinlich wird ein ARM-Prozessor verwendet). Wenn Sie in% MW100.16 feststellen, dass es sich um das erste von modbus gelesene Register handelt, finden Sie den niedrigstwertigen Teil der Zahl und in% MW100.18 den höchstwertigen Teil.
Ihr Fehler liegt also nur in der Umkehrung der Wörter in der Konvertierung WordToDouble.
Juni 22, 2011 bei 5: 52 am #36806Sergio BertanaAdministrator des ForumsIch füge einen Tipp hinzu, da das Darstellungsformat der S7-200 das gleiche ist wie das der SlimLineUm den Wert in REAL zu haben, müssen Sie nur eine REAL-Variable in DB100.16 definieren, in der FB modbus die von der S7-200 gelesenen Register unterstützt, um sie in Ihrem Programm verwenden zu können, ohne die zu verwenden WordToDouble.
MyVariable AT% MD100.16: REAL; {DE: "REAL Variable von S7-200 gelesen"}
Mai 2, 2013 bei 1: 25 pm #37636Sergio BertanaAdministrator des ForumsJa, natürlich ist die von Ihnen vorgeschlagene Lösung machbar questo Beitrag Sie finden ein Beispiel für die Verwaltung von SlimLine Über Modbus verteilte E / A-Module. Sobald die Module erfasst sind, unterstützen Sie die E / A für Speichervariablen der SlimLine zugänglich mit Modbus. Der PC kann über Ethernet angeschlossen und der Status der Eingänge über Modbus TCP erfasst werden, beispielsweise mit einer SCADA-Software (Siehe Beitrag), eine mit ProfilabExpert entwickelte Anwendung (Siehe Beitrag) oder eine ad hoc entwickelte Anwendung mit der Ihnen bekannten Programmiersprache. Wenn die Entwicklung des Modbus-TCP-Protokolls zu komplex ist, können Sie ein auf Ihre Bedürfnisse zugeschnittenes Kommunikationsprotokoll entwickeln (Siehe Beitrag). Wenn Sie nur den Status der Glocken anzeigen müssen, empfehle ich als Alternative zum PC die Verwendung von a Bedienfeld Touchscreen, der bereits über die native Verwaltung des Modbus-TCP-Protokolls verfügt. Wenn Sie möchten, können Sie außerdem den Summerton verwalten und auch den Interventionsverlauf der Glocken anzeigen. Das Bedienfeld kann auch Verlaufsdateien verwalten, sodass Sie einen Bericht über die Eingriffe der Glocken in Bezug auf Datum und Uhrzeit erhalten.
-
AutorPost
- Sie müssen angemeldet sein, um auf dieses Thema antworten zu können.