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

2008-04-03 14:08:19编辑:孙树宾 关键字:Modbus  通信规约  功能码  eView  CRC校验  系列单片机  触摸屏  上位

  Modbus协议由于其具有开放性、透明性、成本低、易于开发等特点,已成为当今工业领域通信协议的首选。

  本文介绍了一种基于Modbus通信协议的eView触摸屏与常用的51单片机的通信方法。该方法通过C51编程实现Modbus通信,在51系列单片机上具有通用性,有一定的借鉴作用。

  工业控制中经常需要观察系统的运行状态或者修改运行参数。触摸屏能够直观、生动地显示运行参数和运行状态,而且通过触摸屏画面可以直接修改系统运行参数,人机交互性好。单片机广泛应用于工控领域中,与触摸屏配合,可组成良好的人机交互环境。

  触摸屏与单片机通信,需要根据触摸屏采用的通信协议为单片机编写相应的通信程序。Modbus协议是美国Modicon公司推出的,一种有效支持控制器之间以及控制器经由网络(如以太网)与其他设备之间进行通信的协议。本文以STC89C51单片机和人机电子有限公司的eView触摸屏为例,介绍其通信程序的开发过程。

  1 系统结构

  实现触摸屏与单片机的通信,主要是解决通信协议的问题。本文使用开放的Modbus通信协议,以触摸屏作主站,单片机作从站。eView触摸屏本身支持Modbus通信协议,如果单片机也支持Modbus协议,就可以进行通信了。eview触摸屏支持RS-232和RS-485两种通信接口。在工业控制领域,由于RS-485具有可靠性高、传输距离远、抗干扰能力强等优点,所以在本系统中触摸屏与单片机通信采用RS-485连接,传输速率设置为9600 kbps。RS-485信号传输是一种半双工的传输方式,单片机通过一个RS-232/RS-485无源转换器把232信号转换成485信号,连接到eView触摸屏上。图l为该系统的原理图。

  

  

  

  

  单片机控制系统采用STC89C51系列单片机,其内部集成MAX810/STC810专用复位电路(原有外部复位可继续保留,与Intel 8051引脚兼容),具有抗干扰能力强、加密性强、高抗静电(ESD)、超低功耗等特点,而且价格低廉。在本系统中,触摸屏是上位机,单片机是下位机。

  2 Modbus协议

  2.1 Modbus协议简介

  Modbus协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(如以太网)与其他设备之间可以通信。它已经成为一种通用工业标准。不同厂商生产的控制设备可以通过它连成工业网络,集中监控。

  Modbus协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其他设备的过程.如何回应来自其他设备的请求,以及怎样侦测错误并记录;制定了消息域格局和内容的公共格式。

  当在某一Modbus网络上通信时,此协议决定了每个控制器需要知道它们的设备地址,识别按地址发来的消息,以及决定要产生何种行动。如果需要回应,则控制器将生成反馈信息并用Modbus协议发出。在其他网络上,包含了M0dhus协议的消息转换为在此网络上使用的帧或包结构。

  2.2 Modbus RTU通信数据传输模式

  当控制器设备基于Modbus协议以RTU模式通信时,消息中的每个字节包含2个4位的十六进制字符。这种方式的主要优点是:在同样的波特率下,可比ASCII方式传送更多的数据。

  编码采用8位二进制,十六进制数0~9和A~F;消息中每个8位域都是由2个十六进制字符组成。组织结构如下:

  

  

  2.3 Modbus RTU消息帧结构

  Modbus RTU消息帧结构如下:

  

  

  (1)地址码

  地址码为通信传送的第一个字节。这个宁节表明,由用户设定地址码的从机将接收由主机发送来的信息。每个从机都有具有唯一的地址码,只有符合地址码的从机才能响应回送,且响应回送均以各自的地址码开始。主机发送的地址码则表明将发送到的从机地址,而从机发送的地址码表明回送的从机地址。地址0用作广播地址,以使所有的从设备都能认识。

  (2)功能代码

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

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

  

   

  4 总 结

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

关键字:Modbus  通信规约  功能码  eView  CRC校验  系列单片机  触摸屏  上位

来源: 电子产品世界 引用地址:http://www.eeworld.com.cn/gykz/2008/0403/article_740.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:仿人机器人的视觉伺服控制系统
下一篇:温湿度传感器SHT11的感测系统设计的解决方案

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

自动化行业中的以太网:Modbus TCP和PROFINET

。2EtherNet/IP、Modbus® TCP和部分形式的PROFINET®采用标准化设计,可通过CPwE实现交互。这次我们将把目光投向EtherNet/IP以外,看看为标准网络提供一定支持的其他工业以太网协议。毕竟,CPwE的部分价值主张是能帮助主要在第二层LAN模型中进行通信的IAC网络之间实现互连和互操作。EtherNet/IP、Modbus TCP和部分形式的PROFINET采用标准化设计,可通过CPwE实现这种交互水平。以太网、IP和TCP/UDP可分别用在第2层、第3层和第4层,在运行标准协议的网络设备之间进行通信。 面向互操作型互连网络的Modbus TCP和PROFINET我们来看看基于以太网的两款
发表于 2018-07-17 17:33:42

