陈芷琳,温晓静,刘 鑫,王 翔,丁肇红
(上海应用技术大学 电气与电子工程学院,上海 201418)
自从20世纪80年代末板球系统开始被国内外学者当作研究对象来验证各种控制算法,板球系统的研究已经经历了从simulink模型仿真验证到实物平台实时控制的过渡[1-2],陆续有各个课题组实验室以及企业生产制造出各类板球系统实物平台,其中国内比较常用的是由固高科技公司生产的GPB2001板球系统,其平台实物和上位机界面如图1所示。
随着自动控制技术的进步和深入研究板球系统现在已经成为各高校自动控制原理实验室的基础实验平台,目前市场所售板球系统未进行技术升级换代,上位机软件还只能运行在windows xp系统环境下,技术相对来说已经落后,不能满足当前教学和研究所需。而且板球系统平台自身即是一个集合机械、电子、自动化以及计算机科学等多学科交叉综合的系统,因此对研究板球系统平台设计研究有非常实用的价值和重要意义。本文就板球系统提出了一套完整的设计思路和可执行方案,实现成本较低,而且采用技术手段均为当前最新技术,有较高的推广价值。
本研究设计的板球系统平台主要有机械部分、硬件部分(包括硬件和嵌入式软件)和上位机三大部分组成[3-4]。板球本体利用铝合金搭建主体机械结构,采用2个0°~180°伺服舵机为动力机构,电阻屏作为小球位置传感器,以STM32F103单片机为控制核心,通过串口与上位机进行连接通讯,上位机设计采用python为编程语言,PyQt5为GUI框架进行搭建。下面对各个部分详细展开阐述。
主体机械结构采用铝合金为主要材质,CNC加工切割成设计好的形状,舵机臂与平板之间通过铰链结构相连,为了保证平板在2个舵机推动运动过程中维持围绕中心运动的状态,采用万向节将平板的几何中心与底座固定部分相连。同时底座固定部分设计了4个弹簧减震来减少在运动过程中振动对系统造成的干扰。本设计中舵机采用的是Futaba3010模拟舵机,非常关键的是,舵机的选择非常重要,其性能的好坏直接影响整体系统的使用体验,本研究方案所选用的舵机参数如表1。
在上述关键参数中,舵机的扭矩要与电阻屏质量小球质量等整体系统相匹配,以保证有足够的动力输出,舵机的响应速度应尽可能的快,一般情况下舵机的响应也与供电电压所相关,需要机械和电子共同协调。
表1 Futaba3010舵机参数Tab.1 The parameters of Futaba3010 servo
图2 板球系统机械结构图Fig.2 Mechanical structure of Ball&Plate system
由于舵机本身已经构成一个闭环系统,省去了传统伺服电机需额外加装编码器等工作,因此本方案中执行机构选用舵机极大地降低了系统的复杂度同时也降低了系统的成本。
本研究所设计的电路系统主要有单片机控制电路、电源电路、触摸板电路、OLED显示屏电路、按键电路,串口电路等,整体框架如图3所示。
3.1.1 电源电路
电源电路为整个系统提供稳定可靠的电能,是整个系统最基本的组成部分[5],系统设计外接供电为直流12 V供电。舵机是系统中的大功率用电设备,结合舵机参数本文采用的是5 V舵机供电。单片机触摸板显示屏等其余用外设模块供电电压均为3.3 V。由于2种电压的存在,为了兼顾效率和性能,采用开关稳压和线性稳压相结合的方案。12 V转5 V通过开关DC-DC的方案实现,由于3.3 V采用的是线性稳压,为了减小其功耗降低线性DC-DC的压差[6],3.3 V输入由开关稳压所产生的5 V提供,电源部分电路图见图4。
图3 板球系统硬件框架图Fig.3 Hardware framework of Ball&Plate system
图4 电源电路Fig.4 Power circuit
图5 单片机主控电路Fig.5 MCU control circuit
3.1.2 主控电路
如图5单片机引脚图所示,主控电路选择的芯片是STM32F103单片机,该款单片机采用ARM的Cortex-M3内核架构,兼备高性能、低成本、低功耗、存储速度快等优势[7]。结合本研究方案需求,该款单片机所具备的外设端口以及运行速度等均可达到要求,而且作为一款在民用领域有着广泛地应用的单片机,供货稳定,成本较低。
主控电路定义了单片机各个引脚的功能和设计制作了与单片机引脚相连的电路,包括了与单片机引脚直接相连的复位电路、时钟电路、电源电路、下载电路等;外围电路还包括了OLED显示屏电路、电阻屏驱动电路、串口通信电路等[8]。
3.1.3 电阻屏电路
电阻屏作为本研究设计方案中的小球位置传感器是整个系统中较为关键的部分,设计采用的是一个 0.304 8 m(12 in)的电阻触摸屏,其电路图如图6所示,驱动电路采用2对PNP-NPN三极管来分时控制其通断状态利用单片机的ADC功能来读取触点的位置。
3.1.4 串口电路
串口电路如图7所示,单片机串口与上位机USB之间的通信转换由此电路来完成,同时该电路具备给单片机一键下载程序的功能,为系统后续通过上位机升级程序提供了可能。
图6 电阻屏电路Fig.6 Resistance screen circuit
图7 串口转USB电路Fig.7 Serial to USB circuit
3.1.5 显示屏电路
考虑到人机交互的便捷性,设计方案在硬件设计中加入了显示屏按键等人机交互方式,下位机采用的是一块2.88 cm的OLED屏幕,可以显示基本运行状态和参数等。该显示屏支持多种协议,本次采用的I2C通信协议完成单片机对显示屏的控制,其电路图如图8所示。
图8 OLED显示屏电路Fig.8 OLED driver circuit
板球系统的功能较为复杂,从运行模式上区分,分为离线模式和在线模式,离线模式即下位机自己根据内置算法进行控制[8-9],在线模式为与上位机连接,控制指令来自上位机,下位机负责执行。此外还有一些辅助模式,比如仪器校准模式。程序设计流程图如图9所示。
图9 嵌入式软件主程序流程图Fig.9 Main program flow chart of embedded software
在嵌入式软件设计还充分利用了定时器和中断这2个单片机资源作为后端运行程序,定时器用来控制程序运行节奏,中断用来接收外部输入,比如按键串口接收数据,电阻屏小球读取等。前后端结合的方式有效地提高了程序的运行效率[10-11]。
上位机作为一种非常便捷的调试手段和下位机监控手段在实际应用中是非常常用的,本文采用python为编程语言,PyQt5为GUI框架为板球系统下位机设计了相配套对应的上位机软件,其框架如图10所示。
图10 板球系统上位机框架图Fig.10 Host computer frame of Ball&Plate system
下位机与上位机可进行通信连接的关键是数据协议,即收发双方互相可以正确解析所接收的消息,板球系统与上位机之间交互的信息比较单一,数据量适中,本次方案采用的是字符串数据协议,每一条字符串消息帧的字段与字段之间采用逗号分隔,数据协议格式如下:
〈起始符〉,〈消息类型〉,〈数据包〉,〈数据校验〉
其中数据包所包含的内容根据消息类型来对应解析。在本研究中所设计的消息类型有:心跳包、下位机硬件消息、系统状态消息、小球实时状态消息、小球参数消息、控制指令消息以及设置指令消息等
本研究中上位机编程采用的是python语言,上位机作为一个人-机交互,机-机通信的一个终端,更多的是处理交互逻辑,其本身不具备运算密集型的特点,对编程语言运算性能要求并不高,python语言具备高效简洁等特点,而且python是一种很好的“胶水语言”,可以将各种编程语言进行很容易地结合,因此选用python语言来做上位机既可满足系统业务逻辑编程所需,也可提高上位机开发效率和降低后期维护成本,其“胶水语言”特性为二次开发留了很大的空间。
综上,在上位机的程序设计充分利用python语言的高效性,遵循面向对象编程的思想将整体程序分为多个模块逐个解耦设计对象,在上位机界面控件渲染显示中利用了PyQt中信号和槽机制的手段,进一步降低程序的耦合度。本研究的上位机程序设计中分为了串口程序设计、人机交互程序设计、图像绘制程序设计、数据记录程序设计以及算法导入程序设计。
采用多线程的方式,提高了上位机的使用体验,特别在图像绘制和串口数据处理上[12]。在小球控制算法导入中,不管何种算法最终都是输出在2个舵机上进而控制小球,利用这一特点结合python对象方法的重写实现了算法导入功能,只要遵循相应的代码构造方法即可实现不同控制算法的导入。
本次方案设计验证上位机所运行的硬件环境为普通笔记本(Intel三代i5处理器),Windows10操作系统,4GB内存,由于上位机编程所采用的是有着跨平台特性的python和pyqt,因此在其他操作系统的电脑上也是可以运行的,最终完成的上位机界面如图11所示。
图11 板球系统上位机界面图Fig.11 Host computer interface of Ball&Plate system
图12 板球系统联调界面图Fig.12 Interface diagram of combined debugging of Ball&Plate system
最后下位机与上位机进行联调测试,进行了上位机监测板球系统运行状态,参数调整,控制指令验证,基本PID实时控制等测试[13],实验过程如图12所示,实验结果表明,下位机满足板球系统的功能,上位机可实时监测显示板球系统的状态,并可以完成一些人机交互,对现有的板球系统是一个很好替代,但本研究的不足之处是没有将matlab中的simulink硬件在环仿真所联系起来,在算法调试有一定的局限,但通过后续的开发,该部分功能可以实现。
由于本系统上位机开发采用的是python编程语言,采用的PyQt的GUI框架,两者均有着非常好的跨平台表现,即相同的程序可运行在windows、linux、mac等主流操作系统环境下,这将给相关科研工作带来了极大的便利,可以非常容易的实现与其他项目进行衔接。
下面以固高GPB2001为对比对象,从5个方面进行对比分析。
(1) 在机械结构上:GPB2001与本方案大体相同,不同的是GPB2001平板为圆形盘面,本方案为矩形盘面。
(2) 在驱动机构方面:GPB2001采用伺服电机,需要安装编码器等,机械结构复杂,控制复杂。本次方案采用的舵机自身已是一个闭环系统。
(3) 在传感器方面:GPB2001采用摄像头采集小球位置,摄像头造价高昂,程序复杂,且在运行过程中收光线干扰严重,本研究方案采用的电阻屏成本低廉,使用简单可靠。
(4) 在数据协议方面:GPB2001出于商业考量数据协议为私有协议,在二次开发上有很大的局限性,本研究方案数据协议采用常用的消息帧结构协议,解码简单,方便二次开发接入其他系统。
(5) 在上位机软件方面:GPB2001上位机软件运行系统环境为windows xp,而且没有linux以及mac等系统下的软件。本研究方案上位机软件由于编程语言和框架所决定有良好的跨平台性能。
最后对本方案所设计整体系统物料成本进行统计分析,BOM表如表2所示,总价千元以内即可实现一个满足大部分需求的板球系统平台,由于本次设计验证是按照制作一个样机来采购物料的,部分零件如电容电阻螺丝螺母等有数量起售限制,实际成本要比BOM中所列出低,如果量产,成本还可以进一步降低。另外由于上位机等软件所采用的语言为开源语言,所用的IDE等均免费,因此在软件方面可以进一步控制成本。
表2 板球系统物料表Tab.2 Ball&Plate bill of materials
综上分析,在吸取了同类产品方案优点的基础上结合当前较前沿的技术使得本研究方案更加有技术优势和创新性。而且在成本控制上有着更亲民的价格,使其在自动控制实验室或其他领域有着更好的推广价值。
针对现有板球系统平台技术迭代升级较慢的问题,自行研究设计了一整套的完整的板球系统平台,并验证了方案的可行性,通过实验验证本研究所提方案达到了课题的设计预期,证明了本课题的可行性和实用性,实现成本较低,而且提供了二次开发的接口,比传统板球系统更加灵活,也为其他仪器开发设计提供了整套系统的解决思路,有较高的推广价值和实用意义。