一、通信本质(信道&协议)
(一) 信道(传输媒介)
(二) 协议(编码和解码的约定)
二、ModBus通讯格式
ModBus是串行通信,设备之间通过少量数据信号线(一般是8根以下)、地线及控制信号线,按数据位形式一位一位地传输数据的通信方式。需要约定号编码和解码的方式。
(一) 波特率
一秒钟传送的位数,也就是通讯速率;比如波特率为9600,即,一秒种可以传送9600个位数
(二) 校验方式
奇校验或偶校验或无校验,目的是判断传输过程中是否有错误!它只是用于判断一个字符(比如八个位或是七个位组成一个字符)传输是否有错误。但是它并不能完全能够判断传输是否有错。比如偶校验,在检验送八个“11111111”时,如果到达接收方,由于干扰而变成了“10111101”,“1”的个数仍然是偶数,接收方就判断不出来传送的字符已经错误!目前多用无校验
(三) 起始位
在发送有效数据前,无需配置,会自动产生1bit 逻辑“0”的低电平的起始位,表示串口数据传输开始,之后开始发送有效数据。
(四) 数据位
数据位,决定了通信过程中传输的有效数据位数,数据位通常有5、6、7 、8 bit,需要根据需要进行相应的配置,通常选择8位字长。
(五) 停止位
停止位,停止位是一帧数据结束的标志,可以是1bit、1.5bit或者2bit逻辑“1” 高电平,需要根据自己需求配置,一般配置1bit停止位。
三、通讯过程
Modbus是主从方式通信,也就是说,不能同步进行通信,总线上每次只有一个数据进行传输,即主机发送,从机应答,主机不发送,总线上就没有数据通信。
主站发送数据:
从站回复数据
四、西门子S7-1500系列仿真通讯测试
(一) PLCSIM Advance模拟PLC作为ModbusTCP服务器与MThings模拟的主站进行通讯
ModBus协议主站主动找从站读写数据,客户端主动找服务端读写数据,所以一般主站作为客户端,从站作为服务器。
1. 使用PLCSIM Advance 仿真1500PLC如下图
2. 创建PLC项目,并添加硬件设置CPU的以太网IP
下载时有可能遇到如下问题:
解决方法如下:
①对硬件配置重新编译后下载
②如果上述方法不行,则window网络连接中检查PLCSIM虚拟网卡的IP和实际网卡的IP是否一直,需改为一致后重新下载
plc启动可能会失败,如下:
解决方法如下:①项目属性-保护-块编译时支持仿真
②设备视图中配置CPU如下(允许PUT/GET通信访问)
3. 在 ob1 主程序中添加通讯程序
①创建DB块,用来存储通讯的数据(需要取消优化的块访问后重新编译)
重新编译后DB块如下:
②在ob1中添加功能块如下:创建DB块存储连接信息,数据格式为TCON_IP_v4,程序如下:
③配置连接信息
④完成上述配置后即可下载程序,在线后如下:
STATUS为7002,说明程序正常,等待连接中……
4. 仿真一个ModBus主机完成和PLC的通讯
①通过Mthings配置端口连接信息(IP地址与仿真的PLC IP地址保持一致)
②创建虚拟主机
③选择寄存器和数据长度
④测试PLC的④数据可以直接被虚拟的ModBus主机读取
⑤测试虚拟的ModBus主机可以将数据写入到PLC中
(二) PLCSIM Advance仿真两个PLC完成ModBusTCP通讯
1. 使用PLCSIM Advance仿真两个PLC,IP在同一网段,如下图
2. 博途创建项目组态硬件,配置对应的IP地址
使用仿真需要设置如下:
①整个项目-属性-保护-块编译时支持仿真
②两个硬件分别设置 属性-常规-防护与安全-连接机制-允许来自远程对象的PUT/GET通信访问
3. 服务端程序编写
- 创建ModBus-TCP连接的数据块,数据格式TCON_IP_v4
- 创建存储数据交换的数据块(该数据块需要在属性中取消勾选优化的块访问后重新编译)
- 编写程序如下
4. 客户端程序编写
- 创建ModBus-TCP连接的数据块,数据格式TCON_IP_v4
-
- client 需要是主动连接,ActiveEstablished需要是1
- client 需要是填写目标设备的ip地址(modbus网关或仪表的ip地址)
- RemotePort 即为modbus网关或仪表的端口
- 创建存储数据交换的数据块(该数据块需要在属性中取消勾选优化的块访问后重新编译)
- 编写程序如下
5. 测试仿真
- 在MB_CLIENT为写模式时(MB_MODE=1),PLC2写入数据 PLC1的数据会跟随变化。
- 在MB_CLIENT为读模式时(MB_MODE=0),PLC1更改数据PLC2读到的数据会跟随变化。
(三) 实体PLC作为客户端与仿真ModBus仪表通讯
1. 创建项目,添加硬件分配地址如下:
2. 编写程序
- 添加两个DB块分别用来存储通讯信息和通讯数据,如下图
- 编写轮询程序(因为对时效性要求不高,所有用时序轮询)
①先写一个方波,利用方波生成循环计数
②再轮询,通过改变站地址,获取不同站地址仪表上的数据
③最后将不同仪表上读取的数据保存在不同的地址上
3. 连接PLC调试测试测验
- 检查PLC的ip地址,并连接PLC,完成装载和启动
- 在MThings中添加虚拟从站,并设置不同的从站地址
- 数据验证正常。
文章来源:https://www.toymoban.com/news/detail-770577.html
文章来源地址https://www.toymoban.com/news/detail-770577.html
到了这里,关于S7-1500系列ModBusTCP通讯的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!