徐建峰+边志成+宓为建
自动化集装箱码头解决方案项目(以下简称“总包项目”)是软硬件结合的系统集成项目。按照传统的项目实施方法,这类项目需要先后经历2个串行的实施阶段:第一阶段由硬件制造和控制软件开发2项并行的活动组成,第二阶段仅包含系统调试活动。本文针对总包项目的特点,将设备模拟器引入总包项目,并提出设备模拟器的有限状态机模型和软件实现方法,使总包项目第二阶段活动的部分工作前移,从而达到缩短项目工期的目的。
1 概述
(1)总包项目的主要活动和实施流程 自动化集装箱码头的日常作业和运营通常是在码头管理信息系统的指挥下,通过控制软件操控自动化设备实现的。在总包项目中,乙方需要提供自动化设备和控制软件,并保证自动化设备、控制软件和码头管理信息系统能够协同配合完成作业。总包项目的
主要活动包括硬件制造、控制软件开发和系统调试等,其中系统调试又分为单机调试、多机调试和系统联调等3个步骤。按照传统的项目实施方法,总包项目的实施由2个阶段串联而成,其中,第二阶段的系统调试活动必须在第一阶段的硬件制造和控制软件开发活动完成之后进行(见图1)。
(2)设备模拟器 设备模拟器主要用于对设备进行软件模拟。对控制软件而言,设备模拟器的接口应与真实设备的接口相同;给予同样的指令后,设备模拟器的反馈应与真实设备的反馈相似。将设备模拟器引入总包项目后,系统调试活动中的单机调试和多机调试能够提前至项目第一阶段与控制软件开发活动同时进行,从而为缩短项目第二阶段的实施时间创造条件。为开发可供调试使用的设备模拟器,需要采用合适的模型设计和软件实现方法。
(3)有限状态机 有限状态机是一种针对系统的数学模型,能够对系统在有限状态之间的转移行为以及系统在状态变化时产生的动作行为进行描述。有限状态机模型适合描述状态敏感的系统:这类系统具有有限种可能的状态,并且其状态变化由输入推动;系统的输出时间与输入时间有关,输出内容则取决于输出时的系统状态。[1]根据系统的有限状态机模型,能够推算出有限状态机模型的输入-输出对应关系,且这种对应关系与系统的输入-输出对应关系一致。由于具有以上特性,有限状态机模型可以作为针对真实系统的模拟系统,用于要求真实系统的场合,例如对真实系统的测试[2-4]以及基于真实系统的软件开发和测试[5-9]等。
2 自动化集装箱码头设备模拟器的有限
状态机模型设计
自动化集装箱码头的主要设备包括双小车岸桥(double-trolley quayside crane,DTQC)、自动化轨道式龙门起重机(automated rail-mounted gantry crane,ARMG)和自动导引小车(automated guided vehicle,AGV)等。集装箱码头各种设备的作业流程均按照“指令+反馈”的异步方式进行控制:当作业流程开始时,设备先行准备就绪;控制软件首先给出指令,然后设备开始执行指令,并在指令执行完成后发出反馈;控制软件再给出下一个指令,设备再次开始执行指令,并在指令执行完成后发出反馈;如此反复,直到完成作业流程。根据指令和反馈定义事件,并根据流程归纳状态,就可以给出设备的事件和状态设计,以此作为设备模拟器的开发依据。本文假设所有指令均成功执行,不考虑失败的反馈事件。以下分别给出适当简化后的自动化集装箱码头主要设备的事件和状态设计。
2.1 DTQC的有限状态机模型
DTQC由大车、主小车、门架小车和中转平台等组成,其中:大车负责沿岸线方向移动;主小车负责在船舶与中转平台之间搬运集装箱;门架小车负责在中转平台与AGV之间搬运集装箱;中转平台负责识别集装箱信息(如箱号、尺寸等)以及拆装旋锁。
2.1.1 DTQC有限状态机的事件
(1)大车移动指令事件 DTQC只能沿垂直方向和大梁方向搬运集装箱;因此,在DTQC装卸集装箱之前,装卸船箱位和大车应当处于岸线上的同一位置。如果两者不在同一位置,控制软件会发出大车移动指令,要求大车向装卸船箱位所在的岸线位置移动。
(2)大车反馈事件 大车到达目标位置后停止,并向控制软件发出反馈。
(3)主小车等待位指令事件 为避免主小车和门架小车在中转平台发生冲突,以及避免主小车在中转平台作业完成前进入中转平台,DTQC在中转平台以外为主小车设置了等待位。在主小车将去中转平台抓箱或放箱,但中转平台暂时不允許其进入的情况下,控制软件发出主小车等待位指令,要求主小车向等待位移动。
(4)主小车平台位指令事件 在主小车将去中转平台抓箱或放箱,且中转平台允许主小车进入的情况下,控制软件发出主小车平台位指令,要求主小车向中转平台移动。当该指令事件触发时,主小车可能刚完成上一个指令,可能正在向等待位移动,也可能正在等待位等待。
(5)主小车船舶位指令事件 当主小车将去船上抓箱或放箱时,控制软件发出主小车船舶位指令,要求主小车向船舶方向移动。
(6)主小车反馈事件 主小车到达指定位置并完成相应的抓箱或放箱任务后,向控制软件发出反馈。
(7)中转平台作业指令事件 主小车或门架小车在中转平台完成放箱任务后,控制软件发出中转平台作业指令,要求中转平台识别集装箱信息并实施旋锁拆装作业。
(8)中转平台反馈事件 中转平台作业完成后,向控制软件发出反馈。
(9)门架小车等待位指令事件 DTQC在中转平台以外为门架小车设置了等待位。门架小车在中转平台完成抓箱或放箱任务后,控制软件发出门架小车等待位指令,要求门架小车向等待位移动。
(10)门架小车平台位指令事件 在门架小车将去中转平台抓箱或放箱,且中转平台允许门架小车进入的情况下,控制软件发出门架小车平台位指令,要求门架小车向中转平台移动。endprint
(11)门架小车AGV位指令事件 在门架小车将去AGV抓箱或放箱,且AGV已经到达的情况下,控制软件发出门架小车AGV位指令,要求门架小车向AGV移动。
(12)门架小车反馈事件 门架小车到达目标位置并完成相应的抓箱或放箱任务后,向控制软件发出反馈。
2.1.2 DTQC有限状态机的状态
DTQC的大车、主小车、门架小车和中转平台具有各自的状态,整个DTQC的状态可以用上述4个对象的状态值的组合进行描述。
大车状态的状态值包括空闲、未到位、移动中和已到位。初始状态下,当DTQC没有任务时,大车状态为“空闲”。DTQC开始执行装卸任务后,当大车静止时,如果大车与装卸船箱位在岸线上的位置不同,则大车状态为“未到位”;否则,大车状态为“已到位”。当大车移动时,大车状态为“移动中”。
主小车状态的状态值包括空闲、等待位移动中、等待位到达、平台位移动中、平台位到达、船舶位移动中和船舶位到达。当主小车没有任务时,主小车状态为“空闲”。主小车等待位指令触发后,主小车状态为“等待位移动中”。主小车反馈事件触发后,若触发前主小车状态为“等待位移动中”,则主小车状态变为“等待位到达”。主小车其他状态值的含义与之类似,此处不再赘述。
门架小车状态的状态值包括空闲、等待位移动中、等待位到达、平台位移动中、平台位到达、AGV位移动中和AGV位到达。门架小车各状态值的含义与主小车相应状态值的含义类似,此处不再赘述。
中转平台状态的状态值包括空闲、主小车占用、门架小车占用和作业中。主小车平台位指令事件触发后,中转平台状态变为“主小车占用”。“门架小车占用”状态值的含义与“主小车占用”状态值的含义类似。主小车或中转小车在中转平台完成抓箱或放箱任务后,以及中转平台作业完成前,中转平台状态为“作业中”。其他情况下,中转平台状态为“空闲”。
装船作业流程中DTQC大车、主小车、门架小车和中转平台的状态转换分别如图2~5所示。
2.2 ARMG的有限状态机模型
ARMG由大车和小车组成,其中:大车负责沿箱区长边方向水平移动;小车负责沿箱区短边方向水平移动和垂直移动以及抓箱和放箱。
2.2.1 ARMG有限状态机的事件
(1)Park指令事件 在ARMG未抓箱的情况下,控制软件发出Park指令,要求大车沿箱区长边方向移动,或要求小车沿箱区短边方向移动,从而使ARMG去某个堆场的箱位抓箱或避让同轨道的另一台ARMG等。
(2)抓箱指令事件 在ARMG要抓取的集装箱位于小车吊具正下方的情况下,控制软件发出抓箱指令,要求小车下降,执行抓箱动作。需要注意的是,在ARMG到达可与AGV交互的位置后并从AGV上抓箱前,AGV应当已经带箱到达可与ARMG交互的位置。
(3)放箱指令事件 ARMG抓箱后,控制软件发出放箱指令,要求ARMG将集装箱放到目标位置。需要注意的是,在ARMG到达可与AGV交互的位置后并放箱到AGV上前,AGV应当已经空车到达可与ARMG交互的位置。
(4)反馈事件 ARMG完成相应指令后,向控制软件发出反馈。
2.2.2 ARMG有限状态机的状态
ARMG有限状态机的状态值包括空闲、Park中、Park完毕、抓箱中、抓箱完毕和放箱中。当ARMG没有任务时,其状态为“空闲”。当执行Park指令时,ARMG状态为“Park中”;当Park指令完成后,ARMG状态为“Park完毕”。ARMG其他状态值的含义与之类似,此处不再赘述。ARMG作业流程中的状态转换如图6所示。
2.3 AGV的有限状态机模型
AGV是在DTQC与ARMG之间水平运输集装箱的自动化设备,其必须沿指定路径行驶。为防止多台AGV在行驶过程中发生冲突,控制软件分别定义每条AGV路径的许用区间,规定AGV必须在到达许用区间的最远端之前停止。随着许用区间的不断刷新,AGV逐渐向其路径上的更远位置行驶,直至其到达路径终点。
2.3.1 AGV有限状态机的事件
(1)路径规划指令事件 AGV的任务确定后,控制软件指定AGV的移动目标并规划AGV从当前位置到目标位置的移动路径。需要注意的是,该事件触发后,AGV路径的许用区间长度为0。
(2)许用区间刷新指令事件 每经过一定的时间间隔,控制软件刷新AGV路径的许用区间,引导AGV向路径上的更远位置行驶。
(3)反馈事件 AGV到达路径许用区间的最远端并停止后,向控制软件发出反馈。
2.3.2 AGV有限状态机的状态
AGV有限状态机的状态值包括空闲、暂停中、移动中和已到达。当AGV没有移动目标时,其状态为“空闲”。当AGV未到达路径许用区间的末端时,其状态为“移动中”。当AGV到达路径许用区间的末端,但尚未到达路径终点时,其状态为“移动中”。当AGV到达路径终点时,其状态为“已到达”。AGV作业流程中的状态转换如图7所示。
3 基于有限状态机的自动化集装箱码头
设备模拟器的软件实现
自动化集装箱码头的设备模拟器软件按照面向对象的方法开发:多个设备模拟器实例按照并行的方式组成系统,以模拟自动化集装箱码头的所有作业设备。自动化集装箱码头的设备模拟器实例按照确定的时间间隔执行线程,以实现指令读取、状态刷新和反馈输出等功能。
3.1 设备模拟器的系统架构
如图8所示,自动化集装箱码头的每个设备模拟器实例均由设备类实例、配置类实例、流程类实例和接口类实例组成,其中:设备类实例用于区分设备类型,并为各类设备的参数和流程定义统一的名称;配置类实例用于定義每个设备的参数,如编号、尺寸和速度等,以区分同类设备中的不同个体;流程类实例用于描述设备的作业流程,即设备对各种指令事件的处理方式,以实现设备在作业流程中的状态变化规律;接口类实例用于实现设备模拟器实例与外界的通信。endprint
如图9所示,自动化集装箱码头的设备模拟器实例以并行方式组成系统,其用户界面集成了显示、配置和控制等功能,其中:显示功能用于显示各个设备模拟器实例的实时状态;配置功能用于对各个模拟器实例的参数和状态进行手动设置;控制功能用于向设备模拟器实例发送设备指令。DTQC模拟器和ARMG模拟器通过数据库(OPC)与控制软件通信;AGV模拟器则直接与控制软件通信,仅用数据库存储历史记录。
3.2 设备模拟器的线程逻辑
每个设备模拟器实例内部都有唯一的主线程。在设备模拟器实例的运行过程中,每经过一定的时间间隔都会重新触发主线程。设备模拟器实例的主线程逻辑如图10所示。主线程触发后,若设备模拟器实例没有未完成的工作流程,且没有新的指令,则直接反馈设备当前状态;若设备模拟器实例没有未完成的工作流程,但有新的指令,则新建工作流程并更新设备状态,然后反馈设备状态;若设备模拟器实例有尚未完成的工作流程,则直接更新并反馈设备状态。以上步骤完成后,若当前时间与最后一次触发主线程的时间间隔已超过触发周期,则再次触发主线程;否则,模拟器暂时等待。
4 基于有限状态机的自动化集装箱码头
设备模拟器应用案例
目前,设备模拟器已在振华重工承接的总包项目中投入应用,其中,厦门远海和青岛前湾自动化集装箱码头已投入商业运营。如表1所示:由于引入设备模拟器,厦门远海总包项目工期缩短约9个月,占项目总时间的25.0%;青岛前湾总包项目工期缩短约6.5个月,占项目总时间的28.3%。由此可见,使用设备模拟器能够节约系统调试时间,使总包项目工期明显缩短。
参考文献:
[1] CHOW T S. Testing software design modeled by finite-state machines[J]. IEEE Transactions on Software Engineering, 1978, SE-4(3):178-187.
[2] 张涌,钱乐秋,王渊峰. 基于扩展有限狀态机测试中测试输入数据自动选取的研究[J]. 计算机学报,2003,26(10):1295-1303.
[3] 周章慧,王同洋,吴俊军,等. 基于有限状态机的健壮性测试研究[J]. 计算机工程与科学,2009,31(5):93-97.
[4] ERMAKOV A D, PROKOPENKO S A, YEVTUSHENKO N. Checking software security using EFSMs[C]//IEEE.Pro-ceedings of 18th International Conference of Young Spe-cialists on Micro/Nanotechnologies and Electron Devices (EDM) 2017, Piscataway, June 29-July 3, 2017: 87-90.
[5] 唐雄民,易娜,彭永进. 一种基于有限状态机的电力电子电路控制方法的研究[J]. 电工电能新技术,2006,25(3):25-28.
[6] 谭超,牛可,仝矿伟. 基于有限状态机的采煤机变频牵引控制系统的研究[J]. 煤矿机械,2009,30(12):224-226.
[7] 包健,魏丽娜,赵建勇. 基于有限状态机的电梯控制系统故障诊断方法[J]. 计算机应用,2012,32(6):1692-1695.
[8] 张博伦,王宁,马慧敏. 有限状态机在模拟演练系统中的应用[J]. 计算机系统应用,2013,22(2):100-103.
[9] AMALFITANO D, FASOLINO A R, TRAMONTANA P, et al. MobiGUITAR: automated model-based testing of mobile apps[J]. IEEE Software, 2015, 32(5): 53-59.endprint