ModBus是串行通信,设备之间通过少量数据信号线(一般是8根以下)、地线及控制信号线,按数据位形式一位一位地传输数据的通信方式。需要约定号编码和解码的方式。
一秒钟传送的位数,也就是通讯速率;比如波特率为9600,即,一秒种可以传送9600个位数
奇校验或偶校验或无校验,目的是判断传输过程中是否有错误!它只是用于判断一个字符(比如八个位或是七个位组成一个字符)传输是否有错误。但是它并不能完全能够判断传输是否有错。比如偶校验,在检验送八个“11111111”时,如果到达接收方,由于干扰而变成了“10111101”,“1”的个数仍然是偶数,接收方就判断不出来传送的字符已经错误!目前多用无校验
在发送有效数据前,无需配置,会自动产生1bit 逻辑“0”的低电平的起始位,表示串口数据传输开始,之后开始发送有效数据。
数据位,决定了通信过程中传输的有效数据位数,数据位通常有5、6、7 、8 bit,需要根据需要进行相应的配置,通常选择8位字长。
停止位,停止位是一帧数据结束的标志,可以是1bit、1.5bit或者2bit逻辑“1” 高电平,需要根据自己需求配置,一般配置1bit停止位。
Modbus是主从方式通信,也就是说,不能同步进行通信,总线上每次只有一个数据进行传输,即主机发送,从机应答,主机不发送,总线上就没有数据通信。
主站发送数据:

从站回复数据

ModBus协议主站主动找从站读写数据,客户端主动找服务端读写数据,所以一般主站作为客户端,从站作为服务器。

下载时有可能遇到如下问题:

解决方法如下:
①对硬件配置重新编译后下载
②如果上述方法不行,则window网络连接中检查PLCSIM虚拟网卡的IP和实际网卡的IP是否一直,需改为一致后重新下载
plc启动可能会失败,如下:

解决方法如下:①项目属性-保护-块编译时支持仿真

②设备视图中配置CPU如下(允许PUT/GET通信访问)

①创建DB块,用来存储通讯的数据(需要取消优化的块访问后重新编译)

重新编译后DB块如下:

②在ob1中添加功能块如下:创建DB块存储连接信息,数据格式为TCON_IP_v4,程序如下:

③配置连接信息

④完成上述配置后即可下载程序,在线后如下:

STATUS为7002,说明程序正常,等待连接中……
①通过Mthings配置端口连接信息(IP地址与仿真的PLC IP地址保持一致)

②创建虚拟主机

③选择寄存器和数据长度

④测试PLC的④数据可以直接被虚拟的ModBus主机读取

⑤测试虚拟的ModBus主机可以将数据写入到PLC中



使用仿真需要设置如下:
①整个项目-属性-保护-块编译时支持仿真

②两个硬件分别设置 属性-常规-防护与安全-连接机制-允许来自远程对象的PUT/GET通信访问











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

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




