基于STM32微控制器的自动发药机发药装置的控制与实现
2017-07-10张哲陈天鹰陈光达
张哲 陈天鹰 陈光达
摘 要:随着工业自动化,智能化的浪潮袭来,人们的生活方式发生了巨大的变化,人们的就医环境和医疗设备也进一步实现智能化,本文主要利用STM32微控制器通过CAN总线来控制盒装自动发药机的发药装置,传统盒装发药机的发药装置主要通过PLC技术来实现控制[1],但PLC本身的线路非常复杂,最终使得发药机显得非常庞大笨重,现场组装也耗时耗力自动化程度也不高,同时PLC控制装置的成本非常高昂,這严重制约了盒装自动发药机的市场化发展。因此本文采用的STM32微控制器可以有效解决PLC技术的相关缺点。
关键词:自动发药机;STM32微控制器;CAN总线
据统计北京大医院一天的门诊量就达到上万人,病人有时花费大量的时间在等待排队中,这样浪费了大量时间所以针对这种现象,本论文研究一种自动发药机[ 2 ],来节省病人取药时等待排队的时间,目前国内外自动化药房的发药机主要产品分为以下四种形式:
1)散装药品自动化发药机;
2)数控回转柜式自动化药房发药机[ 2 ] ;
3)机械手式自动化药房发药机;
4)储药槽式自动化发药机。
国内的一些发药机产品一般采用的是PLC技术,而这种技术导致设备的线路非常复杂,机器显得非常庞大笨重,现场组装也耗时耗力自动化程度也不高。
综上所述,本文采用的基于STM32微控制器技术来控制盒装发药机的控制装置,可以有效克服传统PLC控制方法的缺点与不足,同时降低了盒装发药机整体的成本。
一、盒装发药机的硬件设计
盒装发药机控制发药装置的过程如下:上位机通过CAN总线向STM32微控制器发送相应的十六位控制信号。当STM32微控制器收到这些控制信号时,根据我们编写的通信协议,控制相应发药弹块装置弹出所发药盒。药盒被发出时,需要一个光电检测电路[ 6 ],用来检测药盒是否正常发出而没有被卡住。
因此盒装发药机硬件设计最重要包含三个部分:第一部分是CAN总线收发控制电路,第二部分是盒装发药机发药弹块控制装置,第三部分是光电检测装置。因此本文实现发药机控制的核心是CAN总线电路与CAN总线协议的制定,发药控制装置的框图如下图:
(一)CAN总线收发控制电路
由上可知盒装发药机控制装置的核心是CAN总线电路,CAN总线(控制器局域网络)即控制器局域网[ 3-4 ],是使用最广泛的国际现场总线。起初,CAN总线被设计成在汽车环境中的微控制器之间的通信,在车载电子控制单元(ECU)形成汽车电子控制网络之间的信息交换。它是一种多主方式的串行通讯总线,基本设计规范要求较高的比特率,高抗干扰,而且能够检测出产生的任何错误。信号最长传输距离为10公里,但是数据传输速率只能低至5Kbps。
基于CAN总线的分布式控制系统在以下几个方面的优势:
1)CAN具有完善的通信协议,该协议都是由硬件自动完成,因此降低了系统的开发难度,缩短了开发周期,这些是只仅仅有电气协议的RS-485所无法比拟的。
2)在CAN总线的接口电路中,有CAN-H和CAN-L与线路连接,CAN-H只能是高电平或者悬空状态,CAN-L只能是低电平或者悬空状态,这就确保了CAN总线接口电路不会像RS-485那样在总线出现问题时会损坏节点接口。而且CAN节点在错误严重的情况下具有自动关闭输出功能,以使总线上其他节点的操作不受影响,从而保证不会出现象在网络中,因个别节点出现问题,使得总线处于“死锁”状态。
3)CAN控制器可以在多主方式下工作,网络中的每个节点都可以通过一种特殊的仲裁机制(具体参见CAN2.0协议标准)来变成主机。且CAN总线协议用通信数据编码取代了栈地址的编码,这使得每个节点都可以收到一样的数据,这样就大大增强了数据通信的实时性。
综上所述本文采用的CAN总线收发器为TJA1050,CAN总线收发控制电路如下:
二、盒装发药机的软件设计
(一)盒装发药机的控制流程图
Fig3 The control diagram of dispensing machine
(二)盒装发药机CAN总线通信子程序设计
本文采用上位机通过CAN总线与STM32微控制器通信,下面是本文CAN总线发药机控制器上、下位机通讯协议:
1.通讯要求
CAN2.0,扩展位模式,频率800M,无远程帧。
2.上位机格式(16进制)例
0x 00 00 AB CD 01 02 03 05 01 55
① ② ③ ④ ⑤ ⑥ ⑦
①:00 00 AB CD 为地址,前2位为00 00,后2位可变。
②:为执行动作标志位。取01时执行动作相应动作,取02时为通讯测试。
③:为电磁铁位置标志位:取值为01时第一个电磁铁动作,取02时第二个电磁铁动作,以此类推。
④:为通电时间标志位:取值为01时为通电10毫秒,取值为10时通电100毫秒。
⑤:为错误动作次数标志位:取值为05时动作5次,其他值时动作3次。
⑥:为发药药道检测使能标志位:取值为01时本药道参与检测,其他值时不参与检测。
⑦:CRC验证:②+③+④+⑤+⑥=⑦
3.下位机格式(16进制)
例:0x 00 00 AB CD 01 02 55
① ② ③ ④
①:本机地址。
②:发药成功标志位。取值为01时发药成功,取值为02时发药失败。
③:发药位置标志位。取值为01时发第一盒药,取值02为发第二盒药,依次类推。
④:CRC验证:②+③=④
三、结论
本文针对传统发药机采用PLC控制系统来控制发药装置,由此造成的成本高昂,设备结构复杂等缺点,提出了采用STM32微控制器的方法,该方法通过设计简单的电路图利用CAN总线通信来控制相应的发药装置,可以有效克服PLC控制系统的缺点,同时可以有效的提高控制系统的可靠性与稳定性。
但是,本文还存在一定不足。本文中的控制系统没有采用带有任务管理的操作系统,导致没有友好的人机交互界面。从而使后续系统的管理维护,以及迭代开发带来了不便。
参考文献:
[1] 王庆.基于S7-200 PLC的中药自动发药机系统的研究与实现[D].四川:中国知网,2005:2-3.
[2] 卢道兵,梁茂本.自动化发药系统在医院门诊药房中的应用效果评价[J].重庆医学,2016,45(29):12.
[3] 刘火良,杨森.STM32库开发实战指南[M].北京:机械工业出版社,2013,06.
[4] 郑杰.ARM嵌入式系统开发与应用完全手册[M].北京:中国铁道出版社,2013,08:53.
[5] 赵齐,许彦峰,李健,曾丹红.基于STM32和多照度传感器融合照度测量系统[J].电子技术与软件工程,2014,03.
[6] 尹杰,杨宗帅,聂海,王海峰.基于红外反射式智能循迹遥控小车系统设计[J].电子设计工程,2013,12.