
一个口应该是不行的
需要加挂一块SB-COM板
两个口各写各的就行了
主站的初始化程序和从站的初始化程序的PORT引脚不同,不影响
或者一个MODBUS-RTU,另一个走MODBUS-TCP,反正200SMART都原生自带一个485口和一个PN口
MOBUS只是一种软件协议,协议就是规定了一种"暗语",让主从站之间可以"通话"。也就是把0和1翻译成双方都明白的命令。
这很类似于你在不同品牌的电脑上,装什么软件系统。
而RS232和RS485相当于这个电脑硬件。
他们只是硬件接口。在这个硬件上,也不只能跑MODBUS协议,还能跑其他自拟协议。
同样,MODBUS也不光可以用于RS232和RS485,还可以用于POWERBUS,MBUS,等其他硬件之上。
例如这张图,上面的波形是来自MCU的原始数据接口UART
下面是RS485差分线波形。RS485只不过把来自MCU的UART的0-5V或者0-33V的电平,转换为翻转颠倒的5V压差电平并扩流驱动线缆。这就是硬件接口做的事情。
MODBUS只是一种软件。
但要注意,RS232是全双工通讯的,RS482是半双工通讯的。
施工布线差别就更大了,RS232只能一对一,最远通讯距离15米。而RS485支持一对多大网络通讯。
布线复杂度也不同
ModBus协议内容介绍
设备必须要有RTU协议!这是Modbus协议上规定的,且默认模式必须是RTU,ASCII作为选项。所以设备都有RTU协议,ASCII协议很少,Modbus协议,只需要了解RTU协议,ASCII作为学习的了解就足够了。
ModBus协议最基本的通信单位是帧,整个ModBus帧又被称之为应用数据单元(ADU),ADU中又包含了协议数据单元(PDU)用于传真正需要传输的数据。Modbus协议帧从上图可以看出:
帧结构 = 地址域 + 功能码 + 数据 + 差错校验
地址域:
占用一个字节,范围0-255,其中有效范围是1-247,其他有特殊用途,比如255是广播地址(广播地址就是应答所有地址,正常地需要两个设备的地址一样才能进行查询和回复)。每个终端设备的地址是唯一的,如果查询某个终端设备,必须包含该设备的地址。终端回应也会包含该地址,通过该地址,主机知道哪个终端在与自己进行通信。
功能码:
常用的功能码有01、05、03、06、16。一般占用一个字节,功能码的意义就是,知道这个指令是干啥的,比如你可以查询从机的数据,也可以修改数据,所以不同功能码对应不同功能。常用的功能码是03和06。
数据:
通信的主要内容,可能是数值、参考地址或者极限值。可能是终端执行特定功能所需要的数据或者终端响应查询时采集到的数据,根据功能码不同,有不同结构。
差错校验:
为了保证数据不错误,增加这个,然后把前面的数据进行计算看数据是否一致,如果一致,就说明这个数据是正确的,我再回复;如果不一样,说明你这个数据在传输的时候出了问题,数据不对的,所以就抛弃了。有时,由于电噪声和其它干扰,一组数据在从一个设备传输到另一个设备时在线路上可能会发生一些改变,出错校验能够保证主机或者终端不去响应那些传输过程中发生了改变的数据,这就提高了系统的安全性和效率,出错校验使用了16位循环冗余的方法。
<p>这是我自己用单片机写过的ModBus通信程序,你可以参照一下。其实比较简单,就是按步骤一步步的来就行了。</p>
<p></p>
你想解决的就是串口的收发问题是吗?发送时一般用不到中断服务程序,但是因为串口中断是开启的,所以每次发送数据都会硬件将发送标志位TI置1,从而进入串口中断。我用宏晶的单片机,是要求TI位要软件清零的,所以TI位要在中断程序中清下0。
无需关心数据是否接收完毕,只要有数据发过来,都收到自己的缓冲区当中。
在应用层,打开一个任务以定期扫描缓冲区中的新数据。 如果有新数据,确定其是否为必需的协议帧。 通过帧头帧尾标识符还有校验等判断接收帧的正确性,如果正确再处理,不正确丢弃。
Modbus没有固定的帧头标记,长度也没有固定。 判断时,首先查找具有正确地址的字符,然后找出后续功能代码是否正确。 根据功能代码,确定后续数据有多长并进行校验。 如果验证正确,则说明帧是正确的。
扩展资料:
举例说明如下:
从站地址03,从0开始读取10个寄存器,则接收到的帧为03 03 00 00 00 0a xx xx,查找从站地址03的字节,找到后,以下功能码为03,符合功能码范围。
该功能码的数据包括固定为8个字节的校验和,然后在其后没有8个字节时,表示其已被没收,然后在关闭后进行判断。 如果正确,则可以在应用层中正确处理该帧。
以上就是关于西门子SMART200modbus通讯主从同时启用smartPLC对变频器通讯是主站,对另一台PLC是从站,通讯程序怎么写全部的内容,包括:西门子SMART200modbus通讯主从同时启用smartPLC对变频器通讯是主站,对另一台PLC是从站,通讯程序怎么写、RS232的modbus程序和RS485的modbus程序有什么区别啊、什么是ModBus通讯协议等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)