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 F146_READ_DATA_TYPE_OFFS oder F145F146_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–255)
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.
Wir empfehlen, anstelle von diesem F-Befehl den flexibelsten Befehl zu verwenden: FP_READ_FROM_SLAVE_AREA_OFFS.
Die F145 oder F146-Befehle können nur ausgeführt werden, wenn keine der Befehle aktiv ist. Verwenden Sie den Merker "F145/F146 nicht aktiv" in Ihrem Programm, um den Status der Befehle zu prüfen.
Prüfen Sie anhand des Merkers "Kommunikationsfehler mit F145/F146“, ob die Übertragung erfolgreich war oder zu einem Fehler geführt hat.
Die Befehle F145 oder F146 können nicht ausgeführt werden, wenn die Zieladresse ein spezieller interner Merker (ab R9000), ein spezielles Datenregister (ab DT9000/DT90000) oder ein Dateiregister FL ist.
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 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
bBool2: BOOL:=FALSE;
bRead1: BOOL:=FALSE;
bWrite2: BOOL:=FALSE;
END_VAR
VAR_EXTERNAL
Slave2_g_bY38: BOOL:=FALSE;
END_VAR
VAR
END_VAR
Wenn bRead1 und sys_bIsComPort1F145F146NotActiveauf TRUE gesetzt sind, wird die globale Variable Slave2_g_bY38, die Y38 von Slave 2 zugewiesen ist, in bBool2 gelesen und gespeichert.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 6 ;
NETWORK_BODY
B(B_CONTACT,,sys_bIsComPort1F145F146NotActive,8,1,10,3,);
B(B_CONTACT,,bWrite2,18,1,20,3,);
B(B_VARIN,,SYS_COM1_PORT,21,2,23,4,);
B(B_VARIN,,2,21,3,23,5,);
B(B_VARIN,,Slave2_g_bY38,21,4,23,6,);
B(B_VAROUT,,bBool2,33,2,35,4,);
B(B_COIL,,bWrite2,36,1,38,3,E);
B(B_COIL,,bRead1,42,1,44,3,S);
B(B_F,F146_READ_DATA!,Instance,23,0,33,6,,?DEN?DPort?DSlaveAddress?DSlaveData?AENO?CMasterData);
L(1,2,8,2);
L(10,2,18,2);
L(38,2,42,2);
L(33,2,36,2);
L(20,2,23,2);
L(1,0,1,6);
END_NETWORK_BODY
END_NET_WORK
END_BODY
if (bRead1 and sys_bIsComPort1F145F146NotActive) then
F146_READ_DATA(Port := SYS_COM1_PORT,
SlaveAddress := 2,
SlaveData := Slave2_g_bY38,
MasterData => bBool2);
bRead1 := false;
bWrite1 := true;
end_if;