通讯工程师论文单片机通讯设计及应用
所属栏目:通信论文
发布时间:2014-12-22 15:17:18 更新时间:2014-12-22 15:52:17
摘 要: 设计一种基于单片机的组态王KingView液位控制系统;描述系统管路设计和底层硬件,着重对组态王和单片机之间的ASCII码型通信协议,以及单片机在组态王中的通信格式设置进行说明。将其应用到设计的以ADμC834为主控芯片的三容水箱液位控制系统中,加入简单PID控制算法,进行了实物验证,使系统液位能快准稳的稳定在目标液位上,显示该系统具有可靠性高、集成度高和成本低等优点。
关键字: 通讯工程师论文,组态王,三容水箱液位控制,PID,ASCII码
Design and application of KingView communication system based on
single?chip microcomputer
FU Zong?ning, JIANG Zhou?shu, HUANG Guo?hui
(Automation College, Hangzhou Dianzi University, Hangzhou 310018, China)
Abstract: A sort of KingView liquid level control system based on single?chip microcomputer is designed in this paper. The pipeline design and underlying hardware of the system are described. ASCII code communication protocol between KingView and MCU, and MCU communication format in KingView are elaborated in detail. They are applied to the self?designed three?tank water level control system, in which ADμC834 is taken as its main control chip and a simple PID control algorithm is added. The physical verification result indicates that it can control the water level in the setting level quickly, accurately and steadily, which shows that the system has high reliability, high integration and low cost.
Keywords: KingView; three?tank liquid level control; PID; ASCII code
0 引 沿
随着工业自动化要求的提高,以及控制设备和过程监控装置之间通信的需求,使用组态软件设计的监控系统在逐渐普及。组态软件因其工作性能稳定可靠、人机界面良好、硬件配置方便以及编程简单等特点而得到了大量使用。常见的组态软件有MCGS、King View、WinCC等。这些软件都支持标准的控制设备,如PLC等。但在工业现场,使用PLC等模块的系统成本较高,而且在具有大量模拟量检测的工业现场,复杂的外围电路也会影响系统的稳定可靠性。单片机具有体积小、质量轻、价格低、应用开发便利等优点。接口功能丰富,可以与前端电路制作在一块电路板上,提高系统的可靠性。将单片机运用到测控系统中,能将测量的灵活性和工控软件的控制稳定性有效的结合起来,从而优化现场测控系统的总体性能和性价比 [1]。
将单片机的应用开发便利、价格低、体积小和组态软件的稳定可靠等优点相结合,必将成为工业生产的趋势。其中,两者间的数据交互是整个系统采集控制关键。
1 系统总体架构
为了实现组态软件和单片机的通信,采用三容水箱实验平台作为物理平台进行验证,将通信程序运用到三容水箱的液位控制系统中。
三容水箱液位控制系统通过对各路水泵和阀门的控制,可以模拟现代工业生产过程中对液位、流量、压力等参数的测量、控制,也可以观察系统参数的变化特性,因此在工业应用中具有很强的代表性[2?3]。
本系统通体由透明有机玻璃制作而成,主要有2个小水箱、1个大水箱、不锈钢台面、电器盒、水槽4部分组成。并装有6个进水手动阀,2个手动溢水阀,2个手动连通阀,3个电动阀作为出水阀;水槽中安装2个潜水泵用于打水;一个潜水泵作循环泵。如图1所示。
硬件系统采用美国AD公司推出的ADμC834单片机作为主控芯片,主要由处理器模块、采集模块、控制模块和通信模块组成,可以实现对3个水箱的液位、 2路流量、1路温度信号的采集;2路水泵、1路循环泵和3个电动球阀的控制;通过RS 232和RS 485通信模块和上位机进行通信[4]。如图2所示。
在实验过程中,用户通过改变水泵两端电压改变水泵打水功率,水泵从水槽中抽水,经过进水手动阀使水流入设定的水箱。液位传感器、压力传感器等将检测到的数据传输到控制器,并由控制器根据用户设定电动阀的出水开口度,可由此控制液位高度。在验证组态软件和单片机通信实验中,可以采用一阶简单一阶液位控制,即通过设置电动阀1开口度和控制水泵1打水功率实现水箱1的液位平衡。 2 系统软件设计
2.1 通信程序设计
作为工业采集现场常用的控制器,单片机和组态王的数据交换是整个系统采集和控制间联系的关键。传统单片机和组态王的通信方式主要有3种:
① 通过动态数据交换(DDE)进行通信,但这种方式操作复杂,对开发人员要求较高,也会带来额外的开销,如系统的实时性较差,增加系统的不可靠性等;
② 利用组态王的驱动程序开发包自己根据需求开发通信驱动程序,但这种方法对开发人员要求更高,有一定的技术难度,且增加开发周期和成本;
③ 利用组态王提供的单片机通用通信协议进行通信,该方法操作简便且实时性好,适用于一般用户[5]。
最新版本的组态王提供HEX型和ASCII型两种单片机通用通信协议,可以通过串口直接和单片机进行通信。通信方式有RS 232,RS 422,RS 485三种,可进行奇偶检验,波特率最高可达256000bps。因为ASCII型通信协议具有设计简单、程序易读易写等优点,所以本液位控制系统采用 ASCII型通信协议进行数据交互。
根据组态王提供的通用单片机ASCII型通信协议,组态王和单片机通信的命令格式主要分为读/写两种格式[6],如下:
除字头、字尾外所有字节均为ASCII码。
字头:1个字节1个ASCII码,组态王中默认为40H。
设备地址:1个字节由2个ASCII码表示,对应组态王软件中设置的0~255(即0~0x0FFH)。
标志位:1个字节数据由2个ASCII码(bit0~bit7)表示,其中低4位有效:
bit0=0:读,bit0=1:写;
bit1=0:不打包,bit1=1:打包;
bit3bit2=00:数据类型为字节(BYTE),
bit3bit2=01:数据类型为字(UINT),
bit3bit2=1x:数据类型为浮点数(FLOAT)。
数据地址:2个字节由4个ASCII码表示,范围为0x0000~0xFFFF:
当单片机中定义的数据类型为BYTE型变量时,在组态王中定义相应的变量的从寄存器X0,X1,X2,X3,…开始对应单片机中开始地址为0,1,2,3,…的占用一个字节的变量;
当单片机中定义的数据类型为UINT型变量时,在组态王中定义相应的变量的从寄存器X100,X102,X104,X106,…开始对应单片机中开始地址为100,102,104,106,…的占用2个字节的变量;
当单片机中定义的数据类型为FLOAT型变量时,在组态王中定义相应的变量的从寄存器X200,X204,X208,X212,…开始对应单片机中开始地址为200,204,208,212,…的占用4个字节的变量。
数据字节数:1个字节由2个ASCII码表示,范围在1~100间;
数据:实际传送的数据,由ASCII码表示,个数为字节数的2倍;
异或:1个字节由2个ASCII码表示,用于对传输数据的正确与否进行校验,去除字头从设备地址开始逐位进行异或校验得到校验码;
CR:一个字节0x0d,表示一帧数据结束。
初始化设定波特率和上位机标准口中设置的一致时,上位机(组态王)发出命令帧,下位机(ADμC834单片机)接受到数据后,对数据进行解析:
在接收到帧头(40H)后,对上位机下传的设备地址和单片机程序中定义的设备号进行匹配,如果相同则进一步接收数据至该帧数据的结束码(0x0d),否则退出接收。
上位机发送读命令,主要用于单片机对数据的采集,格式为:
单片机应答,若异或校验正确:
若错误:
在三容水箱液位控制系统中,上位机发送该命令向单片机请求读取液位传感器采集的液位值,单片机将采集到的AD值以ASCII码格式发送到上位机。
根据组态王读命令的格式要求,设备地址设置为01,标志位为04(数据类型为字,不打包,读),数据地址为104(16进制为68,4个ASCII码表示为30 30 36 38),数据长度2个字节,因此上位机发送的一帧读数据为:
40 30 31 30 34 30 30 36 38 30 32 30 39 0d
单片机响应帧为:
40 30 31 30 32 35 30 30 44 37 32 0D
其中“35 30 30 44”即为采集到液位的A/D值(ASCII码表示,16进制为500D,即十进制20 493)。
以上过程可用串口调制工具实现。上位机发送写命令,主要将控制命令发送给单片机,格式为:
单片机应答,若校验正确:
若错误:
组态王通过写命令将水泵和球阀的控制命令发送给单片机,再由单片机将数据进行解析后对水泵打水功率和球阀开口度进行控制,并向组态王反回应答响应帧。本系统采用控制开关电源调节24 V水泵的打水功率,开关电源输出电压由5 V信号16位PWM控制。16位PWM控制范围在0~65 535,对应0~24 V水泵电压成线性比例关系。假设水泵的打水电压为15 V,根据对应的线性关系可以推算出单片机输出的PWM值应为:15×(65 535/24)=40 959,换算成16进制为9FFF。对同一台实验台采用设采集液位相同的设备地址(01),标志位05(数据类型为字,不打包,写),数据地址为 100(16进制为64,4个字节ASCII码表示为30 30 36 34),数据长度2个字节,数据为9FFF(ASCII码39 46 46 46),因此上位机发送的一帧读数据为: 40 30 31 30 35 30 30 36 34 30 32 39 46 46 46 37 42 0d
如校验正确,单片机返回应答帧:
40 30 31 23 23 30 31 0D
其中,“23 23”为“##”的ASCII码。
同理,球阀开口度可从0~100%间调节,设备地址(01),标志位05(数据类型为字,不打包,写),数据地址为102(16进制为66,4个字节 ASCII码表示为30 30 36 36),数据长度2个字节,数据为001E(十进制为30,ASCII码30 30 31 45),因此上位机发送的一帧读数据为:
40 30 31 30 35 30 30 36 36 30 32 30 30 31 45 37 32 0d
若校验错误,则返回应答帧:
40 30 31 2A 2A 30 31 0D
其中,“2A 2A”为“**”的ASCII码。
2.2 组态王软件和算法设计
根据单片机程序中对水泵(100)、球阀(102)和液位传感器(104)设定的数据地址和数据类型,设置组态王中的数据词典,并设定采集液位值的采集频率(本系统中采用0.1 s发送一次读指令)。制作组态王界面,对相关变量进行关联,其中有关I/O变量的数据词典如表1所示。
表1 组态王数据词典
在应用程序命令语言中写入程序的运行流程,并设置每1.5 s运行一次[7]。在程序命令中,主要写入命令为对水泵和球阀的控制,并在此加入PID控制算法,如图3框图所示,对液位平衡进行控制。
根据PID控制算法的原理,本系统采用水泵主控的方法进行控制[8]。
[u(k)=u(k-1)+Δu(k)=u(k-1)+KP[e(k)-e(k-1)]+ KIe(k)+KD[e(k)-2e(k-1)+e(k-2)]]
由上式可以得到第k时刻对水泵的控制量u(k),将该值赋给水泵即可实现对水泵的控制。
由图4可以看到,通过调节PID参数,液位能很快稳定在150 mm的设定高度上[9]。
3 结 论
综上所述,本系统很好地实现了ADμC834单片机和组态王基于ASCII码的通信,并运用到三容水箱液位控制系统中,通过PID的参数整定快准稳的将液位稳定在目标液位上。成功将组态软件具有的工作性能稳定、人机界面良好、配置方便以及编程简单和单片机体积小、价格低、应用开发便利等优点相结合,为实际工业控制中运用组态王和单片机进行控制奠定良好的实际应用基础。
参考文献
[1] 赵学军.单片机与组态王的通信程序设计[J].工业控制计算机,2006,19(9):35?37.
[2] SACO R, PIRES E, GODFRID C. Real time controlled laboratory plant for control education [J]. Frontiers in Education, 2002, 1: 102?112.
[3] Amira Gmbh. Handbook of laboratory equipment three tank system [M]. Germany: Amira Gmbh, 1998.
[4] 冯毅萍,乐嘉华.计算机液位控制系统实验装置的研制[J].实验室研究与探索,2000(2):78?81.
[5] 蔚俊兰,丁振荣.组态王6.5与单片机的通信方法[J].工业控制计算机,2004,17(10):58?59.
[6] 朱小超,徐雪春.单片机与组态王基于ASCII型通信程序设计[J].工业控制计算机,2010,23(12):34?36.
月期刊平台服务过的文章录用时间为1-3个月,依据20年经验,经月期刊专家预审通过后的文章,投稿通过率100%以上!