仓储控制系统(WCS)设计

先看一下已经在生产中使用的WCS界面
仓储控制系统(WCS)设计_第1张图片
仓储控制系统(WCS)设计_第2张图片
1:WCS功能介绍
WCS:即Warehouse Control System,仓库控制系统;对应的还有WMS:即Warehouse Management System,仓储管理系统;
WCS主要完成接收WMS系统产生的出入库等任务,分配给对应的执行机构,即PLC控制系统,并监控PLC执行过程和PLC系统状态,反馈任务结果给WMS系统。因为各个用户使用场景的差异,WCS具体到对应设备上时,功能也有增有减。后边以本次设备所在场景为例,描述WCS设计过程。

2:设备组成
该设备有6排货架,每个货架20列42层,总共5040个库位;
有3个巷道堆垛机,每个堆垛机可以操作左右两排货架;
堆垛机货叉上有左右两个货位,左货位只能存取左货架物料、右货位只能存取右货架物料;货叉同一时间只能操作一个货位的物料。
在6排货架的出口端有一个机械手,机械手负责把货叉上的物料放到出入口,或者从出入口放物料到货叉上。
出入口总共有两个。
设备总体用一个西门子1200的PLC控制。
仓储控制系统(WCS)设计_第3张图片
仓储控制系统(WCS)设计_第4张图片
3:业务流程
库位中存放的是物料盒,每个物料盒都有唯一编码;物料盒中的物料信息不需要管理。
用户要求的入库流程有两种:
入库流程1:
步骤1:用户扫描入库单号(入库单由MES系统生成)到仓储系统中;
步骤2:仓储系统通过单号到MES系统查询对应的需要入库的料盒号;
步骤3:用户确认执行入库;
步骤4:用户方物料盒到入库口;
步骤5:仓储系统扫码入库(扫码后料盒信息在待入库列表种,异常走异常流程),入库完毕后,反馈入库结果到MES系统
步骤6:料盒如果未入完,循环从步骤4执行;如果入完,点击确认完成。
入库流程2:
步骤1:用户方料盒到入库口;
步骤2:仓储系统扫码入库(扫码后料盒信息在待入库列表种,异常走异常流程),入库完毕后,反馈入库结果到MES系统。
用户要求出库流程:
步骤1:用户扫描出库单号(入库单由MES系统生成)到仓储系统中;
步骤2:仓储系统通过单号到MES系统查询对应的需要出库的料盒号;
步骤3:用户确认执行出库;
步骤4:仓储系统执行出库操作,反馈操作结果到MES系统
步骤5:如果所有料盒出库完成,执行步骤6,如果没有循环执行步骤4;
步骤6:用户确认出口的完成。

4:业务分析
考虑到用户操作方便和操作实时性,把出入库单据相关操作放在WCS中实现;在WMS中可查看、修改对应的单据信息。
设置一张任务表,每一个料盒的一次出、入库操作就生成一条记录,并记录执行过程中的详细信息。
例如:如果用户按入库流程1要入一个入库单,该单据中由10个物料盒子;用户扫码后,WCS在用单号MES系统查询对应的物料和信息,然后展示给用户,用户确认后生成10条入库任务;这10条入库任务单号一致;料盒入库时,更新任务表中对应料盒记录的状态。
设置一张库存表,记录当前库存。
设置库位表,记得当前库位可用状态、使用信息。

5:WCS和PLC通信协议
结合设备运行逻辑,为了提高设备运行效率,极限情况下,可用并行6个任务做出入库。

