电气运动控制器填表式编程软件设计与实现
2018-01-19张冀张春雷瞿佳伟
张冀 张春雷 瞿佳伟
摘要:操作软件是现代电气运动控制系统的重要组成部分。为使人们更加方便地通过运动控制器控制电机进行电气运动,通过研究运动控制系统各部件之间的通信与控制原理,以及运动控制过程中所需功能,基于Qt Creator设计并实现了一款运动编程平台软件,不仅可满足基本操作控制需求,而且具有填表式编程功能。在定制设计的三轴运动控制系统实验台上进行操作测试实验,验证了该编程软件操作的有效性和控制便捷性。
关键词:填表式编程;电气运动控制;软件设计;Qt Creator
DOIDOI:10.11907/rjdk.181423
中图分类号:TP319
文献标识码:A 文章编号:1672-7800(2018)010-0110-04
英文摘要Abstract:The operating software is an important part of modern electrical motion control systems. In order to make it easier for people to control the motor through the motion controller for electrical motion, by studying the communication and control principles between the various components of the motion control system, and the functions normally required in the motion control process, Qt Creator is designed and implemented. It is a motion programming platform software that not only satisfies basic operation control but also has a form-filling programming function. The operation test experiments on the custom-designed three-axis motion control system test bench verified the operational effectiveness and control convenience of the programming software.
英文關键词Key Words:filling programming;electric motion control;software design;Qt Creator
0 引言
运动控制系统(Motion Control System)多种多样,一个典型的现代电气运动控制系统硬件由上位计算机、运动控制器、功率驱动装置、电动机、执行机构和传感器反馈检测装置等部分组成 [1]。其中上位计算机直接发出操控命令,且该命令首先传给运动控制器,运动控制器根据此命令解析成相应时序信号直接控制设备(如电动机)并获取设备状况 [2]。运动控制器不时读取设备状态数据(一般为模拟量),并将数据转换成数字信号反馈给上位计算机。上位计算机与运动控制器都需要编程,而且各有专门的开发系统[3]。
在各个用户之间的上位计算机系统普遍相同的情况下,人们越来越趋向于只选择某一款作用于通用计算机系统的操作软件,控制运动控制器以间接控制电机运动。因此,设计一款上位计算机操作软件便成为运动控制过程中必不可少的一部分[4]。
大多数上位计算机软件只包含基本的参数设置和手动控制功能,或者仅根据实际环境需要(比如某一周期的往复运动、实时的加减速运动等)设计与其对应的操作软件[5]。操作人员需要其它特定功能时,软件开发人员就要根据需求特别定制,这一重新研发定制过程因为开发周期长,需耗费很多时间与精力。为增加操作软件的易用性与通用性,在收集整理常用功能后,本文基于Qt Creator软件,设计并实现了一款不仅满足基本操作控制,而且具有填表式编程功能的独立式上位计算机软件。操作人员通过该软件能自主设计满足不同功能的程序,该程序一旦导入运动控制器中,电机便能脱离人工进行独立式运动。
1 软件总体设计
运动控制过程中的实时控制与功能指令编辑以人机交互形式实现。实时控制指操作人员在手动控制的情况下可以随时修改运动控制器中电机的运行参数,控制电机的基本运动以及监控其运行状态。功能指令编辑指操作人员在根据自身需要选择编辑好的运动指令集后,下载到运动控制器中,让其控制电机进行与指令内容相符合的自动控制。软件具有独立工作特点,在功能指令编辑完成并下载后,软件能够脱离人为操作,完全按照所编辑的指令进行工作[6]。
软件采用模块化设计。由于Qt Creator自身具有ui界面设计的Qt Designer功能,因此可将该软件在Qt Creator上的实现分为界面设计和功能实现两个模块,软件架构如图1所示。
2 软件界面设计
本着简洁明了、使用方便快捷的原则,编程软件主界面设计如图2所示。主界面包含“连接控制器”总开关、打开与手动控制相关的子界面按钮(“手动操作”和“参数设置”按钮)、打开与自动控制相关的子界面按钮(“程序编辑”按钮)以及打开运动控制器程序升级和上位计算机软件升级的子界面按钮(“关于”按钮)4大部分。
在软件运行初始化或点击“程序编辑”按钮,便会在主界面的右端显示其对应的子界面,在子界面的左端是一个可自由增删行数的表格(操作人员进行程序编辑的区域),子界面的右端是在编辑程序过程中需要的一些常用功能,如对程序进行读入、修改、新建、删除、保存、下载等操作。
在子界面左端表格中,第1列为指令集,包含系统操作、流程控制、输出口操作、回零运动、直线点位运动、独立插补运动6种类型,为便于区分,每种指令集都设置不同颜色;第2列为选择第1列指令集后与其对应的各种常用指令,如“直线点位运动”对应有“设置点位速度”、“三轴相对运动”、“YZ独立运动”等等,共设计了49种常用功能指令;第3至第5列为各个指令需要填写的参数;第6列为方便操作人员记录而提供的备注栏。最主要的15种功能指令及参数填写格式如表1所示。
点击“手动操作”和“参数设置”按钮,在主界面的右端会显示其对应的子界面,主要包含基本的点动操作、各个轴的运动位置显示、输入输出口状态与选择、有关速度和位移的参数设置以及参数的保存与读取。
3 软件功能实现
软件功能实现包含与运动控制器建立通信、设置界面上各个按钮单击的槽函数、读写各类文件以及向运动控制器发送指令4大功能,需按一定顺序实现,流程如图3所示。
运动控制器通信模块指建立在该运动控制器的通信协议上,并且通过Qt Creater的程序编写,实现该软件与运动控制器的通信。只有在建立好通信的基础上,软件才能实时向运动控制器发送命令,并将运动控制器的机器状态传输到编程软件[7]。按钮信号槽模块指利用Qt Creater特有的信号和槽机制取代某些凌乱的函数指针,使编写的程序更为簡洁明了。
界面上点击按钮或触发某个事件都可发出信号,信号再与单个或多个槽函数(用程序编写的函数体)连接,这时无论第一个信号什么时候发射,系统都将立刻发射第二个信号,信号与槽构造了一个强大的部件编程机制[8]。
3.1 读写文件模块
各类软件都会涉及到文件的读写操作,因为只有对文件操作才能实现各种信息的长时间保存[9],本软件涉及对INI配置文件、BIN二进制文件与TXT文本文件的读写。
INI配置文件是一种按照特定方式排列的文件。每一个INI文件构成都非常类似,由若干段落(Section)组成,在每个带括号的标题下是若干个单词开头的关键词(keyword)和一个等号,等号右边就是关键字对应的值(value)[10]。本软件中的INI文件主要用于参数设置界面各参数的保存与读取。读写INI配置文件流程如图4所示。在处理INI文件时,创建一个专门的类(class)负责INI文件的读写工作,这个类暴露适当的接口供外部调用。一般的INI文件尺寸很小,因此以文本的方式将整个文件读入一个string变量中。
BIN二进制文件为无格式而有数据类型,与TXT文本文件储存方式有根本不同。二进制文件目前广泛使用IEEE标准浮点格式储存实型数据,使用ASCII编码储存字符型数据[11]。利用二进制文件在储存实型数字时能节约很大空间;因内存中参加计算的数据都是用二进制无格式储存起来的,故使用二进制储存文件也非常快捷;对于一些比较精确的数据使用二进制储存不会造成有效位丢失[12]。该软件中的BIN二进制文件操作主要用于将编辑好的程序指令转换成二进制数据,运动控制器通过读取该二进制文件识别出各种不同类型的运动指令。建立BIN二进制文件及向其写入内容流程如图5所示。
TXT文本文件内容是线性储存的,列用空格或Tab间隔,行用回车和换行符间隔。文本文件读写与二进制文件读写流程类似,不同之处在于创建文件时,后缀名使用“.txt”,以及写入内容时,使用QTextStream数据流形式。
3.2 指令传输模块
指令传输模块定义每条指令具有不同的表达方式,将编辑好的程序指令转换成二进制并写入二进制文件。上位计算机与运动控制器建立通信,将该二进制文件迅速传输给运动控制器,方便运动控制器解析程序的运动指令[13]。
例如在“回零运动”指令集中的“启动回零”指令为0x03000204,该指令定义为16进制形式,高8位的03代表该指令包含3个参数,低8位的02代表指令类型(启动回零),04代表指令类别(回零运动)。每条指令根据其作用都具有严格意义上的不同定义,每个定义在运动控制器程序上也都有对应的模式识别。
以“启动回零”这条指令为例。在按程序编辑表格顺序时,如果识别到程序中有“启动回零”这一指令,便立刻执行定义的MC_CMD_StartHome()函数。定义了一个名为dwCmd的数组,数组第一个元素为指令的16进制定义,数组的其它元素为指令的3个参数(这3个参数就是界面上表格中的参数1、参数2、参数3内容),执行定义的WriteData()函数。向BIN二进制文件写入内容,WriteData()函数即向二进制文件中分别写入dwCmd数组内容和数组第一个元素(指令的定义)。
4 实验操作测试
在定制的三轴电气运动控制系统实验台上进行软件测试,如图6所示。测试前先用Keil软件单独编写运动控制器所需的各个模块控制程序代码,利用J-Link工具将完整无误的控制程序烧入运动控制器作为运行系统,还需在PC电脑上安装运动控制器驱动。利用一根USB串口线连接运动控制卡和PC电脑(上位计算机与运动控制器之间采用RS232串口通信原理),便可打开研发的软件实时向运动控制器发送指令,将设计的软件下载到运动控制器以控制整个系统实验平台。
点击图2所示的主界面“下载程序”,便可将程序转换成二进制内容传输到运动控制器中。运动控制器接收并识别二进制内容后,立刻通过各驱动器控制对应的电机进行运动。实验表明:上位计算机与运动控制器之间能有效通信;指令传输实时、运动控制准确,程序编辑具多样性。
5 结语
本文利用Qt Creater设计并实现了三轴独立式电气运动控制器的填表式编程平台软件。通过在定制系统实验平台上多次实验,表明这款软件能降低操作人员时间与精力,实用性强。除实验台上所用皮带轮直线模组和步进电机外,该软件还适用于丝杆导轨和伺服电机的工作环境,对软件稍作修改则可适用于许多轴的电气运动控制,该软件的设计思想还适用于运动控制的其它领域。
参考文献:
[1] 郗志刚,周宏甫.运动控制器的发展与现状[J].机床电器,2005(4):5-10.
[2] 张学飞,蒋益兴,李健.基于C8051F350型单片机的振动信号采集系统[J].仪表技术与传感器,2009(10):52-53,57.
[3] 黄霆.基于LabVIEW的突发误码仪的上位机设计与实现[D].武汉:武汉科技大学,2011.
[4] 林勇强,王勇,冯屹朝.开放式运动控制器技术现状与发展趋势[J].信息技术,2010,34(5):184-186.
[5] 刘绿山.嵌入式四轴运动控制器的设计与研究[D].广州:广东工业大学,2007.
[6] 陈景波,卢达,王玲玲.全自动电脑横机上位机软件的设计[J].纺织学报,2011,32(2):131-135.
[7] 朱振茂.无线网络实时监测系统上位机软件的设计与实现[D].大连:大连海事大学,2008.
[8] 吴春华.基于ARM和uClinux的嵌入式系统的构建研究[D].杭州:浙江大学,2005.
[9] 赵铁柱.分布式文件系统性能建模及应用研究[D].广州:华南理工大学,2011.
[10] 唐振军.VC++读写软件配置参数的若干方法[J].电脑编程技巧与维护,2010(9):31-37.
[11] 冯辉.DICOM二进制文件解读的VC++实现[J].医学影像学杂志,2003(7):538-539.
[12] 谢华成,张昆朋,范黎林,等.基于文件分割的二进制大对象存取算法[J].计算机应用,2011,31(10):2612-2616.
[13] 柯艳,李杰,孔祥雷,等.基于USB2.0的多路数据采集系统上位机软件设计[J].测试技术学报,2010,24(4):351-356.
(责任编辑:杜能钢)