自动化集装箱码头TOS—ECS接口研究
作者:姜作飞 闫广利 孙佳隆
来源:《中国新技术新产品》2019年第06期
摘 要:自动化集装箱码头TOS-ECS集成缺乏成熟的接口标准,规范的接口有利于降低软件开发维护的时间和成本。该文对TOS-ECS接口技术进行研究,首先介绍自动化集装箱码头的软件系统架构,然后介绍目前TOS与ECS接口通信的主流实现技术,并对各类接口技术进行分析比较,总结接口数据内容与格式,最后介绍数据库设计原则,描述数据库建表、测试数据准备、AnyLogic仿真测试等接口设计与验证过程,为TOS和ECS开发者在设计接口时提供参考。
关键词:自动化集装箱码头;设备控制系统;接口;数据库
中图分类号:TP311.5 文献标志码:A
0 引言
自动化集装箱码头具有作业效率高、安全可靠性高、环境污染小、节约人力等优点,是目前各集装箱码头的发展趋势。自动化集装箱码头实现自动化作业,离不开码头操作系统(TOS)和设备控制系统(ECS)的密切配合,作为2个独立的异构系统,TOS与ECS的信息交换依赖于接口通信。规范的接口有利于降低各种自动化软件开发维护的时间和成本、提高软件兼容性。然而,作为传统行业,自动化码头中相关的软件技术较为封闭,行业标准也并不成熟,该文对主流接口技术进行介绍,并阐述数据库方式接口的设计原则、设计过程。
1 软件系统架构
码头自动化系统通常包括TOS(码头操作系统)、上层ECS(设备调度管理系统)、下层ECS(设备控制系统)、远程控制系统、通信交互单元、单机控制系统、自动化装卸设备,完整的系统架构图如图1所示。
其中ECS是监控和控制自动化码头设备级所有事件和过程的软件,特别是在协调不同类型自动化设备之间的交互时,ECS是码头软件环境中必不可少的一部分。ECS一般由自动化供应商或装卸设备制造商提供。TOS软件负责整个码头的逻辑控制,包括关键功能,象船舶计划、集装箱库存维护、工作指令生成和闸口操作。TOS软件通常由商业公司或码头运营商
自己提供。TOS负责根据最高效的作业顺序发布任务指令,告知ECS箱区作业任务的起点、终点。ECS根据TOS指令自动规划机械设备的运行路线并控制设备运行,指挥设备完成作业,同时反馈相关作业任务的操作状态及结果给TOS。ECS与TOS的关系和制造企业的MES(制造执行系统)与ERP(企业资源计划系统)的关系类似。
由于系统提供者商业战略、技术特点、开发人员数量等因素的不同,TOS、ECS的功能范围会有差别,象Navis的TOS包括设备调度优化功能,烟台华东电子将调度优化抽象为ATEC软件,ABB的ECS可以支持设备选择、路径选择。
2 主流TOS-ECS接口技术
2.1 TOS-ECS接口通信架构方式
目前全球市场应用最广泛的自动化集装箱码头ECS和TOS软件产品分别来自TBA和Navis,国内有较好应用案例的是振华重工和烟台华东电子有限公司。Navis的TOS产品N4基于J2EE开发,支持关联数据库或JMS异步消息方式的ECS接口,提供数据库接口与TBA的ECS产品TEAMS对接,提供JMS接口与卡尔玛的ECS产品TLS对接。振华重工从2006年开
始开发ECS配套软件,并在厦门远海码头项目中首次应用,远海项目采用消息隊列+WebService技术实现与烟台华东电子CiTOS的接口通信,ECS调用TOS的WebService服务获取任务信息,TOS调用ECS的WebService服务获取ECS返回的结果信息。烟台华东电子提取TOS和ECS的部分功能做成ATEC产品,ATEC提供了多种接口方式与ECS对接:WebService、HTTP接口、socket、消息队列。PEMA(港口设备生产协会)联合控制系统提供商、TOS提供商和港机制造商象ABB、Siemens、Navis、TBA、Kalmar等成立接口标准化小组,并于2014年完成TOS与ECS接口规范文档,文档中提出现有系统中ECS接口架构方案分为消息传递和共享数据库2种。
综上所述,ECS接口通信架构方式主要分为共享数据、远程服务调用(WebService)、消息中间件(MQ,即Message Queue)3类。
2.2 各通信架构方式比较分析
webservice实现 2.2.1 数据库共享数据方式
2个系统A、B通过连接同一个数据库,操作同一张表来实现数据交换。当系统A请求系
统B处理数据时,系统A插入一条数据,系统B查询读取系统A插入的数据进行处理,反之亦然。
优点:使用同一数据库,交互简单;方便记录状态、时间戳等。
缺点:要避免数据表无限扩大。2套系统同时操作可能发生冲突,象行锁、表锁和查询等待。
2.2.2 WebService
WebService是一种跨编程语言和跨操作系统的远程调用技术,通过本地客户端调用远程服务器上的方法,来实现软件系统之间的互联互通。
优点:跨平台、跨语言。
缺点:请求应答及同步调用时,存在堵塞问题,客户端发送请求后,要等待服务端返回信息。
2.2.3 消息队列
消息队列MQ的应用场景是交互双方“生产”和“消费”的速度或稳定性等性能不一致,作为抽象层,消息队列弥合双方的差异,多用于构建分布式互联网应用。消息队列常用的公共名词包括消息(Message)、话题(Topic)、生产者(Producer)和消费者(Consumer)。
消息队列与WebService相比,多了Broker集,生产者把指定话题的消息发布到Broker集,Broker集会对消息做持久化,消费者从Broker集订阅指定话题的消息。TOS-ECS接口会维护TOS请求队列与ECS结果队列2个队列服务,TOS请求队列的生产者在TOS,消费者在ECS,ECS结果队列生产者在ECS,消费者在TOS。
优点:1)实现系统解耦。2)以异步方式运行,提高系统响应速度。3)实现削峰,并发量大时允许消息队列积压。
缺点:1)多了一个消息队列系统,系统可用性降低。2)系统复杂性增加,象需要考虑一致性问题、重复消费问题。
通过对3种通信方式的优缺点分析,可以发现使用数据库方式实现相对简单,消息队列方式适合高并发场景,WebService方式需要在通信双方分别开发不同接口、存在同步调用阻
塞问题。自动化集装箱码头真实生产场景中TOS与ECS系统交互数据量小,采用数据库方式是最佳选择。
2.3 TOS-ECS接口数据内容与格式
TOS发往ECS的是作业指令,ECS发往TOS的是作业状态和设备状态。
(1)作业指令:主要包括新作业指令、取消或更新作业指令、翻箱命令、重试命令等。作业指令可以指定装卸设备,也可以不指定装卸设备。可以按顺序发布多条工作指令来创建作业列表,要么针对特定装卸设备,要么由装卸设备自由选择作业列表。
(2)作业状态:包括启动/结束一条具体任务、激活一条任务、接近抓箱/放箱位置、集装箱抓箱/放箱动作、OCR识别集装箱、请求取箱/放箱位置(象翻箱动作)、集装箱落位(象OCR拍摄平台)、锁头仍处于闭合状态,等待进一步动作、任务指令错误等。
(3)设备状态:装卸设备报告他们的常规状态,不管他们是否在执行作业。象定时“心跳”监控、装卸设备位置和可用性信息、请求新的作业命令。
传输的数据可以是ASCII字符或二进制数据的形式。PEMA标准提供了3种实现方案:XML,SQL,二进制消息。数据格式、通信协议也可以自定义,象ABB公司定义了AALP(ABB应用层协议),规定好消息头、消息体,通过Socket通信方式收发数据,按AALP开发的TOS软件可以与ABB的设备控制系统通信。
3 TOS-ECS数据库接口设计
3.1 数据库设计原则
自动化集装箱码头装卸作业流程主要包括装船作业、卸船作业、提箱作业、收箱作业、移箱作业。生产作业过程包括岸桥装卸、水平搬运、场桥堆码3个环节。TOS-ECS接口数据库设计要覆盖所有作业流程、作业环节必要的交换信息。TOS与ECS交互的内容需要包括堆场地图信息、作业任务、作业任务状态、装卸设备状态。堆场地图信息包括所有场箱位的集装箱信息。作业任务要指定抓箱位置、放箱位置、要操作的集装箱编号。作业任务状态保存作业执行进度。装卸设备状态包括设备控制模式、设备位置。即数据库至少要包括堆场地图表,作业任务表,设备状态表。
(1)堆场地图表:按实际堆场规格保存每一个场箱位的集装箱信息,以箱区号、贝号、排号、层号为主键,集装箱信息包括集装箱编号、类型、重量、箱门朝向。
(2)作业任务表:以任务编号为主键,当前执行状态(新建、开始、完成、错误、取消等)、集装箱编号、作业的起点位置、终点位置、起点类型、终点类型,优先级、执行本条作业任务的装卸设备编号、集装箱在拖车上的位置和箱门朝向。
(3)装卸设备状态表:以设备编号为主键,当前设备执行的作业任务编号,设备操作模式、机械状态,设备的位置。
此外数据库设计还包括以下要点:表之间的外键引用关系,各字段取值范围、命名规则、编号规则,各字段读写权限分配,数据类型,表及字段命名要与行业术语一致,各表必须包括创建时间、更新时间字段。
3.2 数据库接口设计与验证过程
结合某码头实际数据进行数据库设计及接口测试,以下是接口设计、验证的过程。
(1)数据库建模:采用PowerDesigner工具建模,完成表名、字段名、数据类型、数据长度、主键、外键引用、字段是否为空的定义,然后导出Oracle SQL文件,用SQL Developer导入Oracle数据库,完成数据库的创建。
(2)测试数据准备:测试数据依据实际项目的堆场布局、设备配置来设计,象箱区数量、贝位数、排数、层数、设备数量,根据作业流程设计不同的测试数据。不同表的测试数据分别填在Excel文件不同的Sheet中。为简化数据导入工作,用Winform实现一个导入工具。用NPOI类库操作Excel,从文件中读入各Sheet页各单元格内容。Oracle.ManagedDataAccess.dll操作Oracle数据库。Excel文件sheetname与数据库表名称一致,表头与数据库表的各字段名一致,读取各Sheet各单元格内容,按字段名及表名拼接为SQL语句,执行SQL语句导入数据库。导入前禁用外键,完成导入后再启用外键,均在代码中用SQL实现。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论