S7-200CPU之间设置一个简单的Modbus通讯

使用下面的例程你可以在S7-200CPU之间设置一个简单的Modbus通讯。这个例子是关于Modbus功能码6的(写从站保持寄存器), 也可以作为其他所支持的功能码:1, 2, 3, 4, 5, 15 和16 的基本参数设置步骤 。要求:要使用Modbus协议必须先在STEP 7 Micro/Win上安装指令库 。Modbus主站协议只支持STEP 7 Micro/Win V4.0 SP5及其以上版本.。硬件设置参数匹配指令库的存储地址保持寄存器值得传输1.硬件设置例程中的Modbus通讯是在两个S7-200 CPU的0号通讯口间进行的(最好每个CPU都有两个通讯口)。在主站侧也可以选择相应库文件 "
发表于 2018-04-29 16:09:13
S7-200CPU之间设置一个简单的Modbus通讯

S7-200CPU之间设置一个简单的Modbus通讯

使用下面的例程你可以在S7-200CPU之间设置一个简单的Modbus通讯。这个例子是关于Modbus功能码6的(写从站保持寄存器), 也可以作为其他所支持的功能码:1, 2, 3, 4, 5, 15 和16 的基本参数设置步骤 。要求:要使用Modbus协议必须先在STEP 7 Micro/Win上安装指令库 。Modbus主站协议只支持STEP 7 Micro/Win V4.0 SP5及其以上版本.。硬件设置参数匹配指令库的存储地址保持寄存器值得传输1.硬件设置例程中的Modbus通讯是在两个S7-200 CPU的0号通讯口间进行的(最好每个CPU都有两个通讯口)。在主站侧也可以选择相应库文件 "
发表于 2018-04-28 15:37:56
S7-200CPU之间设置一个简单的Modbus通讯

s7-200可以直接通讯modbus吗_s7-200的特点与解密方法

。四:功能强大、使用方便的编程软件  编程软件STEP 7-Micro\WIN可以使用包括中文在内的多种语言。有梯形图、语句表和功能块图编程语言,以及SIMATIC、IEC61131-3两种编程模式。五:简化复杂编程任务的向导功能  PID控制、网络通信、高速输入、高速输出、位置控制、数据记录、配方和文本显示器等编程和应用是PLC程序设计中的难点,用普通的方法对它们编程既繁琐又容易出错。六:强大的通信功能  S7-200S的CPU模块有1个或者2个标准的RS-485端口,可用于编程或通信,不需增加硬件就可以与别的S7-200、S7-300\S7-400PLC、变频器和计算机通信。S7-200可以使用PPI 、MPI、ModbusRTU从站
发表于 2018-04-19 20:51:10
s7-200可以直接通讯modbus吗_s7-200的特点与解密方法

基于单片机和Modbus协议的停车器控制系统设计

    道岔是一种常见的铁路配件,在铁路的正常运行中,起着至关重要的作用。作为道岔控制系统的执行机构,转辙机(switch machine)是组成铁路道岔系统的重要零件。在编组站中,为了减少中间环节,列车停车器借用转辙机控制系统。编组站上的列车停车器控制系统的可靠性、安全性和操作的方便性对于提高铁路系统的安全性和效率、降低人力成本具有重要意义。为了配合控制和监督集中化的趋势,应该采用集控式控制,并且通过协议实现和计算机的单主机多从机系统,最终并入主系统。Modbus是一种开放的、免费的通讯协议,具有数据的安全性、物理媒介的广泛适用性和网络互连的多样性等优势。因此,我们自行设计了一种居于单片机和Modbus
发表于 2018-04-05 14:45:46
基于单片机和Modbus协议的停车器控制系统设计

基于RS485接口的MODBUS串口编程的实现

    随着信息技术的发展,智能化、信息化、网络化成为现代工业控制的发展潮流。20世纪80年代以来,开放的工业控制总线迅速发展,彻底改变了世界的技术面貌,在此基础上通过网络连接到分散控制和嵌入式设备的控制技术逐步发展成熟,远程I/O就是在这种条件下发展的一类产品,可以分散配置在现场,连接当地的输入输出信号,实现要求的配置。    在工业控制领域,现场总线技术将控制功能彻底下放到现场。MODBUS是现场总线的国际标准之一,符合IEC物理层标准,有冗余的物理总线网络和严格的控制信息传输机制。    实时工业现场开关量数据的采集给开发者提出了广泛的要求,包括较高的处理
发表于 2018-02-07 22:39:14

小广播

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2018 EEWORLD.com.cn, Inc. All rights reserved