zhengf1989
级别: 略有小成
精华主题: 0
发帖数量: 142 个
工控威望: 273 点
下载积分: 686 分
在线时间: 486(小时)
注册时间: 2012-11-28
最后登录: 2024-11-11
查看zhengf1989的 主题 / 回贴
楼主  发表于: 2018-10-27 16:01
最近一直在研究通讯,突然感觉懂了一点,写写自己对于modbus 通讯的体会:
1.    经常听说的485,232,422,是指的是物理端口,modbus是通讯协议,也就是通讯的规则,就好象社会上有很多潜规则,服从这些规则才能混下去。
2.    modbus通讯分为主站和很多编了号的从站,例如主站对从站说,3号从站你家的第三个房间里住着谁?话音刚落,1号,2号,4号从站心里想:反正没有喊我,不关我的事,就通通装          死,3号从站听到后,回答说,我家的第三个房间里住着一条狗,这样一个通讯过程就完成了,跟主站读取从站某个寄存器的内容很类似。如果是广播命令,就是每个从站都要听着,不需要作出回答。
3.   通讯主要是通过 报文发送出去执行的。 地址+功能码。。。。。。西门子plc中有通讯库,三菱台达plc有通讯的方便指令,我通过串口调试工具测试,最终还是发出来标准的 报文,只是方便大家使用的。通讯的具体地址要看每种设备原件的厂家是怎样定义的,会应用就可以了。
4.   crc校验就是为了防止在通讯过程中会出现数据的丢失或者出错。就好象在生活中,甲对乙说:我还你5个硬币你数一数,乙收到钱后数了一下硬币,只有四个,乙就说你给的不对。
如果有能力用plc自己写个自由口通讯的块,或者单片机开发个通讯那就是大神了。
zhangqi_1234
级别: 略有小成
精华主题: 0
发帖数量: 342 个
工控威望: 493 点
下载积分: 4015 分
在线时间: 250(小时)
注册时间: 2013-03-22
最后登录: 2024-12-07
查看zhangqi_1234的 主题 / 回贴
1楼  发表于: 2018-10-27 17:55
你的理解正确、形象。MODBUS通信程序不是你想像得那样复杂。PLC的梯形图程序,单片机的C语言程序、上位机的C#或VB程序等等都能实现。我个人认为,最简单的MODUBS程序是使用西门子的库,根本不用考虑CRC校验码,以及报文的排列顺序。最复杂的MODBUS程序是用C#或VB编写的程序(不考虑别人编写好的现成的方法)。另外,MODBUS-TCP的通信速率优于MODBUS-RTU。MODBUS-ASCII通信用得很少,可以不考虑。