5.1 PLC状态区
WCS要给PLC分配任务,首先需要知道PLC当前状态;因此定义一个PLC状态区
PLC状态区由PLC写入,WCS读取,WCS不得写入。
DB块地址:520
字段功能定义如下
地址偏移 变量名 类型 功能描述
DBW0 Mode UINT 设备运行模式
0:初始化4:单机5:联机
DBW2 Fault UInt 0:正常,1:有故障
DBW4 Bar1 uint 入口 0:无触发,1:启动扫描
DBW6 Bar2 uint 出口 0:无触发,1:启动扫描
DBW8 Status1 uint 堆垛机1状态:1正常,2异常,0启动中
DBW10 Status2 uint 堆垛机2状态:1正常,2异常,0启动中
DBW12 Status3 uint 堆垛机3状态:1正常,2异常,0启动中
DBW14 Status4 uint 机械手状态:1正常,2异常,0启动中
DBW16 Alarm1 uint 告警详情
DBW18 Alarm2 uint 告警详情
DBW20 Alarm3 uint 告警详情

5.2 PLC任务反馈区
PLC任务反馈区由PLC写入,WCS读取,WCS不得写入。
任务反馈区的内容格式都一样,区别时DB块地址不一样。
任务1反馈区的DB块地址:500
任务2反馈区的DB块地址:521
任务3反馈区的DB块地址:530
任务4反馈区的DB块地址:540
任务5反馈区的DB块地址:560
任务6反馈区的DB块地址:570
字段功能定义如下
地址偏移 变量名 类型 功能描述
DBW0 TaskID DInt 任务号
DBW4 Status UInt 0:初始化,1:空闲,2:任务进行中,3:任务完成
DBW6 result UInt 执行结果
1完成
2请求重复发送之前命令,该请求PLC保障之前有执行中的命令
3满入
4空取
5未知错误
6系统取消
7手动强制完成
DBW8 Site UInt 托盘位置,因为是多任务,需要根据这个判断是否下发任务
10:在出入口
15:在机械手和出入口交互中
20:机械手上
25:在机械手和货叉交互中
30:在货叉上
35:在货叉和库位交互中
40:在库位中
DBW10 Fault UInt 0:正常,1:有故障
DBW12 Alarm1 uint 告警详情
DBW14 Alarm2 uint 告警详情
DBW16 Alarm3 uint 告警详情

5.3:WCS状态区
WCS状态区由WCS写入,PLC读取,PLC不得写入该区域
DB块地址:525
字段功能定义如下
地址偏移 变量名 类型 功能描述
DBW0 Mode UINT
DBW2 Fault UInt 0:正常,1:有故障
DBW4 Bar1 uint 入口 0:正常,2:扫码失败;1:扫描成功
DBW6 Bar2 uint 出口 0:正常,2:扫码识别;1:扫描成功

5.4:WCS任务区
WCS任务区由WCS写入,PLC读取,PLC不得写入该区域
该应用中最多有6个任务,因此创建6个任务区各个任务区的内容都一致,区别时各个任务区的DB块地址不一样。
任务1的DB块地址:501
任务2的DB块地址:522
任务3的DB块地址:531
任务4的DB块地址:541
任务5的DB块地址:561
任务6的DB块地址:571
字段功能定义如下
地址偏移 变量名 类型 功能描述
DBD0 TaskID DInt 任务号
DBW4 Act UInt 0:无动作,1:入库;2:出库;3:重入库;5:任务取消
DBW6 Flag1 UInt
DBW8 Flag2 UInt
DBW10 Source_Row UInt 源排数(1:1排,2:2排)(源是从哪取出)
DBW12 Source_Column UInt 源列数
DBW14 Source_Layer UInt 源层数
DBW16 Goal_Row UInt 目标排数(1:1排,2:2排)(目标是放在哪里)
DBW18 Goal_Column UInt 目标列数
DBW20 Goal_Layer UInt 目标层数

6:编程实现
开发语言选用C#,WCS前台界面用wpf
考虑到网络部署和开发成本,本次直接用西门子S7协议。

7:设备调试界面
为了节约成本,PLC调试触摸屏在WCS中专门做界面
仓储控制系统(WCS)设计_第5张图片
仓储控制系统(WCS)设计_第6张图片
仓储控制系统(WCS)设计_第7张图片

你可能感兴趣的:(需求分析)