system: [SYSTEM]

user: 3. 系统的实现 3.1. 通讯应用以及参数设置 上位机(PC)与焊接机器人、AGV车辆控制、RGV工装库之间的通信由核心交换机实现。从逻辑功能上看，通信系统的上层由交换机服务器的以太网接口与上位机组成，两者之间通过TCP/IP协议通信；下层则由交换机的网络接口部分与机器人焊机台的PLC控制柜、AGV车辆控制柜、RGV工装库的PLC控制柜组成，两者之间通过TCP/IP通信标准交换数据。同时，机器人PLC、AGV、RGV工装库与上位机组成工厂内部局域网拥有各自的IP段，在192.168.0.200~255则是用于调试与测试使用的IP网段。上位机与PLC控制柜相连则通过KEPServerEX 6配置与西门子驱动程序来进行数据的采集与指令的下发。新建的一个名为Channel的通道由Siemens TCP/IP Ethernet程序来驱动，下设四组设备包含：AGV车辆控制，型号为S7-300，IP为192.168.0.10，RGV工装库，型号S7-300，IP为192.168.0.10，Robot机器人组，型号为S7-1200，IP为192.168.0.80，并且在工厂环境中，固定设备需要分配静态IP和网关，且这些参数都需要与工厂局域网适配以避免出现网络通信故障。之后，在根据这三组设备，分别进行IO点的地址管理以及逻辑梳理。 3.2. 设备数据采集格式与读写指令参数 在AGV定时管理中通信连接超时为3秒、请求超时为2秒、重试次数为2次以及请求间无延迟时间设置，通信端口号为102，S7-300的链路类型为PC，CPU槽为1。表1为AGV车辆控制管理中主要逻辑IO点，其中上料台由扫码枪进行扫描，AGV的4台车辆的是否可运行由状态信号来判断。 Table 1 AGV vehicle control IO poin 信号含义 数据类型 地址 数据方向 外(内)侧允许下任务 Bool DB111.DBX0.0 AGV→PLC 上料台扫码 Bool DB111.DBX0.1 PLC→AGV 可以取工装 bool DB111.DBX0.2 PLC→AGV 外(内)侧取完工装 bool DB111.DBX0.3 AGV→PLC 外(内)侧放完工装 bool DB111.DBX0.4 AGV→PLC 外(内)侧确认放完工装 bool DB111.DBX0.5 PLC→AGV 外(内)侧强制急停 bool DB111.DBX0.6 PLC→AGV 1000 < 任务号 < 30000 INT DB111.DBW2 任务起点 USHORT DB111.DBB4 PLC→AGV 任务终点 USHORT DB111.DBB5 确认任务号 INT DB111.DBW10 AGV→PLC 外(内)侧上料完成任务号 INT DB111.DBW14 AGV→PLC 确认外(内)侧上料完成任务号 INT DB111.DBW18 PLC→AGV 外(内)侧下料完成任务号 INT DB111.DBW22 AGV→PLC 确认外(内)侧下料完成任务号 INT DB111.DBW26 PLC→AGV 表1. AGV车辆控制IO点 表2为焊接机器人主要逻辑IO点，定时管理中通信连接超时为3秒、请求超时为2秒、重试次数为2次以及请求间无延迟时间设置，通信端口号为102，S7-1200的链路类型为PC，CPU槽为1。机器人的任务可发送则是根据当前机器人是否反馈焊接完成的信号，操作技工在调试机器以及编写机器动作是也需要反馈给上位机一个正在焊接的信号防止AGV车辆的进入以及焊接型号信息为9为数字组成，每组数字代表不同焊接方式与机器动作。 Table 2 Robot control IO poin 机器人读取(发出)信号 地址 偏移量 类型 变量 定义 DB101 0 BYTE 0 待机 DB101.DBB0 (DB101.DBB30) DB101 0 BYTE 4 取料完成(开始焊接信号) DB101 0 BYTE 5 放料完成(焊接完成信号) DB101 1 BYTE 1 校对焊接代码(原为安全门) DB101.DBB1 (DB101.DBB31) DB101 2~11 BYTE 焊接型号信息 2~11 (32~41) 表2. 机器人控制IO点 表3为RGV工装库主要逻辑IO点，定时管理中通信连接超时为3秒、请求超时为2秒、重试次数为2次以及请求间无延迟时间设置，通信端口号为102，S7-300的链路类型为PC，CPU槽为2。 Table 3 RGV flat library control IO poin 信号含义 数据类型 地址 数据方向 出入库标识(1是入库，2是出库) Int DB100.DBW0 PC→PLC 任务编号 Int DB100.DBW2 PC→PLC 库位1~12 Int DB100.DBW12 PC→PLC 直通(工装) Int DB100.DBW12 PC→PLC 取出工装到内外侧(false， true) Bool DB100.DBX14.0 PC→PLC 发送命令到位(bool)，发送之前sleep (1000) Bool DB100.DBX14.1 PC→PLC AGV入库上料台放工装完成 Bool DB100.DBX14.2 PC→PLC 出库外侧工装取工装(1取工装过程中，0取完工装) Bool DB100.DBX14.3 PC→PLC 出库内侧工装取工装(1取工装过程中，0取完工装) Bool DB100.DBX14.4 PC→PLC 扫码枪读到的工装编号 Int DB100.DBW52 PLC→PC 入库升降梯滚筒上料完成 Bool DB100.DBX62 PLC→PC 请求下发入库和直通信号 Bool DB100.DBX62.1 PLC→PC 小车是否空闲，true是空闲 bool DB100.DBX62.2 PLC→PC RGV开始执行出入库任务，还原到位信号变为false int DB100.DBW64 PLC→PC RGV完成出入库任务 int DB100.DBW74 PLC→PC 工装到达出口外侧输送机并停止(0没有，1到达) Bool DB100.DBX84 PLC→PC 工装到达出口内侧输送机并停止(0没有，1到达) Bool DB100.DBX84.1 PLC→PC 平库已接收到AGV入库上料台放工装完成信号 Bool DB100.DBX84.2 PLC→PC 出库到哪侧，0无任务1外侧2内侧 int DB100.DBW110 PLC→PC 表3. RGV平库控制IO点 3.3. 计划令管理 [ 7 ] [ 8 ] 计划令管理模块主要包括：1) 创建计划令；2) 计划令管理；3) 上料台管理；4) 焊接任务管理。计划员根据本工厂的生产负荷能力、日程安排、物料准备等因素编制日生产计划，即创建计划令。开工前做进一步的单产品计划排产，指导现场生产。焊接任务管理与上料台管理配合调度系统完成现场生产任务。本计划令管理需要计划员根据工厂实际情况，创建计划令，即生产日计划。对计划令进行排产，排产的结果是生成单产品计划。计划令主要功能包括：查询、新增、修改、删除、手动排产、自动排产。其中：手动排——选择一条计划令进行排产，每点一次排一个单产品计划，已排产数量 + 1；自动排产——可将一条计划令进行全部排产，排产结果为该计划令的全部单产品计划。自动生成单产品计划编号，编码规则：计划令号 + 批次号 + YYYYMMDD + (手动排产时为：S + 已排产数量，自动排产时为：Z + 流水号)。 新增——计划员根据工厂实际情况，创建计划令，即新增生产日计划。修改、删除——对于未排产的直接修改、删除即可；正在排产的和已经完成的计划令不可删除和修改。计划令创建完状态为未排产N，当排产后，计划令状态为正在排产S，当计划令完成后变为已完成F。当计划数量 = 实际数量时，系统记录计划令实际完成时间。实际开始时间 = 第一次排产时的时间。计划令包含信息主要有：计划令号，批次号，单产品计划号，零件种类，车型，车型尺寸，计划数量，已排产数量，已生产数量，计划令状态，箱板材料(边 × 底)，举升型式，开门型式，部装描述，焊接程序，实际开始时间，实际完成时间，创建日期，创建人，备注。计划令管理的页面布局包括：查询、新增、修改、删除、手动排产、自动排产。页面查询：计划令号，零件种类，车型，创建时间，排产时间，状态(未执行，正在排产，已完成，全部)首次进入页面，缺省给出的只有正在排产的计划令。 3.4. 智能调度算法设计与应用 [ 9 ] 本项目组采用自行研发的算法进行调度，算法结合了高响应算法和先来先服务以及优先级调度算法的优点，具有多输入定尺度高响应功能，最大程度发挥车间设备的生产运行效率，具体算法流程图，如图3所示。 1) 本算法不考虑不同类别物料数量的协调，具体数量协调由“计划令编制”考虑。2) 每当有新的工位发生空闲时、每天开始工作时或者重启系统后，由调度系统调用本算法。3) 每天开始工作时或者重启系统后，需要根据系统前一天或者重启系统之前存储的各工位情况进行初始化。4) 输出序列为按照送料的先后顺序而排定的各空闲工位。5) 如果共用一组机器人的两个工位都是空闲，则这类空闲工位在输出序列的第一梯队；如果共用一组机器人的两个工位中有一个空闲，则这类空闲工位在输出序列的第二梯队。调度过程中，判断是否进行过初始化。 若否，进行初始化，输入所有目前的工位状态，外侧焊接台{1a， 2a， 3a， 4a， 5a， 6a}为一组，内侧焊接台{1b， 2b， 3b， 4b， 5b， 6b}为一组。按照6a、6b、5a、5b……的顺序查找空闲工位，第一个空闲工位所在组为第一组，另一组为第二组。输出序列为：第一组第一个空闲工位A，第二组不与A共用机器人的第一个与空闲工位B，第一组剩下的不与B共用机器人的第一个空闲空位C，第二组剩下的不与C共用机器人的第一个空闲工位D (如果某一组空闲工位排完而另一组还有多个空闲工位，则另一组剩下所有空闲工位依次排到序列后面)……剩下的空闲工位(前面没排的共用机器人的另一个空闲位)按照查找顺序依次排到序列最后。 若是，如果与工位A共用机器人的工位B也是空闲的，则工位B插入到现有序列的第一梯队的末尾。工位A插入第二梯队中与A不是同一组的连续几个工位的第二个，若没有这样的连续工位则插入现有队列第二梯队末尾；如果与工位A共用机器人的工位B不是空闲的，则将工位A插入到现有序列第二梯队中与A不是同一组的连续几个工位的第二个，若没有这样的连续工位则插入现有队列第二梯队末尾。 图3. 算法流程图