Daten von Slave lesen
Mit diesem Befehl lesen Sie Daten von einem Slave mit dem Protokoll MEWTOCOL-COM oder Modbus-RTU Daten wie in den Systemregistern der verwendeten Schnittstelle definiert. Stellen Sie sicher, dass für Master und Slave das gleiche Protokoll eingestellt ist. Master und Slave müssen übereinstimmende Speicherbereiche haben. Wenn die Slave-Daten im Anwenderbereich des Masters nicht verfügbar sind, verwenden Sie FP_READ_FROM_SLAVE_AREA_OFFS oder FP_MODBUS_MASTER.
Bei Datenübertragungen unter Verwendung des Modbus-Protokolls erzeugt der Compiler Modbus-Befehle auf der Grundlage der Modbus-Referenznummern.Eingang
Legt die Kommunikationsschnittstellen fest (je nach SPS-Typ):
COM-Schnittstelle z.B. SYS_COM0_PORT
Ethernet-Schnittstelle z.B. SYS_ETHERNET_USER_CONNECTION_1
MCU/SCU z.B. 16#xx01 (xx = Steckplatznummer) in COM01
Teilnehmeradresse des Slaves (MEWTOCOL: 1–99, MODBUS: 1–247)
Einstellen auf 1, wenn ein SYS_ETHERNET_USER_CONNECTION_xx auf Eingang Port angewandt wird
Quelladresse auf dem Slave, von dem die Daten angefordert werden.
Ausgang
Wortbereich oder Register auf dem Mastermodul, in das die angeforderten Daten geschrieben werden.
Nur für FP7: Eine Beschreibung aller Fehlercodes finden Sie in der Tabelle der Modbus/MEWTOCOL-Kommunikationsfehler-Codes.
Für andere SPS: auf 0 gesetzt
Beim Senden: Sendemerker Master-Kommunikation ist TRUE
Senden abgeschlossen: Sendemerker Master-Kommunikation ist FALSE
Normaler Abschluss: FALSE
Abschluss mit Fehler: TRUE
wenn der mit dem Index-Modifizierer definierte Bereich größer ist als der zulässige Bereich
Wenn Slave-Daten oder Master-Daten den verfügbaren Adressbereich überschreiten.
Wenn als Kommunikationsart nicht MEWTOCOL-COM Master/Slave oder Modbus-RTU-Master/Slave eingestellt ist.
Wenn der ausgewählte COM-Port eine Kommunikationskassette erfordert, die nicht installiert ist.
wenn der mit dem Index-Modifizierer definierte Bereich größer ist als der zulässige Bereich
Wenn Slave-Daten oder Master-Daten den verfügbaren Adressbereich überschreiten.
Wenn als Kommunikationsart nicht MEWTOCOL-COM Master/Slave oder Modbus-RTU-Master/Slave eingestellt ist.
Wenn der ausgewählte COM-Port eine Kommunikationskassette erfordert, die nicht installiert ist.
In der globalen Variablenliste können Sie Variablen festlegen, die von allen POEs des Projekts verwendet werden können.
Im POE-Kopf werden alle Ein- und Ausgangsvariablen deklariert, die für die Programmierung dieser Funktion verwendet werden. Für alle Programmiersprachen wird der gleiche POE-Kopf verwendet.
VAR_EXTERNAL
g_Peripherie_SlaveResult_Address: ARRAY[0..9] OF REAL:=[10(0)];
END_VAR
VAR
bReadResult: BOOL:=FALSE;
wReadFromSlaveResult: WORD:=0;
(*result of write to slave instruction*)
iSlaveStationNumber: INT:=0;
(*slave station number*)
arrResults: ARRAY [0..9] OF REAL:=[10(0.0)];
(*Array of results to be read from slave station*)
iSlaveMemoryArea: INT:=5;
(*memory Area in slave station*)
iSlaveMemoryOffset: INT:=100;
iSlaveMemorySize: INT:=1;
END_VAR
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 8 ;
NETWORK_BODY
B(B_VARIN,,SYS_COM1_PORT,19,2,21,4,);
B(B_VARIN,,iSlaveStationNumber,19,3,21,5,);
B(B_CONTACT,,bReadResult,8,1,10,3,);
B(B_VAROUT,,wReadFromSlaveResult,38,3,40,5,);
B(B_VAROUT,,arrResults,38,2,40,4,);
B(B_F,FP_READ_FROM_SLAVE!,,21,0,33,6,,?DEN?DnPort?DStationNumber?DSlaveAddress?AENO?CDestination?CResult);
B(B_VARIN,,g_Peripherie_SlaveResult_Address,19,4,21,6,);
L(1,2,8,2);
L(10,2,21,2);
L(33,3,38,3);
L(33,4,38,4);
L(1,0,1,8);
END_NETWORK_BODY
END_NET_WORK
END_BODY
if (bReadResult) then
FP_READ_FROM_SLAVE(Port := SYS_COM1_PORT, StationNumber := iSlaveStationNumber,
SlaveAddress := g_Peripherie_SlaveResult_Address, Destination => arrResults[0],
Result => wReadFromSlaveResult);
end_if;