Modbus RTU - One Job
Modbus RTU - One Job
Modbus RTU - One Job
Scalable PLC
for Individual Automation
3.1 Example 1 Modbus data exchange over a ST step chain: write one word to the slave
……………………………………………………… ……………………………………… ……6
4 PC as modbus slave................................................................................................14
5.2 Analyse the request telegrams sent by the CP400 operator panel............................ 18
The user shall be solely responsible for the use of this application example described within this file.
ABB shall be under no warranty whatsoever. ABB's liability in connection with this application example or the
files included within this file, irrespective of the legal ground, shall be excluded. The exclusion of liability shall
not apply in the case of intention or gross negligence. The present declaration shall be governed by and
construed in accordance with the laws of Switzerland under exclusion of its conflict of laws rules and of the
Vienna Convention on the International Sale of Goods (CISG)."
Der Nutzer ist allein für die Verwendung des in dieser Datei beschriebenen Anwendungsbeispiels
verantwortlich.
ABB unterliegt keiner Gewährleistung. Die Haftung von ABB im Zusammenhang mit diesem
Anwendungsbeispiel oder den in dieser Datei enthaltenen Dateien - gleich aus welchem Rechtsgrund - ist
ausgeschlossen. Dieser Ausschluß gilt nicht im Falle von Vorsatz oder grober Fahrlässigkeit. Diese
Erklärung unterliegt Schweizer Recht unter Ausschluß der Verweisungsnormen und des UN-Kaufrechts
(CISG)."
Die in diesem Anwendungsbeispiel enthaltenen Dateien beschreiben eine mögliche Anwendung der
Steuerung AC500 bzw. zeigen eine mögliche Einsatzart der Steuerung. Sie stellen nur Beispiele für
Programmierungen dar, sind aber keine fertigen Lösungen. Eine Gewähr kann nicht übernommen werden.
Der Nutzer ist für die ordnungsgemäße, insbesondere vollständige und fehlerfreie Programmierung der
Steuerungen selbst verantwortlich. Im Falle der teilweisen oder ganzen Übernahme der
Programmierbeispiele können gegen ABB keine Ansprüche geltend gemacht werden.
Die Haftung von ABB, gleich aus welchem Rechtsgrund, im Zusammenhang mit den Anwendungsbeispielen
oder den in dieser Datei enthaltenen Dateien wird ausgeschlossen. Der Haftungsausschluß gilt jedoch nicht
in Fällen des Vorsatzes, der groben Fahrlässigkeit, bei Ansprüchen nach dem Produkthaftungsgesetz, im
Falle der Verletzung des Lebens, des Körpers oder der Gesundheit oder bei schuldhafter Verletzung einer
wesentlichen Vertragspflicht. Im Falle der Verletzung einer wesentlichen Vertragspflicht ist die Haftung
jedoch auf den vertragstypischen, vorhersehbaren Schaden begrenzt, soweit nicht zugleich ein anderer der
in Satz 2 dieses Unterabsatzes erwähnten Fälle gegeben ist. Eine Änderung der Beweislast zum Nachteil
des Nutzers ist hiermit nicht verbunden.
This document explains how to configure/program a PM581 CPU as Modbus master or modbus slave and
how to check the basic modbus functionality with a PC modbus software.
The modbus communication is RTU.
http://www.win-tech.com/
3.1 Example 1
Modbus data exchange over a ST step chain: write one
word to the slave
The PM581 CPU from the AC500 family will be configured as Modbus RTU master over COM1 with the
parameters 19200,8,1,even parity, RS485.
The function block COM_MOD_MAST will control the data exchange with the Modbus RTU slave.
It will send the corresponding modbus request telegrams to the PC and will receive the reply telegrams from
the modbus slave, handling the send and receive data.
The PLC program is divided in two POU: the call of the COM_MOD_MAST FB is written in FBD, the data
and telegram handling in written ST.
All variables are global.
1. 1st JOB : the slave is responding with an modbus error telegram ( e.g. : no data under this address ),
but is present.
2. 2nd Job : the slave is not present, no answer. The master is waiting for an answer for the period =
Timeout. After that he will signalise an error with error code (e.g.: slave is not answering )
The data exchange is realised over a step chain ( variable Chain ): write one word to the slave (=one job).
WORD_WRITE:=WORD_WRITE+1;
CASE Chain OF
END_IF
END_CASE
Store (in case of errors) the error number into the variable Modbus_Error_NB:
IF RTU_Master.ERR THEN
Modbus_Error_NB:=RTU_Master.ERNO;
END_IF
This minimal example can be easily expand to any number of slaves, data and kind of telegrams by keeping
the same strategy of working RTU_Master.DONE and increasing the number of step to the number of
worked jobs.
VAR_GLOBAL
RTU_Master: COM_MOD_MAST;
RTU_Master_DATA: WORD;
Chain: WORD;
Modbus_Error_NB: WORD;
WORD_WRITE: WORD;
END_VAR
4.1 ModSim32
Go online with the Set the same communication parameters as the PM 582 master :
Modbus slave , 8, 1 even, 19200
In the communication window you will see the data written from master ( address=100 + 1 --- Modbus offset )
– address 40101 (=100 ) – data : 07792.
You can also visualise the data traffic in order to analyse the modbus telegram structures:
03 10 00 64 00 01 02 2C 97 EA 7A
slave FCT address one word 2 byte value=2C97 CRC
03 10 00 64 00 01 41 F4
slave FCT address one word CRC
Disconnect the slave, you will get on the analyser the request telegrams sent by the AC500 CPU.
CP4xx
RS 232, 19200, 8,1, N PC
Modbus RTU master request
Modbus RTU slave
reply
COM 1 COM 1
TxD 3 2 RxD
RxD 2 3 TxD
SGND 5 5 SGND
docklight analyser
01 = slave 1
03 = FCT – read n words
00 00 = address 0
00 01 = one word
84 0A = CRC
AC500 CPU
Modbus protocol
description
Helpline document 23
Title: Lang.:
www.abb.com/plc