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-11-27
查看zhangqi_1234的 主题 / 回贴
1楼  发表于: 2018-10-27 17:55
你的理解正确、形象。MODBUS通信程序不是你想像得那样复杂。PLC的梯形图程序,单片机的C语言程序、上位机的C#或VB程序等等都能实现。我个人认为,最简单的MODUBS程序是使用西门子的库,根本不用考虑CRC校验码,以及报文的排列顺序。最复杂的MODBUS程序是用C#或VB编写的程序(不考虑别人编写好的现成的方法)。另外,MODBUS-TCP的通信速率优于MODBUS-RTU。MODBUS-ASCII通信用得很少,可以不考虑。
zhengf1989
级别: 略有小成
精华主题: 0
发帖数量: 142 个
工控威望: 273 点
下载积分: 686 分
在线时间: 486(小时)
注册时间: 2012-11-28
最后登录: 2024-11-11
查看zhengf1989的 主题 / 回贴
2楼  发表于: 2018-10-27 18:54
引用
引用第1楼zhangqi_1234于2018-10-27 17:55发表的  :
你的理解正确、形象。MODBUS通信程序不是你想像得那样复杂。PLC的梯形图程序,单片机的C语言程序、上位机的C#或VB程序等等都能实现。我个人认为,最简单的MODUBS程序是使用西门子的库,根本不用考虑CRC校验码,以及报文的排列顺序。最复杂的MODBUS程序是用C#或VB编写的程序(不考虑别人编写好的现成的方法)。另外,MODBUS-TCP的通信速率优于MODBUS-RTU。MODBUS-ASCII通信用得很少,可以不考虑。

现在网上有很多的串口调试工具,CRC计算器,调试起来方便多了。看元器件的使用手册,找modbus通讯地址很关键。
tingfenghu
级别: 工控侠客

精华主题: 0
发帖数量: 2845 个
工控威望: 3617 点
下载积分: 3517 分
在线时间: 3803(小时)
注册时间: 2007-11-04
最后登录: 2024-11-28
查看tingfenghu的 主题 / 回贴
3楼  发表于: 2018-10-28 12:14
单片机采用查询或者中断方式,
PLC就更加简单,
ASCII转换成ASCII再发送,校验加起来丢弃高位就可以。
CRC也没有多复杂,无非就逻辑运算加移位。

单片机资源比较紧张时,
有人用普通端口模拟串口使用。
二手PLC,触摸屏,伺服驱动,各类气动设备
http://shop58129605.taobao.com/
stackdog
级别: 网络英雄
精华主题: 0
发帖数量: 472 个
工控威望: 8656 点
下载积分: 7471 分
在线时间: 452(小时)
注册时间: 2015-10-01
最后登录: 2024-11-25
查看stackdog的 主题 / 回贴
4楼  发表于: 2018-10-30 10:40
受教了
受不了了
级别: 家园常客
精华主题: 0
发帖数量: 599 个
工控威望: 727 点
下载积分: 1673 分
在线时间: 403(小时)
注册时间: 2015-06-17
最后登录: 2024-11-29
查看受不了了的 主题 / 回贴
5楼  发表于: 2018-10-30 11:05
单片机写MODBUS-RTU其实很简单的,现在的工具这么多,随便找个触摸屏,设置到MODBUS-RTU模式,用电脑去抓通讯数据,看别人怎么写的,依葫芦画瓢照着标准协议很容易写出来,不说半天,两三天应该很容易搞定的。我七八年前写的通讯部分,一直就没修改过,常见品牌的触摸屏连上去,比绝大部分PLC反应快太多了
zhengf1989
级别: 略有小成
精华主题: 0
发帖数量: 142 个
工控威望: 273 点
下载积分: 686 分
在线时间: 486(小时)
注册时间: 2012-11-28
最后登录: 2024-11-11
查看zhengf1989的 主题 / 回贴
6楼  发表于: 2018-10-30 21:35
技术这个东西就是搞会了就感觉简单,搞不懂就感觉很难,正所谓“闻道有先后,术业有专攻”