Daten in Slave schreiben
Mit diesem Befehl schreiben Sie Daten mit dem Protokoll MEWTOCOL-COM oder Modbus-RTU von einem Master in einen Slave wie in den Systemregistern der verwendeten Kommunikationsschnittstelle 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_WRITE_TO_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
Wortdatenbereich auf dem Mastermodul für die Daten, die in den Slave geschrieben werden sollen.
Ausgang
Zieladresse auf dem Slave, in den die 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 der mit dem Index-Modifizierer definierte Bereich größer ist als der zulässige Bereich
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
wWriteToSlaveResult: WORD:=0;
(*result of write to slave instruction*)
iSlaveStationNumber: INT:=0;
(*slave station number*)
arrParameters: ARRAY [0..15] OF DINT;
(*Array of parameters to be send to slave station*)
bSetParameters: BOOL:=FALSE;
END_VAR
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_F,FP_WRITE_TO_SLAVE!,,19,0,30,6,,?DEN?DnPort?DStationNumber?DSource?AENO?CSlaveAddress?CResult);
B(B_VARIN,,SYS_COM2_PORT,17,2,19,4,);
B(B_VARIN,,iSlaveStationNumber,17,3,19,5,);
B(B_VARIN,,arrParameters,17,4,19,6,);
B(B_VAROUT,,g_Peripherie_SlaveParameter_Address,30,2,32,4,);
B(B_VAROUT,,wWriteToSlaveResult,30,3,32,5,);
B(B_CONTACT,,bSetParameters,4,1,6,3,);
L(1,2,4,2);
L(6,2,19,2);
L(1,0,1,6);
END_NETWORK_BODY
END_NET_WORK
END_BODY
if bSetParameters then
FP_WRITE_TO_SLAVE(Port := SYS_COM2_PORT,
StationNumber := iSlaveStationNumber,
Source := arrParameters,
SlaveAddress => g_Peripherie_SlaveParameter_Address,
Result => wWriteToSlaveResult);
end_if;