APP下载

基于OPC UA的自动化立体仓库监控系统设计

2021-06-28赵增辉

山西电子技术 2021年3期
关键词:立体仓库通讯客户端

赵增辉,冯 旭

(中国电子科技集团公司第二研究所,山西 太原 030024)

随着我国智能制造及物流仓储的快速发展,设备之间的互联互通、软件平台的系统集成,成为了制造业发展的一项关键问题[1]。自动化立体仓库中的WCS、WMS、监控系统和信息采集系统之间的无缝对接,以上几大系统与外部上游ERP、SAP等系统的数据和指令交互,在智能仓储物流领域有着非常重要的意义。

监控系统承载着自动化立体仓库的众多可视化功能,是用户针对设备参数进行实时观测的重要门户。基于OPC UA协议的监控系统具有更好的实时性、安全性和平台兼容性,依托于其体系架构中的TCP/IP Socket传输,较传统方式更为稳定和高效。

1 OPC UA特点

OPC UA基于OPC基金会提供的新一代技术,提供安全、可靠和独立于厂商的,实现原始数据和预处理的信息从制造层级到生产计划或ERP层级的传输。使用OPC UA技术,所有需要的信息可随时随地到达每个授权应用和每个授权人员。OPC UA是目前已经使用的OPC工业标准的补充,提供重要的一些特性,包括如平台独立性,扩展性,高可靠性和连接互联网的能力[2]。OPC UA不再依靠DCOM,而是基于面向服务的架构(SOA),它具备以下优势:

1)通过一个通用接口集成之前所有OPC的特性和信息。

2)更加开放,具有平台无关性,WINDOWS、Linux平台都能兼容。

3)扩展了对象类型,支持更复杂的数据类型,例如变量,方法和事件。

4)在协议和应用层集成了安全功能,更加安全。

5)易于配置和使用。

2 通讯架构设计

本系统的通讯架构分为四层进行搭建,自下而上分别为:数据源、OPC服务、数据感知服务及WCS服务,如图1所示。

图1 通讯架构图

◆数据源:为PLC中的、被上位系统所需读取或写入的状态点,PLC应支持OPC UA协议。

◆OPC服务:一般采用设备厂商所提供的OPC UA服务,如果个性化需求较多,也可以进行自主搭建或采用第三方OPC UA服务。OPC UA服务是旨在访问实时数据,并提供来自不同供应商的其他功能,如事件处理,日志记录等。它充当OPC客户端和本地通信的数据源之间的翻译器,具有读取和写入PLC的功能。

◆数据感知服务:既作为OPC服务的客户端,也同时作为WCS功能流程的驱动器,在监测PLC状态点信息变化的同时,调取相应的WCS服务和具体功能。在遵循OPC UA订阅机制的基础上,实现程序变量的异步更新。该服务针对上位系统关注的每个PLC状态点建立信息模型(Item),包括:变量地址、变量类型、变量值、变量句柄、变量值触发事件以及变量备注。其中,通过自定义变量值触发事件可以避免使用定时器对PLC循环访问和读取,减少资源占用,提高响应速度。

◆WCS服务:提供上位系统功能流程服务,数据库记录监测等内容,其中的功能服务可与自定义Item中的变量值触发事件相绑定。利用SQL Server的SQL Dependency机制,可实现数据库内容变化与相应功能的异步触发,大大减少客户端不断轮询访问数据库所导致的卡顿。

通过四层架构的搭建,在开发时将软件系统划分的更为清晰明了,为标准化开发提供帮助;可以使团队成员各司其职,分工于各层的代码编写中,专注开发系统架构中的每一层;降低软件系统中各结构层之间的耦合度,增加各模块的可重用性,降低开发成本和后期维护成本。

3 可视化功能实现

自动化立体仓库监控系统包括以下核心可视化功能,实现案例如图2所示。

◆设备侧视动态图:堆垛机实时位置、提升机实时位置、货叉上托盘或料箱状态。

◆设备俯视动态图:各堆垛机实时位置、各提升机实时位置、传输线上托盘或料箱状态。

◆行走机构实时参数:堆垛机当前速度、加速度、功耗、累计运行时间、电流值等。

◆升降机构实时参数:提升机当前速度、加速度、功耗、累计运行时间、电流值等。

◆挂取机构实时参数:货叉当前速度、加速度、功耗、累计运行时间、电流值等。

◆当前任务列表:显示当前任务队列情况,包括作业号、取货口、设备号、托盘或料箱号、源货位、目标货位、作业类型、生成时间、执行时间、作业状态、优先级等。

◆统计图表:设备报警频次统计、出入库次数统计、料箱使用频率统计等。

图2 监控系统案例界面

4 OPC UA服务通讯实例

下面以数据订阅和自定义信息模型为例,来说明OPC UA异步通讯方式的应用。

1)订阅包含一组由客户端分配的监控项,监控项可以生成通知,并由订阅发送给客户端。订阅以回应发布请求的方式向客户端发送通知消息。发布请求通常以接收顺序存储到Session中,当有通知需要发送时,在每次发布循环时,会从队列中取出相应的请求,并发送通知到客户端,如果没有待发送通知,请求则不会从队列中被删除。关键代码如下:

PLCNodesFactory.AddClientItems();

if (mySubscription == null){mySubscription = myClientHelperAPI.Subscribe(200);}

int itemCount = 0;

for (int i = 1; i < ClientItem.Count; i++){

itemCount++;

string monitoredItemName = itemCount.ToString();

myMonitoredItem=myClientHelperAPI.AddMonitoredItem(mySubscription,((PLCItem)ClientItem[i])ServerAddress.ToString(), monitoredItemName, 1);

myClientHelperAPI.AddMonitoredItem(new NodeId(ItemIDs[i],m_NameSpaceIndex),i, ClientApi_ValueChanged, 100, out monitoredItemServerHandle);}

myClientHelperAPI.ItemChangedNotification+=newMonitoredItemNotificationEventHandler(Notification_MonitoredItem);

2)针对OPC UA订阅机制建立的自定义信息模型,可以在已订阅的PLC变量值发生变化时,触发相应的绑定事件,进行异步动作。下面以父类为例给出关键代码:

public delegate void ChangeHandler(object sender, object v);

public class PLCItem : INotifyPropertyChanged{

public event PropertyChangedEventHandler PropertyChanged;

public Type TypeOfItem;

public string Comment;

public int ServerHandle { get; set; }

public virtual void OnPropertyChanged(string propertyName){

PropertyChangedEventHandler handler = PropertyChanged;

if (handler != null){handler(this, new PropertyChangedEventArgs(propertyName));}}

protected virtual void OnChanged(object sender, object v, object old, ChangeHandler handler){

if (!v.Equals(old) && handler != null){handler(sender, v);}}}

5 结束语

本文介绍了OPC UA的概念与特点,探讨了基于OPC UA的自动化立体仓库监控系统的通讯架构和核心功能,给出了订阅模式中软件系统与OPC UA服务通讯的实例,设计了一种具有异步反馈功能的自定义信息模型。文中阐述的设计思路已经通过了多个项目的实际验证,具有一定的借鉴意义。

猜你喜欢

立体仓库通讯客户端
你的手机安装了多少个客户端
你的手机安装了多少个客户端
《茶叶通讯》简介
《茶叶通讯》简介
地铁智能立体仓库搬迁设备技术升级优化
基于Flexsim的自动化立体仓库仿真研究
自动化立体仓库技术的应用探讨
如何看待传统媒体新闻客户端的“断舍离”?
自动化立体仓库的若干关键技术研究
新华社推出新版客户端 打造移动互联新闻旗舰