西门子小型系列S7-200MODBUS RTU通讯篇
2019-09-03

                                    MODBUS通讯

基于RS485通讯的基础,简化版

1. 单主站的主从通讯

2. 从站地址0-247

3. MODBUS本身带有指定的通讯地址

00001至0xxxx-开关量输出                                                                                              10001至1xxxx-开关量输入                                                                                          30001至3xxxx-模拟量输入                                                                                          40001至4xxxx-保持寄存器

Xxxx:用户定义

MODBUS支持PLC于PLC  还有PLC与变频器 PLC与伺服通讯等

 

使用S7-200编写

打开S7-200库

MODBUS  MASTER   PORT 0   主站通讯库端口0

将上面的库展开

MBUS_CTRL初始化MODBUS主站通讯

MBUS_MSG设置MODBUS控制请求(设置发送和接受)

MODBUS SLAVE PORT 0从站通讯库 (在于PLC与PLC之间才会用从站通讯库,从站通讯库写在从站当中。)

MODBUS_INIT 从站通讯地址设置

MODBUS_slave 从站接受请求

 

主站初始化MODBUS通讯指令

西门子小型系列S7-200MODBUS RTU通讯篇01

EN          EN使能:必须保证每一扫描周期都被使能(使用SM0.0)

Mode      模式:常为1,使能 Modbus 协议功能;为0 时恢复为系统 PPI 协议

Baud       波特率:设为9600,要与从站波特率对应

Parity       校验:0:无 1:奇  2:偶            是一种校验代码传输正确性的方法,根据被传输的一组二进制数据中的1的个数为奇数还是偶数。             

Timeout    超时:主站等待从站响应的时间,以毫秒为单位,典型的设置值为1000毫秒(1秒),

                            允许设置的范围为1-32767。

                注意:这个值必须设置足够大以保证从站有时间响应。

Done      完成位:初始化完成,此位会自动置1。可以用该位启动 MBUS_MSG 读写操作

Error       初始化错误代码(只有在 Done 位为1时有效):0= 无错误                                                                                                               1= 校验选择非法                                                                                                               2= 波特率选择非法                                                                                                               3= 模式选择非法

 

2设置通讯的读写

西门子小型系列S7-200MODBUS RTU通讯篇02

EN使能:同一时刻只能有一个读写功能(即 MBUS_MSG)使能   

注意:建议每一个读写功能(即MBUS_MSG)都用上一个 MBUS_MSG 指令的 Done 完成位来激活,以保证所有读写指令循环进行(见程序)。

First读写请求位:每一个新的读写请求必须使用脉冲触发

Slave从站地址:可选择的范围 1-247

RW读写操作:0=读, 1=写                 

注意:1. 开关量输出和保持寄存器支持读和写功能

      2. 开关量输入和模拟量输入只支持读功能

Addr读写从站的数据地址:选择读写的数据类型

00001至0xxxx-开关量输出                                                                                              10001至1xxxx-开关量输入                                                                                          30001至3xxxx-模拟量输入                                                                                          40001至4xxxx-保持寄存器

Count       通讯的数据个数(位或字的个数)

                 注意:Modbus主站可读/写的最大数据量为120个字(是指每一个 MBUS_MSG 指令)

DataPtr数据指针:1. 如果是读指令,读回的数据放到这个数据区中

 2. 如果是写指令,要写出的数据放到这个数据区中

格式为(&vb0指针格式)

Done读写功能完成位

Error错误代码 只有在 Done 位为1时,错误代码才有效

错误代码:0=无错误

          1=响应校验错误

          2=未用

          3=接收超时(从站无响应)

          4=请求参数错误

          5=Modbus/自由口未使能

          6=Modbus正在忙于其它请求

          7=响应错误(响应不是请求的操作)

          8=响应CRC校验和错误

          101= 从站不支持请求的功能

          102= 从站不支持数据地址

          103= 从站不支持此种数据类型

          104= 从站设备故障

          105= 从站接受了信息,但是响应被延迟

          106= 从站忙,拒绝了该信息

          107= 从站拒绝了信息

          108= 从站存储器奇偶错误

常见的错误及其错误代码:

1. 如果多个 MBUS_MSG 指令同时使能会造成6号错误

2. 从站 delay 参数设的时间过长会造成3号错误

3. 从站掉电或不运行,网络故障都会造成3号错误

 

在从站S7-200PLC中编写

从站初始化请求

西门子小型系列S7-200MODBUS RTU通讯篇03

初始化Modbus从站协议

 

Mode:         模式选择,启动/停止MODBUS,1=启动;0=停止

Address:     从站地址,MODBUS从站地址,取值1~247

Baud:         波特率,可选1200,2400,4800,9600,19200,38400,57600,115200

Parity:         奇偶校验,0=无校验;1=奇校验;2=偶校验

Delay:         延时,附加字符间延时,缺省值为0

MaxIQ:       最大I/Q位,参与通信的最大I/O点数,S7-200的I/O映像区为128/128,缺省值为128

MaxAI:       最大AI字数,参与通信的最大AI通道数,可为16或32

MaxHold:   最大保持寄存器区,参与通信的V存储区字(VW)

HoldStart:   保持寄存器区起始地址,以&VBx指定(间接寻址方式)

 

Done:        初始化完成标志,成功初始化后置1

Error:         初始化错误代码

 

在本例子中,设置从站地址为12

Port0 通讯波特率为9600

无校验

可以使用的S7-200最大数字量输入输出点数为128

可以使用的S7-200最大模拟量输入寄存器字数为32

可以使用的V区寄存器地址字数为100, 起始地址为VB1000

智通教育是东莞市专业的PLC编程培训机构,平时会不定期的在网站发布一些PLC电气自动化课程相关的知识点,有兴趣的同学欢迎大家关注本网站!

上一篇:西门子S7-1200PLC和触摸屏模拟仿真

下一篇:西门子小型系列S7-200USS与西门子变频器通讯篇

学在智通,赢在职场

关于智通联系我们全部课程证书查询

智通学习 版权所有 粤ICP备17017787号