导语
大家好,我是智能仓储物流技术研习社的社长,你的老朋友,老K。
文:北起院 王延杰 吴 杰
来源:起重运输机械杂志社
0 引言
自动化立体仓库一般采用多层货架来存储单元货物,用相应的搬运设备进行单元货物的入、出库操作,是现代物流中的一个重要环节。其主体由货架、巷道式堆垛机、输送机等组成。利用电气控制系统、上位监控系统(Warehouse Control System,WCS)、库存管理系统(Warehouse Management System,WMS)实现自动化作业。
立体仓库的空间利用率高,自动化系统的使用可节省大量的人工操作,信息化的应用可提高库存管理效率,基于这些特点,自动化立体仓库在各行业均获得了广泛应用。特别是国家法令对于药品的储存环境,尤其是对自动化立体库的应用提出专门要求,所以除了立体库的便利因素,硬性需求也使医药类企业在立体仓库的市场中占有一定的份额。
WCS 负责上、下层间的通讯,是连接电气控制系统和库存管理系统的纽带,同时需具备作业调度、异常处理等功能,将整个仓储物流环境有机结合、协调运作。
目前立体仓库供货商开发的WCS 系统根据底层电气硬件的不同而选择不同的平台,如果底层硬件采用德国西门子可编程逻辑控制器(Programmable Logic Controller ,PLC), 则WCS 的开发将基于西门子WinCC 平台或微软的VisualStudio C# 平台,这两个平台也是市场主流的工控开发工具。
WinCC 方便对于PLC的通讯,可以减少通讯部分程序的开发,同时自带定制的SQL Server,简化了开发人员对于软件的采购、安装。WinCC 提供了大量的模块、功能,使初学人员也能快速开发简单功能,并且自带的脚本编辑器可以扩展应用功能,供开发人员编辑复杂的功能。
1 WCS 的基本功能
与底层PLC、上层WMS 通讯,对任务列表作业进行管理,不依赖于WMS 生成临时作业,设备操作和状态显示等功能是WCS 应具备的基本功能。
1.1 WCS 通讯功能
WCS 的主要功能之一是通讯,既包括与底层PLC 设备的通讯,也包含与WMS 的通讯。WCS 从WMS 接收入、出库作业指令,将指令转换成PLC 可识别的信息下发给PLC,同时采集PLC 数据,将设备状态、作业状态反馈给WMS,三者的通讯结构关系见图1。
图1 WCS 通讯结构示意图
WinCC 平台开发程序的最大便利就是与PLC 的通讯,只需要通过鼠标和少量的键盘操作就可以完成大部分的通讯设置。若采用ProfiBus 通讯模式的PLC,则需在WinCC 变量管理器中设置站地址,若采用工业以太网模式的PLC 则只需在变量管理器中输入PLC 的IP 地址即可完成底层设备的通讯设置,然后在对应的站下根据PLC 中的地址设置采集的变量就可以读取PLC 中指定地址的数据。
WCS 与WMS 交互信息有多种方式,包括 DBLink、WebService、Socket 等。其中,DBLink 采用数据库表作为双方交互数据的容器,这种交互方式只需要将数据信息按照双方约定的格式写入到中间表对应的字段中即可,DBLink 方式已经应用很多年,其开发简单,并且方便后期对于信息溯源,考虑到WCS 和WMS 间交互的数据量不大,所以在工业企业中广泛使用。通常设计两张中间表,一张用来接收WMS 信息,一张是WCS 用来将数据反馈给WMS,实现数据的双向流动,见图2。
图2 采用DBLink 方式交互示意图
1.2 WCS 任务管理功能
对于WMS 下发的托盘入、出库任务,WCS 依据特定的排序原则,根据设备状态进行管理,使不同的作业发送给对应的设备。通常WMS 下发的作业数据中会带有优先级信息,WCS 可以将优先级作为第一排序依据,对于相同优先级的作业,应按照作业下发时间进行排序。
当入库、出库作业同时存在时,如果没有特殊的需要,WCS 应保证两种类型的作业交叉进行,同一巷道内的作业,堆垛机执行完一条入库作业后再执行一条出库作业,即实现“一入一出”模式,避免入库托盘长期等待设备执行以造成后续托盘堵住输送机上的其他托盘的入库作业。
WCS 应具备对当前作业列表中的作业进行人工干预处理功能。如作业查询、作业状态分类查看、手动优先出库、手动完成作业、手动删除作业等。对于在任务列表中排队的出库作业,有时需要紧急出库作业,这种情况下就可在WCS 中人为提高作业优先级,使该紧急出库作业排在任务列表的前端,当WCS 收到堆垛机执行完当前的作业信息后,将紧急出库作业下发给堆垛机。
某些特殊情况下,WCS 和PLC 的通讯可能会受到干扰,如设备运行过程中振动引起接线松动或动力电的电磁感应干扰通讯线路导致通讯中断。如果中断发生在堆垛机执行完作业的阶段,WCS 没有PLC 的反馈信息,就不会更新作业状态,也不能正常地向WMS 上报作业结果,甚至可能导致库存管理数据失真。
当通讯恢复正常后,作业状态信息也不会进行更新,这时就需要操作员手动完成作业,通过这种操作更新作业状态,并将作业状态上报给WMS 以更新库存信息。手动删除作业的功能通常在设备执行作业产生异常时使用,例如库存信息和实物不符可能会导致“空出库”或者“双重入库”的异常。
“空出库”是WMS 认为货架上存在货物而实际不存在,当下发该货位的出库作业给设备执行时,设备做完取货动作后检测不到货物,就会发出“空出库”的异常;“双重入库”是货架上存在实物而WMS 的库存中没有记录,当有入库作业被分配到这个货位上,设备在执行入库放货的动作时,探测到货架上有实物,就会发出“入库双重”的报警。
这两种故障都导致任务无法继续执行,需要人工在WCS 上进行删除操作。WCS 的开发人员应设计删除原因供操作者进行选择,因为不同的删除原因可能会触发WMS 执行不同的后续程序。
1.3 WCS 手动任务
WCS 不仅要接收WMS 的作业任务,还应向操作员提供生成手动作业功能,以在WMS 通讯中断期间临时生成作业,或处理部分异常作业。根据立体库系统的设备组成,可以将手动作业按照设备类型进行划分:堆垛机单机作业、输送机单机作业、WCS 联机作业。
其中堆垛机单机作业只有堆垛机参与执行,当堆垛机执行完成后任务结束,不再有其他设备的后续执行工作;类似的输送机单机作业只有输送机执行,堆垛机不参与;WCS 联机作业是堆垛机和输送机配合执行,如一条出库作业,堆垛机执行完成后WCS 将指令发送给输送机PLC,这种方式类似于WMS 下发的作业,区别在于WCS 联机作业执行完成后,不需要向WMS 反馈执行结果,WMS 的库存信息不会发生变化。按照作业的种类区分,WCS 手动任务应包括入库、出库作业。
1.4 设备操作和状态显示
立体仓库的主要运行设备为堆垛机和输送机,WCS对这两种设备进行操作,并根据设备的状态触发传递相应的作业指令。在WCS 上不需要实现完全的设备控制,如控制某一台设备电机的启停。
可以根据PLC 系统来划分操作功能,常用的操作包括对某设备PLC 进行联机或脱机操作,在立体仓库运行过程中,根据现场情况选择需要联网的设备,WCS 只对成功联网的设备发送作业指令,以有效防止非工作设备的误动作引发异常。
特别是对于堆垛机的联机、脱机操作,WCS 将堆垛机的状态上传给WMS,WMS 依据堆垛机联网信息判断某条巷道的库存是否可用来进行出库作业的下发,对于入库作业,巷道堆垛机是否可用也是WMS 给入库托盘分配库位的依据之一。
为方便操作员掌握立体库设备的状态,设备的联机、脱机、待机、工作、故障等状态,必须在WCS 界面上直观显示,如不同颜色的文字显示或特定的图形显示。
对于移动设备如堆垛机,可以根据PLC 的行走数据在画面中显示设备的大概位置;对于非移动设备如输送机,应能够显示其上的托盘占位信息。
2 医药企业的功能需求
医药企业受限于严格的国家法令法规,其立体仓库WCS 的需求标准高于一般企业。中国国家药品监督管理局(下文简称药监局)在2011 年1 月发布了《药品生产质量管理规范(2010 年修订)》,并在2015 年发布了《计算机化系统》和《确认与验证》两个附录,作为《药品生产质量管理规范(2010 年修订)》配套文件。
根据附录《计算机化系统》的第五章,医药企业的计算机系统须具备用户管理和权限设置、重要操作二次确认、审计追踪、相关记录保存和系统安全性等功能。WCS 作为计算机系统的组成部分,须满足附录《计算机化系统》的要求。
2019 年8 月26 日,新版《药品管理法》经十三届全国人大常委会第十二次会议表决通过,并于2019 年12 月1 日起施行。新版《中华人民共和国药品管理法》中删除原《中华人民共和国药品管理法》(2015年4 月24 日发布) 中“药品监督管理部门按照规定对药品生产企业是否符合《药品生产质量管理规范》的要求进行认证;对认证合格的,发给认证证书”等相关规定。
替代周期性GMP 认证的是相关部门加强对于药企不定期的“飞行检查”。因此虽然取消了GMP 认证,并不代表医药企业计算机系统可以降低要求。
2.1 用户管理和权限设置
为防止不同的操作员对于WCS 无限制的操作造成系统异常,医药企业对于操作人员的权限有着严格定义,因此在WCS 设计初期应做好用户需求调研,根据具体需求开发用户管理和权限设置功能。WinCC 平台自带较为完善的用户管理功能,在画面中添加平台内置的用户控制控件,就可以在WCS 运行过程中显示用户管理窗口,见图3。
图3 WinCC 平台内置的用户管理器
具备“用户管理”权限的操作员登录到WCS,可以进行用户的增加、删除、修改密码等编辑操作,见图4。在用户编辑窗口中可以赋予用户不同的权限,使用户登录WCS 后只能做限定的操作。
权限设置功能不仅需要在用户编辑中进行设定,还需要开发人员在画面编辑窗口中对可操作的窗口控件进行权限赋值。只有管理员赋予操作员的权限和窗口控件的权限赋值匹配,登录系统的操作员才可以进行相应的操作,否则WCS 会弹出没有权限的提示窗口。WinCC 自带20 种权限,开发人员可以增加额外的自定义权限,供操作员使用。
图4 用户编辑窗口
2.2 重要操作二次确认
虽然WCS 系统具有权限控制功能,但为了防止具有权限的操作员误操作,WCS 需要实现重要操作二次确认的功能: 在对WCS 进行操作后可能会引起数据变化,需在操作生效前提示用户操作内容,由操作员进行复核确认后,再执行相应的后续程序。
如图5 所示,操作员在WCS 上生成一条出库任务,在出库任务进入作业列表前,需要提示作业信息,用户二次确认后该任务才真正生成到任务列表进行排队等待执行,否则不会产生作业。
图5 二次确认提示
凡是能引起数据变化的操作,都需要二次确认提示,如手动作业的生成,任务管理的完成、删除,设备的联机、脱机等操作。
2.3 审计追踪功能
审计追踪功能一般是与二次确认功能同时出现的。对于引起数据变化的操作,WCS 都应进行记录,以供后期对数据的追溯。当有操作发生且有效的情况下,系统应记录操作人员信息、操作内容、操作时间等重要信息,并且在界面上提供查询功能。
这些信息保存在数据库中,保留时长应符合法规的要求。随着时间的积累,相关数据也不断增加,所以应定期做好数据的备份和清理工作,防止存储大量的数据而影响数据库的运行效率。
2.4 可靠的冗余
医药企业对于风险管理非常重视,这种风险管理不仅应用在生产环节,也应用于原材料和成品的储运环节。WCS 系统在立体库运营中起到承上启下的纽带作用,是非常关键的环节,WCS 系统的正常运行是整个立体库能否运营的关键节点,所以须考虑WCS 的可靠性,独立的一套WCS 是不符合医药企业风控管理的。
WinCC 平台提供了冗余功能,该功能可以在两台服务器中并行运行相同的WCS 项目,两台WCS 服务器可以互相监控。如图6所示,当一台服务器出现物理故障( 如断电、非正常关闭等),则另一台可以从PLC 接收并归档过程值和消息,保证数据的连续和完整。
图6 WinCC 冗余示意图
实现WinCC 冗余需在两台机器上安装服务器版操作系统,两个服务器进行时间同步并且创建相同的用户名和密码,同时安装冗余选件(Redundancy option) 和冗余许可证等。
3 其他扩展功能
对适用于医药企业立体仓库WCS 主要功能做了简单说明,有些用户在这些功能之外提出新的需求,例如对于立体仓库设备运行情况进行统计,根据统计数据制定设备维修计划,依据企业的风控管理收集故障信息以避免潜在设备异常导致风险发生,增加设备故障报警的语音播报功能,实现WCS 的C/S 或B/S 结构远程访问。
这些功能不是企业为了应对相关部门检查而提出的需求,而是为了立体库更好地运营,
设计人员应充分了解用户的需求多样性。在实现自动化的基础上,WCS 应继续向智能化方向发展。