许 萌,李 斌,姚 骏
(上海大学机电工程与自动化学院,上海 200072)
MCGS组态环境下的MSP430单片机驱动开发
许 萌,李 斌,姚 骏
(上海大学机电工程与自动化学院,上海 200072)
MCGS是一款基于Windows平台的上位机监控组态软件系统,其包含了多种通用设备驱动程序。但在实际项目中,有时MCGS组态软件所提供的设备驱动程序也无法满足用户的需求。因此,MCGS提供了一款脚本驱动开发工具。用户可通过该工具便捷地创建符合项目需求的设备驱动构件。脚本驱动开发工具内含大量的库函数,能够在充分满足用户需求的同时,使得驱动的开发更加便捷。基于MCGS组态软件的MSP430单片机的驱动构件,根据自助洗车机的实际需求进行开发。首先,制定了通信协议;然后,根据项目需求设置相应的设备通道,编写了所需的设备命令;最后,通过驱动的安装和挂接,实现了设备驱动的开发。实际运行结果表明了该驱动构件的高效性、便捷性。该研究为常规的驱动程序设计提供了思路。
监控系统; 触摸屏; 单片机; 上位机; 人机界面; MCGS组态软件; 脚本驱动; 通信
随着计算机技术和网络技术的飞速发展,传统的显示仪表、信号指示灯、操作按钮等已不能完全满足工业自动化的需要。触摸屏作为一种新型的人机界面,从一出现就备受关注。其具有简单易用、功能强大、稳定性优异的特点,非常适用于工业环境。
目前市场上的触摸屏产品多种多样。由北京昆仑通态自动化软件科技有限公司开发的触摸屏使用较为广泛。其开发的MCGS软件也具有稳定性高、成本低、速度快、功能强的特点。MCGS[1]作为一款上位机监控软件,支持多种运行环境,使用方便、快捷。
本文基于MCGS的MSP430单片机驱动构件,以自助洗车机项目为背景,通过脚本驱动开发工具进行开发。
自助洗车机采用北京昆仑通态研发的型号为TPC7062Ti的嵌入式一体化触摸屏来进行人机交互。自助洗车机读卡器板采用超低功耗单片机MSP430F5438A[2]。
MSP430与触摸屏的通信框图如图1所示。MSP430单片机通过RS-232串口通信与触摸屏进行连接,实现触摸屏对自助洗车机[3]读卡器板的数据传输和监控,完成自助洗车机的人机交互。
图1 通信框图
以往的MCGS驱动构件开发大都采用 Active DLL 构件的方式来实现设备驱动程序,然后通过调用一些接口函数来实现用户所需的功能。通过使用规范的OLE接口,使驱动程序完成在组态软件中的挂接。这样,在组态软件中就可以方便地使用驱动构件。OLE是一种面向对象的技术。用户可以使用VB、VC等语言编制MCGS的设备驱动程序,实现对驱动构件的开发[4-6]。
本文的驱动构件采用脚本驱动开发。该版本驱动由MCGS编程语言实现的驱动程序。相对于采用Active DLL构件方式实现的驱动程序,脚本驱动的开发更方便、快捷,而且具有开发步骤标准和驱动构件可移植性好的优点。MCGS脚本驱动的开发使用了其自带的脚本编程语言。其包含了大量的库函数,不仅满足了用户的功能需求,而且提供了必要的容错处理。这就不必像以往的设备驱动开发那样考虑过多的技术细节,也不必花费过多的时间学习大量的接口技术和计算机技术,切实提高了开发效率。这些优点都体现了脚本驱动的人性化。用户使用脚本驱动工具进行驱动程序开发,可以节省大量时间来提高通信效率[7]。
对MCGS设备驱动的开发有以下2个步骤:
①通信协议的制定;
②脚本驱动程序的设计。
通信协议是指通信双方为了达到通信目标所必须遵守的规范和法则。
通信规则:触摸屏每隔1 s发送1次命令到读卡器板。如果触摸屏没有操作,即持续发送状态查询命令;否则,发送对应的操作命令。
信号帧格式包括帧头、长度、当前页、操作类型、数据、校验及帧尾。但在具体的项目需求下,信号帧的内容视情况有所变动。
在本系统中,所制定的通信协议信号帧格式如表1所示[8]。
表1 信号帧格式
①帧头。
帧头用来判断本帧是否属于串口通信协议,同时也用来作为是否通信的标志。自助洗车机的项目中规定,帧头占2 B。当帧头为0xFA0xFA时,表示触摸屏发送数据到读卡器板;当帧头为0xF50xF5时,表示读卡器板发送数据到触摸屏。
②长度。
长度用来描述数据包含的字节数。在通信双方进行通信时,通过长度来检验通信的数据。数据长度占2 B。
③当前页。
当前页用来显示触摸屏的当前页数信息。触摸屏发送的每个命令都带有当前页数信息,读卡器板应答时也带有页数。
④操作类型。
通信中,需要传输不同的帧类型,有状态查询、应答、初始化等。帧传输的内容由操作类型给出,它在帧中占1 B。本项目中的操作类型及代码如表2所示。
表2 操作类型及代码
⑤数据。
所传输数据的内容、长度由操作类型决定。
⑥校验。
校验采用求和校验,可以保证数据传输的准确率。
⑦帧尾。
帧尾表示该信号帧的结束,占1 B。本项目中规定帧尾为0xF0。
MCGS脚本驱动程序设计主要步骤如下:
①定义设备属性;
②建立设备通道;
③编写设备命令;
④编写自定义子函数;
⑤编辑设备脚本。
完成以上步骤后,对脚本程序进行检查调试,并生成1个MDR文件,用于脚本的发布与使用。
3.2.1 定义设备属性
定义设备属性就是对体现设备驱动特性的变量进行设置。变量包括设备地址以及通信延时。设备属性对于所有的设备脚本都是可见的,而且只能作为1个全局常量,能读不能写。在本次自助洗车机项目中,对参数设置没有特殊要求。
3.2.2 建立设备通道
建立设备通道就是设置驱动所需的内部变量。根据自助洗车机项目的需求,定义了如表3所示的设备通道。表3中,数据类型均为整型。
表3 设备通道
当子设备被添加到父设备下时,通过设备通道驱动程序,可以将组态软件中的实时数据库与设备通道相连接,以实现数据的交换。
3.2.3 编写设备命令
设备命令是用来对脚本驱动进行控制的程序。通过脚本驱动开发工具强大的函数库,可以更加快捷地进行数据的命令传递和收发操作。结合此次项目的需求,设备命令如表4所示。表4中,各命令所含参数均为Retry(整型)和WaitDelay(整型)。
表4 设备命令
以SendAdBlueCommand设备命令为例。
!GetIntChannelValueByName(“ButtonID”,buttonID)
!GetIntChannelValueByName(“MoneyHigh”,moneyHigh )
!GetIntChannelValueByName(“MoneyLow”,moneyLow)
!GetIntChannelValueByName(“UseTimeHigh”,useTimeHigh)
!GetIntChannelValueByName(“UseTimeLow”,useTimeLow)
SetServiceParameter(bytCommand,buttonID,moneyHigh,moneyLow,useTimeHigh,useTimeLow,Retry,WaitDelay)
通过调用“!GetIntChannelValueByName”函数,读取“ButtonID”、“MoneyHigh”、“MoneyLow”、“UseTimeHigh”、“UseTimeLow”这5个设备通道的值,并把它们保存到对应的整型变量中。然后,通过调用自定义子函数“SetServiceParameter”来设置服务参数。
3.2.4 编写自定义子函数
将自定义子函数看作1个模块,以完成特定的服务或任务。自定义子函数与一般编程语言中的子函数功能类似,通过函数对输入进行处理,然后返回1个值供用户使用。此次项目中的自定义子函数如表5所示。表5中,子函数所含参数均为整型。
表5 自定义子函数
以“SetServiceParameter”子函数为例。
①首先编写通信所需的帧结构,设置相应的帧头、长度、操作类型等。
②编写发送和接收数据的方式。
tmpInteger=1
//设置判断标志位为1
while tmpInteger<=Retry
nReturn = !DevWriteAndReadByteArr(SendByteArr,intOutBufferLength ,ReceiveBuffer,intInBufferLength ,WaitDelay)
//往串口中发送帧,发送完毕
后,再从父设备读取数据,如果已经读到intInBufferLength
长度字节或者WaitDelay毫秒尚未读取完毕,则返回
if nReturn <> intInBufferLength then
//如果WaitDelay毫秒后
未读取完毕,且是最后一次尝试重新通信,则表示通信出错
if tmpInteger=Retry then
!SetSingleChannelValueByName(“通信状态”,2)
!SetSingleChannelValueByName(“CommunicationRetry”,Retry)
exit
endif
else
nReturn = ProcessCommandResponse(intInBufferLength)
//读取完毕后调用子函数进行命令应答处理
if nReturn=0 then//如果返回值为0则表示通信成功
!SetSingleChannelValueByName(“通信状态”,0)
!SetSingleChannelValueByName(“CommunicationRetry”,0)
exit
endif
endif
tmpInteger=tmpInteger+1
endwhile
3.2.5 编辑设备脚本
设备脚本包括初始化脚本、单通道写脚本、采集脚本和退出脚本。
①初始化脚本即对脚本内的一些变量进行初始化,并向一些端口赋初值。本项目对此并没有特殊的要求。
②单通道写脚本可以实现向设备发送命令的功能。但与设备命令有所区别。如果使用设备命令,则在组态环境下需要显示调用设备命令。通常要添加1个按钮构件,并在按钮构件的脚本调用设备命令。而对于单通道写脚本,只需要在组态环境下将实时数据对象关联到编辑框中即可。每次改变数据后,可在运行环境下隐式地调用单通道写脚本。本项目不需要使用单通写脚本。
③采集脚本在每个特定的时间周期到达之后,对变量的值进行采集,并上报处理。本项目使用采集脚本来进行命令查询[9]。
④退出脚本总是在实用程序的最后被运行,用来执行运行结束后退出组态环境的操作,同时进行一些清理操作。本项目对此没有特定要求。
脚本驱动的发布就是将脚本驱动相关文件放置到适当的目录下,以确保MCGS组态软件可被调用。开发好的脚本驱动相关文件为1个MDR主文件。如果驱动具有帮助功能,则还会多1个帮助文件。发布开发好的脚本驱动有以下2种方法[10]。
①将驱动相关文件拷贝到MCGS安装目录 “ProgramDrivers”路径下的任意文件夹。
②使用设备管理对话框中的安装功能,完成安装。但这种方法不会拷贝脚本驱动的帮助文件。
在MCGS组态软件中使用脚本驱动。首先,将脚本驱动安装到设备管理的设备工具箱中。然后,在设备串口下,对串口父设备进行基本设置,如波特率、COM口等。最后,在父设备下挂接已经发布安装的脚本驱动子设备,并对设备通道及其相对应的数据对象进行连接。
将采用MCGS组态软件开发的触摸屏用作上位机监控,具有系统配置简便、开发周期短、能够适应各种设备、可靠性高等特点。利用昆仑通泰研发的脚本驱动开发工具,用户可以更加高效地开发设备驱动。
该方法也可以广泛应用于工程中的脚本驱动。经过实际运行,证明了本文开发的基于MCGS的MSP430单片机驱动构件具有良好的通信效果,数据传递快速、可靠;在满足项目要求的同时,也更加地方便、快捷。该方法为开发适应实际项目需求的设备驱动程序提供了思路。
[1] 包建华,丁启胜,张兴奎.工控组态软件MCGS及其应用[J].工矿自动化,2007(3):92.
[2] 向楠,黄道业.基于MSP430F5438A单片机的磁悬浮控制器设计[J].长江大学学报(自然科学版),2014,11(7):64-66.
[3] 杨一帆.基于物联网的自助洗车机远程监控系统的研究与设计[D].上海:上海大学,2017.
[4] 王晓光,郑萍,马巧娟,等.基于 MCGS 的 51系列单片机通用驱动程序设计[J].仪表技术与传感器,2010(5):38.
[5] 潘峥嵘,张岩,郭凯.基于MCGS的C8051F020单片机驱动程序的设计与应用[J].微计算机应用,2009,30(2):48-52.
[6] 包建华,张兴奎,胡福年.MCGS 平台下 51 单片机驱动构件开发与应用[J].自动化仪表,2011,32(11):35.
[7] 张能,张晓思.基于MCGS的饮用水水质安全监测系统的软件设计[J].自动化与仪器仪表,2014(12):61.
[8] 桂江华,邵健,潘邈.一种高可靠串行通信协议[J].电子与封装,2016,16(2):40.
[9] 黎志刚,王俊元,刘波.基于MCGS的SMC电动执行器控制方法研究[J].制造业自动化,2014,36(7):16.
[10]王传艳,陈婧.MCGS触摸屏组态控制技术[M].北京:北京师范大学出版社,2015.
DevelopmentoftheDriversofMSP430MicrocontrollerinMCGSConfigurationEnvironment
XU Meng,LI Bin,YAO Jun
(College of Mechatronics Engineering and Automation,Shanghai University,Shanghai 200072,China)
MCGS is a Windows based host computer monitoring configuration software system,which contains a variety of universal device drivers.But in the actual projects,the device drivers provided by MCGS configuration software are sometimes unable to meet the needs of users,so a set of script driven development tools is provided in MCGS,through which the user can conveniently create the device driver component needed.Script driven development tools contain a large number of library functions,which can fully meet the needs of users; in addition,it also makes the development of drivers more convenient and efficient.The driving component of MSP430 microcontroller based on MCGS configuration software is developed with the background of the actual needs of self-service car washing machine.Firstly,the communication protocol is setup.Then the corresponding equipment channel is set according to the requirements of the project,and the required device commands are written.Finally,through the installation and connection of driver,the development of device drivers is implemented.The results of actual operation demonstrate the efficiency and convenience of the driver development.The study provides a new idea for the general driver design.
Monitoring system; Touch screen; Microcontroller; Host computer; Human-machine interface; MCGS configuration software; Script-driven; Communication
修改稿收到日期:2017-06-14
许萌(1993—),男,在读硕士研究生,主要从事仪表自动化方向的研究,E-mail:271323088@qq.com;李斌(通信作者),男,博士,教授,主要从事检测及自动化方向的研究,E-mail:sulibin@shu.edu.cn
TH-39;TP273+.5
A
10.16086/j.cnki.issn1000-0380.201712012