Modbus协议下单片机与eView触摸屏的通信方法

[09-12 17:04:49]   来源:http://www.88dzw.com  单片机学习   阅读:8717

文章摘要:(2) 功能代码功能代码为通信传送的第二个字节。Modbus通信规约定义可能的代码范围足十进制的1~255。当然,有些代码适用于所有控制器,有些仅适用于某种控制器,还有些保留以备后用。主机发送请求,通过功能码告诉从机执行什么动作;从机响应请求.从机发送的功能码与从主机发送来的功能码一样,表明从机已响应主机进行操作。如果从机发送的功能码的最高位为1,则表明从机没有响应操作或发送出错,主设备应用程序得到异议的同应后,典型的处理足重发消息。表1列出了常用Modbus支持的部分功能码。以读取线圈状态为例说明。主站发送命令:[设备地址][命令号01][起始寄存器地址高8位][低8位][读取的寄存器数高8

Modbus协议下单片机与eView触摸屏的通信方法,标签:单片机开发,单片机原理,单片机教程,http://www.88dzw.com

(2) 功能代码

功能代码为通信传送的第二个字节。Modbus通信规约定义可能的代码范围足十进制的1~255。当然,有些代码适用于所有控制器,有些仅适用于某种控制器,还有些保留以备后用。主机发送请求,通过功能码告诉从机执行什么动作;从机响应请求.从机发送的功能码与从主机发送来的功能码一样,表明从机已响应主机进行操作。如果从机发送的功能码的最高位为1,则表明从机没有响应操作或发送出错,主设备应用程序得到异议的同应后,典型的处理足重发消息。表1列出了常用Modbus支持的部分功能码。

以读取线圈状态为例说明。主站发送命令:[设备地址][命令号01][起始寄存器地址高8位][低8位][读取的寄存器数高8位][低8位][CRC校验的低8位][高8位]。从站响应:[设备地址][命令号01][返回的字节个数][数据1][数据2]…[数据n][CRC校验的低8位][高8位]。

(3) 数据区

数据区根据功能码的不同而不同。数据区包含需要从机执行什么动作,或由从机采集的返送信息。这些信息可以是实际数值、设置点、主机发送给从机或从机发送给主机的地址等。例如,功能码告诉从机读取寄存器的值,则数据区必须包含要读取寄存器的起始地址及读取长度。对于不同的从机,地址和数据信息都不相同。 (4) 错误校验码

主机或从机可用校验码判别接收信息是否出错。错误检测域包含一个16位的值(用2个8位的字符来实现)。错误检测域的内容是通过对消息内容进行"循环冗余检测"得出的。CRC域附加在消息的最后,添加时先是低字节然后是高字节,故CRC的高位字节足发送消息的最后一个字节。错误校验采用CRC-16校验方法。

3 软件编程

下面是采用C51编写的软件,主要包括CRC校验和终端接收及波特率设置等。由于篇幅有限,其他程序略。

(1) 波特率设置



(2) CRC校验函数


(3) 发送函数和判断函数


(4) 数据帧分析处理函数


(5) 串口中断函数

4 总 结

由于Modbus协议具有开放性和透明性等特点,而51系列单片机技术成熟、开发成本低,二者的结合将继续成为各类通信系统设计的首选。本设计方法已经应用于触摸屏与单片机通信设计,并取得了较好效果。这种方法对于编制类似的通信软件有一定的借鉴作用,部分程序可以直接移植。


上一页  [1] [2] 


Tag:单片机学习单片机开发,单片机原理,单片机教程单片机学习
分类导航
最新更新
热门排行