我们通过西门子ET200S Modbus模块作为主站与Modbus从站设备进行通讯,通过实践很好地解决了实际问题.
1. 在西门子的ET200S 的Modbus模块中,设置参数如下: 波特率为19200, 数据位固定为8为,校验为even校验,停止位为1位;
2. 在Modbus从站设备中通讯参数的设置与ET200S的Modbus主站参数设置要一致即可;
3. 在西门子Step 7 软件中,安装Modbus通讯的软件插件,安装完成后,在程序编辑器中会有ET200Ssi的功能库;
4. 开始编写程序;
我们主要用到了FB2和FB3(即接收和发送功能块)来进行编写通讯程序.
CALL "S_SEND_SI" , DB100
REQ :=
R :=
LADDR :=
DB_NO :=
DBB_NO :=
LEN :=
DONE :=
ERROR :=
STATUS :=
COM_RST:=
CALL "S_RECV_SI" , 101
EN_R :=
R :=
LADDR :=
DB_NO :=
DBB_NO :=
NDR :=
ERROR :=
LEN :=
STATUS :=
COM_RST:=
通过这两个功能块就可以往Modbus模块的串口发送和接收数据.
5. Modbus的功能号:
A. 功能号01,可以从从站中读取位数据,格式为: 从站地址 功能号 始起地址 读取的位数 数据长度6
比如读取从站01站的从64开始的16个位: B#16#01 B#16#01 W#16#0040 16 06
即可
返回的数据格式是: 数据(一个WORD)字.
B. 功能号03, 从从站中读取数据存储器的内容.格式为: 从站地址 功能号 始起地址 读取的寄存器数 数据长度
等等这些信息,这里就不一一介绍,可以参考相关的书籍和杂志.