微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > ModBus协议在工业控制系统中的应用

ModBus协议在工业控制系统中的应用

时间:06-19 来源:互联网 点击:

的状态、历史温度数据分析;两者之间的通讯是基于现场总线技术的。

  3.1 系统的硬件设计

  系统主要由通讯电路(输入)、数据采集、输出控制、LCD显示、通信及电源模块等组成。如图1所示,系统具有对外界温度信号进行采集的能力,采集的模拟信号经A/D模块转换为相应的数字量,送入微处理器进行处理。采集到的每一路温度都要与系统此路的温度设定值进行比较,然后根据结果调用合适的控制算法,并通过控制相应的继电器的占空比实现对温度的调节。

  考虑到系统实际应用,在硬件设计方面,微控制器选用了台湾Syncmos公司生产的8位微控制器SM5964, 它是80C52 微控制器家族的派生产品,其强大的片内资源,只需添加少量的外围器件即可实现系统的要求。温度测量利用Pt(100Ω)热敏电阻,测量的模拟信号经A/D模块转换后送入微处理进行处理。模数转换器选用凌特公司(Linear Technology)推出的20位无延迟模数转换器LTC2430,此模块可直接对测量的毫伏级信号进行处理,并能够满足精度要求。其它也选用了与通信和输出控制相关的器件。

  由于篇幅关系,只介绍本系统通信部分的电路原理。由于标准的ModBus物理层采用了RS-232串行通信标准,在PC机上模拟MODBUS通信通过使用RS-485插卡或者RS-232/ RS-485转换模块,实现多点通信,这里选用的是RS-232/RS-485转换模块。电路图如图2所示:

  SM5964的串行发送端口TXD和接收端口RXD经MAX232芯片进行电平转换后,分别与PC机的数据接收端口RXD和数据发送端口TXD相连接。SM5964串行通信的发送端TXD连接到的11引脚,发出的数据信号经过MAX232芯片转换后,由0~5V的TTL电平变为-12~+12V的RS232电平,从14引脚输出到PC机串行口的第二引脚。按RS232通信协议规定,PC机串行口的第二引脚为数据输入端,这样,发出的数据就可被PC机接收到。由PC机串行口的发送端TXD(PC机串行口的第三引脚)传输来的数据,作为RS232电平的信号输入到MAX232芯片的第13引脚,经过MAX232芯片进行电平转换后变为TTL电平,再由MAX232的12引脚输出到SM5964串行口的接收端口RXD。从而完成数据的双向传输。

  在设计中,使用了两个发光二极管D7和D8监视通信的工作状态。

  3.2 系统的软件设计

  本系统的软件设计是基于软件开发平台μC/OS-II,它是由Labrosse先生编写的一个开放式内核,最主要的特点就是源码公开,清晰明了。在单片机系统中嵌入μC/OS-II将增强系统的可靠性,并使得调试程序变得简单起来。但由于它没有功能强大的软件包,基于具体应用需要自己编写驱动程序,对内核进行扩充。为使其能够正常工作,要根据具体的硬件平台完成相应的移植工作。μC/OS-II是一个占先式的内核,即已经准备就绪的高优先级任务可以剥夺正在运行的低优先级任务的CPU使用权。这个特点使得它的实时性比非占先式的内核要好。根据要实现的功能,我将系统划分为如下6个任务:按键处理、LCD显示、串行通信、输出任务、控制运算、信号采集处理。这里只介绍和ModBus总线协议相关的部分。

  当选用的是ModBus的RTU模式时,一帧报文中字节与字节之间的时间间隔比帧与帧之间的时间间隔小得多,因此主要的难点在于如何判断一帧报文接收结束与否,这可以利用单片机内置的定时器来进行判断。若实际实现时,我们选择了19200的传输速率,那么空闲间隔时间T≥1/19200*8*3.5=1.5ms。每当接收到一个新的字节,就启动定时器开始计时,定时器的时间设定为帧与帧之间的最小时间间隔(上面提到的例子中是1.5ms)。波特率不同,该时间的间隔也不同。若不到预定时间又接收到下一个字节,则说明一帧报文尚未结束,定时器重新开始计数;若定时器顺利计数到预定时间,就会触发相应的中断,在该定时中断服务程序中设定帧结束标志字节,表明一帧报文接收完毕。这样就可以防止报文接收不完整,导致该帧通讯任务无法结束而影响下一帧的接收。

如图3所示,在一个帧开始接收时判断接收的第一个字节是否为本机地址,如果是则保存到接收缓冲区中,不是则继续等待下一帧报文的到来,这样节省了保存数据的时间,接收中断服务程序只是保存数据而不处理数据,只是在一帧新的报文接收结束后,通知系统(通过发出信号量来实现);ModBus协议还规定了从方接收报文不正确时发问的出错郑考虑到装置内部通信的过程不是很复杂,在实际应用中如果从方收到的报文校验不正确,采取不作应答的方式。主方若在规定时间内未收到从方的应答报文时,将重发请求报文;若多次末收到从方应答报文,则报通讯故障。上面的措施大大缩短了中断服务程序的执行时间,防止了系统资源的

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top