S7-1500系列ModBusTCP通讯

一、通信本质(信道&协议)

(一) 信道(传输媒介)

(二) 协议(编码和解码的约定)

二、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. 服务端程序编写

  1. 创建ModBus-TCP连接的数据块,数据格式TCON_IP_v4

  1. 创建存储数据交换的数据块(该数据块需要在属性中取消勾选优化的块访问后重新编译)

  2. 编写程序如下

4. 客户端程序编写

  1. 创建ModBus-TCP连接的数据块,数据格式TCON_IP_v4

    • client 需要是主动连接,ActiveEstablished需要是1
    • client 需要是填写目标设备的ip地址(modbus网关或仪表的ip地址)
    • RemotePort 即为modbus网关或仪表的端口
  1. 创建存储数据交换的数据块(该数据块需要在属性中取消勾选优化的块访问后重新编译)

  2. 编写程序如下

5. 测试仿真

  1. 在MB_CLIENT为写模式时(MB_MODE=1),PLC2写入数据 PLC1的数据会跟随变化。
  2. 在MB_CLIENT为读模式时(MB_MODE=0),PLC1更改数据PLC2读到的数据会跟随变化。

(三) 实体PLC作为客户端与仿真ModBus仪表通讯

1. 创建项目,添加硬件分配地址如下:

2. 编写程序

  1. 添加两个DB块分别用来存储通讯信息和通讯数据,如下图

  1. 编写轮询程序(因为对时效性要求不高,所有用时序轮询)
    ①先写一个方波,利用方波生成循环计数

②再轮询,通过改变站地址,获取不同站地址仪表上的数据

③最后将不同仪表上读取的数据保存在不同的地址上

3. 连接PLC调试测试测验

  1. 检查PLC的ip地址,并连接PLC,完成装载和启动

  1. 在MThings中添加虚拟从站,并设置不同的从站地址

  2. 数据验证正常。

S7-1500开放式通讯是指西门子S7-1500系列可编程逻辑控制器的通信功能,该系列PLC具有灵活且易于集成的开放式通信接口,能够与其他设备和系统进行数据交换和通信。 S7-1500开放式通讯具有以下几个特点: 1. 支持多种通信协议S7-1500开放式通讯板模块可以通过以太网、PROFINET、Modbus TCP/IP等多种通信协议与其他设备进行通信,适用于各种工业自动化应用场景。 2. 强大的数据交换功能:S7-1500开放式通讯通过标准协议实现了高效的数据交换,可以与其他PLC、人机界面、上位机等设备进行实时数据传输和远程监控,满足工业生产的要求。 3. 高度集成化:S7-1500系列PLC具有多个I/O模块插槽和通信模块插槽,可以根据实际需求进行灵活的扩展和集成,提供更多的接口与其他设备进行连接。 4. 安全可靠:S7-1500开放式通讯支持数据加密和传输安全机制,保证数据的安全性和可靠性,防止数据被未经授权的人员篡改或窃取。 S7-1500开放式通讯在工业自动化领域具有广泛的应用,可用于控制系统与生产线设备、机器人系统、监控系统等设备之间的数据交换和通信,实现设备之间的信息共享和整合,提高整个生产系统的效率和运行稳定性。同时,通过开放式通讯接口,还可以轻松与其他厂家的设备和系统进行集成,为用户提供更大的灵活性和便捷性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值