Commit 2cb2f677 LN

托盘横移修改,若30秒未等到托盘信号,结束处理

1 个父辈 fd7bf740
...@@ -36,48 +36,15 @@ ...@@ -36,48 +36,15 @@
上料机构,入料横移到放料端时,再检测料盘宽度 上料机构,入料横移到放料端时,再检测料盘宽度
20201216
前阻挡放行10秒后,若还未收到托盘检测信号,结束托盘处理。
进仓和T3-C1料盘检测增加验证,若未检测到信号结束处理。
/****************************************原有更改**********************************************/ /****************************************原有更改**********************************************/
流水线配置:AssemblyLine.exe.config
<!--AGV调度服务器地址-->
<add key="AgvServerIp" value="10.85.199.20" />
双层线配置:DoubleLineClient.exe.config
<!--Server address-->
<add key="httpAddr" value="http://10.85.199.25/myproject/rest/api/qisda/device/"/>
VMI配置:VMILineClient.exe.config
<!--Server address-->
<add key="http.server" value="http://10.85.199.25/myproject/" />
包装料仓(三台)配置:ACPackingStore.exe.config
<!--Server address-->
<add key="http.server" value="http://10.85.199.25/myproject/" />
<!--AGV调度服务器地址-->
<add key="AgvServerIp" value="10.85.199.20" />
20200429: 20200429:
入料口定位工位检测料架后延迟3秒 入料口定位工位检测料架后延迟3秒
...@@ -214,351 +181,3 @@ http发送去掉ping。 ...@@ -214,351 +181,3 @@ http发送去掉ping。
在阳光电源流水线的基础上新建佳世达流水线料项目
流水线SubType:1000
移栽出入仓模块:1-18
入料模块:101-104
出料模块:201-204
出料流水线模块:301,302;
轴P点定义:
移栽出入库升降轴:P1:待机位置。P2:流水线下降端,P3:Box门口下降端
出料模块 升降轴:P1:待机位置。P2:流水线下降端,P3:出料皮带线下降端
入料模块 提升轴:P1:待机位置。P2:下降位置,P3:缓慢上升目标位置
入料模块:
提升伺服向下回原点,料架进入工位前,提升伺服需要上升到P1待机位,
料架进入工位后,提升伺服下降到P2,然后定位气缸上升,定位装置前进。
agv流程:
D1(上料模块入口)
1.AGV发送Actions.Usable
2.D1 返回true或false
3.小车到达,AGV发送Actions.Arrive
4.D1调用 SendRFID
5.DI 调用 MayEnter 12
5.料架进入入口后,D1调用 FinishEnter 13
D2(上料模块出口)
1.D2调用ReadyEmpty
2.小车到达,AGV发送Actions.Arrive
3.D2调用MayOut
4.料架进入小车后,AGV发送Actions.FinishOut
横移不需要定位
放料需要定位和顶升。
上料工位检测信号要等待1秒钟以上
上料模块回原点之前链条先转
20191216
处理皮带线1和2的入口检测信号改为出口定位信号
出库皮带线处理
入口是否有料需要记录
皮带线转动五次后,料盘将会离开,则不需要转动了
最后一盘料的位置
=0,>5=0
需要放料:皮带线出口处必须无料,
转到到入口定位到位
放下料盘=1
转动到出库定位到位(转动一点)
判断出口处是否有料(转一工位=2),有料,等待皮带线3入口无料,且停止时转动到出口定位到位
无料,直接转动一个工位
判断出口处是否有料(转一工位=3),有料,等待皮带线3入口无料,且停止时转动到出口定位到位
无料,结束
入料模块先伺服动作,在气缸下降
入料一相机:GigE:MV-CE200-10GC (00D77519052)
入料二相机: GigE:MV-CE200-10GC (00D76546878)
入料三相机:GigE:MV-CE200-10GC (00D77519112)
皮带线1相机:GigE:MV-CE200-10GC (00D76546944)
皮带线2相机:GigE:MV-CE200-10GC (00D76546876)
5 出库时根据StatusBean返回data中的参数决定料盘流转到哪里
urgentReel: true 表示紧急料,需要出到料串上
cutReel: true 表示分盘料,需要出到料串上
smallReel: true 小料(7x8),放置到小料架上
rfid: 分配的料架RFID
rfidLoc: 料架的架位,值为-1时,可以自由分配皮带线, 小料时,架位为1-46优先走1/2号皮带线,47-92优先走3/4号皮带线, 70,71,72时只能分配到3/4号皮带线;大料时,架位1-6优先走1/2号皮带线, 7-12优先走3/4号皮带线
// 仓位命名: 4D01020304
//第1和第2位表示楼层(4D)
//第3和第4位表示料仓(01) 01 - 18为流水线料仓, 19 - 24为包装料仓
//第5和第6位表示列(02)
//第7和第8位表示行(03)
//第9和第10位表示隔板位置(04)
//例如: 4D12010124 表示4楼12号料仓第1列第1行架子上的第24个隔板位置
//4D19050208 表示4楼19号料仓(包装料仓)第5列第2行架子上的第8个隔板位置
20200213 需要修改:上料机构的RFID改为不扫描模式
启动流水线后,再点击调试模式,阻挡没有下降。
20200217
Mayleave、MayEnter是包装料仓的,开了门后发,环形线和VMI是不用的。状态不需要重复设置。
上料机构最后一盘料需要补充5mm.
20200218
修改内容
1.横移顶升上升后,需要等待横移横移3托盘检测或横移1托盘检测无信号,再开始转动横移皮带线。
2.减少阻挡2下降等待时间
3.阻挡2下降时,需要判断下一个设备的阻挡1无信号,进仓移栽与出料模块增加NSC信号,当此信号=low时阻挡2才能下降。
Config_Line.csv文件增加配置:
DI,1,01NSC-进仓02阻挡1检测,NextStopCheck,8,PRO_AOI_IP_19,0,01NSC-进仓02阻挡1检测,X269,X269
DI,2,02NSC-进仓03阻挡1检测,NextStopCheck,0,PRO_AOI_IP_21,0,02NSC-进仓02阻挡1检测,X291,X291
DI,3,03NSC-进仓04阻挡1检测,NextStopCheck,8,PRO_AOI_IP_21,0,03NSC-进仓04阻挡1检测,X299,X299
DI,4,04NSC-进仓05阻挡1检测,NextStopCheck,0,PRO_AOI_IP_23,0,04NSC-进仓05阻挡1检测,X321,X321
DI,5,05NSC-进仓06阻挡1检测,NextStopCheck,8,PRO_AOI_IP_23,0,05NSC-进仓06阻挡1检测,X329,X329
DI,6,06NSC-FL1阻挡检测,NextStopCheck,9,PRO_AOI_IP_14,0,进仓06NSC-FL1阻挡检测,X170,X170
DI,102,SL2NSC-进仓07阻挡1检测,NextStopCheck,0,PRO_AOI_IP_25,0,SL2NSC-进仓07阻挡1检测,X351,X351
DI,7,07NSC-进仓08阻挡1检测,NextStopCheck,8,PRO_AOI_IP_25,0,进仓07NSC-进仓08阻挡1检测,X359,X359
DI,8,08NSC-进仓09阻挡1检测,NextStopCheck,0,PRO_AOI_IP_27,0,进仓08NSC-进仓09阻挡1检测,X381,X381
DI,9,09NSC-进仓10阻挡1检测,NextStopCheck,8,PRO_AOI_IP_27,0,进仓09NSC-进仓10阻挡1检测,X389,X389
DI,10,10NSC-环形线横移2阻挡检测,NextStopCheck,2,PRO_AOI_IP_28,0,进仓10NSC-环形线横移2阻挡检测,X403,X403
DI,201,出料1NSC-进仓11阻挡1检测,NextStopCheck,0,PRO_AOI_IP_29,0,出料1NSC-进仓11阻挡1检测,X411,X411
DI,11,11NSC-进仓12阻挡1检测,NextStopCheck,10,PRO_AOI_IP_29,0,11NSC-进仓12阻挡1检测,X421,X421
DI,12,12NSC-出料2阻挡1检测,NextStopCheck,4,PRO_AOI_IP_32,0,12NSC-出料2阻挡1检测,X475,X475
DI,202,出料2NSC-进仓13阻挡1检测,NextStopCheck,0,PRO_AOI_IP_31,0,出料2NSC-进仓13阻挡1检测,X451,X451
DI,13,13NSC-进仓14阻挡1检测,NextStopCheck,10,PRO_AOI_IP_31,0,13NSC-进仓14阻挡1检测,X461,X461
DI,14,14NSC-进仓15阻挡1检测,NextStopCheck,0,PRO_AOI_IP_33,0,14NSC-进仓15阻挡1检测,X491,X491
DI,15,15NSC-进仓16阻挡1检测,NextStopCheck,10,PRO_AOI_IP_33,0,15NSC-进仓16阻挡1检测,X501,X501
DI,16,16NSC-出料3阻挡1检测,NextStopCheck,4,PRO_AOI_IP_34,0,16NSC-出料3阻挡1检测,X515,X515
DI,203,出料3NSC-进仓17阻挡1检测,NextStopCheck,0,PRO_AOI_IP_35,0,出料3NSC-进仓17阻挡1检测,X531,X531
DI,17,17NSC-进仓18阻挡1检测,NextStopCheck,10,PRO_AOI_IP_35,0,17NSC-进仓18阻挡1检测,X541,X541
DI,18,18NSC-出料4阻挡1检测,NextStopCheck,4,PRO_AOI_IP_36,0,18NSC-出料4阻挡1检测,X555,X555
20200220
agvclien增加cancelState的参数设置.
去掉功能:阻挡2下降的时候需要验证下一个阻挡1检测无信号
20200221
agv客户端启动时需要设置状态为none
20200223
1.急停信号增加500ms延迟
2.皮带线456信号修改。
20200224
增加agv的cancelState的修改功能。
扫码入库时,发送给服务器的cid顺序修改。
料串进入紧急出料模块后,停在两个信号中间的问题。
横移机构优化,上一个托盘准备离开时,下一个托盘就可以进入。
20200227
AIO的dll更新,增加重连功能。
托盘横移过程中,提前下降第一个横移顶升。
上料模块,只有料盘到达流水线上方后才拦截托盘。
20200228修改,横移机构可以同时存在两个托盘
20200229
1.大料盘出库时,在料仓门口等待,等到拦截到托盘上后,再去流水线上方。
2.气缸动作代码调整.
Config_MoveEquip_03.csv
Config_MoveEquip_04.csv
Config_MoveEquip_05.csv
Config_MoveEquip_06.csv
Config_MoveEquip_07.csv
Config_MoveEquip_10.csv
以上配置文件增加一行配置:
PRO,0,是否存放的大料盘,IsBigTray,1,,,,,
20200301
1.升降轴增加高度尺寸详细的P2配置,
需要修改配置文件,
Config_MoveEquip_03.csv
Config_MoveEquip_04.csv
Config_MoveEquip_05.csv
Config_MoveEquip_06.csv
Config_MoveEquip_07.csv
Config_MoveEquip_10.csv
Config_FeedingEquip_1.csv
Config_FeedingEquip_2.csv
Config_FeedingEquip_3.csv
Config_FeedingEquip_4.csv
Config_ProvidingEquip_1.csv
Config_ProvidingEquip_2.csv
Config_ProvidingEquip_3.csv
Config_ProvidingEquip_4.csv
以上配置文件增加一行配置:
PRO,0,移栽上下轴流水线取放料详细位置P2,UpDownP2DetialList,0X0=8000;,,,,,
2.接驳台皮带线改为常转
3.扫码处增加日志打印
4.入料三托盘检测放行时间调整。
5.cid顺序修改
20200302
上料模块,入料的时候如果链条油两个料架,阻挡下降时间过久,会两个一起过去。
20200303
托盘检测入口加锁处理。
皮带线转动间隔时间减半。
待解决:
托盘放两个问题
修改:料架进入入料装置时中途链条停止转动的现象。
GetDIValue 方法循环查找三次防止报错引起急停。
增加 Addr_arriveRobotLocation = "/rest/api/qisda/device/arriveRobotLocation"; 接口,待料盘到达接驳台后通知服务器。
20200304
1.阻挡1下降改为最长下降1200ms,自动回写。
2.IO超时异常处理顺序修改。
3.上料模块出料架时,未检测到出口料架信号后,需要继续转动8秒钟。
4.上料模块复位时,需要先夹爪放松
更新DLL
IO:连接速度加快。
client.dll:删除不需要的日志。
皮带线扫码NG料功能修改:
增加NG气缸和倒转IO,皮带线配置文件需要修改。
皮带线扫码NG修改,皮带线123NG时转动到接驳台并倒转。
皮带线456扫码提前一个工位,NG时转动到下一个工位并NG气缸推出。
20200305:皮带线逻辑修改:
皮带线456需要提前扫码,扫码后缓存,送料逻辑修改。
20200306
放盘逻辑修改:阻挡1检测持续500ms,阻挡2检测持续灭500ms才可以下降阻挡1。
料架rfid读取需要增加重连。
AIO.dll报错更新。
去掉部分阻挡下降的日志。
需要修改:
上料模块,取料后达到流水线,可以先走伺服位置,然后再等托盘。
上料模块,等到托盘放料后,放松气缸到位,升降伺服,升降气缸和定位下降可以一起动作。放托盘离开需要等升降气缸到位。
问题:入料1 9:36,料架送走以后又发needLeave B20,B26
托盘号增加一致性判断,不一致时打印日志并显示文字。
20200307
灯状态修改:启动流水线绿灯常亮,有出入库是绿灯闪烁
复位过程中黄灯闪烁,信号超时报警黄灯闪烁
急停或无气压报警 红灯闪烁,蜂鸣器亮
上料模块夹走料盘后,需要判断信号是否消失
20200308
增加托盘顺序检测功能NeedCheckTray的开关选项。
上料机构优化。
托盘优化:阻挡下降后,可能等不到check1灭。
20200309
流水线启动时先转动链条5秒,停止时最后停止流水线,防止托盘停留在rfid读卡器上方。
移栽模块流程优化。
上料模块出料架口收到ready信号后,先把状态设置为None。
IO_Value增加None的定义,防止误操作
20200311
扫码获取图片方式修改。
料盘到达接驳台后,给服务器发送条码信息,arriveRobotLocation增加barcode参数
20200312
皮带线判断修改
皮带线3扫码的时候不能开始送料。
短皮带线逻辑修改:对应气缸加长修改。
扫码修改:去掉不需要的缓存。
阻挡1下降条件修改:等待1离开或者2到达都可以继续。
上料1模块,等待500ms再下降顶升气缸
20200313
进仓模块:高度大于30的盘,出库时托盘先不顶升,待料盘到达托盘上方后,顶升再上升。
出库皮带线分配规则:
服务器出库参数:
(参数信息可以在日志中看到,或者点击主界面的【托盘信息】按钮看到)
urgentReel: =true 表示紧急料,需要出到料串上,=false出到流水线
cutReel: =true 表示分盘料,需要出到料串上,=false出到流水线
smallReel: =true表示 小料(7x8),放置到小料架上,=false表示大料
rfid: 分配的料架RFID
rfidLoc:料架位置
当为小料时(smallReel=true),
rfidLoc为 70,71,72,必须走 3 / 4号皮带线;
rfidLoc为 1 - 46, 优先走1 / 2号皮带线
rfidLoc为 47 - 92, 优先走3 / 4号皮带线,
当为大料时(smallReel=false),
rfidLoc为 12, 必须走 1号2后皮带线
rfidLoc为 1 - 6, 优先走1 / 2号皮带线,
rfidLoc为 7 - 11,优先走3 / 4号皮带线
出料机构空闲条件:没有处理料盘,或者上一个料盘已经放到流水线上(步骤已到达夹爪放松)
料盘出库超时条件:当前时间-料盘放入托盘的时间>3分钟
当出料机构检测到出料托盘后,
如果当前是出库必须走的皮带线,拦截托盘
如果当前是优先皮带线,且空闲中,拦截托盘
如果当前不是优先皮带线,但是优先皮带线全部不可用(未启动,急停,无气压信号)中,拦截托盘
如果当前不是优先皮带线,但是料盘出库超时,拦截托盘
如果此出库信息无优先线,且当前空闲中,拦截托盘
\ No newline at end of file \ No newline at end of file
...@@ -212,11 +212,13 @@ namespace OnlineStore.DeviceLibrary ...@@ -212,11 +212,13 @@ namespace OnlineStore.DeviceLibrary
if (Config.DOList.ContainsKey(IO_Type.HY_FrontStopDown)) if (Config.DOList.ContainsKey(IO_Type.HY_FrontStopDown))
{ {
IOMove(IO_Type.HY_FrontStopDown, IO_VALUE.LOW); IOMove(IO_Type.HY_FrontStopDown, IO_VALUE.LOW);
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_FrontStopDown, IO_VALUE.LOW)); //MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_FrontStopDown, IO_VALUE.LOW));
} }
IOMove(IO_Type.HY_StopDown, IO_VALUE.LOW); IOMove(IO_Type.HY_StopDown, IO_VALUE.LOW);
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_TrayCheck, IO_VALUE.HIGH));
IOMove(IO_Type.HY_OL_StopDown, IO_VALUE.LOW); IOMove(IO_Type.HY_OL_StopDown, IO_VALUE.LOW);
MoveInfo.OneWaitCanEndStep = true;
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_TrayCheck, IO_VALUE.HIGH));
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(30000));
} }
} }
else if (preTrayIsC1Line && Config.IsOutLineOut && IOValue(IO_Type.HY_OL_Tray_Check).Equals(IO_VALUE.HIGH)) else if (preTrayIsC1Line && Config.IsOutLineOut && IOValue(IO_Type.HY_OL_Tray_Check).Equals(IO_VALUE.HIGH))
...@@ -242,7 +244,8 @@ namespace OnlineStore.DeviceLibrary ...@@ -242,7 +244,8 @@ namespace OnlineStore.DeviceLibrary
MoveInfo.OneWaitCanEndStep = true; MoveInfo.OneWaitCanEndStep = true;
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_FrontStopCheck, IO_VALUE.LOW)); MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_FrontStopCheck, IO_VALUE.LOW));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_TrayCheck, IO_VALUE.HIGH)); MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_TrayCheck, IO_VALUE.HIGH));
CylinderMove(MoveInfo, IO_Type.HY_TopCylinder_Up, IO_Type.HY_TopCylinder_Down); CylinderMove(null, IO_Type.HY_TopCylinder_Up, IO_Type.HY_TopCylinder_Down);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(30000));
IOMove(IO_Type.HY_OL_StopDown, IO_VALUE.LOW); IOMove(IO_Type.HY_OL_StopDown, IO_VALUE.LOW);
} }
} }
...@@ -304,16 +307,36 @@ namespace OnlineStore.DeviceLibrary ...@@ -304,16 +307,36 @@ namespace OnlineStore.DeviceLibrary
if (MoveInfo.IsStep(LineMoveStep.HY02_FrontStopDown)) if (MoveInfo.IsStep(LineMoveStep.HY02_FrontStopDown))
{ {
MoveInfo.NextMoveStep(LineMoveStep.HY03_FrontStopUp); if (IOValue(IO_Type.HY_FrontStopCheck).Equals(IO_VALUE.LOW) || IOValue(IO_Type.HY_TrayCheck).Equals(IO_VALUE.HIGH))
CheckLog("托盘阻挡" + MoveInfo.SLog + " 托盘检测到信号,前阻挡上升"); {
CheckAndMove(IO_Type.HY_FrontStopDown, IO_VALUE.LOW); MoveInfo.NextMoveStep(LineMoveStep.HY03_FrontStopUp);
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_TrayCheck, IO_VALUE.HIGH)); CheckLog("托盘阻挡" + MoveInfo.SLog + " 托盘检测到信号,前阻挡上升");
CheckAndMove(IO_Type.HY_FrontStopDown, IO_VALUE.LOW);
MoveInfo.OneWaitCanEndStep = true;
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_TrayCheck, IO_VALUE.HIGH));
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(30000));
}
else
{
//未检测到信号或阻挡下降失败,结束处理
LogInfo(MoveInfo.SLog + "未等到信号 HY_FrontStopCheck=LOW 或 HY_TrayCheck=LOW 结束处理 ");
MoveInfo.EndMove();
}
} }
else if (MoveInfo.IsStep(LineMoveStep.HY03_FrontStopUp)) else if (MoveInfo.IsStep(LineMoveStep.HY03_FrontStopUp))
{ {
MoveInfo.NextMoveStep(LineMoveStep.HY04_WaitTime); if (IOValue(IO_Type.HY_TrayCheck).Equals(IO_VALUE.HIGH))
CheckLog("托盘阻挡" + MoveInfo.SLog + " 再次等待托盘信号"); {
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_TrayCheck, IO_VALUE.HIGH)); MoveInfo.NextMoveStep(LineMoveStep.HY04_WaitTime);
CheckLog("托盘阻挡" + MoveInfo.SLog + " 再次等待托盘信号");
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_TrayCheck, IO_VALUE.HIGH));
}
else
{
//未检测到信号或阻挡下降失败,结束处理
LogInfo(MoveInfo.SLog + "未等到信号 HY_TrayCheck=LOW 结束处理 ");
MoveInfo.EndMove();
}
} }
else if (MoveInfo.IsStep(LineMoveStep.HY04_WaitTime)) else if (MoveInfo.IsStep(LineMoveStep.HY04_WaitTime))
{ {
...@@ -787,6 +810,12 @@ namespace OnlineStore.DeviceLibrary ...@@ -787,6 +810,12 @@ namespace OnlineStore.DeviceLibrary
} }
else else
{ {
//如果横移20和横移21都有托盘,需要横移
if (IOManager.IOValue(IO_Type.HY_TrayCheck, 220).Equals(IO_VALUE.HIGH) && IOManager.IOValue(IO_Type.HY_TrayCheck, 221).Equals(IO_VALUE.HIGH))
{
return true;
}
FeedingEquip feed5 = LineManager.Line.FeedingEquipMap[102]; FeedingEquip feed5 = LineManager.Line.FeedingEquipMap[102];
if (!feed5.MoveInfo.MoveType.Equals(LineMoveType.InStore)) if (!feed5.MoveInfo.MoveType.Equals(LineMoveType.InStore))
{ {
......
...@@ -207,8 +207,9 @@ namespace OnlineStore.DeviceLibrary ...@@ -207,8 +207,9 @@ namespace OnlineStore.DeviceLibrary
LogInfo("检测托盘," + MoveInfo.SLog + " ,阻挡上升"); LogInfo("检测托盘," + MoveInfo.SLog + " ,阻挡上升");
UpdateTrayNum(); UpdateTrayNum();
IOMove(IO_Type.HY_FrontStopDown, IO_VALUE.LOW); IOMove(IO_Type.HY_FrontStopDown, IO_VALUE.LOW);
//MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_FrontStopDown, IO_VALUE.LOW)); MoveInfo.OneWaitCanEndStep = true;
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_TrayCheck, IO_VALUE.HIGH)); MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_TrayCheck, IO_VALUE.HIGH));
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(30000));
} }
else else
{ {
...@@ -238,8 +239,9 @@ namespace OnlineStore.DeviceLibrary ...@@ -238,8 +239,9 @@ namespace OnlineStore.DeviceLibrary
ClearTrayRFID(); ClearTrayRFID();
IOMove(IO_Type.HY_FrontStopDown, IO_VALUE.HIGH, 1200); IOMove(IO_Type.HY_FrontStopDown, IO_VALUE.HIGH, 1200);
MoveInfo.OneWaitCanEndStep = true; MoveInfo.OneWaitCanEndStep = true;
//MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_FrontStopDown, IO_VALUE.LOW)); MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_FrontStopCheck, IO_VALUE.LOW));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_TrayCheck, IO_VALUE.HIGH)); MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_TrayCheck, IO_VALUE.HIGH));
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(30000));
} }
} }
else else
...@@ -278,263 +280,283 @@ namespace OnlineStore.DeviceLibrary ...@@ -278,263 +280,283 @@ namespace OnlineStore.DeviceLibrary
if (MoveInfo.IsStep(LineMoveStep.HY02_FrontStopDown)) if (MoveInfo.IsStep(LineMoveStep.HY02_FrontStopDown))
{ {
MoveInfo.NextMoveStep(LineMoveStep.HY03_FrontStopUp); if (IOValue(IO_Type.HY_FrontStopCheck).Equals(IO_VALUE.LOW)|| IOValue(IO_Type.HY_TrayCheck).Equals(IO_VALUE.HIGH))
CheckLog("托盘阻挡" + MoveInfo.SLog + " 托盘检测到信号,前阻挡上升");
CheckAndMove(IO_Type.HY_FrontStopDown, IO_VALUE.LOW);
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_TrayCheck, IO_VALUE.HIGH));
}
else if (MoveInfo.IsStep(LineMoveStep.HY03_FrontStopUp))
{
MoveInfo.NextMoveStep(LineMoveStep.HY04_WaitTime);
CheckLog("托盘阻挡" + MoveInfo.SLog + " 再次等待托盘信号");
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_TrayCheck, IO_VALUE.HIGH));
}
else if (MoveInfo.IsStep(LineMoveStep.HY04_WaitTime))
{
//更新托盘号
UpdateTrayNum();
//判断托盘是否需要横移,或进出料线
MoveInfo.NextMoveStep(LineMoveStep.HY05_TrayCheck);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(3000));
if (TrayNeedSL(currTrayNum))
{ {
MoveInfo.NextMoveStep(LineMoveStep.HY06_SL_TopUp); MoveInfo.NextMoveStep(LineMoveStep.HY03_FrontStopUp);
CheckLog("托盘阻挡" + MoveInfo.SLog + " 需要拦截托盘,顶升上升"); CheckLog("托盘阻挡" + MoveInfo.SLog + " 托盘检测到信号,前阻挡上升");
CylinderMove(MoveInfo, IO_Type.HY_TopCylinder_Down, IO_Type.HY_TopCylinder_Up); CheckAndMove(IO_Type.HY_FrontStopDown, IO_VALUE.LOW);
MoveInfo.OneWaitCanEndStep = true;
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_TrayCheck, IO_VALUE.HIGH));
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(30000));
} }
else else
{ {
HY11_TopUpToHY(); //未检测到信号或阻挡下降失败,结束处理
LogInfo(MoveInfo.SLog + "未等到信号 HY_FrontStopCheck=HIGH 或 HY_TrayCheck=LOW 结束处理 ");
MoveInfo.EndMove();
}
}
else if (MoveInfo.IsStep(LineMoveStep.HY03_FrontStopUp))
{
if (IOValue(IO_Type.HY_TrayCheck).Equals(IO_VALUE.HIGH))
{
MoveInfo.NextMoveStep(LineMoveStep.HY04_WaitTime);
CheckLog("托盘阻挡" + MoveInfo.SLog + " 再次等待托盘信号");
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_TrayCheck, IO_VALUE.HIGH));
}
else
{
//未检测到信号或阻挡下降失败,结束处理
LogInfo(MoveInfo.SLog + "未等到信号 HY_TrayCheck=LOW 结束处理 ");
MoveInfo.EndMove();
}
} }
else if (MoveInfo.IsStep(LineMoveStep.HY04_WaitTime))
{
//更新托盘号
UpdateTrayNum();
} //判断托盘是否需要横移,或进出料线
else if (MoveInfo.IsStep(LineMoveStep.HY06_SL_TopUp)) MoveInfo.NextMoveStep(LineMoveStep.HY05_TrayCheck);
{ MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(3000));
MoveInfo.NextMoveStep(LineMoveStep.HY07_SL_LocationUp); if (TrayNeedSL(currTrayNum))
CheckLog("托盘阻挡" + MoveInfo.SLog + " 需要拦截托盘,定位上升"); {
LocationCylinderUp(MoveInfo); MoveInfo.NextMoveStep(LineMoveStep.HY06_SL_TopUp);
} CheckLog("托盘阻挡" + MoveInfo.SLog + " 需要拦截托盘,顶升上升");
else if (MoveInfo.IsStep(LineMoveStep.HY07_SL_LocationUp)) CylinderMove(MoveInfo, IO_Type.HY_TopCylinder_Down, IO_Type.HY_TopCylinder_Up);
{ }
if (TrayNeedSL(currTrayNum)) else
{
HY11_TopUpToHY();
}
}
else if (MoveInfo.IsStep(LineMoveStep.HY06_SL_TopUp))
{
MoveInfo.NextMoveStep(LineMoveStep.HY07_SL_LocationUp);
CheckLog("托盘阻挡" + MoveInfo.SLog + " 需要拦截托盘,定位上升");
LocationCylinderUp(MoveInfo);
}
else if (MoveInfo.IsStep(LineMoveStep.HY07_SL_LocationUp))
{ {
FeedingEquip feed = LineManager.Line.FeedingEquipMap[Config.WorkDeviceId]; if (TrayNeedSL(currTrayNum))
if (feed.Config.IsCanOut.Equals(1))
{ {
//紧急出料 FeedingEquip feed = LineManager.Line.FeedingEquipMap[Config.WorkDeviceId];
if (feed.StartTrayOut(MoveInfo.MoveParam)) if (feed.Config.IsCanOut.Equals(1))
{ {
MoveInfo.NextMoveStep(LineMoveStep.HY08_SL_WaitProcessReel); //紧急出料
CheckLog("托盘阻挡" + MoveInfo.SLog + " " + feed.Name + "始抓料,等待料盘放入或料盘离开 "); if (feed.StartTrayOut(MoveInfo.MoveParam))
} {
else if (MoveInfo.IsTimeOut(30)) MoveInfo.NextMoveStep(LineMoveStep.HY08_SL_WaitProcessReel);
{ CheckLog("托盘阻挡" + MoveInfo.SLog + " " + feed.Name + "始抓料,等待料盘放入或料盘离开 ");
MoveTimeOut(MoveInfo, "等待" + feed.Name + "开始出库超时"); }
//如果当前无料串,或者料串已离开,直接放行 托盘 else if (MoveInfo.IsTimeOut(30))
TrayCanLeave(); {
MoveTimeOut(MoveInfo, "等待" + feed.Name + "开始出库超时");
//如果当前无料串,或者料串已离开,直接放行 托盘
TrayCanLeave();
}
else if (MoveInfo.IsTimeOut(20))
{
MoveTimeOut(MoveInfo, "等待" + feed.Name + "开始出库超时");
}
} }
else if (MoveInfo.IsTimeOut(20)) else
{ {
MoveTimeOut(MoveInfo, "等待" + feed.Name + "开始出库超时"); //如果是出库,且盘高大于30,暂不顶升
MoveInfo.NextMoveStep(LineMoveStep.HY08_SL_WaitProcessReel);
CheckLog("托盘阻挡" + MoveInfo.SLog + " 等待料盘放入或料盘离开 ");
} }
} }
else else
{ {
//如果是出库,且盘高大于30,暂不顶升 HY11_TopUpToHY();
MoveInfo.NextMoveStep(LineMoveStep.HY08_SL_WaitProcessReel);
CheckLog("托盘阻挡" + MoveInfo.SLog + " 等待料盘放入或料盘离开 ");
} }
} }
else else if (MoveInfo.IsStep(LineMoveStep.HY09_SL_ReelProEnd))
{ {
HY11_TopUpToHY(); HY11_TopUpToHY();
} }
} else if (MoveInfo.IsStep(LineMoveStep.HY11_TopUpToHY))
else if (MoveInfo.IsStep(LineMoveStep.HY09_SL_ReelProEnd))
{
HY11_TopUpToHY();
}
else if (MoveInfo.IsStep(LineMoveStep.HY11_TopUpToHY))
{
MoveInfo.NextMoveStep(LineMoveStep.HY12_WaitHY2Free);
CheckLog("托盘横移" + MoveInfo.SLog + " ,等待HY" + HyOutDeviceId + "空闲,可以开始横移 ");
}
else if (MoveInfo.IsStep(LineMoveStep.HY12_WaitHY2Free))
{
HYEquipBase hyOut = GetHyOutEquip();
if (hyOut.CanStartMove())
{ {
MoveInfo.NextMoveStep(LineMoveStep.HY13_WaitHY2Ready); MoveInfo.NextMoveStep(LineMoveStep.HY12_WaitHY2Free);
CheckLog("托盘横移" + MoveInfo.SLog + " ,等待" + hyOut.Name + "准备完成(顶升上升,定位下降) "); CheckLog("托盘横移" + MoveInfo.SLog + " ,等待HY" + HyOutDeviceId + "空闲,可以开始横移 ");
hyOut.MoveInfo.NewMove(LineMoveType.Fixture);
hyOut.MoveInfo.NextMoveStep(LineMoveStep.HY51_WaitFree);
ClearTimeoutAlarm("等待" + hyOut.Name + "可以横移超时");
} }
else if (MoveInfo.IsTimeOut()) else if (MoveInfo.IsStep(LineMoveStep.HY12_WaitHY2Free))
{ {
MoveTimeOut(MoveInfo, "等待" + hyOut.Name + "可以横移超时"); HYEquipBase hyOut = GetHyOutEquip();
if (hyOut.CanStartMove())
{
MoveInfo.NextMoveStep(LineMoveStep.HY13_WaitHY2Ready);
CheckLog("托盘横移" + MoveInfo.SLog + " ,等待" + hyOut.Name + "准备完成(顶升上升,定位下降) ");
hyOut.MoveInfo.NewMove(LineMoveType.Fixture);
hyOut.MoveInfo.NextMoveStep(LineMoveStep.HY51_WaitFree);
ClearTimeoutAlarm("等待" + hyOut.Name + "可以横移超时");
}
else if (MoveInfo.IsTimeOut())
{
MoveTimeOut(MoveInfo, "等待" + hyOut.Name + "可以横移超时");
}
} }
} else if (MoveInfo.IsStep(LineMoveStep.HY13_WaitHY2Ready))
else if (MoveInfo.IsStep(LineMoveStep.HY13_WaitHY2Ready))
{
HYEquipBase hyOut = GetHyOutEquip();
bool result = hyOut.MoveInfo.MoveStep >= LineMoveStep.HY54_HY2Ready;
if (result)
{ {
MoveInfo.NextMoveStep(LineMoveStep.HY14_HYLineRun); HYEquipBase hyOut = GetHyOutEquip();
CheckLog("托盘横移" + MoveInfo.SLog + " ,横移电机转动 "); bool result = hyOut.MoveInfo.MoveStep >= LineMoveStep.HY54_HY2Ready;
LineRun(MoveInfo); if (result)
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_TrayCheck, IO_VALUE.LOW)); {
ClearTimeoutAlarm("等待" + hyOut + "顶升上升完成超时"); MoveInfo.NextMoveStep(LineMoveStep.HY14_HYLineRun);
CheckLog("托盘横移" + MoveInfo.SLog + " ,横移电机转动 ");
LineRun(MoveInfo);
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_TrayCheck, IO_VALUE.LOW));
ClearTimeoutAlarm("等待" + hyOut + "顶升上升完成超时");
}
else if (MoveInfo.IsTimeOut())
{
MoveTimeOut(MoveInfo, "等待" + hyOut + "顶升上升完成超时");
}
} }
else if (MoveInfo.IsTimeOut()) else if (MoveInfo.IsStep(LineMoveStep.HY14_HYLineRun))
{ {
MoveTimeOut(MoveInfo, "等待" + hyOut + "顶升上升完成超时"); MoveInfo.NextMoveStep(LineMoveStep.HY15_WaitOutCheck);
CheckLog("托盘横移" + MoveInfo.SLog + " ,等待托盘到达HY" + HyOutDeviceId + " ");
LineRun();
}
else if (MoveInfo.IsStep(LineMoveStep.HY15_WaitOutCheck))
{
HYEquipBase hyOut = GetHyOutEquip();
bool result = (hyOut.MoveInfo.MoveStep >= LineMoveStep.HY56_CheckWait) || hyOut.MoveInfo.MoveType.Equals(LineMoveType.None);
if (result)
{
MoveInfo.NextMoveStep(LineMoveStep.HY17_TopDown);
CheckLog("托盘横移" + MoveInfo.SLog + " ,横移电机停止,顶升下降,定位下降 ");
LineStop(MoveInfo);
CylinderMove(MoveInfo, IO_Type.HY_TopCylinder_Up, IO_Type.HY_TopCylinder_Down);
LocationCylinderDown(MoveInfo);
ClearTimeoutAlarm("等待托盘到达" + hyOut.Name + "");
}
else if (MoveInfo.IsTimeOut())
{
MoveTimeOut(MoveInfo, "等待托盘到达" + hyOut.Name + "");
}
} }
else if (MoveInfo.IsStep(LineMoveStep.HY17_TopDown))
{
CheckLog("托盘横移" + MoveInfo.SLog + " ,结束横移处理 ");
MoveInfo.EndMove();
runStatus = LineRunStatus.Runing;
}
#endregion
} #region 横移出口托盘处理
else if (MoveInfo.IsStep(LineMoveStep.HY14_HYLineRun)) else if (MoveInfo.IsStep(LineMoveStep.HY51_WaitFree))
{
MoveInfo.NextMoveStep(LineMoveStep.HY15_WaitOutCheck);
CheckLog("托盘横移" + MoveInfo.SLog + " ,等待托盘到达HY" + HyOutDeviceId + " ");
LineRun();
}
else if (MoveInfo.IsStep(LineMoveStep.HY15_WaitOutCheck))
{
HYEquipBase hyOut = GetHyOutEquip();
bool result = (hyOut.MoveInfo.MoveStep >= LineMoveStep.HY56_CheckWait) || hyOut.MoveInfo.MoveType.Equals(LineMoveType.None);
if (result)
{ {
MoveInfo.NextMoveStep(LineMoveStep.HY17_TopDown); MoveInfo.NextMoveStep(LineMoveStep.HY52_TopUp);
CheckLog("托盘横移" + MoveInfo.SLog + " ,横移电机停止,顶升下降,定位下降 "); CheckLog("托盘阻挡" + MoveInfo.SLog + " 顶升上升,定位下降");
LineStop(MoveInfo); CylinderMove(MoveInfo, IO_Type.HY_TopCylinder_Down, IO_Type.HY_TopCylinder_Up);
CylinderMove(MoveInfo, IO_Type.HY_TopCylinder_Up, IO_Type.HY_TopCylinder_Down);
LocationCylinderDown(MoveInfo); LocationCylinderDown(MoveInfo);
ClearTimeoutAlarm("等待托盘到达" + hyOut.Name + "");
} }
else if (MoveInfo.IsTimeOut()) else if (MoveInfo.IsStep(LineMoveStep.HY52_TopUp))
{ {
MoveTimeOut(MoveInfo, "等待托盘到达" + hyOut.Name + ""); MoveInfo.NextMoveStep(LineMoveStep.HY53_LineRun);
CheckLog("托盘阻挡" + MoveInfo.SLog + " 横移电机开始转动");
LineRun(MoveInfo);
}
else if (MoveInfo.IsStep(LineMoveStep.HY53_LineRun))
{
MoveInfo.NextMoveStep(LineMoveStep.HY54_HY2Ready);
CheckLog("托盘阻挡" + MoveInfo.SLog + " 准备接收横移托盘完成");
}
else if (MoveInfo.IsStep(LineMoveStep.HY54_HY2Ready))
{
MoveInfo.NextMoveStep(LineMoveStep.HY55_WaitTrayCheck);
CheckLog("托盘阻挡" + MoveInfo.SLog + " 等待检测到托盘信号");
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_TrayCheck, IO_VALUE.HIGH));
} }
}
else if (MoveInfo.IsStep(LineMoveStep.HY17_TopDown))
{
CheckLog("托盘横移" + MoveInfo.SLog + " ,结束横移处理 ");
MoveInfo.EndMove();
runStatus = LineRunStatus.Runing;
}
#endregion
#region 横移出口托盘处理 else if (MoveInfo.IsStep(LineMoveStep.HY55_WaitTrayCheck))
else if (MoveInfo.IsStep(LineMoveStep.HY51_WaitFree)) {
{ MoveInfo.NextMoveStep(LineMoveStep.HY56_CheckWait);
MoveInfo.NextMoveStep(LineMoveStep.HY52_TopUp); CheckLog("托盘阻挡" + MoveInfo.SLog + " 再次等待托盘信号");
CheckLog("托盘阻挡" + MoveInfo.SLog + " 顶升上升,定位下降"); MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_TrayCheck, IO_VALUE.HIGH));
CylinderMove(MoveInfo, IO_Type.HY_TopCylinder_Down, IO_Type.HY_TopCylinder_Up); }
LocationCylinderDown(MoveInfo); else if (MoveInfo.IsStep(LineMoveStep.HY56_CheckWait))
} {
else if (MoveInfo.IsStep(LineMoveStep.HY52_TopUp)) //托盘已到位,更新托盘号,判断是否需要取放料
{ UpdateTrayNum();
MoveInfo.NextMoveStep(LineMoveStep.HY53_LineRun); if (TrayNeedSL(currTrayNum))
CheckLog("托盘阻挡" + MoveInfo.SLog + " 横移电机开始转动"); {
LineRun(MoveInfo); MoveInfo.NextMoveStep(LineMoveStep.HY57_SL_TopUp);
} CheckLog("托盘阻挡" + MoveInfo.SLog + " 顶升上升,横移电机停止 ");
else if (MoveInfo.IsStep(LineMoveStep.HY53_LineRun)) LineStop(MoveInfo);
{ CylinderMove(MoveInfo, IO_Type.HY_TopCylinder_Down, IO_Type.HY_TopCylinder_Up);
MoveInfo.NextMoveStep(LineMoveStep.HY54_HY2Ready); }
CheckLog("托盘阻挡" + MoveInfo.SLog + " 准备接收横移托盘完成"); else
} {
else if (MoveInfo.IsStep(LineMoveStep.HY54_HY2Ready)) MoveInfo.NextMoveStep(LineMoveStep.HY61_TopDown);
{ CheckLog("托盘阻挡" + MoveInfo.SLog + " 顶升下降,横移电机停止 ");
MoveInfo.NextMoveStep(LineMoveStep.HY55_WaitTrayCheck); LineStop(MoveInfo);
CheckLog("托盘阻挡" + MoveInfo.SLog + " 等待检测到托盘信号"); CylinderMove(MoveInfo, IO_Type.HY_TopCylinder_Up, IO_Type.HY_TopCylinder_Down);
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_TrayCheck, IO_VALUE.HIGH)); }
}
else if (MoveInfo.IsStep(LineMoveStep.HY55_WaitTrayCheck)) }
{ else if (MoveInfo.IsStep(LineMoveStep.HY57_SL_TopUp))
MoveInfo.NextMoveStep(LineMoveStep.HY56_CheckWait);
CheckLog("托盘阻挡" + MoveInfo.SLog + " 再次等待托盘信号");
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_TrayCheck, IO_VALUE.HIGH));
}
else if (MoveInfo.IsStep(LineMoveStep.HY56_CheckWait))
{
//托盘已到位,更新托盘号,判断是否需要取放料
UpdateTrayNum();
if (TrayNeedSL(currTrayNum))
{ {
MoveInfo.NextMoveStep(LineMoveStep.HY57_SL_TopUp); MoveInfo.NextMoveStep(LineMoveStep.HY58_SL_LocationUp);
CheckLog("托盘阻挡" + MoveInfo.SLog + " 顶升上升,横移电机停止 "); CheckLog("托盘阻挡" + MoveInfo.SLog + " 是出入库需要的空托盘,定位上升");
LineStop(MoveInfo); LocationCylinderUp(MoveInfo);
CylinderMove(MoveInfo, IO_Type.HY_TopCylinder_Down, IO_Type.HY_TopCylinder_Up);
} }
else else if (MoveInfo.IsStep(LineMoveStep.HY58_SL_LocationUp))
{
MoveInfo.NextMoveStep(LineMoveStep.HY59_SL_WaitProcessReel);
CheckLog("托盘阻挡" + MoveInfo.SLog + " 等待料盘放入或料盘离开");
}
else if (MoveInfo.IsStep(LineMoveStep.HY59_SL_WaitProcessReel))
{
}
else if (MoveInfo.IsStep(LineMoveStep.HY60_SL_ReelProEnd))
{ {
MoveInfo.NextMoveStep(LineMoveStep.HY61_TopDown); MoveInfo.NextMoveStep(LineMoveStep.HY61_TopDown);
CheckLog("托盘阻挡" + MoveInfo.SLog + " 顶升下降,横移电机停止 "); CheckLog("托盘阻挡" + MoveInfo.SLog + " 顶升下降 ");
LineStop(MoveInfo);
CylinderMove(MoveInfo, IO_Type.HY_TopCylinder_Up, IO_Type.HY_TopCylinder_Down); CylinderMove(MoveInfo, IO_Type.HY_TopCylinder_Up, IO_Type.HY_TopCylinder_Down);
}
}
else if (MoveInfo.IsStep(LineMoveStep.HY57_SL_TopUp))
{
MoveInfo.NextMoveStep(LineMoveStep.HY58_SL_LocationUp);
CheckLog("托盘阻挡" + MoveInfo.SLog + " 是出入库需要的空托盘,定位上升");
LocationCylinderUp(MoveInfo);
}
else if (MoveInfo.IsStep(LineMoveStep.HY58_SL_LocationUp))
{
MoveInfo.NextMoveStep(LineMoveStep.HY59_SL_WaitProcessReel);
CheckLog("托盘阻挡" + MoveInfo.SLog + " 等待料盘放入或料盘离开");
}
else if (MoveInfo.IsStep(LineMoveStep.HY59_SL_WaitProcessReel))
{
}
else if (MoveInfo.IsStep(LineMoveStep.HY60_SL_ReelProEnd))
{
MoveInfo.NextMoveStep(LineMoveStep.HY61_TopDown);
CheckLog("托盘阻挡" + MoveInfo.SLog + " 顶升下降 ");
CylinderMove(MoveInfo, IO_Type.HY_TopCylinder_Up, IO_Type.HY_TopCylinder_Down);
} }
else if (MoveInfo.IsStep(LineMoveStep.HY61_TopDown)) else if (MoveInfo.IsStep(LineMoveStep.HY61_TopDown))
{ {
MoveInfo.NextMoveStep(LineMoveStep.HY62_LocationDown); MoveInfo.NextMoveStep(LineMoveStep.HY62_LocationDown);
CheckLog("托盘阻挡" + MoveInfo.SLog + " 定位下降"); CheckLog("托盘阻挡" + MoveInfo.SLog + " 定位下降");
LocationCylinderDown(MoveInfo); LocationCylinderDown(MoveInfo);
} }
else if (MoveInfo.IsStep(LineMoveStep.HY62_LocationDown)) else if (MoveInfo.IsStep(LineMoveStep.HY62_LocationDown))
{ {
MoveInfo.NextMoveStep(LineMoveStep.HY63_WaitTrayGo); MoveInfo.NextMoveStep(LineMoveStep.HY63_WaitTrayGo);
CheckLog("托盘阻挡" + MoveInfo.SLog + " 等待托盘检测信号消失"); CheckLog("托盘阻挡" + MoveInfo.SLog + " 等待托盘检测信号消失");
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_TrayCheck, IO_VALUE.LOW)); MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_TrayCheck, IO_VALUE.LOW));
} }
else if (MoveInfo.IsStep(LineMoveStep.HY63_WaitTrayGo)) else if (MoveInfo.IsStep(LineMoveStep.HY63_WaitTrayGo))
{ {
MoveInfo.NextMoveStep(LineMoveStep.HY64_CheckWait); MoveInfo.NextMoveStep(LineMoveStep.HY64_CheckWait);
CheckLog("托盘阻挡" + MoveInfo.SLog + " 等待托盘检测信号消失500"); CheckLog("托盘阻挡" + MoveInfo.SLog + " 等待托盘检测信号消失500");
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(500)); MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(500));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_TrayCheck, IO_VALUE.LOW)); MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_TrayCheck, IO_VALUE.LOW));
} }
else if (MoveInfo.IsStep(LineMoveStep.HY64_CheckWait)) else if (MoveInfo.IsStep(LineMoveStep.HY64_CheckWait))
{ {
MoveInfo.NextMoveStep(LineMoveStep.HY65_TopUp); MoveInfo.NextMoveStep(LineMoveStep.HY65_TopUp);
CheckLog("托盘阻挡" + MoveInfo.SLog + " 顶升提前上升"); CheckLog("托盘阻挡" + MoveInfo.SLog + " 顶升提前上升");
CylinderMove(MoveInfo, IO_Type.HY_TopCylinder_Down, IO_Type.HY_TopCylinder_Up); CylinderMove(MoveInfo, IO_Type.HY_TopCylinder_Down, IO_Type.HY_TopCylinder_Up);
} }
else if (MoveInfo.IsStep(LineMoveStep.HY65_TopUp)) else if (MoveInfo.IsStep(LineMoveStep.HY65_TopUp))
{ {
MoveInfo.EndMove(); MoveInfo.EndMove();
runStatus = LineRunStatus.Runing; runStatus = LineRunStatus.Runing;
CheckLog("托盘阻挡" + MoveInfo.SLog + " 处理完成"); CheckLog("托盘阻挡" + MoveInfo.SLog + " 处理完成");
} }
else else
{ {
LogUtil.error(Name + "FixtureProcess 未找到[" + MoveInfo.MoveType + "][" + MoveInfo.MoveStep + "]的处理"); LogUtil.error(Name + "FixtureProcess 未找到[" + MoveInfo.MoveType + "][" + MoveInfo.MoveStep + "]的处理");
} }
#endregion #endregion
} }
......
...@@ -122,6 +122,9 @@ namespace OnlineStore.DeviceLibrary ...@@ -122,6 +122,9 @@ namespace OnlineStore.DeviceLibrary
T3C1_MoveInfo.OneWaitCanEndStep = true; T3C1_MoveInfo.OneWaitCanEndStep = true;
T3C1_MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_FrontStopCheck, IO_VALUE.LOW)); T3C1_MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_FrontStopCheck, IO_VALUE.LOW));
T3C1_MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_TrayCheck, IO_VALUE.HIGH)); T3C1_MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_TrayCheck, IO_VALUE.HIGH));
//最多等待30秒
T3C1_MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(30000));
} }
} }
else else
...@@ -159,21 +162,41 @@ namespace OnlineStore.DeviceLibrary ...@@ -159,21 +162,41 @@ namespace OnlineStore.DeviceLibrary
#region 托盘检测 #region 托盘检测
if (T3C1_MoveInfo.IsStep(LineMoveStep.MIO_00_Stop1Down)) if (T3C1_MoveInfo.IsStep(LineMoveStep.MIO_00_Stop1Down))
{ {
T3C1_MoveInfo.NextMoveStep(LineMoveStep.MIO_01_TrayCheck); if (IOValue(IO_Type.HY_FrontStopCheck).Equals(IO_VALUE.LOW) || IOValue(IO_Type.HY_TrayCheck).Equals(IO_VALUE.HIGH))
T3C1_Log("托盘阻挡" + T3C1_MoveInfo.SLog + " 前阻挡上升,等待 阻挡托盘检测=1"); {
IOMove(IO_Type.HY_FrontStopCheck, IO_VALUE.LOW); T3C1_MoveInfo.NextMoveStep(LineMoveStep.MIO_01_TrayCheck);
T3C1_MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_TrayCheck, IO_VALUE.HIGH)); T3C1_Log("托盘阻挡" + T3C1_MoveInfo.SLog + " 前阻挡上升,等待 阻挡托盘检测=1");
IOMove(IO_Type.HY_FrontStopCheck, IO_VALUE.LOW);
T3C1_MoveInfo.OneWaitCanEndStep = true;
T3C1_MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_TrayCheck, IO_VALUE.HIGH));
//最多等待30秒
T3C1_MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(30000));
}
else
{
//未检测到信号或阻挡下降失败,结束处理
T3C1_Log(T3C1_MoveInfo.SLog + "未等到信号 HY_FrontStopCheck=LOW,或 HY_TrayCheck=HIGH,结束处理 ");
T3C1_MoveInfo.EndMove();
}
} }
else if (T3C1_MoveInfo.IsStep(LineMoveStep.MIO_01_TrayCheck)) else if (T3C1_MoveInfo.IsStep(LineMoveStep.MIO_01_TrayCheck))
{ {
T3C1_MoveInfo.NextMoveStep(LineMoveStep.MIO_03_StopUp); if (IOValue(IO_Type.HY_TrayCheck).Equals(IO_VALUE.HIGH))
T3C1_Log("托盘阻挡" + T3C1_MoveInfo.SLog + " 再次等待托盘信号"); {
T3C1_MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_TrayCheck, IO_VALUE.HIGH)); T3C1_MoveInfo.NextMoveStep(LineMoveStep.MIO_03_StopUp);
T3C1_Log("托盘阻挡" + T3C1_MoveInfo.SLog + " 再次等待托盘信号");
T3C1_MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_TrayCheck, IO_VALUE.HIGH));
}
else
{
T3C1_Log(T3C1_MoveInfo.SLog + "未等到信号 HY_TrayCheck=HIGH,结束处理 ");
T3C1_MoveInfo.EndMove();
}
} }
else if (T3C1_MoveInfo.IsStep(LineMoveStep.MIO_03_StopUp)) else if (T3C1_MoveInfo.IsStep(LineMoveStep.MIO_03_StopUp))
{ {
T3C1_MoveInfo.NextMoveStep(LineMoveStep.MIO_04_Wait); T3C1_MoveInfo.NextMoveStep(LineMoveStep.MIO_04_Wait);
T3C1_Log("托盘阻挡" + T3C1_MoveInfo.SLog + " ,等待编码信号稳定 HY_TrayCheck=1"); T3C1_Log("托盘阻挡" + T3C1_MoveInfo.SLog + " ,等待编码信号稳定 HY_TrayCheck=1");
T3C1_MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_TrayCheck, IO_VALUE.HIGH)); T3C1_MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.HY_TrayCheck, IO_VALUE.HIGH));
} }
else if (T3C1_MoveInfo.IsStep(LineMoveStep.MIO_04_Wait)) else if (T3C1_MoveInfo.IsStep(LineMoveStep.MIO_04_Wait))
...@@ -215,10 +238,10 @@ namespace OnlineStore.DeviceLibrary ...@@ -215,10 +238,10 @@ namespace OnlineStore.DeviceLibrary
//判断盘是空盘,空盘并且编号正确才需要放料盘过去 //判断盘是空盘,空盘并且编号正确才需要放料盘过去
if (TrayNeedT3C1(T3C1_TrayNum)) if (TrayNeedT3C1(T3C1_TrayNum))
{ {
T3C1_MoveInfo.MoveParam = new InOutParam(T3C1_TrayNum); T3C1_MoveInfo.MoveParam = new InOutParam(T3C1_TrayNum);
LogInfo(T3C1_MoveInfo.MoveNum + "*************** 空托盘【" + T3C1_TrayNum + "】,正在入库中,移栽料盘"); LogInfo(T3C1_MoveInfo.MoveNum + "*************** 空托盘【" + T3C1_TrayNum + "】,正在入库中,移栽料盘");
T3C1_MoveInfo.NextMoveStep(LineMoveStep.MO_11_CodeRember); T3C1_MoveInfo.NextMoveStep(LineMoveStep.MO_11_CodeRember);
} }
else else
{ {
T3C1_MoveInfo.NextMoveStep(LineMoveStep.MO_14_TopDown); T3C1_MoveInfo.NextMoveStep(LineMoveStep.MO_14_TopDown);
......
...@@ -673,6 +673,8 @@ namespace OnlineStore.DeviceLibrary ...@@ -673,6 +673,8 @@ namespace OnlineStore.DeviceLibrary
SecondMoveInfo.OneWaitCanEndStep = true; SecondMoveInfo.OneWaitCanEndStep = true;
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.StopCheck1, IO_VALUE.LOW)); SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.StopCheck1, IO_VALUE.LOW));
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.StopCheck2, IO_VALUE.HIGH)); SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.StopCheck2, IO_VALUE.HIGH));
//最多等待30秒
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(30000));
} }
} }
else else
...@@ -714,28 +716,42 @@ namespace OnlineStore.DeviceLibrary ...@@ -714,28 +716,42 @@ namespace OnlineStore.DeviceLibrary
#region 托盘检测 #region 托盘检测
if (SecondMoveInfo.IsStep(LineMoveStep.MIO_00_Stop1Down)) if (SecondMoveInfo.IsStep(LineMoveStep.MIO_00_Stop1Down))
{ {
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_01_TrayCheck); if (IOValue(IO_Type.StopCheck1).Equals(IO_VALUE.LOW) || IOValue(IO_Type.StopCheck2).Equals(IO_VALUE.HIGH))
CheckLog("托盘阻挡" + SecondMoveInfo.SLog + " 阻挡气缸1-1上升,等待 阻挡2托盘检测=1)");
if (DeviceID.Equals(5))
{ {
SecondMoveInfo.TimeOutSeconds = 20; SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_01_TrayCheck);
CheckLog("托盘阻挡" + SecondMoveInfo.SLog + " 阻挡气缸1-1上升,等待 阻挡2托盘检测=1)");
SecondMoveInfo.OneWaitCanEndStep = true;
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.StopCheck2, IO_VALUE.HIGH));
//最多等待30秒
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(30000));
}
else
{
//未检测到信号或阻挡下降失败,结束处理
LogInfo(SecondMoveInfo.SLog + "未等到信号 StopCheck1=LOW,或 StopCheck2=HIGH,结束处理 ");
SecondMoveInfo.EndMove();
} }
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.StopCheck2, IO_VALUE.HIGH));
} }
else if (SecondMoveInfo.IsStep(LineMoveStep.MIO_01_TrayCheck)) else if (SecondMoveInfo.IsStep(LineMoveStep.MIO_01_TrayCheck))
{ {
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_03_StopUp); if (IOValue(IO_Type.StopCheck2).Equals(IO_VALUE.HIGH))
CheckLog("托盘阻挡" + SecondMoveInfo.SLog + " 再次等待托盘信号"); {
// IOMove(IO_Type.StopCylinder_Down1, IO_VALUE.LOW); SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_03_StopUp);
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.StopCheck2, IO_VALUE.HIGH)); CheckLog("托盘阻挡" + SecondMoveInfo.SLog + " 再次等待托盘信号");
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.StopCheck2, IO_VALUE.HIGH));
}
else
{
//未检测到信号或阻挡下降失败,结束处理
LogInfo(SecondMoveInfo.SLog + "未等到信号 StopCheck2=HIGH,结束处理 ");
SecondMoveInfo.EndMove();
}
} }
else if (SecondMoveInfo.IsStep(LineMoveStep.MIO_03_StopUp)) else if (SecondMoveInfo.IsStep(LineMoveStep.MIO_03_StopUp))
{ {
SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_04_Wait); SecondMoveInfo.NextMoveStep(LineMoveStep.MIO_04_Wait);
CheckLog("托盘阻挡" + SecondMoveInfo.SLog + " ,等待编码信号稳定StopCylinder_Check2=1"); CheckLog("托盘阻挡" + SecondMoveInfo.SLog + " ,等待编码信号稳定StopCylinder_Check2=1");
CheckAndMove(IO_Type.StopDown1, IO_VALUE.LOW); CheckAndMove(IO_Type.StopDown1, IO_VALUE.LOW);
//SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(500));
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.StopCheck2, IO_VALUE.HIGH)); SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.StopCheck2, IO_VALUE.HIGH));
} }
else if (SecondMoveInfo.IsStep(LineMoveStep.MIO_04_Wait)) else if (SecondMoveInfo.IsStep(LineMoveStep.MIO_04_Wait))
...@@ -771,7 +787,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -771,7 +787,7 @@ namespace OnlineStore.DeviceLibrary
TrayManager.UpdateTrayNumError(-1, ""); TrayManager.UpdateTrayNumError(-1, "");
} }
SecondMoveInfo.NextMoveStep(LineMoveStep.MO_15_WaitCanGo); SecondMoveInfo.NextMoveStep(LineMoveStep.MO_15_WaitCanGo);
SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(100)); SecondMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(100));
} }
} }
...@@ -891,7 +907,6 @@ namespace OnlineStore.DeviceLibrary ...@@ -891,7 +907,6 @@ namespace OnlineStore.DeviceLibrary
else if (SecondMoveInfo.IsStep(LineMoveStep.MO_19_StopUp)) else if (SecondMoveInfo.IsStep(LineMoveStep.MO_19_StopUp))
{ {
CheckLog("托盘放行 SecondMove:(托盘放行结束) "); CheckLog("托盘放行 SecondMove:(托盘放行结束) ");
// IOMove(IO_Type.StopCylinder_Down1, IO_VALUE.HIGH);
SecondMoveInfo.EndMove(); SecondMoveInfo.EndMove();
} }
#endregion #endregion
......
...@@ -251,6 +251,10 @@ namespace OnlineStore.DeviceLibrary ...@@ -251,6 +251,10 @@ namespace OnlineStore.DeviceLibrary
LogUtil.error("UpdateBoxDebug【" + id + "】【" + isDebug + "】失败"); LogUtil.error("UpdateBoxDebug【" + id + "】【" + isDebug + "】失败");
} }
} }
else
{
LogUtil.error("UpdateBoxDebug【" + id + "】【" + isDebug + "】失败:料仓不在线");
}
return false; return false;
} }
public static bool StartInStore(int id, InOutParam param) public static bool StartInStore(int id, InOutParam param)
...@@ -265,7 +269,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -265,7 +269,7 @@ namespace OnlineStore.DeviceLibrary
paramList.Add(S_PlateW, param.PlateW); paramList.Add(S_PlateW, param.PlateW);
paramList.Add(S_WareCode, param.WareCode); paramList.Add(S_WareCode, param.WareCode);
paramList.Add(S_RFID, param.rfid); paramList.Add(S_RFID, param.rfid);
// string msg = cmd_startIn+cmd_spilt+param.PosId+cmd_spilt+param.PlateH+cmd_spilt+param.PlateW+cmd_spilt+"\r";
string msg = ToParamStr(paramList); string msg = ToParamStr(paramList);
TcpClientBean client = ClientMap[id]; TcpClientBean client = ClientMap[id];
bool result = SendStrToClient(client, msg); bool result = SendStrToClient(client, msg);
...@@ -274,6 +278,10 @@ namespace OnlineStore.DeviceLibrary ...@@ -274,6 +278,10 @@ namespace OnlineStore.DeviceLibrary
LogUtil.error("StartInStore【" + id + "】【" + msg + "】失败"); LogUtil.error("StartInStore【" + id + "】【" + msg + "】失败");
} }
} }
else
{
LogUtil.error("StartInStore【" + id + "】【" + param.ToStr() + "】失败:料仓不在线");
}
return false; return false;
} }
///// <summary> ///// <summary>
...@@ -320,6 +328,10 @@ namespace OnlineStore.DeviceLibrary ...@@ -320,6 +328,10 @@ namespace OnlineStore.DeviceLibrary
// LogUtil.info("CheckInStorePos【" + id + "】【" + msg + "】发送成功"); // LogUtil.info("CheckInStorePos【" + id + "】【" + msg + "】发送成功");
} }
} }
else
{
LogUtil.error("CheckInStorePos【" + id + "】【" + param.ToStr() + "】失败:料仓不在线");
}
} }
catch (Exception ex) catch (Exception ex)
{ {
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!