张 凯
中国恩菲工程技术有限公司 北京 100038
近些年,我国工业自动化发展越来越迅速,相关自动化控制技术的进步和应用逐渐受到人们的重视,以机械控制自动化替代操作工成为企业核心竞争力的必由之路。我国在环境保护方面的政策逐步完善,凸显了国家对环境治理方面的坚定决心。同时,针对污染物处理的监督力度也在不断加强,合理结合机械控制自动化技术降低污染物带来的负面影响,具有良好的社会意义和企业价值。
医疗废物是指接触过病人血液、肉体等而由医院生产出的污染性垃圾(如使用过的棉球、纱布、胶布、废水、一次性医疗器具、术后的废弃品、过期的药品等)。当前,针对医疗废物的处理,各大医院均在进行数字化、智能化转型,通过信息系统进行管理,解决以往人工管理的时效滞缓问题[1],然而针对医疗废物离开医院管辖范围进入垃圾场管理时采取的有效规避人员接触污染性垃圾的处理手段则相对薄弱。本文针对这些不可忽视的问题,通过与自动化设备进行对接,以医疗废物的垃圾处理为基础,对医疗废物的自动化调度系统的整体设计,并通过服务端—客户端(C/S)架构实现了1 套调度自动化设备进行无人化处理污染性的控制系统。
本文在结合实践经验的基础上,针对当前C/S 架构的应用现状和医疗废物处理的需要,对基于C/S 架构的医废调度系统设计进行了客观阐述。医废调度系统设计的重点需要考虑应用场景和调度目的,本文针对医疗废物进入到垃圾处理厂后的全流程进行规划,实现无人化操作,规避污染性垃圾对操作工产生的危害。在机械设备方面,考虑垃圾车到位后需添加检测设备[2]触发调度系统控制运输设备以及定制化的辅助设备进行医疗废料投炉焚烧前的必要动作。
如图1 所示,医废调度系统包含卸车设备、运输设备、辅助设备、调度系统软件等。其中,卸车设备需满足不同车型运输时均可实现无人化卸车,同时还需考虑稳定性,以避免搬运过程中造成的侧翻现象;运输设备需满足多种不同尺寸规格的医疗废物处理箱均可稳定输送,还应增加识别功能,判断具体的尺寸规格并反馈调度系统,以方便后续处理;辅助设备需满足针对各种不同尺寸的医疗废物处理箱进行处理,并将医用废料投入投料口进行焚烧。本文着重叙述调度系统软件的设计。
图1 医废调度系统无人化机械工作面示意图
图2 基于C/S 架构的医废调度系统的数据库示意图
图3 基于C/S 架构医废调度系统的客户端界面
计算机系统软件分成B/S 架构和C/S 架构,其中B/S 结构是指浏览器—Web 服务器( Broswer-Server ),通常分为3 层架构:表现层、业务逻辑层、数据访问层。在B/S 架构中,以Vue.js 为主流选择,而其主要优势在于其针对分布式系统、广域网的适用性。
本文选择C/S 架构进行调度系统的整体框架,C/S架构是指服务端—客户端(Client-Server)结构,其中服务器负责数据的管理,客户机负责完成与用户的交互任务。C/S 架构主要应用于局域网,交互的损耗小,实时性强,且可靠性高;而针对医废无人化调度考虑,可靠性、实时性尤其重要。在此,基于C/S 架构的医废调度系统的总体架构设计主要包括监控界面、数据处理和数据库3 个模块。
监控界面理模块主要包含实时监控和设备连接,作为无人化处理的控制系统,设备驱动通过卸车设备、运输设备、辅助设备之间的交互完成。其中,设备连接是用于调度系统主动与机械设备建立通信连接的开关,并通过设备联通的情况,启动软件内部的相关调度算法。实时监控模块主要是将工作面的设备布局展示出来,并通过与不同设备通信获得传感器的信息和动态,进而真正实现科学化和规模化的控制。
在数据采集和处理模块中,基于C/S 架构的医废调度系统可利用相关信息技术实现对设备数据的分析和处理,进而提升设备动作处理的效率。数据采集和处理模块的主要作用是利用Restful 和OPC UA 共同实现对医废调度系统功能完整性的构建,需要确保机械设备与服务器端之间的网络联通。除此之外,还需增加数据校验机制确保信息交互的安全性。本文调度系统涉及与多设备进行实时性对接,需要规划搭建中间件接口平台[3],从而降低开发成本,实现多设备的实时交互。
基于C/S 架构的医废调度系统需要通过对数据实时处理的方式才能实现设备调度控制功能,而在实际采集和分析过程中需要采用数据库功能对数据进行统计和分类处理。所以,在实际分析过程中,需要设计出不同的数据表格,并根据不同的设备信息对表格进行设计和记录填写工作,才能真正构建完善的设备信息数据库,而完整的数据记录则有助于设备调度实现系统化和规范化。
医废调度系统数据库模块构成了C/S 架构的服务端,本文采用SQL Server 数据库,其具备强大的处理能力以及多种作业的处理模式,可为系统在实时性上提供良好的支持。数据库核心数据表主要为设备实时监控表、调度任务表以及负责通信的数据接口表等。
1)设备实时监控表 负责记录设备的实时数据,包含设备的各项状态指标、动作执行情况等;
2)调度任务表 负责记录调度系统的待执行任务及历史任务,需考虑任务的执行状态,且可以确定任务执行的优先级,以便于梳理任务的顺序;
3)数据接口表 负责与卸车设备、运输设备、辅助设备进行交互,抽离出交互数据中的状态数据、任务执行情况并分别存入对应数据表中,且需将触发的新任务发送给指定的设备,控制其完成指定动作,实现自动化控制。
在以上的3 种数据表中,均具备流水号主键及更新时间字段,可方便进行数据维护。针对数据接口,维护有对应的触发器,便于接口数据的增删改操作触发相应的处理,采用此方法可通过较低的资源消耗实现实时复杂的逻辑运算。针对设备的监控,考虑到应尽可能满足多种设备复用,在抽取共同指标特征的同时增加更多冗余字段,以满足不同设备参数需求。针对调度任务,在维护更新时间之外还需维护一些关键时间节点的记录,使整个数据流走向更加清晰。针对不同的业务功能,维护不同的存储过程以便操作数据,充分利用数据库的原子性和一致性等特性,通过设备数据的实时反馈,带动存储过程、触发器对数据表产生事务性更改,保障了服务端数据的准确性,从而实现工作面的数字化。
数据采集主要分为TCP 层和Http 层2 部分,TCP层的数据交互采用OPC UA 协议实现,Http 层的数据交互采用Restful 实现。
OPC UA 服务器支持3 种认证方式:匿名认证、用户认证和证书认证。其中,匿名认证安全等级最低,访问不做任何校验。用户认证访问时,OPC UA 客户端需要提供用户名及密码认证,只有用户名和密码正确才允许访问。本文采用用户认证访问,提高了数据访问过程中的安全性,同时可针对交互信息数据进行CRC 校验,提高了交互的安全等级,并减少了不可靠传输造成的错误率,使设备交互更具保障。调度系统通过订阅节点的方式可以及时获知机械设备运行状态的改变情况,并及时做出响应,降低了对系统性能的消耗。
Restful 数据接口消息形式为Json 格式参数,本文所述Restful 模块主要进行数据的接收,并模仿外部系统调用中间表接口将数据消息传入,将数据信息的处理转移到中间表接口进行处理。中间表接口根据与外部系统约定的技术协议,创建中间数据库和中间数据表。在创建过程中,中间数据表需比接口协议多创建处理状态和处理状态描述这2 个字段,用于记录数据处理的结果。以某设备单次传入的数据为例,其传入的Json 参数为:
数据处理模块将Json 参数存入SQL Server 的数据表内,在参数报文的基础上,增加Statu 和Message 字段,用于SQL Server 处理后的反馈,插入时状态为:
在插入的同时,前述触发器对数据进行处理,针对不同数据处理结果将成功或失败插入到Statu 字段,失败时将具体的失败信息插入到Message 字段。
通过触发器、作业等技术实现实时数据处理,将接收到的数据信息处理为业务系统可以接收的业务数据,存储到业务数据库中,并将处理结果更新在中间数据表的处理状态和处理状态描述字段中,以供外部系统获取或Restful 接口反馈。
监控界面的主要功能将服务端数字化后的情况展现给操作工,同时也是C/S 架构下的客户端,以供操作工全面掌握当前工作面的情况,应对各种突发情况。本文所述医废调度系统运行于Windows 系统的工控机内,在数据显示方面,WPF(Windows Presentation Foundation)技术提供将数据映射到用户界面元素的自动支持功能,故客户端采用WPF 的界面展示设计以提供更优的界面交互感。WPF 框架为媒体、用户界面设计和文档提供的解决方案远远超过开发人员现在所拥有的。WPF 的设计考虑了可扩展性,使开发人员可以完全在 WPF 引擎的基础上创建自己的控件,也可通过对现有 WPF 控件进行再分类来创建自己的控件。WPF 框架的核心是用于形状、文档、图像、视频、动画、三维以及用于放置控件和内容的面板的一系列控件,这些自有控件为开发下一代用户体验提供了构造块。
本文所述医废调度系统在调度任务方面均采取无人化设计,在任务的触发及完成的均由服务端控制,客户端仅需考虑将服务端具备的数字化工作面形象的展示,即可方便地进行操作,满足日常工作及参观需求。
本文根据通过前端的图像技术,尽可能地等比例还原工作面的设备布局,将卸车设备、运输设备、辅助设备进行二维平面的展示,并利用WPF 技术的MVVM模式对数字化工作面的实时数据与界面进行绑定,将工作面设备的运行状态通过界面实时显示出来。
WPF 的MVVM 是Model、View、ViewModel 的简写,这种模式可以降低View 层与Model 层的耦合关系,即更改界面时不需要改动逻辑代码,同理逻辑代码更改时也不需要更改界面。ViewModel 收集到接口反馈的实时状态时,会改变关联的Property 值,然后触发通知机制,将Property 的变化反映到View 上实现数据的驱动。WPF 的MVVM 的优势是彻底完成了前后端的分离,3个模块各司其职无不干扰,更加灵活多变,方便维护。
本文通过WPF 的实现方式降低客户端在运行过程中产生故障的概率,更加稳定地显示工作面的实时状态,在满足无人化的同时降低软件系统发生故障的概率。
本文探究了基于C/S 架构医废调度系统的设计与实现,介绍了医疗废料处理过程中无人化的重要性,通过介绍B/S 架构和C/S 架构的对比,阐述了基于C/S 架构的原因,详细介绍了监控界面模块、数据处理模块、数据库模块3 个方面的设计思路,并结合硬件设备的复杂性和中间件的接口方式,指出了服务端设计的底层思想和数据库设计的根本依据,进而结合实际应用场景说明了WPF 进行界面设计在实时交互方面的优势。