为鼓励大家动手动脑,早日成为技术大牛。电路城论坛现在推出#每日一练#栏目,由版块版主出题及提供答案,内容涉及电源,射频,单片机等各种技术话题。我们会在周一至周五的早上10:30更新问题和前天问题的解题思路及答案。欢迎大家参与。
本期内容来源于:
模拟狂人,电子信息工程专业,全国大学生电子竞赛省二等奖获得者,对模拟电子技术、数字电子技术、单片机技术学习有丰富经验。现主要从事ARM开发工作,有丰富项目经验。
我们前边学习 UART、I2C、SPI 这些通信协议,都是最底层的协议,是“位”级别的协议。而我们在学习 13 章做实用串口通信程序的时候,我们通过串口发给单片机三条指令,让单片机做了三件不同的事情,分别是“buzz on”、“buzz off”和“showstr”。随着系统复杂性的增加,我们希望可以实现更多的指令。而指令越来越多,带来的后果就是非常杂乱无章,尤其是这个人喜欢写成“buzz on”、“buzz off”,而另外一个人喜欢写成“on buzz”、“off buzz”。导致不同开发人员写出来的程序代码不兼容,不同厂家的产品不能挂到一条总线上通信。
随着这种矛盾的日益严重,就会有聪明人提出更合理的解决方案,提出一些标准来,今后我们的编程必须按照这个标准来,这种标准也是一种通信协议,但是和 UART、I2C、SPI通信协议不同的是,这种通信协议是字节级别的,叫做应用层通信协议。在 1979 年由 Modicon(现为施耐德电气公司的一个品牌)提出了全球第一个真正用于工业现场总线的协议,就是Modbus 协议。 Modbus 协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其他设备之间可以通信,已经成为一种工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。这种协议定义了一种控制器能够认识使用的数据结构,而不管它们是经过何种网络进行通信的。它描述了控制器请求访问其它设备的过程,如何回应来自其它设备的请求,以及怎样侦测错误记录,它制定了通信数据的格局和内容的公共格式。
在进行多机通信的时候,Modbus 协议规定每个控制器必须要知道它们的设备地址,识别按照地址发送过来的数据,决定是否要产生动作,产生何种动作,如果要回应,控制器将生成的反馈信息用 Modbus 协议发出。
Modbus 协议允许在各种网络体系结构内进行简单通信,每种设备(PLC、人机界面、控制面板、驱动程序、输入输出设备等)都能使用 Modbus 协议来启动远程操作,一些网关允许在几种使用 Modbus 协议的总线或网络之间的通信,如图 18-4 所示。
图18-4 Modbus 网络体系结构实例
Modbus 协议的整体架构和格式比较复杂和庞大,在我们的课程里,我们重点介绍数据帧结构和数据通信控制方式,作为一个入门级别的了解。如果大家要详细了解,或者使用Modbus 开发相关设备,可以查阅相关的国标文件再进行深入学习。Modbus 有两种通信传输方式,一种是 ASCII 模式,一种是 RTU 模式。大家先一起去查查资料吧。
答案:
|