王子权, 黄 巍, 林颖杰, 胡晶晶, 徐佳加, 沈秀峰, 沈逸俊
(上海卫星装备研究所, 上海 200240)
液压与气动装置在重型机械、电液伺服系统、泵气站中均有应用[1-3]。在实际工程实践中,有些装置需要做具有一定规律性的定时充排任务,所以关于自动定时充排装置的研究与设计对某些液压与气动装置的改进具有积极的推动作用。目前,针对液压与气动系统的研究主要集中在运动、动力与伺服控制中[4-5]。GALITSKOV等[6]对液压缸工作机构自动控制系统的动态和静态精度提出了严格的要求,并使用经典PID控制器确保对已知不确定性的鲁棒性。曹昌勇等[7-8]采用差分进化优化算法对电液伺服系统滑模控制模型数进行了仿真优化,得到了较好的位置跟踪精度及消抖效果。以上研究成果丰硕,但对某些液压与气动装置的定时充排系统的研究、设计与制作等较少。李洁洁[9]进一步简化了基于拉格朗日插值滤波算法的Farrow结构,采用无锁相环数字开环结构,提高了卫星接收机的定时定位速率。陈伟刚[10]分析了现有定时任务调度方法存在的问题,提出生产者、消费者设计模式进行分布式定时系统架构设计,结果表明系统能够满足基本定时任务业务需求,同时还具备负载均衡、任务重启等新特性。在自动控制领域,采用微控制器进行自动化装置的研究与设计是目前的主流趋势[11-13]。STM32微处理器以其便捷的开发特性和高效的处理性能越来越多地应用到各种自动控制装置的设计和制作中[14-15]。
本研究针对某设备实际需求,基于STM32微处理器设计制作了一种气液压力装置定时充排系统,移植UCOSIII操作系统实现多任务并行处理,设计两种定时逻辑和定时模式,通过外部存储器实现重要数据的读写,通过emWIN图形设计程序与液晶触摸屏实现系统桌面与其他界面的显示和操作,以使系统在某些液压与气压装置中得到良好的应用。
图1 装置的系统硬件整体组成
系统硬件整体组成如图1所示,图中STM32微处理器型号为STM32F103RCT6,单片机电源为标准的USB 5 V电源,需配置一个降压稳压模块为STM32微处理器提供3.3 V稳压直流电源。系统运行LED用于指示系统已经供电,通电时为常亮状态。蜂鸣器为有源蜂鸣器,用于在触摸屏控件被按下时鸣响。SWD下载模块用于实现对单片机的高速下载与仿真,节约开发时间和及时纠错。液晶与触摸模块包括液晶显示器和电阻式触摸屏两部分, 屏幕分辨率为320×240 px。
外部晶振包括1个8 MHz高速外部晶振和1个32.768 kHz低速外部晶振。USB转串口模块可实现对单片机的程序烧写与供电,可代替单片机电源。复位电路实现单片机的复位,系统重新启动工作。外部存储器型号为W25Q64的8 M FLASH 存储器,用于存储系统所需的必要数据和系统设置的数据。
由于电磁阀需在较高功率下工作,为了不影响单片机的正常工作,配置电磁阀驱动电源为12 V,4 A的独立电源,通过接线端子组与电磁阀连接。三极管组与继电器组连接,以实现保护继电器线圈的功能,同时与LED指示组连接,以实现在相对应继电器开启时点亮的功能。继电器组与接线端子组连接,以隔离单片机电源和电磁阀驱动电源。
如图2所示,包含了一对充排继电器电路,其中充继电器连接单片机的PC2引脚,通过1个2 kΩ的直插电阻与三极管Q4的基极连接。以U4继电器为例,其工作原理为:当PC2为低电平时,三极管Q4导通,继电器线圈通电,此时继电器的key2引脚接通12 V电源的正极,接线端子J2与继电器的key2连接,因此继电器线圈通电时,接线端子组成1个12 V电源的正极与负极,从而可为电磁阀供电;继电器在不通电状态下,key1端口始终与12 V电源正极端口VIA1和VIA2连接。同理,排继电器连接单片机的PC3引脚,系统设计了2对充排继电器对,分别连接单片机的PC2,PC3,PA2和PA3引脚,组成4路双对通道继电器组。
图2 充排继电器对
W25Q64是使用SPI通信协议的NOR FLASH存储器,其连接电路如图3所示。芯片的写保护引脚(WP)与3.3 V高电平连接,表示不进行写保护。片选引脚(CS)与单片机的PA4引脚连接,并通过1个4.7 kΩ的上拉电阻与3.3 V高电平连接,保证片选引脚的电平状态读取准确。SPI协议的时钟引脚(CLK)与单片机的PA5引脚连接,用于模拟SPI总线时钟。数据输入端口(DIO,MOSI)和输出端口(DO,MISO)分别与单片机的PA7和PA6连接,用于对数据信号的模拟。
图3 W25Q64连接电路
采用20个引脚的SWD下载与仿真电路,如图4所示。SWD下载与仿真遵循ARM公司的CMSIS-DAP标准,可通过软件开发环境Keil直接与单片机连接,在Keil的选项设置中必须使用CMSIS-DAP Debugger。其中NTRST、TDI、TMS和TDO引脚分别与单片机的PB4、PA15、TMS、TCK和PB3引脚连接,并通过1个10 kΩ电阻与3.3 V高电平连接,保证对引脚的电平状态读取准确。
图4 20针SWD下载与仿真电路
系统程序整体流程如图5所示,系统启动时首先对系统进行初始化。操作系统启动时进行系统任务的创建,系统任务包括:系统任务启动任务(start_task,用于创建其他系统任务)、系统工作LED指示任务(led0_task,用于指示系统正在工作)、充任务(C_task,用于执行充任务函数)、排任务(P_task,用于执行排任务函数)、手动操作任务(M_task,用于执行手动操作任务函数)、触摸屏刷新任务(touch_task,用于刷新触摸屏)、系统界面显示任务(emwin_task,用于显示系统桌面图标与控件等)。其中,系统任务启动任务start_task执行完毕后挂起。触摸屏刷新任务touch_task和系统界面显示任务emwin_task共同完成对触摸组件的显示与刷新等。通过GUI人机交互界面的图标控件,点击进入界面系统,界面系统中包括屏幕校准界面(Calibrate)、监视器界面(Monitor)、系统设置界面(Settings)、手动操作界面(Manual)、关于系统界面(About),进入不同界面可完成不同的规定任务,各界面通过调用底层的任务函数执行各自的程序,通过内部及外部存储器完成数据共享。
图5 系统程序整体流程
对W25Q64的3组存储区进行分配,保存触摸屏校准数据的地址从0×4096开始,至1×4096-1结束,地址首字节保存触摸屏校准数据是否已经保存标志寄存器CALADD_FLAG,当其值为0×55时,表明屏幕校准数据已经保存到外部存储器中,屏幕校准数据包括X向校准数据和Y向校准数据;保存系统设置数据的地址从1×4096开始,至2×4096-1结束。地址首字节保存系统设置数据是否已经保存标志寄存器CALADDFORSETTINGS_FLAG,当其值为0×55时,表明系统设置数据已经保存到外部存储器中。系统设置数据包括定时周期、定时充排时间、循环次数、定时模式。保存手动操作的数据的地址从2×4096开始,至3×4096-1结束,地址首字节保存手动操作数据是否已经保存标志寄存器MANUALADD_FLAG,当其值为0×55时,表明手动操作数据已经保存到外部存储器中,手动操作数据包括定时天数、小时数和分钟数。外部存储器的其他地址分配有关的字体库、图片和图标库等。
设计系统的定时充排时间To相等,一个充排周期时间为T。如图6所示,定义了两种定时模式:定时模式0和定时模式1,可知t2=2×t1。其中定时模式0为高压模式,其充排电磁阀开关逻辑为:
0~t1,排电磁阀开启,充电磁阀关闭,装置中介质排出,在t1时刻瞬间充排电磁阀交换状态;
t1~t2,排电磁阀关闭,充电磁阀开启,装置中介质流入,在t2时刻瞬间充排电磁阀均为关闭状态;
t2~t3,排电磁阀关闭,充电磁阀关闭,装置中介质保持高压,在t3时刻系统进入下一周期。
因此,定时模式0在每一个周期中,当排电磁阀关闭瞬间,充电磁阀则开启,使得装置总是在排完介质后即刻补充介质,且在t2时间后的部分周期时间里保持高压状态不变,直至进入下一周期。
图6 定时模式随周期时间的开关逻辑
定时模式1为低压模式,电磁阀开关逻辑为:
0~t1,排电磁阀开启,充电磁阀关闭,装置中介质排出,在t1时刻瞬间排电磁阀变为关闭状态,充电磁阀依然处于关闭状态;
t1~t2,排电磁阀关闭,充电磁阀关闭,装置中介质无出入,充排电磁阀均为关闭状态,装置中介质保持低压;
t2~t3,排电磁阀关闭,充电磁阀开启,装置中介质流入,在t3时刻系统进入下一周期。
因此,定时模式1在每一个周期中,当排电磁阀关闭瞬间,充电磁阀依然关闭,使得装置总是在排完介质后不补充介质。在t1~t2时间内保持低压状态不变;t2时刻,排电磁阀关闭,充电磁阀开启;在定时充完后的t3时刻,排电磁阀即刻开启,系统进入下一循环。
根据定时模式的设计,定义四种全局变量:当前充状态时间,int CURRENT_TIMEC;当前排状态时间,int CURRENT_TIMEP;当前循环次数,uint_fast8_t CURRENT_CYCLENUM;手动操作开关变量,uint_fast8_t MANUAL_START。
根据设计的定时模式随周期时间的开关逻辑,可知充任务的执行较为复杂。因此以充任务程序设计为例,进行定时充任务的软件逻辑设计,如图7所示。程序为一个随PC指针切换运行的操作系统任务,从任务函数入口进入任务主程序。
在主程序中,首先判断系统是否进入手动操作模式,如果进入手动操作模式,则进行系统延时1 s并发起任务调度,且循环执行;如果没有进入手动操作模式,则进行循环次数是否达到设定循环次数的判断,如果达到设定循环次数,则进行手动操作模式判断,若为手动操作则进行排电磁阀开、充电磁阀关(RELAYP_ON; RELAYC_OFF)程序块代码的运行,此时排电磁阀开,充电磁阀关,进行当前排状态时间=定时周期、当前充状态时间=定时周期(CURRENT_TIMEP=T; CURRENT_TIMEC=T)程序块代码的运行,将设定的定时周期时间赋值当前充排状态时间,并进行可发起任务调度的1 s系统延时,再次进行手动操作模式的判断;若不是手动操作模式,则进行排电磁阀关、充电磁阀开(RELAYP_OFF; RELAYC_ON)程序块代码的运行,此时排电磁阀关,充电磁阀关,进行当前排状态时间=定时周期、当前充状态时间=定时周期(CURRENT_TIMEP=T; CURRENT_TIMEC=T)程序代码的运行,并进行可发起任务调度的1 s系统延时,再次进行手动操作模式的判断;如果没有达到设定循环次数,则进行定时模式的判断,若为定时模式1,则判断当前充状态时间是否小于T-t1,若小于,则依次进行充电磁阀关(RELAYC_OFF)和系统延时1 s并发起任务调度(OSTIMEDLY (1000u))程序块代码的运行,当前充状态时间CURRENT_TIMEC加1,因此即可完成当前充状态时间每秒累加一次的目的;若大于,则进行当前充状态时间是否小于T的判断,若小于,则依次进行充电磁阀开(RELAYC_ON)和系统延时1 s并发起任务调度(OSTIMEDLY(1000u))程序代码的运行,当前充状态时间加1;若大于,则将当前充状态时间清零,执行CURRENT_CYCLENUM加1的操作,程序重新执行到任务函数入口;若为定时模式0,则判断当前充状态时间是否小于t1,若小于,则依次执行充电磁阀关(RELAYC_OFF)和系统延时1 s并发起任务调度(OSTIMEDLY(1000u))程序块的运行,当前充状态时间加1;若大于,则判断当前充状态时间是否小于2×t1,若小于,则依次执行充电磁阀开(RELAYC_ON)和系统延时1 s并发起任务调度(OSTIMEDLY(1000u))程序的运行,当前充状态时间加1;若大于,则判断当前充状态时间是否小于T,若小于,则依次执行充电磁阀关(RELAYC_OFF)和系统延时1 s并发起任务调度(OSTIMEDLY(1000u))程序块的运行,当前充状态时间加1;若大于,则将当前充状态时间清零,程序重新执行到任务函数入口。
图7 定时充任务软件逻辑
根据设计需求与目的,设计的系统界面包括:系统桌面(Desktop)、屏幕校准界面(Calibrate)、监视器界面(Monitor)、系统设置界面(Settings)、手动操作界面(Manual)、关于系统界面(About),共6个界面。其中,系统桌面、监视器界面、系统设置界面、手动操作界面如图8所示。
图8 系统的部分界面设计
界面的操作逻辑如下:
(1) 从桌面进入各个子界面,触摸屏校准数据保存在W25Q64外部存储器中,系统开机首先读取触摸屏校准数据,若外部存储器中无触摸屏校准数据,则在开机时自动进入屏幕校准程序;
(2) 系统设置的数据保存在W25Q64外部存储器中,若存储器中无系统设置数据,默认定时周期为20 min,充排阀为开状态的定时时间为5 min,循环次数为30次,并将数据保存到设计的存储区;
(3) 系统设置有2个模式,模式0为高压模式,即充排电磁阀都关闭时,容器为高压,介质量大;模式1为低压模式,即充排电磁阀都关闭时,容器有为低压,介质量小;
(4) 通过滑块控件进行定时周期、循环次数、充排定时时间、定时模式、定时天数、定时小时数和定时分钟数的设置,它们的最大值分别是30 min,50次,8 min,1,3 d,24 h,60 min;
(5) 在系统设置界面中,通过DONE按钮确定系统数据已经设置完毕,通过返回按钮则不进行数据保存,数据仍为上一次设置的数据;
(6) 通过监控界面的RESTART CYCLE按钮启动充排阀定时程序,在程序进行的任何时间,均可通过该按钮重启循环,若重启循环,则循环次数自动清零,再次逐渐增加;
(7) 进入手动操作界面时,充排阀均关闭,通过START按钮启动排任务定时,通过BACK按钮返回桌面,返回桌面时,充排阀均关闭。
主要进行两方面的实验与调试:系统定时充排过程检验和手动操作定时排过程检验。设定定时模式为高压模式,系统定时充排过程检验设定定时充排周期为10 min,充排时间为5 min,设定循环次数为3次;手动操作定时排过程检验设定时间为0,1 h,56 min。得到的定时充排过程实验结果如图9所示,图中C表示充电磁阀状态,P表示排电磁阀状态。可知,在运行的3个周期里,充排电磁阀状态实现了相应规律的变化,在排电磁阀开启时,充电磁阀关闭,在排电磁阀关闭时,充电磁阀开启,达到了设计预期。
图9 系统定时充排过程实验结果
手动操作定时排过程检验结果如图10所示,可知在手动操作启动后的116 min里排电磁阀保持为开状态,而充电磁阀保持关闭,在到达定时时间瞬间,排电磁阀关闭,且充电磁阀依然保持关闭状态,达到了手动操作只有排过程,没有充过程的设计目的,在排过程完毕后,充排两电磁阀均关闭。
图10 手动操作排过程实验结果
基于STM32微处理器设计制作了一种4路双对通道定循环次数气液压力装置定时充排系统。进行了硬件设计和软件设计,设计了两种定时模式和6个系统操作界面,设计了定时模式的开关逻辑与软件设计逻辑,介绍了人机界面的操作逻辑,通过系统定时充排过程检验和手动操作定时排过程检验,验证了系统的稳定性与可靠性,可应用于多种气液压力装置的介质定时充排中。