Commit 89af521e 张东亮

机器人连接ok,rfid读取ok

1 个父辈 eddb5fd6
此文件类型无法预览
此文件类型无法预览
......@@ -44,8 +44,11 @@
<Reference Include="Asa.IOModule.AIOBOX">
<HintPath>..\..\dll\Asa.IOModule.AIOBOX.dll</HintPath>
</Reference>
<Reference Include="Asa.RFID">
<HintPath>..\..\dll\Asa.RFID.dll</HintPath>
<Reference Include="Asa.RFID.HiStation">
<HintPath>..\..\dll\Asa.RFID.HiStation.dll</HintPath>
</Reference>
<Reference Include="Asa.RFID.IReadAll">
<HintPath>..\..\dll\Asa.RFID.IReadAll.dll</HintPath>
</Reference>
<Reference Include="AsaPL.AgvClient">
<HintPath>..\..\dll\AsaPL.AgvClient.dll</HintPath>
......@@ -115,7 +118,7 @@
<Compile Include="packageLine\AgvProcess.cs" />
<Compile Include="packageLine\bean\StepInfo.cs" />
<Compile Include="packageLine\PackageLine.cs" />
<Compile Include="packageLine\BenQProcess.cs" />
<Compile Include="packageLine\LineAGVProcess.cs" />
<Compile Include="packageLine\PackageLine_BuffShelf.cs" />
<Compile Include="packageLine\PackageLine_BenQInShelf.cs" />
<Compile Include="packageLine\PackageLine_PkgInShelf.cs" />
......
类型,说明,名称,属性值,设备名称,默认值,描述,电器定义,代码定义,SlaveID
PRO,IO模块对应的DI数量,IO_DILength,192.168.103.23#8;192.168.103.29#8,,,,,,
PRO,模块对应的DO数量,IO_DOLength,192.168.103.23#24;192.168.103.29#8,,,,,,
PRO,IO模块对应的DI数量,IO_DILength,192.168.103.21#16,,,,,,
PRO,模块对应的DO数量,IO_DOLength,192.168.103.21#61,,,,,,
PRO,IO模块IP,PRO_AOI_IP_1,192.168.103.21,,,,,,
PRO,IO模块IP,PRO_AOI_IP_2,192.168.103.22,,,,,,
PRO,IO模块IP,PRO_AOI_IP_3,192.168.103.23,,,,,,
PRO,IO模块IP,PRO_AOI_IP_4,192.168.103.24,,,,,,
PRO,IO模块IP,PRO_AOI_IP_6,192.168.103.26,,,,,,
PRO,IO模块IP,PRO_AOI_IP_7,192.168.103.27,,,,,,
PRO,IO模块IP,PRO_AOI_IP_8,192.168.103.28,,,,,,
PRO,IO模块IP,PRO_AOI_IP_9,192.168.103.29,,,,,,
,,,,,,,,,
PRO,休眠秒数(秒),SleepSeconds,60,,,,,,
PRO,IO信号超时时间(秒),IOSingle_TimerOut,15,,,,,,
,,,,,,,,,
DI,急停,SuddenStop_BTN,0,PRO_AOI_IP_1,0,急停,X601,X601,0
DI,复位,Reset_BTN,1,PRO_AOI_IP_1,0,复位,X602,X602,0
DI,联动,Auto_BTN,2,PRO_AOI_IP_1,0,联动,X603,X603,0
DI,气压检测,AirCheck,3,PRO_AOI_IP_1,0,气压检测,X604,X604,0
DI,左侧升降气缸上升端,L_Updown_Up,4,PRO_AOI_IP_1,0,左侧升降气缸上升端,X605,X605,0
DI,左侧升降气缸下降端,L_Updown_Down,5,PRO_AOI_IP_1,0,左侧升降气缸下降端,X606,X606,0
DI,入口轨道检测,Line_InCheck,6,PRO_AOI_IP_1,0,入口轨道检测,X607,X607,0
DI,入口轨道阻挡检测,Line_StopCheck,7,PRO_AOI_IP_1,0,入口轨道阻挡检测,X608,X608,0
DI,左侧下层线体阻挡1检测,LLow_StopCheck1,8,PRO_AOI_IP_1,0,左侧下层线体阻挡1检测,X609,X609,0
DI,左侧下层线体阻挡2检测,LLow_StopCheck2,9,PRO_AOI_IP_1,0,左侧下层线体阻挡2检测,X610,X610,0
DI,左侧下层线体阻挡3检测,LLow_StopCheck3,10,PRO_AOI_IP_1,0,左侧下层线体阻挡3检测,X611,X611,0
DI,左侧上层线体阻挡1检测,LHigh_StopCheck1,11,PRO_AOI_IP_1,0,左侧上层线体阻挡1检测,X612,X612,0
DI,左侧上层线体阻挡2检测,LHigh_StopCheck2,12,PRO_AOI_IP_1,0,左侧上层线体阻挡2检测,X613,X613,0
DI,左侧上层线体阻挡3检测,LHigh_StopCheck3,13,PRO_AOI_IP_1,0,左侧上层线体阻挡3检测,X614,X614,0
DI,中间升降气缸上升端,M_Updown_Up,14,PRO_AOI_IP_1,0,中间升降气缸上升端,X615,X615,0
DI,中间升降气缸下降端,M_Updown_Down,15,PRO_AOI_IP_1,0,中间升降气缸下降端,X616,X616,0
DO,待机状态(指示灯),AutoRun_HddLed,0,PRO_AOI_IP_1,0,待机状态(指示灯),Y601,Y601,0
DO,运行状态(指示灯),RunSign_HddLed,1,PRO_AOI_IP_1,0,运行状态(指示灯),Y602,Y602,0
DO,故障状态(指示灯),Alarm_HddLed,2,PRO_AOI_IP_1,0,故障状态(指示灯),Y603,Y603,0
DO,故障状态(蜂鸣器),Alarm_Buzzer,3,PRO_AOI_IP_1,0,故障状态(蜂鸣器),Y604,Y604,0
DO,左侧升降气缸上升SOL,L_Updown_Up,4,PRO_AOI_IP_1,0,左侧升降气缸上升SOL,Y605,Y605,0
DO,左侧升降气缸下降SOL,L_Updown_Down,5,PRO_AOI_IP_1,0,左侧升降气缸下降SOL,Y606,Y606,0
DO,左侧入口轨道阻挡下降,Line_StopCylinder,6,PRO_AOI_IP_1,0,左侧入口轨道阻挡下降,Y607,Y607,0
DO,左侧下层线体阻挡1下降,LLow_StopCylinder1,7,PRO_AOI_IP_1,0,左侧下层线体阻挡1下降,Y608,Y608,0
DO,左侧下层线体阻挡2下降,LLow_StopCylinder2,8,PRO_AOI_IP_1,0,左侧下层线体阻挡2下降,Y609,Y609,0
DO,左侧下层线体阻挡3下降,LLow_StopCylinder3,9,PRO_AOI_IP_1,0,左侧下层线体阻挡3下降,Y610,Y610,0
DO,左侧上层线体阻挡1下降,LHigh_StopCylinder1,10,PRO_AOI_IP_1,0,左侧上层线体阻挡1下降,Y611,Y611,0
DO,左侧上层线体阻挡2下降,LHigh_StopCylinder2,11,PRO_AOI_IP_1,0,左侧上层线体阻挡2下降,Y612,Y612,0
DO,左侧上层线体阻挡3下降,LHigh_StopCylinder3,12,PRO_AOI_IP_1,0,左侧上层线体阻挡3下降,Y613,Y613,0
DO,左侧入口轨道电机正转,L_InLineRun,13,PRO_AOI_IP_1,0,左侧入口轨道电机正转,Y614,Y614,0
DO,左侧入口轨道电机反转,L_InLineBackRun,14,PRO_AOI_IP_1,0,左侧入口轨道电机反转,Y615,Y615,0
,,Y616,15,PRO_AOI_IP_1,0,,Y616,Y616,0
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
DI,中间轨道左阻挡检测,M_LeftStopCheck,0,PRO_AOI_IP_2,0,中间轨道左阻挡检测,X621,X621,0
DI,中间轨道右阻挡检测,M_RightStopCheck,1,PRO_AOI_IP_2,0,中间轨道右阻挡检测,X622,X622,0
DI,上料工位1阻挡1检测,S1_StopCheck1,2,PRO_AOI_IP_2,0,上料工位1阻挡1检测,X623,X623,0
DI,上料工位1阻挡2检测,S1_StopCheck2,3,PRO_AOI_IP_2,0,上料工位1阻挡2检测,X624,X624,0
,上料工位1阻挡3检测,S1_StopCheck3,4,PRO_AOI_IP_2,0,上料工位1阻挡3检测,X625,X625,0
DI,上料工位1阻挡4检测,S1_StopCheck4,5,PRO_AOI_IP_2,0,上料工位1阻挡4检测,X626,X626,0
DI,上料工位2阻挡1检测,S2_StopCheck1,6,PRO_AOI_IP_2,0,上料工位2阻挡1检测,X627,X627,0
DI,上料工位2阻挡2检测,S2_StopCheck2,7,PRO_AOI_IP_2,0,上料工位2阻挡2检测,X628,X628,0
DI,上料工位1顶升上升端,S1_TopCylinderUp,8,PRO_AOI_IP_2,0,上料工位1顶升上升端,X629,X629,0
DI,上料工位1顶升下降端,S1_TopCylinderDown,9,PRO_AOI_IP_2,0,上料工位1顶升下降端,X630,X630,0
DI,上料工位2顶升上升端,S2_TopCylinderUp,10,PRO_AOI_IP_2,0,上料工位2顶升上升端,X631,X631,0
DI,上料工位2顶升下降端,S2_TopCylinderDown,11,PRO_AOI_IP_2,0,上料工位2顶升下降端,X632,X632,0
DI,右侧升降气缸上升端,R_Updown_Up,12,PRO_AOI_IP_2,0,右侧升降气缸上升端,X633,X633,0
DI,右侧升降气缸下降端,R_Updown_Down,13,PRO_AOI_IP_2,0,右侧升降气缸下降端,X634,X634,0
DI,右侧下层线体阻挡1检测,R_StopCheck1,14,PRO_AOI_IP_2,0,右侧下层线体阻挡1检测,X635,X635,0
DI,右侧下层线体阻挡2检测,R_StopCheck2,15,PRO_AOI_IP_2,0,右侧下层线体阻挡2检测,X636,X636,0
DO,左侧下层电机正转,LLown_LineRun,0,PRO_AOI_IP_2,0,左侧下层电机正转,Y621,Y621,0
DO,左侧上层电机正转,LHigh_LineRun,1,PRO_AOI_IP_2,0,左侧上层电机正转,Y622,Y622,0
DO,中间轨道电机正转,M_LineRun,2,PRO_AOI_IP_2,0,中间轨道电机正转,Y623,Y623,0
DO,中间轨道电机反转,M_LineBackRun,3,PRO_AOI_IP_2,0,中间轨道电机反转,Y624,Y624,0
DO,中间升降气缸上升SOL,M_Updown_Up,4,PRO_AOI_IP_2,0,中间升降气缸上升SOL,Y625,Y625,0
DO,中间升降气缸下降SOL,M_Updown_Down,5,PRO_AOI_IP_2,0,中间升降气缸下降SOL,Y626,Y626,0
DO,中间轨道左阻挡下降,M_LeftStopCylinder,6,PRO_AOI_IP_2,0,中间轨道左阻挡下降,Y627,Y627,0
DO,中间轨道右阻挡下降,M_RightStopCylinder,7,PRO_AOI_IP_2,0,中间轨道右阻挡下降,Y628,Y628,0
DO,上料工位1阻挡1下降,S1_StopCylinder1,8,PRO_AOI_IP_2,0,上料工位1阻挡1下降,Y629,Y629,0
DO,上料工位1阻挡2下降,S1_StopCylinder2,9,PRO_AOI_IP_2,0,上料工位1阻挡2下降,Y630,Y630,0
DO,上料工位1阻挡3下降,S1_StopCylinder3,10,PRO_AOI_IP_2,0,上料工位1阻挡3下降,Y631,Y631,0
DO,上料工位1阻挡4下降,S1_StopCylinder4,11,PRO_AOI_IP_2,0,上料工位1阻挡4下降,Y632,Y632,0
DO,上料工位2阻挡1下降,S2_StopCylinder1,12,PRO_AOI_IP_2,0,上料工位2阻挡1下降,Y633,Y633,0
DO,上料工位2阻挡2下降,S2_StopCylinder2,13,PRO_AOI_IP_2,0,上料工位2阻挡2下降,Y634,Y634,0
,,Y635,14,PRO_AOI_IP_2,0,,Y635,Y635,0
,,Y636,15,PRO_AOI_IP_2,0,,Y636,Y636,0
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
DI,右侧轨道左阻挡检测,R_LeftStopCheck,0,PRO_AOI_IP_3,0,右侧轨道左阻挡检测,X641,X641,0
DI,右侧轨道右阻挡检测,R_RightStopCheck,1,PRO_AOI_IP_3,0,右侧轨道右阻挡检测,X642,X642,0
DI,右侧上层线体阻挡1检测,RHigh_StopCheck1,2,PRO_AOI_IP_3,0,右侧上层线体阻挡1检测,X643,X643,0
DI,右侧上层线体阻挡2检测,RHigh_StopCheck2,3,PRO_AOI_IP_3,0,右侧上层线体阻挡2检测,X644,X644,0
DI,左侧工作位横移平台下降端1,Left_Tranverse_Down_Sig1,4,PRO_AOI_IP_3,0,左侧工作位横移平台下降端1,X645,X645,0
DI,左侧工作位横移平台下降端2,Left_Tranverse_Down_Sig2,5,PRO_AOI_IP_3,0,左侧工作位横移平台下降端2,X646,X646,0
DI,左侧工作位横移平台上升端1,Left_Tranverse_Up_Sig1,6,PRO_AOI_IP_3,0,左侧缓存位横移平台上升端1,X647,X647,0
DI,左侧工作位横移平台上升端2,Left_Tranverse_Up_Sig2,7,PRO_AOI_IP_3,0,左侧缓存位横移平台上升端2,X648,X648,0
,,,,,,,,,
DO,上料工位1顶升上升SOL,S1_TopCylinderUp,0,PRO_AOI_IP_3,0,上料工位1顶升上升SOL,Y641,Y641,0
DO,上料工位1顶升下降SOL,S1_TopCylinderDown,1,PRO_AOI_IP_3,0,上料工位1顶升下降SOL,Y642,Y642,0
DO,上料工位2顶升上升SOL,S2_TopCylinderUp,2,PRO_AOI_IP_3,0,上料工位2顶升上升SOL,Y643,Y643,0
DO,上料工位2顶升下降SOL,S2_TopCylinderDown,3,PRO_AOI_IP_3,0,上料工位2顶升下降SOL,Y644,Y644,0
DO,上料工位1电机正转,S1_LineRun,4,PRO_AOI_IP_3,0,上料工位1电机正转,Y645,Y645,0
DO,上料工位1电机反转,S1_LineBackRun,5,PRO_AOI_IP_3,0,上料工位1电机反转,Y646,Y646,0
DO,上料工位2电机正转,S2_LineRun,6,PRO_AOI_IP_3,0,上料工位2电机正转,Y647,Y647,0
DO,上料工位2电机反转,S2_LineBackRun,7,PRO_AOI_IP_3,0,上料工位2电机反转,Y648,Y648,0
DO,右侧出口轨道电机正转,R_OutLineRun,8,PRO_AOI_IP_3,0,右侧出口轨道电机正转,Y649,Y649,0
DO,右侧出口轨道电机反转,R_OutLineBackRun,9,PRO_AOI_IP_3,0,右侧出口轨道电机反转,Y650,Y650,0
DO,右侧下层电机正转,R_LineRun,10,PRO_AOI_IP_3,0,右侧下层电机正转,Y651,Y651,0
DO,右侧上层电机正转,RHigh_LineRun,11,PRO_AOI_IP_3,0,右侧上层电机正转,Y652,Y652,0
DO,右侧下层线体阻挡1SOL,R_StopCylinder1,12,PRO_AOI_IP_3,0,右侧下层线体阻挡1SOL,Y653,Y653,0
DO,右侧下层线体阻挡2SOL,R_StopCylinder2,13,PRO_AOI_IP_3,0,右侧下层线体阻挡2SOL,Y654,Y654,0
DO,右侧升降气缸上升SOL,R_Updown_Up,14,PRO_AOI_IP_3,0,右侧升降气缸上升SOL,Y655,Y655,0
DO,右侧升降气缸下降SOL,R_Updown_Down,15,PRO_AOI_IP_3,0,右侧升降气缸下降SOL,Y656,Y656,0
DO,右侧轨道左阻挡下降,R_LeftStopCylinder,16,PRO_AOI_IP_3,0,右侧轨道左阻挡下降,Y661,Y661,0
,右侧轨道右阻挡下降,R_RightStopCylinder,17,PRO_AOI_IP_3,0,右侧轨道右阻挡下降,Y662,Y662,0
DO,右侧上层线体阻挡1下降,RHigh_StopCylinder1,18,PRO_AOI_IP_3,0,右侧上层线体阻挡1下降,Y663,Y663,0
DO,右侧上层线体阻挡2下降,RHigh_StopCylinder2,19,PRO_AOI_IP_3,0,右侧上层线体阻挡2下降,Y664,Y664,0
,,Y665,20,PRO_AOI_IP_3,0,,Y665,Y665,0
,,Y666,21,PRO_AOI_IP_3,0,,Y666,Y666,0
,,Y667,22,PRO_AOI_IP_3,0,,Y667,Y667,0
,,Y668,23,PRO_AOI_IP_3,0,,Y668,Y668,0
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
DI,包装线急停,Pkg_SuddenStop_BTN,0,PRO_AOI_IP_4,0,包装线急停,X701,X701,0
DI,包装线复位,Pkg_Reset,1,PRO_AOI_IP_4,0,包装线复位,X702,X702,0
DI,包装线入口检测1,Pkg_In_Check,2,PRO_AOI_IP_4,0,包装线入口检测1,X703,X703,0
DI,包装线阻挡检测1,Pkg_Stop_Check1,3,PRO_AOI_IP_4,0,包装线阻挡检测1,X704,X704,0
DI,包装线阻挡检测2,Pkg_Stop_Check2,4,PRO_AOI_IP_4,0,包装线阻挡检测2,X705,X705,0
DI,包装线顶升定位工位检测,Pkg_Station_Check,5,PRO_AOI_IP_4,0,包装线顶升定位工位检测,X706,X706,0
DI,包装线上料工位顶升上升端,Pkg_Station_Up,6,PRO_AOI_IP_4,0,包装线上料工位顶升上升端,X707,X707,0
DI,包装线上料工位顶升下降端,Pkg_Station_Down,7,PRO_AOI_IP_4,0,包装线上料工位顶升下降端,X708,X708,0
DI,包装线出口阻挡检测,Pkg_Out_Stop_Check,8,PRO_AOI_IP_4,0,包装线出口阻挡检测,X709,X709,0
DI,包装线ROBOT禁用检测,Pkg_Rotot_Forbidden_Check,9,PRO_AOI_IP_4,0,包装线ROBOT禁用检测,X710,X710,0
DI,包装线空架缓存检测,Pkg_Empty_Shelf_Check,10,PRO_AOI_IP_4,0,包装线空架缓存检测,X711,X711,0
,,,,,,,,,
DO,包装线运行状态(指示灯),Pkg_Status_Run,0,PRO_AOI_IP_4,0,包装线运行状态(指示灯),Y701,Y701,0
DO,包装线故障状态(指示灯),Pkg_Status_Warnning,1,PRO_AOI_IP_4,0,包装线故障状态(指示灯),Y702,Y702,0
DO,包装线阻挡1下降,Pkg_Stop1_Down,2,PRO_AOI_IP_4,0,包装线阻挡1下降,Y703,Y703,0
DO,包装线阻挡2下降,Pkg_Stop2_Down,3,PRO_AOI_IP_4,0,包装线阻挡2下降,Y704,Y704,0
DO,包装线阻挡3下降,Pkg_Stop3_Down,4,PRO_AOI_IP_4,0,包装线阻挡3下降,Y705,Y705,0
DO,包装线顶升定位工位阻档下降,Pkg_Station_Stop_Down,5,PRO_AOI_IP_4,0,包装线顶升定位工位阻档下降,Y706,Y706,0
DO,包装线出口阻挡下降,Pkg_Out_Stop_Down,6,PRO_AOI_IP_4,0,包装线出口阻挡下降,Y707,Y707,0
DO,包装线上料工位顶升上升SOL,Pkg_Station_SOL_UP,7,PRO_AOI_IP_4,0,包装线上料工位顶升上升SOL,Y708,Y708,0
DO,包装线上料工位顶升下降SOL,Pkg_Station_SOL_Down,8,PRO_AOI_IP_4,0,包装线上料工位顶升下降SOL,Y709,Y709,0
DO,包装线驱动电机1正转,Pkg_Line1_Forward,9,PRO_AOI_IP_4,0,包装线驱动电机1正转,Y710,Y710,0
DO,包装线驱动电机2正转,Pkg_Line2_Forward,10,PRO_AOI_IP_4,0,包装线驱动电机2正转,Y711,Y711,0
DO,包装线驱动电机2反转,Pkg_Line2_Backward,11,PRO_AOI_IP_4,0,包装线驱动电机2反转,Y712,Y712,0
DO,包装线驱动电机3正转,Pkg_Line3_Forward,12,PRO_AOI_IP_4,0,包装线驱动电机3正转,Y713,Y713,0
DO,包装线驱动电机3反转,Pkg_Line3_Backward,13,PRO_AOI_IP_4,0,包装线驱动电机3反转,Y714,Y714,0
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
,皮带线3出口料盘检测,X670,0,PRO_AOI_IP_6,0,皮带线3出口料盘检测,X670,X670,0
,分盘装置1定位气缸上升端,X671,1,PRO_AOI_IP_6,0,分盘装置1定位气缸上升端,X671,X671,0
,分盘装置1定位气缸下降端,X672,2,PRO_AOI_IP_6,0,分盘装置1定位气缸下降端,X672,X672,0
DI,分盘装置1料盘检测_ABB2,ABB2_TrayCheck,3,PRO_AOI_IP_6,0,分盘装置1料盘检测,X673,X673,0
,分盘装置电机1驱动,Y670,4,PRO_AOI_IP_6,0,分盘装置电机1驱动,Y670,Y670,0
,分盘装置1定位气缸上升SOL,Y671,5,PRO_AOI_IP_6,0,分盘装置1定位气缸上升SOL,Y671,Y671,0
,分盘装置1定位气缸下降SOL,Y672,6,PRO_AOI_IP_6,0,分盘装置1定位气缸下降SOL,Y672,Y672,0
,,,7,PRO_AOI_IP_6,0,,,,0
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
,皮带线6出口料盘检测,X641,0,PRO_AOI_IP_7,0,皮带线6出口料盘检测,X680,X641,0
,分盘装置2定位气缸上升端,X681,1,PRO_AOI_IP_7,0,分盘装置2定位气缸上升端,X681,X642,0
,分盘装置2定位气缸下降端,X682,2,PRO_AOI_IP_7,0,分盘装置2定位气缸下降端,X682,X643,0
DI,分盘装置2料盘检测_ABB1,ABB1_TrayCheck,3,PRO_AOI_IP_7,0,分盘装置2料盘检测,X683,X683,0
,分盘装置电机1驱动,Y680,4,PRO_AOI_IP_7,0,分盘装置电机1驱动,Y680,X645,0
,分盘装置2定位气缸上升SOL,Y681,5,PRO_AOI_IP_7,0,分盘装置2定位气缸上升SOL,Y681,X646,0
,分盘装置2定位气缸下降SOL,Y682,6,PRO_AOI_IP_7,0,分盘装置2定位气缸下降SOL,Y682,X647,0
,,,7,PRO_AOI_IP_7,0,,,X648,0
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
DI,左侧缓存横移平台下降端1,Left_Buf_Tranverse_Down_Sig1,0,PRO_AOI_IP_8,0,左侧缓存横移平台下降端1,X801,X801,0
DI,左侧缓存横移平台下降端2,Left_Buf_Tranverse_Down_Sig2,1,PRO_AOI_IP_8,0,左侧缓存横移平台下降端2,X802,X802,0
DI,左侧缓存横移平台上升端1,Left_Buf_Tranverse_Up_Sig1,2,PRO_AOI_IP_8,0,左侧缓存横移平台上升端1,X803,X803,0
DI,左侧缓存横移平台上升端2,Left_Buf_Tranverse_Up_Sig2,3,PRO_AOI_IP_8,0,左侧缓存横移平台上升端2,X804,X804,0
DI,左侧横移物料检测(工作位),Left_Tranverse_Shelf_Sig,4,PRO_AOI_IP_8,0,左侧横移物料检测(工作位),X805,X805,0
DI,左侧横移物料检测(缓存位),Left_Buf_Tranverse_Shelf_Sig,5,PRO_AOI_IP_8,0,左侧横移物料检测(缓存位),X806,X806,0
DI,左侧横移到位检测(工作位),Left_Tranverse_InPosition_Sig,6,PRO_AOI_IP_8,0,左侧横移到位检测(工作位),X807,X807,0
DI,左侧横移到位检测(缓存位),Left_Buf_Tranverse_InPosition_Sig,7,PRO_AOI_IP_8,0,左侧横移到位检测(缓存位),X808,X808,0
DI,左侧缓存满杯物料检测,Left_Buf_Full_Shelf_Sig,8,PRO_AOI_IP_8,0,左侧缓存满杯物料检测,X809,X809,0
DI,急停,SuddenStop_BTN,0,PRO_AOI_IP_1,0,急停,X01,X01,0
DI,复位,Reset_BTN,1,PRO_AOI_IP_1,0,复位,X02,X02,0
DI,气压检测,AirCheck,2,PRO_AOI_IP_1,0,气压检测,X03,X03,0
DI,左升降气缸上升端,L_Updown_Up,3,PRO_AOI_IP_1,0,左升降气缸上升端,X04,X04,0
DI,左升降气缸下降端,L_Updown_Down,4,PRO_AOI_IP_1,0,左升降气缸下降端,X05,X05,0
DI,入口轨道检测,Line_InCheck,5,PRO_AOI_IP_1,0,入口轨道检测,X06,X06,0
DI,入口轨道阻挡检测,Line_StopCheck,6,PRO_AOI_IP_1,0,入口轨道阻挡检测,X07,X07,0
DI,左下层线体阻挡1检测,LLow_StopCheck1,7,PRO_AOI_IP_1,0,左下层线体阻挡1检测,X08,X08,0
DI,左下层线体阻挡2检测,LLow_StopCheck2,8,PRO_AOI_IP_1,0,左下层线体阻挡2检测,X09,X09,0
DI,左上层线体阻挡1检测,LHigh_StopCheck1,9,PRO_AOI_IP_1,0,左上层线体阻挡1检测,X10,X10,0
DI,左上层线体阻挡2检测,LHigh_StopCheck2,10,PRO_AOI_IP_1,0,左上层线体阻挡2检测,X11,X11,0
DI,中间升降气缸上升端,M_Updown_Up,11,PRO_AOI_IP_1,0,中间升降气缸上升端,X12,X12,0
DI,中间升降气缸下降端,M_Updown_Down,12,PRO_AOI_IP_1,0,中间升降气缸下降端,X13,X13,0
DI,中间轨道正阻挡检测,M_LeftStopCheck,13,PRO_AOI_IP_1,0,中间轨道正阻挡检测,X14,X14,0
DI,中间轨道反阻挡检测,M_RightStopCheck,14,PRO_AOI_IP_1,0,中间轨道反阻挡检测,X15,X15,0
DI,上料位前反阻挡检测,S1_StopCheck1,15,PRO_AOI_IP_1,0,上料位前反阻挡检测,X16,X16,0
DO,待机状态(指示灯),AutoRun_HddLed,0,PRO_AOI_IP_1,0,待机状态(指示灯),Y01,Y01,0
DO,运行状态(指示灯),RunSign_HddLed,1,PRO_AOI_IP_1,0,运行状态(指示灯),Y02,Y02,0
DO,故障状态(指示灯),Alarm_HddLed,2,PRO_AOI_IP_1,0,故障状态(指示灯),Y03,Y03,0
DO,故障状态(蜂鸣器),Alarm_Buzzer,3,PRO_AOI_IP_1,0,故障状态(蜂鸣器),Y04,Y04,0
DO,左下层电机正转,LLown_LineRun,4,PRO_AOI_IP_1,0,左下层电机正转,Y05,Y05,0
DO,左上层电机正转,LHigh_LineRun,5,PRO_AOI_IP_1,0,左上层电机正转,Y06,Y06,0
DO,上料工位电机正转,S1_LineRun,6,PRO_AOI_IP_1,0,上料工位电机正转,Y07,Y07,0
DO,上料工位电机反转,S1_LineBackRun,7,PRO_AOI_IP_1,0,上料工位电机反转,Y08,Y08,0
DO,右下层电机正转,R_LineRun,8,PRO_AOI_IP_1,0,右下层电机正转,Y09,Y09,0
DO,右上层电机正转,RHigh_LineRun,9,PRO_AOI_IP_1,0,右上层电机正转,Y10,Y10,0
DO,左入口轨道电机正转,L_InLineRun,10,PRO_AOI_IP_1,0,左入口轨道电机正转,Y11,Y11,0
DO,中间轨道电机正转,M_LineRun,11,PRO_AOI_IP_1,0,中间轨道电机正转,Y12,Y12,0
DO,中间轨道电机反转,M_LineBackRun,12,PRO_AOI_IP_1,0,中间轨道电机反转,Y13,Y13,0
DO,右出口轨道电机正转,R_OutLineRun,13,PRO_AOI_IP_1,0,右出口轨道电机正转,Y14,Y14,0
DO,右出口轨道电机反转,R_OutLineBackRun,14,PRO_AOI_IP_1,0,右出口轨道电机反转,Y15,Y15,0
,,,15,PRO_AOI_IP_1,0,,Y16,Y16,0
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
DI,上料位前正阻挡检测,S1_StopCheck2,0,PRO_AOI_IP_2,0,上料位前正阻挡检测,X21,X21,0
DI,上料位反定位阻挡检测,S1_StopCheck3,1,PRO_AOI_IP_2,0,上料位反定位阻挡检测,X22,X22,0
DI,上料位正定位阻挡检测,S1_StopCheck4,2,PRO_AOI_IP_2,0,上料位正定位阻挡检测,X23,X23,0
DI,上料位后阻挡检测,S2_StopCheck1,3,PRO_AOI_IP_2,0,上料位后阻挡检测,X24,X24,0
DI,上料工位顶升上升端1,S1_TopCylinderUp,4,PRO_AOI_IP_2,0,上料工位顶升上升端1,X25,X25,0
DI,上料工位顶升下降端1,S1_TopCylinderDown,5,PRO_AOI_IP_2,0,上料工位顶升下降端1,X26,X26,0
DI,上料工位顶升上升端2,S2_TopCylinderUp,6,PRO_AOI_IP_2,0,上料工位顶升上升端2,X27,X27,0
DI,上料工位顶升下降端2,S2_TopCylinderDown,7,PRO_AOI_IP_2,0,上料工位顶升下降端2,X28,X28,0
DI,J1接驳台有料检测,ABB1_TrayCheck,8,PRO_AOI_IP_2,0,J1接驳台有料检测,X29,X29,0
DI,J2接驳台有料检测,ABB2_TrayCheck,9,PRO_AOI_IP_2,0,J2接驳台有料检测,X30,X30,0
DI,右升降气缸上升端,R_Updown_Up,10,PRO_AOI_IP_2,0,右侧升降气缸上升端,X31,X31,0
DI,右升降气缸下降端,R_Updown_Down,11,PRO_AOI_IP_2,0,右侧升降气缸下降端,X32,X32,0
DI,右下层线体阻挡1检测,R_StopCheck1,12,PRO_AOI_IP_2,0,右侧下层线体阻挡1检测,X33,X33,0
DI,右下层线体阻挡2检测,R_StopCheck2,13,PRO_AOI_IP_2,0,右侧下层线体阻挡2检测,X34,X34,0
DI,右轨道入料阻挡检测,R_RightStopCheck,14,PRO_AOI_IP_2,0,右轨道入料阻挡检测,X35,X35,0
DI,右轨道出料阻挡检测,R_LeftStopCheck,15,PRO_AOI_IP_2,0,右轨道出料阻挡检测,X36,X36,0
,,,,,,,,,
DO,左入口轨道阻挡下降,Line_StopCylinder,0,PRO_AOI_IP_2,0,左入口轨道阻挡下降,Y21,Y21,0
DO,左升降气缸上升,L_Updown_Up,1,PRO_AOI_IP_2,0,左升降气缸上升,Y22,Y22,0
DO,左升降气缸下降,L_Updown_Down,2,PRO_AOI_IP_2,0,左升降气缸下降,Y23,Y23,0
DO,左下层线体阻挡1下降,LLow_StopCylinder1,3,PRO_AOI_IP_2,0,左下层线体阻挡1下降,Y24,Y24,0
DO,左下层线体阻挡2下降,LLow_StopCylinder2,4,PRO_AOI_IP_2,0,左下层线体阻挡2下降,Y25,Y25,0
DO,左上层线体阻挡1下降,LHigh_StopCylinder1,5,PRO_AOI_IP_2,0,左上层线体阻挡1下降,Y26,Y26,0
DO,左上层线体阻挡2下降,LHigh_StopCylinder2,6,PRO_AOI_IP_2,0,左上层线体阻挡2下降,Y27,Y27,0
DO,中间轨道正阻挡下降,M_LeftStopCylinder,7,PRO_AOI_IP_2,0,中间轨道正阻挡下降,Y28,Y28,0
DO,中间轨道反阻挡下降,M_RightStopCylinder,8,PRO_AOI_IP_2,0,中间轨道反阻挡下降,Y29,Y29,0
DO,中间升降气缸上升,M_Updown_Up,9,PRO_AOI_IP_2,0,中间升降气缸上升,Y30,Y30,0
DO,中间升降气缸下降,M_Updown_Down,10,PRO_AOI_IP_2,0,中间升降气缸下降,Y31,Y31,0
DO,上料位前反阻挡下降,S1_StopCylinder1,11,PRO_AOI_IP_2,0,上料位前反阻挡下降,Y32,Y32,0
DO,上料位前正阻挡下降,S1_StopCylinder2,12,PRO_AOI_IP_2,0,上料位前正阻挡下降,Y33,Y33,0
DO,上料位反定位阻挡下降,S1_StopCylinder3,13,PRO_AOI_IP_2,0,上料位反定位阻挡下降,Y34,Y34,0
DO,上料位正定位阻挡下降,S1_StopCylinder4,14,PRO_AOI_IP_2,0,上料位正定位阻挡下降,Y35,Y35,0
DO,上料位后阻挡下降,S2_StopCylinder1,15,PRO_AOI_IP_2,0,上料位后阻挡下降,Y36,Y36,0
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
DI,右上层线体阻挡1检测,RHigh_StopCheck1,0,PRO_AOI_IP_3,0,右上层线体阻挡1检测,X41,X41,0
DI,右上层线体阻挡2检测,RHigh_StopCheck2,1,PRO_AOI_IP_3,0,右上层线体阻挡2检测,X42,X42,0
DI,左下层线体满料检测,LLow_FullCheck,2,PRO_AOI_IP_3,0,左下层线体满料检测,X43,X43,0
DI,左上层线体满料检测,LHigh_FullCheck,3,PRO_AOI_IP_3,0,左上层线体满料检测,X44,X44,0
DI,右上层线体满料检测,RHigh_FullCheck,4,PRO_AOI_IP_3,0,右上层线体满料检测,X45,X45,0
,,,,,,,,,
DO,上料工位顶升上升,S1_TopCylinderUp,0,PRO_AOI_IP_3,0,上料工位顶升上升,Y41,Y41,0
DO,上料工位顶升下降,S1_TopCylinderDown,1,PRO_AOI_IP_3,0,上料工位顶升下降,Y42,Y42,0
DO,右下层线体阻挡1下降,R_StopCylinder1,2,PRO_AOI_IP_3,0,右下层线体阻挡1下降,Y43,Y43,0
DO,右下层线体阻挡2下降,R_StopCylinder2,3,PRO_AOI_IP_3,0,右下层线体阻挡2下降,Y44,Y44,0
DO,右上层线体阻挡1下降,RHigh_StopCylinder1,4,PRO_AOI_IP_3,0,右上层线体阻挡1下降,Y45,Y45,0
DO,右上层线体阻挡2下降,RHigh_StopCylinder2,5,PRO_AOI_IP_3,0,右上层线体阻挡2下降,Y46,Y46,0
DO,右轨道入料阻挡下降,R_RightStopCylinder,6,PRO_AOI_IP_3,0,右轨道入料阻挡下降,Y47,Y47,0
DO,右轨道出料阻挡下降,R_LeftStopCylinder,7,PRO_AOI_IP_3,0,右轨道出料阻挡下降,Y48,Y48,0
DO,右升降气缸上升,R_Updown_Up,8,PRO_AOI_IP_3,0,右升降气缸上升,Y49,Y49,0
DO,右升降气缸下降,R_Updown_Down,9,PRO_AOI_IP_3,0,右升降气缸下降,Y50,Y50,0
,,Y51,10,PRO_AOI_IP_3,0,,Y51,Y51,0
,,Y52,11,PRO_AOI_IP_3,0,,Y52,Y52,0
,,Y53,12,PRO_AOI_IP_3,0,,Y53,Y53,0
,,Y54,13,PRO_AOI_IP_3,0,,Y54,Y54,0
,,Y55,14,PRO_AOI_IP_3,0,,Y55,Y55,0
,,Y56,15,PRO_AOI_IP_3,0,,Y56,Y56,0
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
,左侧缓存横移平台下降端1,Left_Buf_Tranverse_Down_Sig1,0,PRO_AOI_IP_8,0,左侧缓存横移平台下降端1,X801,X801,0
,左侧缓存横移平台下降端2,Left_Buf_Tranverse_Down_Sig2,1,PRO_AOI_IP_8,0,左侧缓存横移平台下降端2,X802,X802,0
,左侧缓存横移平台上升端1,Left_Buf_Tranverse_Up_Sig1,2,PRO_AOI_IP_8,0,左侧缓存横移平台上升端1,X803,X803,0
,左侧缓存横移平台上升端2,Left_Buf_Tranverse_Up_Sig2,3,PRO_AOI_IP_8,0,左侧缓存横移平台上升端2,X804,X804,0
,左侧横移物料检测(工作位),Left_Tranverse_Shelf_Sig,4,PRO_AOI_IP_8,0,左侧横移物料检测(工作位),X805,X805,0
,左侧横移物料检测(缓存位),Left_Buf_Tranverse_Shelf_Sig,5,PRO_AOI_IP_8,0,左侧横移物料检测(缓存位),X806,X806,0
,左侧横移到位检测(工作位),Left_Tranverse_InPosition_Sig,6,PRO_AOI_IP_8,0,左侧横移到位检测(工作位),X807,X807,0
,左侧横移到位检测(缓存位),Left_Buf_Tranverse_InPosition_Sig,7,PRO_AOI_IP_8,0,左侧横移到位检测(缓存位),X808,X808,0
,左侧缓存满杯物料检测,Left_Buf_Full_Shelf_Sig,8,PRO_AOI_IP_8,0,左侧缓存满杯物料检测,X809,X809,0
,,,9,PRO_AOI_IP_8,0,,X810,X810,0
DI,右侧工作位横移平台下降端1,Right_Tranverse_Down_Sig1,10,PRO_AOI_IP_8,0,右侧工作位横移平台下降端1,X811,X811,0
DI,右侧工作位横移平台下降端2,Right_Tranverse_Down_Sig2,11,PRO_AOI_IP_8,0,右侧工作位横移平台下降端2,X812,X812,0
DI,右侧工作位横移平台上升端1,Right_Tranverse_Up_Sig1,12,PRO_AOI_IP_8,0,右侧工作位横移平台上升端1,X813,X813,0
DI,右侧工作位横移平台上升端2,Right_Tranverse_Up_Sig2,13,PRO_AOI_IP_8,0,右侧工作位横移平台上升端2,X814,X814,0
DI,右侧缓存横移平台下降端1,Right_Buf_Tranverse_Down_Sig1,14,PRO_AOI_IP_8,0,右侧缓存横移平台下降端1,X815,X815,0
DI,右侧缓存横移平台下降端2,Right_Buf_Tranverse_Down_Sig2,15,PRO_AOI_IP_8,0,右侧缓存横移平台下降端2,X816,X816,0
DO,左侧横移平台下降SOL,Left_Tranverse_Down,0,PRO_AOI_IP_8,0,左侧横移平台下降SOL,Y801,Y801,0
DO,左侧横移平台上升SOL,Left_Tranverse_Up,1,PRO_AOI_IP_8,0,左侧横移平台上升SOL,Y802,Y802,0
DO,左侧工作位横移平台物料阻挡SOL,Left_Tranverse_StopDown,2,PRO_AOI_IP_8,0,左侧工作位横移平台物料阻挡SOL,Y803,Y803,0
DO,左侧缓存线阻挡(近横移平台侧)SOL,Left_Buf_Near_StopDown,3,PRO_AOI_IP_8,0,左侧缓存线阻挡(近横移平台侧)SOL,Y804,Y804,0
DO,左侧缓存线阻挡(远横移平台侧)SOL,Left_Buf_Far_StopDown,4,PRO_AOI_IP_8,0,左侧缓存线阻挡(远横移平台侧)SOL,Y805,Y805,0
DO,左侧缓冲气缸SOL,Left_Buf_Out_StopDown,5,PRO_AOI_IP_8,0,左侧缓冲气缸SOL,Y806,Y806,0
,右侧工作位横移平台下降端1,Right_Tranverse_Down_Sig1,10,PRO_AOI_IP_8,0,右侧工作位横移平台下降端1,X811,X811,0
,右侧工作位横移平台下降端2,Right_Tranverse_Down_Sig2,11,PRO_AOI_IP_8,0,右侧工作位横移平台下降端2,X812,X812,0
,右侧工作位横移平台上升端1,Right_Tranverse_Up_Sig1,12,PRO_AOI_IP_8,0,右侧工作位横移平台上升端1,X813,X813,0
,右侧工作位横移平台上升端2,Right_Tranverse_Up_Sig2,13,PRO_AOI_IP_8,0,右侧工作位横移平台上升端2,X814,X814,0
,右侧缓存横移平台下降端1,Right_Buf_Tranverse_Down_Sig1,14,PRO_AOI_IP_8,0,右侧缓存横移平台下降端1,X815,X815,0
,右侧缓存横移平台下降端2,Right_Buf_Tranverse_Down_Sig2,15,PRO_AOI_IP_8,0,右侧缓存横移平台下降端2,X816,X816,0
,左侧横移平台下降SOL,Left_Tranverse_Down,0,PRO_AOI_IP_8,0,左侧横移平台下降SOL,Y801,Y801,0
,左侧横移平台上升SOL,Left_Tranverse_Up,1,PRO_AOI_IP_8,0,左侧横移平台上升SOL,Y802,Y802,0
,左侧工作位横移平台物料阻挡SOL,Left_Tranverse_StopDown,2,PRO_AOI_IP_8,0,左侧工作位横移平台物料阻挡SOL,Y803,Y803,0
,左侧缓存线阻挡(近横移平台侧)SOL,Left_Buf_Near_StopDown,3,PRO_AOI_IP_8,0,左侧缓存线阻挡(近横移平台侧)SOL,Y804,Y804,0
,左侧缓存线阻挡(远横移平台侧)SOL,Left_Buf_Far_StopDown,4,PRO_AOI_IP_8,0,左侧缓存线阻挡(远横移平台侧)SOL,Y805,Y805,0
,左侧缓冲气缸SOL,Left_Buf_Out_StopDown,5,PRO_AOI_IP_8,0,左侧缓冲气缸SOL,Y806,Y806,0
,,,6,PRO_AOI_IP_8,0,,Y807,Y807,0
DO,左侧横移电机1、2正转,Left_Tranverse_Run,7,PRO_AOI_IP_8,0,左侧横移电机1、2正转,Y808,Y808,0
DO,左侧横移电机1、2反转,Left_Tranverse_BackRun,8,PRO_AOI_IP_8,0,左侧横移电机1、2反转,Y809,Y809,0
DO,左侧缓存线电机1、2正转,Left_Buf_Run,9,PRO_AOI_IP_8,0,左侧缓存线电机1、2正转,Y810,Y810,0
DO,左侧缓存线电机1、2反转,Left_Buf_BackRun,10,PRO_AOI_IP_8,0,左侧缓存线电机1、2反转,Y811,Y811,0
,左侧横移电机1、2正转,Left_Tranverse_Run,7,PRO_AOI_IP_8,0,左侧横移电机1、2正转,Y808,Y808,0
,左侧横移电机1、2反转,Left_Tranverse_BackRun,8,PRO_AOI_IP_8,0,左侧横移电机1、2反转,Y809,Y809,0
,左侧缓存线电机1、2正转,Left_Buf_Run,9,PRO_AOI_IP_8,0,左侧缓存线电机1、2正转,Y810,Y810,0
,左侧缓存线电机1、2反转,Left_Buf_BackRun,10,PRO_AOI_IP_8,0,左侧缓存线电机1、2反转,Y811,Y811,0
,,,11,PRO_AOI_IP_8,0,,Y812,Y812,0
DO,右侧横移平台下降SOL,Right_Tranverse_Down,12,PRO_AOI_IP_8,0,右侧横移平台下降SOL,Y813,Y813,0
DO,右侧横移平台上升SOL,Right_Tranverse_Up,13,PRO_AOI_IP_8,0,右侧横移平台上升SOL,Y814,Y814,0
DO,右侧工作位横移平台物料阻挡SOL,Right_Tranverse_StopDown,14,PRO_AOI_IP_8,0,右侧工作位横移平台物料阻挡SOL,Y815,Y815,0
DO,右侧缓存线阻挡(近横移平台侧)SOL,Right_Buf_Near_StopDown,15,PRO_AOI_IP_8,0,右侧缓存线阻挡(近横移平台侧)SOL,Y816,Y816,0
,右侧横移平台下降SOL,Right_Tranverse_Down,12,PRO_AOI_IP_8,0,右侧横移平台下降SOL,Y813,Y813,0
,右侧横移平台上升SOL,Right_Tranverse_Up,13,PRO_AOI_IP_8,0,右侧横移平台上升SOL,Y814,Y814,0
,右侧工作位横移平台物料阻挡SOL,Right_Tranverse_StopDown,14,PRO_AOI_IP_8,0,右侧工作位横移平台物料阻挡SOL,Y815,Y815,0
,右侧缓存线阻挡(近横移平台侧)SOL,Right_Buf_Near_StopDown,15,PRO_AOI_IP_8,0,右侧缓存线阻挡(近横移平台侧)SOL,Y816,Y816,0
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
DI,右侧缓存位横移平台上升端1,Right_Buf_Tranverse_Up_Sig1,0,PRO_AOI_IP_9,0,右侧缓存位横移平台上升端1,X817,X817,0
DI,右侧缓存位横移平台上升端2,Right_Buf_Tranverse_Up_Sig2,1,PRO_AOI_IP_9,0,右侧缓存位横移平台上升端2,X818,X818,0
DI,右侧横移物料检测(工作位),Right_Tranverse_Shelf_Sig,2,PRO_AOI_IP_9,0,右侧横移物料检测(工作位),X819,X819,0
DI,右侧横移物料检测(缓存位),Right_Buf_Tranverse_Shelf_Sig,3,PRO_AOI_IP_9,0,右侧横移物料检测(缓存位),X820,X820,0
DI,右侧横移到位检测(工作位),Right_Tranverse_InPosition_Sig,4,PRO_AOI_IP_9,0,右侧横移到位检测(工作位),X821,X821,0
DI,右侧横移到位检测(缓存位),Right_Buf_Tranverse_InPosition_Sig,5,PRO_AOI_IP_9,0,右侧横移到位检测(缓存位),X822,X822,0
DI,右侧缓存满杯物料检测,Right_Buf_Full_Shelf_Sig,6,PRO_AOI_IP_9,0,右侧缓存满杯物料检测,X823,X823,0
,右侧缓存位横移平台上升端1,Right_Buf_Tranverse_Up_Sig1,0,PRO_AOI_IP_9,0,右侧缓存位横移平台上升端1,X817,X817,0
,右侧缓存位横移平台上升端2,Right_Buf_Tranverse_Up_Sig2,1,PRO_AOI_IP_9,0,右侧缓存位横移平台上升端2,X818,X818,0
,右侧横移物料检测(工作位),Right_Tranverse_Shelf_Sig,2,PRO_AOI_IP_9,0,右侧横移物料检测(工作位),X819,X819,0
,右侧横移物料检测(缓存位),Right_Buf_Tranverse_Shelf_Sig,3,PRO_AOI_IP_9,0,右侧横移物料检测(缓存位),X820,X820,0
,右侧横移到位检测(工作位),Right_Tranverse_InPosition_Sig,4,PRO_AOI_IP_9,0,右侧横移到位检测(工作位),X821,X821,0
,右侧横移到位检测(缓存位),Right_Buf_Tranverse_InPosition_Sig,5,PRO_AOI_IP_9,0,右侧横移到位检测(缓存位),X822,X822,0
,右侧缓存满杯物料检测,Right_Buf_Full_Shelf_Sig,6,PRO_AOI_IP_9,0,右侧缓存满杯物料检测,X823,X823,0
,,,7,PRO_AOI_IP_9,0,,X824,X824,0
,,,,,,,,,
DO,右侧缓存线阻挡(远横移平台侧)SOL,Right_Buf_Far_StopDown,0,PRO_AOI_IP_9,0,右侧缓存线阻挡(远横移平台侧)SOL,Y817,Y817,0
DO,右侧缓冲气缸SOL,Right_Buf_Out_StopDown,1,PRO_AOI_IP_9,0,右侧缓冲气缸SOL,Y818,Y818,0
,右侧缓存线阻挡(远横移平台侧)SOL,Right_Buf_Far_StopDown,0,PRO_AOI_IP_9,0,右侧缓存线阻挡(远横移平台侧)SOL,Y817,Y817,0
,右侧缓冲气缸SOL,Right_Buf_Out_StopDown,1,PRO_AOI_IP_9,0,右侧缓冲气缸SOL,Y818,Y818,0
,,,2,PRO_AOI_IP_9,0,,Y819,Y819,0
DO,右侧横移电机1、2正转,Right_Tranverse_Run,3,PRO_AOI_IP_9,0,右侧横移电机1、2正转,Y820,Y820,0
DO,右侧横移电机1、2反转,Right_Tranverse_BackRun,4,PRO_AOI_IP_9,0,右侧横移电机1、2反转,Y821,Y821,0
DO,右侧缓存线电机1、2正转,Right_Buf_Run,5,PRO_AOI_IP_9,0,右侧缓存线电机1、2正转,Y822,Y822,0
DO,右侧缓存线电机1、2反转,Right_Buf_BackRun,6,PRO_AOI_IP_9,0,右侧缓存线电机1、2反转,Y823,Y823,0
,右侧横移电机1、2正转,Right_Tranverse_Run,3,PRO_AOI_IP_9,0,右侧横移电机1、2正转,Y820,Y820,0
,右侧横移电机1、2反转,Right_Tranverse_BackRun,4,PRO_AOI_IP_9,0,右侧横移电机1、2反转,Y821,Y821,0
,右侧缓存线电机1、2正转,Right_Buf_Run,5,PRO_AOI_IP_9,0,右侧缓存线电机1、2正转,Y822,Y822,0
,右侧缓存线电机1、2反转,Right_Buf_BackRun,6,PRO_AOI_IP_9,0,右侧缓存线电机1、2反转,Y823,Y823,0
,,,7,PRO_AOI_IP_9,0,,Y824,Y824,0
,,,,,,,,,
,,,,,,,,,
,,,,,,,,,
PRO,ABB机器人1IP,ABB1_IP,192.168.103.51,,,,,,
PRO,ABB机器人2IP,ABB2_IP,192.168.103.52,,,,,,
PRO,ABB机器人3IP,ABB3_IP,192.168.103.53,,,,,,
,,,,,,,,,
PRO,双层线左侧提升机,L_Updown_Rfid,192.168.103.101,,,,,,
PRO,双层线中间提升机,M_Updown_Rfid,192.168.103.102,,,,,,
PRO,双层线上料工位1,S1_Rfid,192.168.103.103,,,,,,
PRO,双层线上料工位2,S2_Rfid,192.168.103.104,,,,,,
PRO,双层线右侧提升机,R_Updown_Rfid,192.168.103.105,,,,,,
PRO,包装线RFID,Pkg_Rfid,192.168.103.106,,,,,,
PRO,双层线上层右侧RFID,RHigh_Rfid,192.168.103.109,,,,,,
using ABB.Robotics.Controllers;
using ABB.Robotics.Controllers.Discovery;
using ABB.Robotics.Controllers.IOSystemDomain;
using ABB.Robotics.Controllers.RapidDomain;
using OnlineStore.Common;
using System;
using System.Collections.Generic;
......@@ -14,7 +13,7 @@ namespace OnlineStore.DeviceLibrary
{
public class ABBControl
{
public static int DefaultSpeed = ConfigAppSettings.GetIntValue(Setting_Init.DefaultSpeed);
public static int DefaultSpeed = ConfigAppSettings.GetIntValue(Setting_Init.DefaultSpeed);
public static string DI_Start = "di_start";//启动程序
public static string DI_Stop = "di_stop";//停止程序
public static string DO_ES = "do_ES";//急停状态
......@@ -368,7 +367,7 @@ namespace OnlineStore.DeviceLibrary
ErrorInfo = msg;
}
else if ((!preCmd.Equals("")) && msg.Contains(preCmd))
{
{
if (msg.Contains(OkStr))
{
UpdateAbbCmd(add, "");
......@@ -391,7 +390,7 @@ namespace OnlineStore.DeviceLibrary
//}
else if (msg.Contains(OkStr))
{
LogUtil.info("Revice[" + add + "]:[" + msg + "] 未找到相关处理,preCmd="+preCmd);
LogUtil.info("Revice[" + add + "]:[" + msg + "] 未找到相关处理,preCmd=" + preCmd);
//OnCmdEnd?.Invoke(add, msg);
}
return false;
......@@ -411,7 +410,7 @@ namespace OnlineStore.DeviceLibrary
{ }
else
{
LogUtil.error ("Send [" + robotIp + "] : [" + str + "] 失败,命令无效");
LogUtil.error("Send [" + robotIp + "] : [" + str + "] 失败,命令无效");
return false;
}
Client client = null;
......@@ -437,9 +436,9 @@ namespace OnlineStore.DeviceLibrary
LogUtil.error("Send [" + robotIp + "] : [" + str + "] 失败,客户端未连接");
}
return false;
}
}
private static void UpdateAbbCmd(string robotIp, string moveCmd)
{
{
if (AbbCurrCmd.ContainsKey(robotIp))
{
AbbCurrCmd.Remove(robotIp);
......@@ -470,8 +469,8 @@ namespace OnlineStore.DeviceLibrary
#region 连续动作
public static bool IsAutoMove = false;
public static string LastAutoP = "";
public static bool IsAutoMove = false;
public static string LastAutoP = "";
public static void StartConMove(string ip, List<string> movePList, string mType = "L", string getp = "p1", int speed = 0)
{
if (speed <= 0)
......@@ -587,7 +586,7 @@ namespace OnlineStore.DeviceLibrary
}
return "";
}
private static void SaveLastCmd(string ip, string cmd)
private static void SaveLastCmd(string ip, string cmd)
{
try
{
......@@ -604,11 +603,11 @@ namespace OnlineStore.DeviceLibrary
{
LogUtil.error("SaveLastCmd[" + ip + "][" + cmd + "]error :" + ex.ToString());
}
}
}
#endregion
}
#endregion
}
......@@ -2,7 +2,7 @@
using Asa;
using OnlineStore.Common;
using OnlineStore.LoadCSVLibrary;
using System;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
......@@ -11,14 +11,14 @@ using System.Threading;
using System.Threading.Tasks;
namespace OnlineStore.DeviceLibrary
{
public partial class DoubleLineBean:RobotBase
{
public DoubleLineConfig Config;
public RunStatus runStatus = RunStatus.Wait;
{
public partial class DoubleLineBean : RobotBase
{
public DoubleLineConfig Config;
public RunStatus runStatus = RunStatus.Wait;
public List<string> RfidIpList = new List<string>();
public RobotMoveBean LeftRobot = null;
public RobotMoveBean RightRobot = null;
public RobotMoveBean RightRobot = null;
public LineMoveInfo SOneMoveInfo = null;
public DoubleLineBean(DoubleLineConfig config) : base(config)
......@@ -28,8 +28,8 @@ namespace OnlineStore.DeviceLibrary
mainTimer.Elapsed += timersTimer_Elapsed;
ledTimer.Elapsed += Led_timer_Tick;
LeftRobot = new RobotMoveBean(2, config.ABB2_IP, "左侧ABB", IO_Type.ABB2_TrayCheck);
RightRobot = new RobotMoveBean(1, config.ABB1_IP, "右侧ABB", IO_Type.ABB1_TrayCheck);
LeftRobot = new RobotMoveBean(1, config.ABB1_IP, "左侧ABB", IO_Type.ABB1_TrayCheck);
RightRobot = new RobotMoveBean(2, config.ABB2_IP, "右侧ABB", IO_Type.ABB2_TrayCheck);
//添加调试
IsDebug = ConfigAppSettings.GetIntValue(Setting_Init.IsInDebug).Equals(1);
......@@ -45,14 +45,14 @@ namespace OnlineStore.DeviceLibrary
if (isAuto == 1)
{
mainTimer.Enabled = true;
}
RfidIpList = new List<string>(){
}
RfidIpList = new List<string>(){
config.L_Updown_Rfid,
config.M_Updown_Rfid,
config.R_Updown_Rfid,
config.R_Updown_Rfid,
config.S1_Rfid,
config.S2_Rfid,
config.Pkg_Rfid,
//config.S2_Rfid,
//config.Pkg_Rfid,
config.RHigh_Rfid
};
//benQ_AGV = new BenQ_AGV();
......@@ -70,11 +70,11 @@ namespace OnlineStore.DeviceLibrary
{
LogUtil.info(Name + "开始启动,启动时间:" + DateTime.Now);
WarnMsg = "";
if (IOValue(IO_Type.SuddenStop_BTN).Equals(IO_VALUE.HIGH) )
if (IOValue(IO_Type.SuddenStop_BTN).Equals(IO_VALUE.HIGH))
{
if (ABBControl.GetControllerByIP(Config.ABB1_IP) == null)
{
SetWarnMsg("启动失败:机器人["+Config.ABB1_IP+"]加载失败");
SetWarnMsg("启动失败:机器人[" + Config.ABB1_IP + "]加载失败");
return false;
}
if (ABBControl.GetControllerByIP(Config.ABB2_IP) == null)
......@@ -82,16 +82,16 @@ namespace OnlineStore.DeviceLibrary
SetWarnMsg("启动失败:机器人[" + Config.ABB2_IP + "]加载失败");
return false;
}
if (ABBControl.GetControllerByIP(Config.ABB3_IP) == null)
{
SetWarnMsg("启动失败:机器人[" + Config.ABB3_IP + "]加载失败");
return false;
}
//if (ABBControl.GetControllerByIP(Config.ABB3_IP) == null)
//{
// SetWarnMsg("启动失败:机器人[" + Config.ABB3_IP + "]加载失败");
// return false;
//}
S1_RightShelfId = "";
S1_CurrShelfId = "";
S1_LeftShelfId = "";
RealRfidMap = new Dictionary<string, string>();
mainTimer.Enabled = false ;
mainTimer.Enabled = false;
// AgvClient.SetCancelState(false);
RFIDManager.Open(RfidIpList.ToArray());
runStatus = RunStatus.HomeMoving;
......@@ -100,17 +100,17 @@ namespace OnlineStore.DeviceLibrary
ReturnHome();
return true;
}
//else if (IOValue(IO_Type.AirCheck).Equals(IO_VALUE.LOW))
//{
// SetWarnMsg("启动失败:气压未开");
//}
else
else
{
SetWarnMsg("启动失败:急停未开");
}
return false;
return false;
}
......@@ -131,7 +131,7 @@ namespace OnlineStore.DeviceLibrary
//清理RFID
RFIDManager.ReadRFID(Config.L_Updown_Rfid, true);
RFIDManager.ReadRFID(Config.S1_Rfid, true);
LeftRobot.Reset();
RightRobot.Reset();
SOneMoveInfo.EndMove();
......@@ -139,7 +139,7 @@ namespace OnlineStore.DeviceLibrary
ResetStopMove();
//工位顶升下降
CylinderMove(MoveInfo, IO_Type.S1_TopCylinderUp, IO_Type.S1_TopCylinderDown);
CylinderMove(MoveInfo, IO_Type.S2_TopCylinderUp, IO_Type.S2_TopCylinderDown);
//CylinderMove(MoveInfo, IO_Type.S2_TopCylinderUp, IO_Type.S2_TopCylinderDown);
mainTimer.Enabled = true;
ledTimer.Enabled = true;
......@@ -165,19 +165,18 @@ namespace OnlineStore.DeviceLibrary
IO_VALUE value = IO_VALUE.LOW;
CheckAndMove(IO_Type.Line_StopCylinder, value);
// IOMove(IO_Type.LLow_StopCylinder1, value);
CheckAndMove(IO_Type.LLow_StopCylinder1, value);
CheckAndMove(IO_Type.LLow_StopCylinder2, value);
CheckAndMove(IO_Type.LLow_StopCylinder3, value);
// IOMove(IO_Type.LHigh_StopCylinder1, value);
CheckAndMove(IO_Type.LHigh_StopCylinder1, value);
CheckAndMove(IO_Type.LHigh_StopCylinder2, value);
CheckAndMove(IO_Type.LHigh_StopCylinder3, value);
CheckAndMove(IO_Type.M_LeftStopCylinder, value);
CheckAndMove(IO_Type.S1_StopCylinder1, value);
CheckAndMove(IO_Type.S1_StopCylinder2, value);
CheckAndMove(IO_Type.S2_StopCylinder1, value);
CheckAndMove(IO_Type.S2_StopCylinder1, value);
}
public void AllLineMove(IO_VALUE value, LineMoveInfo moveInfo = null)
......@@ -194,27 +193,27 @@ namespace OnlineStore.DeviceLibrary
{
S1LineStop();
}
if (value.Equals(IO_VALUE.HIGH))
{
S2LineRun();
}
else
{
S2LineStop();
}
//if (value.Equals(IO_VALUE.HIGH))
//{
// S2LineRun();
//}
//else
//{
// S2LineStop();
//}
}
public override void Reset()
{
if (IOValue(IO_Type.SuddenStop_BTN).Equals(IO_VALUE.HIGH) )
if (IOValue(IO_Type.SuddenStop_BTN).Equals(IO_VALUE.HIGH))
{
mainTimer.Enabled = false;
mainTimer.Enabled = false;
runStatus = RunStatus.Reset;
MoveInfo.NewMove(LineMoveType.StoreReset);
ReturnHome();
LineManager.packageLine.Reset();
LineManager.packageLine.Reset();
}
//else if (IOValue(IO_Type.AirCheck).Equals(IO_VALUE.LOW))
//{
......@@ -246,7 +245,7 @@ namespace OnlineStore.DeviceLibrary
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(10000));
AllLineMove(IO_VALUE.HIGH);
break;
case MoveStep.H02_LineRun:
case MoveStep.H02_LineRun:
MoveInfo.NextMoveStep(MoveStep.H03_UpoownDown);
LogUtil.info(Name + " 复位:停止线体,提升机下降");
......@@ -262,16 +261,16 @@ namespace OnlineStore.DeviceLibrary
LogUtil.info(Name + " 复位:中间提升机有料架,转动料架到S1左侧");
IOMove(IO_Type.M_LeftStopCylinder, IO_VALUE.HIGH);
IOMove(IO_Type.M_RightStopCylinder, IO_VALUE.HIGH);
IOMove(IO_Type.M_LineRun, IO_VALUE.HIGH);
CheckAndMove(IO_Type.S1_StopCylinder1, IO_VALUE.LOW);
IOMove(IO_Type.M_LineRun, IO_VALUE.HIGH);
CheckAndMove(IO_Type.S1_StopCylinder1, IO_VALUE.LOW);
CheckAndMove(IO_Type.S1_StopCylinder3, IO_VALUE.HIGH);
CheckAndMove(IO_Type.S1_StopCylinder4, IO_VALUE.HIGH);
S1LineRun(MoveInfo);
S1LineRun(MoveInfo);
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.S1_StopCheck1, IO_VALUE.HIGH));
}
else
{
LogUtil.info(Name + " 复位完成,");
MoveInfo.EndMove();
runStatus = RunStatus.Runing;
......@@ -279,14 +278,14 @@ namespace OnlineStore.DeviceLibrary
break;
case MoveStep.H04_MStopDown:
MoveInfo.NextMoveStep(MoveStep.H05_MShlefToLeft);
LogUtil.info(Name + " 复位:中间提升机有料架,等待料架到达S1左侧");
LogUtil.info(Name + " 复位:中间提升机有料架,等待料架到达S1左侧");
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.S1_StopCheck1, IO_VALUE.HIGH));
break;
case MoveStep.H05_MShlefToLeft:
MoveInfo.NextMoveStep(MoveStep.H06_SaveLeft);
S1_LeftShelfId = RFIDManager.ReadRFID(Config.M_Updown_Rfid, true).NumStr();
LogUtil.info(Name + " 复位:停止转动,记录左侧料架信息:"+LeftSName);
LogUtil.info(Name + " 复位:停止转动,记录左侧料架信息:" + LeftSName);
IOMove(IO_Type.M_LineRun, IO_VALUE.LOW);
S1LineStop(MoveInfo);
break;
......@@ -349,12 +348,12 @@ namespace OnlineStore.DeviceLibrary
LineManager.packageLine.StopMove();
}
private bool InProcess = false;
private bool InProcess = false;
private Stopwatch stopwatch = new Stopwatch();
public bool MoveStop = false;
protected void timersTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
if (runStatus >= RunStatus.HomeMoving )
if (runStatus >= RunStatus.HomeMoving)
{
LeftRobot.TimerProcess();
RightRobot.TimerProcess();
......@@ -389,16 +388,16 @@ namespace OnlineStore.DeviceLibrary
//RightRobot.TimerProcess();
if (MoveInfo.MoveType.Equals(LineMoveType.None))
{
WorkShelfCheck();
//WorkShelfCheck();
ShelfCheckPro();
}
else if (MoveInfo.MoveType.Equals(LineMoveType.LTransWork2Buf))
{
LTransWork2BuffProcess();
//LTransWork2BuffProcess();
}
else if (MoveInfo.MoveType.Equals(LineMoveType.LTransBuf2Work))
{
LTransBuff2WorkProcess();
//LTransBuff2WorkProcess();
}
else if (MoveInfo.MoveType.Equals(LineMoveType.LeftShelf))
{
......@@ -449,8 +448,8 @@ namespace OnlineStore.DeviceLibrary
}
finally { InProcess = false; }
}
private IO_VALUE LastResetValue = IO_VALUE.LOW;
public void IoCheckProcess()
......@@ -469,7 +468,7 @@ namespace OnlineStore.DeviceLibrary
bool result = StartRun();
if (result.Equals(false))
{
LogUtil.error(Name+"启动失败,等待下次启动!");
LogUtil.error(Name + "启动失败,等待下次启动!");
mainTimer.Enabled = true;
}
}
......@@ -480,7 +479,7 @@ namespace OnlineStore.DeviceLibrary
}
//判断急停
else if (runStatus >= RunStatus.HomeMoving)
{
{
//判断急停
if (IOValue(IO_Type.SuddenStop_BTN).Equals(IO_VALUE.LOW))
{
......@@ -515,8 +514,8 @@ namespace OnlineStore.DeviceLibrary
}
}
}
private DateTime preIoTimerOutTime = DateTime.Now;
private DateTime preIoTimerOutTime = DateTime.Now;
private void IOTimeOutProcess()
{
try
......@@ -528,7 +527,7 @@ namespace OnlineStore.DeviceLibrary
if (runStatus < RunStatus.Runing || isInSuddenDown)
{
return;
}
}
if (alarmType.Equals(AlarmType.IoSingleTimeOut) && MoveInfo.IsInWait == false)
{
LogUtil.info(Name + "之前有IO超时报警,清理报警:" + WarnMsg);
......@@ -552,15 +551,15 @@ namespace OnlineStore.DeviceLibrary
{
s1Info = S1_ShelfTask.ToStr();
}
string leftShelf = LeftUpdownRFID.Equals("") ? "" : " 左侧料架="+LeftUpdownRFID+" ";
string msg = MoveInfo.MoveType + " " + MoveInfo.MoveStep + " "+ leftShelf + "\r\n" +
"" + SOneMoveInfo.MoveType + " " + SOneMoveInfo.MoveStep + " \t" + AllTaskInfo.ToStr() + "\r\n"+
"S1工位(" +(S1IsReady()?"可放料":"不可放料")+"): " + LeftSName + " " + S1SName + " " + RightSName + "" + " " + s1Info+ "\r\n" +
// "" + LeftRobot.Name + ":" + LeftRobot.MoveInfo.MoveType + " " + LeftRobot.MoveInfo.MoveStep + " [" + LeftRobot.CurrPoint + "]["+LeftRobot.NeedShelf+"] " + LeftRobot.CurrTray.ToStr() + "" + "\r\n" +
//"" + RightRobot.Name + ":" + RightRobot.MoveInfo.MoveType + " " + RightRobot.MoveInfo.MoveStep + " [" + RightRobot.CurrPoint + "][" + RightRobot.NeedShelf + "] " + RightRobot.CurrTray.ToStr() + ""
string leftShelf = LeftUpdownRFID.Equals("") ? "" : " 左侧料架=" + LeftUpdownRFID + " ";
string msg = MoveInfo.MoveType + " " + MoveInfo.MoveStep + " " + leftShelf + "\r\n" +
"" + SOneMoveInfo.MoveType + " " + SOneMoveInfo.MoveStep + " \t" + AllTaskInfo.ToStr() + "\r\n" +
"S1工位(" + (S1IsReady() ? "可放料" : "不可放料") + "): " + LeftSName + " " + S1SName + " " + RightSName + "" + " " + s1Info + "\r\n" +
// "" + LeftRobot.Name + ":" + LeftRobot.MoveInfo.MoveType + " " + LeftRobot.MoveInfo.MoveStep + " [" + LeftRobot.CurrPoint + "]["+LeftRobot.NeedShelf+"] " + LeftRobot.CurrTray.ToStr() + "" + "\r\n" +
//"" + RightRobot.Name + ":" + RightRobot.MoveInfo.MoveType + " " + RightRobot.MoveInfo.MoveStep + " [" + RightRobot.CurrPoint + "][" + RightRobot.NeedShelf + "] " + RightRobot.CurrTray.ToStr() + ""
LeftRobot.GetRunInfo()+"\r\n" +
RightRobot.GetRunInfo() + "\r\n"
LeftRobot.GetRunInfo() + "\r\n" +
RightRobot.GetRunInfo() + "\r\n"
;
......@@ -569,7 +568,7 @@ namespace OnlineStore.DeviceLibrary
private void S1LineRun(LineMoveInfo moveInfo=null )
private void S1LineRun(LineMoveInfo moveInfo = null)
{
if (moveInfo != null)
{
......@@ -599,36 +598,36 @@ namespace OnlineStore.DeviceLibrary
CheckAndMove(IO_Type.S1_LineBackRun, IO_VALUE.LOW);
CheckAndMove(IO_Type.S1_LineRun, IO_VALUE.LOW);
}
private void S2LineRun(LineMoveInfo moveInfo = null)
{
if (moveInfo != null)
{
moveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.S2_LineBackRun, IO_VALUE.LOW));
moveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.S2_LineRun, IO_VALUE.HIGH));
}
CheckAndMove(IO_Type.S2_LineBackRun, IO_VALUE.LOW);
IOMove(IO_Type.S2_LineRun, IO_VALUE.HIGH);
}
private void S2BackRun(LineMoveInfo moveInfo = null)
{
if (moveInfo != null)
{
moveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.S2_LineRun, IO_VALUE.LOW));
moveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.S2_LineBackRun, IO_VALUE.HIGH));
}
CheckAndMove(IO_Type.S2_LineRun, IO_VALUE.LOW);
IOMove(IO_Type.S2_LineBackRun, IO_VALUE.HIGH);
}
private void S2LineStop(LineMoveInfo moveInfo = null)
{
if (moveInfo != null)
{
moveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.S2_LineBackRun, IO_VALUE.LOW));
moveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.S2_LineRun, IO_VALUE.LOW));
}
CheckAndMove(IO_Type.S2_LineBackRun, IO_VALUE.LOW);
CheckAndMove(IO_Type.S2_LineRun, IO_VALUE.LOW);
}
//private void S2LineRun(LineMoveInfo moveInfo = null)
//{
// if (moveInfo != null)
// {
// moveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.S2_LineBackRun, IO_VALUE.LOW));
// moveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.S2_LineRun, IO_VALUE.HIGH));
// }
// CheckAndMove(IO_Type.S2_LineBackRun, IO_VALUE.LOW);
// IOMove(IO_Type.S2_LineRun, IO_VALUE.HIGH);
//}
//private void S2BackRun(LineMoveInfo moveInfo = null)
//{
// if (moveInfo != null)
// {
// moveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.S2_LineRun, IO_VALUE.LOW));
// moveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.S2_LineBackRun, IO_VALUE.HIGH));
// }
// CheckAndMove(IO_Type.S2_LineRun, IO_VALUE.LOW);
// IOMove(IO_Type.S2_LineBackRun, IO_VALUE.HIGH);
//}
//private void S2LineStop(LineMoveInfo moveInfo = null)
//{
// if (moveInfo != null)
// {
// moveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.S2_LineBackRun, IO_VALUE.LOW));
// moveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.S2_LineRun, IO_VALUE.LOW));
// }
// CheckAndMove(IO_Type.S2_LineBackRun, IO_VALUE.LOW);
// CheckAndMove(IO_Type.S2_LineRun, IO_VALUE.LOW);
//}
}
}
\ No newline at end of file
......@@ -135,7 +135,6 @@ namespace OnlineStore.DeviceLibrary
IOValue(IO_Type.S1_StopCheck4).Equals(IO_VALUE.LOW) &&
CylinderIsOk(IO_Type.S1_TopCylinderUp, IO_Type.S1_TopCylinderDown) &&
IOValue(IO_Type.S2_StopCheck1).Equals(IO_VALUE.LOW) &&
IOValue(IO_Type.S2_StopCheck2).Equals(IO_VALUE.LOW) &&
CylinderIsOk(IO_Type.S2_TopCylinderUp, IO_Type.S2_TopCylinderDown) &&
IOManager.DOValue(IO_Type.S2_TopCylinderUp).Equals(IO_VALUE.LOW) && IOManager.DOValue(IO_Type.S2_TopCylinderDown).Equals(IO_VALUE.HIGH)
)
......@@ -239,7 +238,7 @@ namespace OnlineStore.DeviceLibrary
LogUtil.info("双层线_S1" + AllTaskInfo.ToStr() + "S1需要新料架【" + needNewShelf + "】,等待 LLow_StopCheck3");
//放一个C料架
SOneMoveInfo.NewMove(LineMoveType.S1Shelf, MoveStep.S1_C01_GetC);
SOneMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LLow_StopCheck3, IO_VALUE.HIGH));
SOneMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LLow_StopCheck2, IO_VALUE.HIGH));
SOneMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.M_LeftStopCheck, IO_VALUE.LOW));
SOneMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.M_RightStopCheck, IO_VALUE.LOW));
}
......@@ -248,7 +247,7 @@ namespace OnlineStore.DeviceLibrary
LogUtil.info("双层线_S1" + AllTaskInfo.ToStr() + "S1需要新料架【" + needNewShelf + "】,等待 LHigh_StopCheck3");
//放一个D料架
SOneMoveInfo.NewMove(LineMoveType.S1Shelf, MoveStep.S1_D10_GetD);
SOneMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LHigh_StopCheck3, IO_VALUE.HIGH));
SOneMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LHigh_StopCheck2, IO_VALUE.HIGH));
SOneMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.M_LeftStopCheck, IO_VALUE.LOW));
SOneMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.M_RightStopCheck, IO_VALUE.LOW));
}
......@@ -275,7 +274,7 @@ namespace OnlineStore.DeviceLibrary
S1Log(" 下层阻挡3下降, 链条转动,开始放大料架到左侧,阻挡1需要上升");
SOneMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(2500));
IOMove(IO_Type.LLow_StopCylinder3, IO_VALUE.HIGH, 3000);
IOMove(IO_Type.LLow_StopCylinder2, IO_VALUE.HIGH, 3000);
IOMove(IO_Type.M_LeftStopCylinder, IO_VALUE.HIGH);
IOMove(IO_Type.M_RightStopCylinder, IO_VALUE.HIGH);
......@@ -297,12 +296,12 @@ namespace OnlineStore.DeviceLibrary
}
else if (SOneMoveInfo.MoveStep.Equals(MoveStep.S1_C03_MStopDown))
{
IOMove(IO_Type.LLow_StopCylinder3, IO_VALUE.LOW);
IOMove(IO_Type.LLow_StopCylinder2, IO_VALUE.LOW);
SOneMoveInfo.NextMoveStep(MoveStep.S1_C04_DToLeft);
SOneMoveInfo.TimeOutSeconds = 20;
S1Log("等待料架到达左侧工位,S1阻挡1上升,S1正转");
IOMove(IO_Type.LLow_StopCylinder3, IO_VALUE.LOW);
IOMove(IO_Type.LLow_StopCylinder2, IO_VALUE.LOW);
CheckAndMove(IO_Type.S1_StopCylinder1, IO_VALUE.LOW);
CheckAndMove(IO_Type.S1_StopCylinder3, IO_VALUE.HIGH);
......@@ -347,7 +346,7 @@ namespace OnlineStore.DeviceLibrary
S1_StopMove(SOneMoveInfo, IO_VALUE.HIGH);
IOMove(IO_Type.S1_StopCylinder2, IO_VALUE.LOW);
IOMove(IO_Type.LLown_LineRun, IO_VALUE.LOW);
IOMove(IO_Type.LLow_StopCylinder3, IO_VALUE.LOW);
IOMove(IO_Type.LLow_StopCylinder2, IO_VALUE.LOW);
// IOMove(IO_Type.S1_LineRun, IO_VALUE.HIGH);
IOMove(IO_Type.M_LineRun, IO_VALUE.HIGH);
// SOneMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.S1_LineRun, IO_VALUE.HIGH));
......@@ -392,7 +391,7 @@ namespace OnlineStore.DeviceLibrary
if (!IsUseRightHigh)
{
S1Log(" 上层阻挡下降,上层链条转,中间链条转");
IOMove(IO_Type.LHigh_StopCylinder3, IO_VALUE.HIGH, 2000);
IOMove(IO_Type.LHigh_StopCylinder2, IO_VALUE.HIGH, 2000);
CheckAndMove(IO_Type.M_LeftStopCylinder, IO_VALUE.LOW);
CheckAndMove(IO_Type.M_RightStopCylinder, IO_VALUE.HIGH);
......@@ -546,7 +545,7 @@ namespace OnlineStore.DeviceLibrary
}
else if (SOneMoveInfo.MoveStep.Equals(MoveStep.S1_27_S1ShelfGo))
{
S2LineStop();
//S2LineStop();
IOMove(IO_Type.S1_StopCylinder2, IO_VALUE.LOW);
//IOMove(IO_Type.S2_LineRun, IO_VALUE.LOW);
string log = S1SName + "已离开,阻挡2上升 ,清空绑定信息";
......@@ -588,7 +587,7 @@ namespace OnlineStore.DeviceLibrary
S1_RightShelfId = S1_CurrShelfId;
S1_CurrShelfId = "";
// IOMove(IO_Type.S2_LineRun, IO_VALUE.LOW);
S2LineStop();
//S2LineStop();
IOMove(IO_Type.S1_StopCylinder2, IO_VALUE.LOW);
Start_LeftShelfToS1(MoveStep.S1_32_LeftToS1, " 左->S1切换 :" + S1SName + "到达右侧,记录料架号,清空S1信息,");
......@@ -638,7 +637,7 @@ namespace OnlineStore.DeviceLibrary
S1_CurrShelfId = "";
S2CanGetShelf = false;
SOneMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.S2_LineRun, IO_VALUE.LOW));
//SOneMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.S2_LineRun, IO_VALUE.LOW));
SOneMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.S2_StopCheck1, IO_VALUE.HIGH));
CheckAndMove(IO_Type.S1_StopCylinder4, IO_VALUE.LOW);
CheckAndMove(IO_Type.S1_StopCylinder2, IO_VALUE.HIGH);
......@@ -656,7 +655,7 @@ namespace OnlineStore.DeviceLibrary
CheckAndMove(IO_Type.S1_StopCylinder1, IO_VALUE.HIGH);
S1BackRun();
S2BackRun();
//S2BackRun();
SOneMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.S1_StopCheck2, IO_VALUE.HIGH));
}
......@@ -677,7 +676,7 @@ namespace OnlineStore.DeviceLibrary
SOneMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(100));
S1LineStop(SOneMoveInfo);
S2LineStop(SOneMoveInfo);
//S2LineStop(SOneMoveInfo);
SOneMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(300));
}
......@@ -957,7 +956,7 @@ namespace OnlineStore.DeviceLibrary
S2CanGetShelf = false;
}
CylinderMove(null, IO_Type.S1_TopCylinderUp, IO_Type.S1_TopCylinderDown);
SOneMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.S2_LineRun, IO_VALUE.LOW));
// SOneMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.S2_LineRun, IO_VALUE.LOW));
SOneMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.S2_StopCheck1, IO_VALUE.LOW));
SOneMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.S2_StopCylinder1, IO_VALUE.LOW));
}
......@@ -965,7 +964,7 @@ namespace OnlineStore.DeviceLibrary
private void Start_S1ShelfToRight(MoveStep nextStep, string movetype, bool ShelfIsCanGo = false)
{
SOneMoveInfo.NextMoveStep(nextStep);
S1Log(" " + movetype + ":" + S1SName + " 先到右侧,阻挡1上升,S1正转,S2正转");
S1Log(" " + movetype + ":" + S1SName + " 先到右侧,阻挡1上升,S1正转");
S2CanGetShelf = ShelfIsCanGo;
IOMove(IO_Type.S1_StopCylinder1, IO_VALUE.LOW);
IOMove(IO_Type.S1_StopCylinder2, IO_VALUE.HIGH);
......@@ -975,7 +974,7 @@ namespace OnlineStore.DeviceLibrary
}
CylinderMove(SOneMoveInfo, IO_Type.S1_TopCylinderUp, IO_Type.S1_TopCylinderDown);
S1LineRun();
S2LineRun();
//S2LineRun();
SOneMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.S1_StopCheck2, IO_VALUE.LOW));
SOneMoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.S2_StopCheck1, IO_VALUE.HIGH));
}
......
......@@ -23,262 +23,262 @@ namespace OnlineStore.DeviceLibrary
/// <summary>
/// 检查工作位料架
/// </summary>
private void WorkShelfCheck()
{
//private void WorkShelfCheck()
//{
if (IOValue(IO_Type.Left_Tranverse_Down_Sig1).Equals(IO_VALUE.HIGH) && IOValue(IO_Type.Left_Tranverse_Down_Sig2).Equals(IO_VALUE.HIGH) &&
IOValue(IO_Type.Left_Tranverse_BackRun).Equals(IO_VALUE.LOW) && IOValue(IO_Type.Left_Tranverse_Run).Equals(IO_VALUE.LOW) &&
(IOValue(IO_Type.LHigh_StopCheck1).Equals(IO_VALUE.LOW) || IOValue(IO_Type.LHigh_StopCheck2).Equals(IO_VALUE.LOW)) &&
IOValue(IO_Type.Left_Tranverse_Shelf_Sig).Equals(IO_VALUE.HIGH) && LeftProcess.Equals(false)
)
{
if (LineManager.checkWatch(leftWatch, 3000))
{
leftWatch.Stop();
//左侧上层需要放个料架
Task.Factory.StartNew(delegate
{
LeftProcess = true;
LogUtil.info("左侧双层线_" + "左上放料架离开横移");
IOMove(IO_Type.LHigh_LineRun, IO_VALUE.HIGH, 30000);
IOMove(IO_Type.Left_Tranverse_StopDown, IO_VALUE.HIGH, 3000);
if (WaitIo(IO_Type.LHigh_StopCheck1, IO_VALUE.HIGH, 30000, "左侧_上层放料架离开横移"))
{
IOMove(IO_Type.LHigh_LineRun, IO_VALUE.LOW);
}
LeftProcess = false;
});
}
}
else
{
leftWatch.Stop();
}
//左侧工作位有料架
if (IOValue(IO_Type.Left_Tranverse_Shelf_Sig).Equals(IO_VALUE.HIGH) && IOValue(IO_Type.LHigh_StopCheck1).Equals(IO_VALUE.HIGH))
{
if (IOValue(IO_Type.Left_Buf_Full_Shelf_Sig).Equals(IO_VALUE.LOW))
{
if (MoveInfo.MoveType.Equals(LineMoveType.None) && LineManager.checkWatch(leftFullWatch, 3000, true))
{
LogUtil.info("左侧双层线_" + "上层有料架,且工作位满 开始料架转移处理");
//开始料架转移处理
MoveInfo.NewMove(LineMoveType.LTransWork2Buf, MoveStep.SW2B_L1_GetShelf);
// if (IOValue(IO_Type.Left_Tranverse_Down_Sig1).Equals(IO_VALUE.HIGH) && IOValue(IO_Type.Left_Tranverse_Down_Sig2).Equals(IO_VALUE.HIGH) &&
// IOValue(IO_Type.Left_Tranverse_BackRun).Equals(IO_VALUE.LOW) && IOValue(IO_Type.Left_Tranverse_Run).Equals(IO_VALUE.LOW) &&
// (IOValue(IO_Type.LHigh_StopCheck1).Equals(IO_VALUE.LOW) || IOValue(IO_Type.LHigh_StopCheck2).Equals(IO_VALUE.LOW)) &&
// IOValue(IO_Type.Left_Tranverse_Shelf_Sig).Equals(IO_VALUE.HIGH) && LeftProcess.Equals(false)
// )
// {
// if (LineManager.checkWatch(leftWatch, 3000))
// {
// leftWatch.Stop();
// //左侧上层需要放个料架
// Task.Factory.StartNew(delegate
// {
// LeftProcess = true;
// LogUtil.info("左侧双层线_" + "左上放料架离开横移");
// IOMove(IO_Type.LHigh_LineRun, IO_VALUE.HIGH, 30000);
// IOMove(IO_Type.Left_Tranverse_StopDown, IO_VALUE.HIGH, 3000);
// if (WaitIo(IO_Type.LHigh_StopCheck1, IO_VALUE.HIGH, 30000, "左侧_上层放料架离开横移"))
// {
// IOMove(IO_Type.LHigh_LineRun, IO_VALUE.LOW);
// }
// LeftProcess = false;
// });
// }
// }
// else
// {
// leftWatch.Stop();
// }
// //左侧工作位有料架
// if (IOValue(IO_Type.Left_Tranverse_Shelf_Sig).Equals(IO_VALUE.HIGH) && IOValue(IO_Type.LHigh_StopCheck1).Equals(IO_VALUE.HIGH))
// {
// if (IOValue(IO_Type.Left_Buf_Full_Shelf_Sig).Equals(IO_VALUE.LOW))
// {
// if (MoveInfo.MoveType.Equals(LineMoveType.None) && LineManager.checkWatch(leftFullWatch, 3000, true))
// {
// LogUtil.info("左侧双层线_" + "上层有料架,且工作位满 开始料架转移处理");
// //开始料架转移处理
// MoveInfo.NewMove(LineMoveType.LTransWork2Buf, MoveStep.SW2B_L1_GetShelf);
}
}
else
{
leftFullWatch.Stop();
}
}
else
{
leftFullWatch.Stop();
}
// }
// }
// else
// {
// leftFullWatch.Stop();
// }
// }
// else
// {
// leftFullWatch.Stop();
// }
//左侧缓存位有料架,工作位无料架
if (IOValue(IO_Type.LHigh_StopCheck2).Equals(IO_VALUE.LOW))
{
if (IOValue(IO_Type.Left_Buf_Full_Shelf_Sig).Equals(IO_VALUE.HIGH))
{
if (MoveInfo.MoveType.Equals(LineMoveType.None) && LineManager.checkWatch(leftNeedWatch, 3000, true))
{
LogUtil.info("左侧双层线_" + "上层需要料架,且缓存右料架 开始料架转移处理");
//开始料架转移处理
MoveInfo.NewMove(LineMoveType.LTransBuf2Work, MoveStep.SB2W_L0_None);
// //左侧缓存位有料架,工作位无料架
// if (IOValue(IO_Type.LHigh_StopCheck2).Equals(IO_VALUE.LOW))
// {
// if (IOValue(IO_Type.Left_Buf_Full_Shelf_Sig).Equals(IO_VALUE.HIGH))
// {
// if (MoveInfo.MoveType.Equals(LineMoveType.None) && LineManager.checkWatch(leftNeedWatch, 3000, true))
// {
// LogUtil.info("左侧双层线_" + "上层需要料架,且缓存右料架 开始料架转移处理");
// //开始料架转移处理
// MoveInfo.NewMove(LineMoveType.LTransBuf2Work, MoveStep.SB2W_L0_None);
}
}
else
{
CheckAndMove(IO_Type.Left_Buf_Run, IO_VALUE.LOW);
IOMove(IO_Type.Left_Buf_BackRun, IO_VALUE.HIGH, 10000);
leftNeedWatch.Stop();
}
}
else
{
leftNeedWatch.Stop();
}
// }
// }
// else
// {
// CheckAndMove(IO_Type.Left_Buf_Run, IO_VALUE.LOW);
// IOMove(IO_Type.Left_Buf_BackRun, IO_VALUE.HIGH, 10000);
// leftNeedWatch.Stop();
// }
// }
// else
// {
// leftNeedWatch.Stop();
// }
}
//}
internal void LTransBuff2WorkProcess()
{
if (MoveInfo.IsInWait)
{
CheckWait(MoveInfo);
}
if (MoveInfo.IsInWait)
{
return;
}
//internal void LTransBuff2WorkProcess()
//{
// if (MoveInfo.IsInWait)
// {
// CheckWait(MoveInfo);
// }
// if (MoveInfo.IsInWait)
// {
// return;
// }
if (MoveInfo.MoveStep.Equals(MoveStep.SB2W_L0_None))
{
MoveInfo.NextMoveStep(MoveStep.SB2W_L1_GetShelf);
IOMove(IO_Type.Left_Buf_Out_StopDown, IO_VALUE.HIGH, 2000);
CheckAndMove(IO_Type.Left_Buf_Run, IO_VALUE.LOW);
CheckAndMove(IO_Type.Left_Buf_BackRun, IO_VALUE.HIGH);
CheckAndMove(IO_Type.Left_Tranverse_Down, IO_VALUE.HIGH);
CheckAndMove(IO_Type.Left_Tranverse_Up, IO_VALUE.LOW);
IOMove(IO_Type.Left_Buf_Near_StopDown, IO_VALUE.HIGH, 2000);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Down, IO_VALUE.HIGH));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Up, IO_VALUE.LOW));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Buf_Tranverse_Shelf_Sig, IO_VALUE.HIGH));
LogUtil.info(Name + MoveInfo.SLog + " :左侧缓存料架放到横移上");
}
else if (MoveInfo.MoveStep.Equals(MoveStep.SB2W_L1_GetShelf))
{
MoveInfo.NextMoveStep(MoveStep.SB2W_L2_Tranverse_Up);
CheckAndMove(IO_Type.Left_Tranverse_Down, IO_VALUE.LOW);
CheckAndMove(IO_Type.Left_Buf_BackRun, IO_VALUE.LOW);
IOMove(IO_Type.Left_Tranverse_Up, IO_VALUE.HIGH);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Down, IO_VALUE.LOW));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Up, IO_VALUE.HIGH));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Up_Sig1, IO_VALUE.HIGH));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Up_Sig2, IO_VALUE.HIGH));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Buf_Tranverse_Up_Sig1, IO_VALUE.HIGH));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Buf_Tranverse_Up_Sig2, IO_VALUE.HIGH));
LogUtil.info(Name + MoveInfo.SLog + " :左侧横移上升");
}
else if (MoveInfo.MoveStep.Equals(MoveStep.SB2W_L2_Tranverse_Up))
{
MoveInfo.NextMoveStep(MoveStep.SB2W_L3_Tranverse_Run);
LogUtil.info(Name + MoveInfo.SLog + " :左侧横移电机反传");
CheckAndMove(IO_Type.Left_Tranverse_Run, IO_VALUE.LOW);
IOMove(IO_Type.Left_Tranverse_BackRun, IO_VALUE.HIGH);
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_BackRun, IO_VALUE.HIGH));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Run, IO_VALUE.LOW));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_InPosition_Sig, IO_VALUE.HIGH));
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(2000));
}
else if (MoveInfo.MoveStep.Equals(MoveStep.SB2W_L3_Tranverse_Run))
{
MoveInfo.NextMoveStep(MoveStep.SB2W_L4_Shelf_To_Buf);
LogUtil.info(Name + MoveInfo.SLog + ":料架到达工作横移位置");
IOMove(IO_Type.Left_Tranverse_BackRun, IO_VALUE.LOW);
IOMove(IO_Type.Left_Tranverse_Up, IO_VALUE.LOW);
CheckAndMove(IO_Type.Left_Tranverse_Down, IO_VALUE.HIGH);
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_BackRun, IO_VALUE.LOW));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Up, IO_VALUE.LOW));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Down, IO_VALUE.HIGH));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Down_Sig1, IO_VALUE.HIGH));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Down_Sig2, IO_VALUE.HIGH));
}
else if (MoveInfo.MoveStep.Equals(MoveStep.SB2W_L4_Shelf_To_Buf))
{
MoveInfo.NextMoveStep(MoveStep.SB2W_L5_Tranverse_Down);
LogUtil.info(Name + MoveInfo.SLog + ":左侧横移下降");
CheckAndMove(IO_Type.Left_Buf_Far_StopDown, IO_VALUE.LOW);
IOMove(IO_Type.LHigh_LineRun, IO_VALUE.HIGH);
IOMove(IO_Type.Left_Tranverse_StopDown, IO_VALUE.HIGH,2000);
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LHigh_StopCheck1, IO_VALUE.HIGH));
// if (MoveInfo.MoveStep.Equals(MoveStep.SB2W_L0_None))
// {
// MoveInfo.NextMoveStep(MoveStep.SB2W_L1_GetShelf);
// IOMove(IO_Type.Left_Buf_Out_StopDown, IO_VALUE.HIGH, 2000);
// CheckAndMove(IO_Type.Left_Buf_Run, IO_VALUE.LOW);
// CheckAndMove(IO_Type.Left_Buf_BackRun, IO_VALUE.HIGH);
// CheckAndMove(IO_Type.Left_Tranverse_Down, IO_VALUE.HIGH);
// CheckAndMove(IO_Type.Left_Tranverse_Up, IO_VALUE.LOW);
// IOMove(IO_Type.Left_Buf_Near_StopDown, IO_VALUE.HIGH, 2000);
// MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
// MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Down, IO_VALUE.HIGH));
// MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Up, IO_VALUE.LOW));
// MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Buf_Tranverse_Shelf_Sig, IO_VALUE.HIGH));
// LogUtil.info(Name + MoveInfo.SLog + " :左侧缓存料架放到横移上");
// }
// else if (MoveInfo.MoveStep.Equals(MoveStep.SB2W_L1_GetShelf))
// {
// MoveInfo.NextMoveStep(MoveStep.SB2W_L2_Tranverse_Up);
// CheckAndMove(IO_Type.Left_Tranverse_Down, IO_VALUE.LOW);
// CheckAndMove(IO_Type.Left_Buf_BackRun, IO_VALUE.LOW);
// IOMove(IO_Type.Left_Tranverse_Up, IO_VALUE.HIGH);
// MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
// MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Down, IO_VALUE.LOW));
// MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Up, IO_VALUE.HIGH));
// MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Up_Sig1, IO_VALUE.HIGH));
// MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Up_Sig2, IO_VALUE.HIGH));
// MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Buf_Tranverse_Up_Sig1, IO_VALUE.HIGH));
// MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Buf_Tranverse_Up_Sig2, IO_VALUE.HIGH));
// LogUtil.info(Name + MoveInfo.SLog + " :左侧横移上升");
// }
// else if (MoveInfo.MoveStep.Equals(MoveStep.SB2W_L2_Tranverse_Up))
// {
// MoveInfo.NextMoveStep(MoveStep.SB2W_L3_Tranverse_Run);
// LogUtil.info(Name + MoveInfo.SLog + " :左侧横移电机反传");
// CheckAndMove(IO_Type.Left_Tranverse_Run, IO_VALUE.LOW);
// IOMove(IO_Type.Left_Tranverse_BackRun, IO_VALUE.HIGH);
// MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_BackRun, IO_VALUE.HIGH));
// MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Run, IO_VALUE.LOW));
// MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_InPosition_Sig, IO_VALUE.HIGH));
// MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(2000));
// }
// else if (MoveInfo.MoveStep.Equals(MoveStep.SB2W_L3_Tranverse_Run))
// {
// MoveInfo.NextMoveStep(MoveStep.SB2W_L4_Shelf_To_Buf);
// LogUtil.info(Name + MoveInfo.SLog + ":料架到达工作横移位置");
// IOMove(IO_Type.Left_Tranverse_BackRun, IO_VALUE.LOW);
// IOMove(IO_Type.Left_Tranverse_Up, IO_VALUE.LOW);
// CheckAndMove(IO_Type.Left_Tranverse_Down, IO_VALUE.HIGH);
// MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_BackRun, IO_VALUE.LOW));
// MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Up, IO_VALUE.LOW));
// MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Down, IO_VALUE.HIGH));
// MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Down_Sig1, IO_VALUE.HIGH));
// MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Down_Sig2, IO_VALUE.HIGH));
// }
// else if (MoveInfo.MoveStep.Equals(MoveStep.SB2W_L4_Shelf_To_Buf))
// {
// MoveInfo.NextMoveStep(MoveStep.SB2W_L5_Tranverse_Down);
// LogUtil.info(Name + MoveInfo.SLog + ":左侧横移下降");
// CheckAndMove(IO_Type.Left_Buf_Far_StopDown, IO_VALUE.LOW);
// IOMove(IO_Type.LHigh_LineRun, IO_VALUE.HIGH);
// IOMove(IO_Type.Left_Tranverse_StopDown, IO_VALUE.HIGH,2000);
// MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LHigh_StopCheck1, IO_VALUE.HIGH));
}
else if (MoveInfo.MoveStep.Equals(MoveStep.SB2W_L5_Tranverse_Down))
{
MoveInfo.NextMoveStep(MoveStep.SB2W_L6_Shelf_Leave_Buf);
LogUtil.info(Name + MoveInfo.SLog + ":料架离开左侧工作位横移");
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(10000));
}
else if (MoveInfo.MoveStep.Equals(MoveStep.SB2W_L6_Shelf_Leave_Buf))
{
MoveInfo.NextMoveStep(MoveStep.SB2W_L7_Tranverse_Finish);
CheckAndMove(IO_Type.LHigh_LineRun, IO_VALUE.LOW);
LogUtil.info(Name + MoveInfo.SLog + ":料架移到左侧工作位完成,停止链条");
MoveInfo.EndMove();
}
}
// }
// else if (MoveInfo.MoveStep.Equals(MoveStep.SB2W_L5_Tranverse_Down))
// {
// MoveInfo.NextMoveStep(MoveStep.SB2W_L6_Shelf_Leave_Buf);
// LogUtil.info(Name + MoveInfo.SLog + ":料架离开左侧工作位横移");
// MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(10000));
// }
// else if (MoveInfo.MoveStep.Equals(MoveStep.SB2W_L6_Shelf_Leave_Buf))
// {
// MoveInfo.NextMoveStep(MoveStep.SB2W_L7_Tranverse_Finish);
// CheckAndMove(IO_Type.LHigh_LineRun, IO_VALUE.LOW);
// LogUtil.info(Name + MoveInfo.SLog + ":料架移到左侧工作位完成,停止链条");
// MoveInfo.EndMove();
// }
//}
/// <summary>
/// 左侧工作位到缓存位
/// </summary>
internal void LTransWork2BuffProcess()
{
if (MoveInfo.IsInWait)
{
CheckWait(MoveInfo);
}
if (MoveInfo.IsInWait)
{
return;
}
//internal void LTransWork2BuffProcess()
//{
// if (MoveInfo.IsInWait)
// {
// CheckWait(MoveInfo);
// }
// if (MoveInfo.IsInWait)
// {
// return;
// }
if (MoveInfo.MoveStep.Equals(MoveStep.SW2B_L1_GetShelf))
{
MoveInfo.NextMoveStep(MoveStep.SW2B_L2_Tranverse_Up);
CheckAndMove(IO_Type.Left_Tranverse_Down, IO_VALUE.LOW);
IOMove(IO_Type.Left_Tranverse_Up, IO_VALUE.HIGH);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Down, IO_VALUE.LOW));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Up, IO_VALUE.HIGH));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Up_Sig1, IO_VALUE.HIGH));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Up_Sig2, IO_VALUE.HIGH));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Buf_Tranverse_Up_Sig1, IO_VALUE.HIGH));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Buf_Tranverse_Up_Sig2, IO_VALUE.HIGH));
LogUtil.info(Name + MoveInfo.SLog + " :左侧横移上升");
}
else if (MoveInfo.MoveStep.Equals(MoveStep.SW2B_L2_Tranverse_Up))
{
MoveInfo.NextMoveStep(MoveStep.SW2B_L3_Tranverse_Run);
LogUtil.info(Name + MoveInfo.SLog + " :左侧横移电机正传");
CheckAndMove(IO_Type.Left_Tranverse_BackRun, IO_VALUE.LOW);
IOMove(IO_Type.Left_Tranverse_Run, IO_VALUE.HIGH);
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_BackRun, IO_VALUE.LOW));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Run, IO_VALUE.HIGH));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Buf_Tranverse_InPosition_Sig, IO_VALUE.HIGH));
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(2000));
}
else if (MoveInfo.MoveStep.Equals(MoveStep.SW2B_L3_Tranverse_Run))
{
MoveInfo.NextMoveStep(MoveStep.SW2B_L4_Shelf_To_Buf);
LogUtil.info(Name + MoveInfo.SLog + ":料架到达缓存横移位置");
IOMove(IO_Type.Left_Tranverse_Run, IO_VALUE.LOW);
IOMove(IO_Type.Left_Tranverse_Up, IO_VALUE.LOW);
CheckAndMove(IO_Type.Left_Tranverse_Down, IO_VALUE.HIGH);
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Run, IO_VALUE.LOW));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Up, IO_VALUE.LOW));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Down, IO_VALUE.HIGH));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Buf_Tranverse_Down_Sig1, IO_VALUE.HIGH));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Buf_Tranverse_Down_Sig2, IO_VALUE.HIGH));
}
else if (MoveInfo.MoveStep.Equals(MoveStep.SW2B_L4_Shelf_To_Buf))
{
MoveInfo.NextMoveStep(MoveStep.SW2B_L5_Tranverse_Down);
if (IOValue(IO_Type.Left_Buf_Full_Shelf_Sig).Equals(IO_VALUE.LOW))
{
LogUtil.info(Name + MoveInfo.SLog + ":左侧横移下降");
CheckAndMove(IO_Type.Left_Buf_Far_StopDown, IO_VALUE.LOW);
CheckAndMove(IO_Type.Left_Buf_BackRun, IO_VALUE.LOW);
IOMove(IO_Type.Left_Buf_Run, IO_VALUE.HIGH);
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Buf_Full_Shelf_Sig, IO_VALUE.HIGH));
}
else
{
LogUtil.error(Name + MoveInfo.SLog + " :左侧缓存已满,无法将料架运离横移,结束处理 ");
MoveInfo.EndMove();
}
}
else if (MoveInfo.MoveStep.Equals(MoveStep.SW2B_L5_Tranverse_Down))
{
MoveInfo.NextMoveStep(MoveStep.SW2B_L6_Shelf_Leave_Buf);
LogUtil.info(Name + MoveInfo.SLog + ":料架离开左侧缓存横移");
IOMove(IO_Type.Left_Buf_Far_StopDown, IO_VALUE.HIGH, 5000);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(10000));
}
else if (MoveInfo.MoveStep.Equals(MoveStep.SW2B_L6_Shelf_Leave_Buf))
{
MoveInfo.NextMoveStep(MoveStep.SW2B_L7_Tranverse_Finish);
CheckAndMove(IO_Type.Left_Buf_BackRun, IO_VALUE.LOW);
CheckAndMove(IO_Type.Left_Buf_Run, IO_VALUE.LOW);
LogUtil.info(Name + MoveInfo.SLog + ":料架移到左侧缓存完成,停止链条");
MoveInfo.EndMove();
}
}
// if (MoveInfo.MoveStep.Equals(MoveStep.SW2B_L1_GetShelf))
// {
// MoveInfo.NextMoveStep(MoveStep.SW2B_L2_Tranverse_Up);
// CheckAndMove(IO_Type.Left_Tranverse_Down, IO_VALUE.LOW);
// IOMove(IO_Type.Left_Tranverse_Up, IO_VALUE.HIGH);
// MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
// MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Down, IO_VALUE.LOW));
// MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Up, IO_VALUE.HIGH));
// MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Up_Sig1, IO_VALUE.HIGH));
// MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Up_Sig2, IO_VALUE.HIGH));
// MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Buf_Tranverse_Up_Sig1, IO_VALUE.HIGH));
// MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Buf_Tranverse_Up_Sig2, IO_VALUE.HIGH));
// LogUtil.info(Name + MoveInfo.SLog + " :左侧横移上升");
// }
// else if (MoveInfo.MoveStep.Equals(MoveStep.SW2B_L2_Tranverse_Up))
// {
// MoveInfo.NextMoveStep(MoveStep.SW2B_L3_Tranverse_Run);
// LogUtil.info(Name + MoveInfo.SLog + " :左侧横移电机正传");
// CheckAndMove(IO_Type.Left_Tranverse_BackRun, IO_VALUE.LOW);
// IOMove(IO_Type.Left_Tranverse_Run, IO_VALUE.HIGH);
// MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_BackRun, IO_VALUE.LOW));
// MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Run, IO_VALUE.HIGH));
// MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Buf_Tranverse_InPosition_Sig, IO_VALUE.HIGH));
// MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(2000));
// }
// else if (MoveInfo.MoveStep.Equals(MoveStep.SW2B_L3_Tranverse_Run))
// {
// MoveInfo.NextMoveStep(MoveStep.SW2B_L4_Shelf_To_Buf);
// LogUtil.info(Name + MoveInfo.SLog + ":料架到达缓存横移位置");
// IOMove(IO_Type.Left_Tranverse_Run, IO_VALUE.LOW);
// IOMove(IO_Type.Left_Tranverse_Up, IO_VALUE.LOW);
// CheckAndMove(IO_Type.Left_Tranverse_Down, IO_VALUE.HIGH);
// MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Run, IO_VALUE.LOW));
// MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Up, IO_VALUE.LOW));
// MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Tranverse_Down, IO_VALUE.HIGH));
// MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Buf_Tranverse_Down_Sig1, IO_VALUE.HIGH));
// MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Buf_Tranverse_Down_Sig2, IO_VALUE.HIGH));
// }
// else if (MoveInfo.MoveStep.Equals(MoveStep.SW2B_L4_Shelf_To_Buf))
// {
// MoveInfo.NextMoveStep(MoveStep.SW2B_L5_Tranverse_Down);
// if (IOValue(IO_Type.Left_Buf_Full_Shelf_Sig).Equals(IO_VALUE.LOW))
// {
// LogUtil.info(Name + MoveInfo.SLog + ":左侧横移下降");
// CheckAndMove(IO_Type.Left_Buf_Far_StopDown, IO_VALUE.LOW);
// CheckAndMove(IO_Type.Left_Buf_BackRun, IO_VALUE.LOW);
// IOMove(IO_Type.Left_Buf_Run, IO_VALUE.HIGH);
// MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Left_Buf_Full_Shelf_Sig, IO_VALUE.HIGH));
// }
// else
// {
// LogUtil.error(Name + MoveInfo.SLog + " :左侧缓存已满,无法将料架运离横移,结束处理 ");
// MoveInfo.EndMove();
// }
// }
// else if (MoveInfo.MoveStep.Equals(MoveStep.SW2B_L5_Tranverse_Down))
// {
// MoveInfo.NextMoveStep(MoveStep.SW2B_L6_Shelf_Leave_Buf);
// LogUtil.info(Name + MoveInfo.SLog + ":料架离开左侧缓存横移");
// IOMove(IO_Type.Left_Buf_Far_StopDown, IO_VALUE.HIGH, 5000);
// MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(10000));
// }
// else if (MoveInfo.MoveStep.Equals(MoveStep.SW2B_L6_Shelf_Leave_Buf))
// {
// MoveInfo.NextMoveStep(MoveStep.SW2B_L7_Tranverse_Finish);
// CheckAndMove(IO_Type.Left_Buf_BackRun, IO_VALUE.LOW);
// CheckAndMove(IO_Type.Left_Buf_Run, IO_VALUE.LOW);
// LogUtil.info(Name + MoveInfo.SLog + ":料架移到左侧缓存完成,停止链条");
// MoveInfo.EndMove();
// }
//}
#endregion
......
......@@ -29,9 +29,9 @@ namespace OnlineStore.DeviceLibrary
//料架满
}
if (IOValue(IO_Type.LHigh_StopCheck3).Equals(IO_VALUE.LOW) &&
IOValue(IO_Type.LHigh_StopCylinder3).Equals(IO_VALUE.LOW) &&
IOValue(IO_Type.LHigh_StopCheck2).Equals(IO_VALUE.HIGH) &&
if (IOValue(IO_Type.LHigh_StopCheck2).Equals(IO_VALUE.LOW) &&
IOValue(IO_Type.LHigh_StopCylinder2).Equals(IO_VALUE.LOW) &&
IOValue(IO_Type.LHigh_StopCheck1).Equals(IO_VALUE.HIGH) &&
IOValue(IO_Type.LHigh_LineRun).Equals(IO_VALUE.LOW) && HighProcess.Equals(false)
)
{
......@@ -43,10 +43,10 @@ namespace OnlineStore.DeviceLibrary
Task.Factory.StartNew(delegate
{
HighProcess = true;
LogUtil.info("左侧双层线_" + "左上层放料架到阻挡3");
LogUtil.info("左侧双层线_" + "左上层放料架到阻挡2");
IOMove(IO_Type.LHigh_LineRun, IO_VALUE.HIGH, 30000);
IOMove(IO_Type.LHigh_StopCylinder2, IO_VALUE.HIGH, 3000);
if (WaitIo(IO_Type.LHigh_StopCheck3, IO_VALUE.HIGH, 30000, "左侧_上层放料架到阻挡3"))
IOMove(IO_Type.LHigh_StopCylinder1, IO_VALUE.HIGH, 3000);
if (WaitIo(IO_Type.LHigh_StopCheck2, IO_VALUE.HIGH, 30000, "左侧_上层放料架到阻挡2"))
{
IOMove(IO_Type.LHigh_LineRun, IO_VALUE.LOW);
}
......@@ -60,10 +60,10 @@ namespace OnlineStore.DeviceLibrary
}
if (IOValue(IO_Type.LLow_StopCheck3).Equals(IO_VALUE.LOW) &&
IOValue(IO_Type.LLow_StopCylinder3).Equals(IO_VALUE.LOW) &&
IOValue(IO_Type.LLow_StopCheck2).Equals(IO_VALUE.HIGH) &&
IOValue(IO_Type.LLown_LineRun).Equals(IO_VALUE.LOW) && LowProcess.Equals(false))
if (IOValue(IO_Type.LLow_StopCheck2).Equals(IO_VALUE.LOW) &&
IOValue(IO_Type.LLow_StopCheck1).Equals(IO_VALUE.HIGH) &&
IOValue(IO_Type.LLow_StopCylinder2).Equals(IO_VALUE.LOW) &&
IOValue(IO_Type.LLown_LineRun).Equals(IO_VALUE.LOW) && LowProcess.Equals(false))
{
bool isUseLowShelf = (SOneMoveInfo.MoveStep >= MoveStep.S1_C02_MDown && SOneMoveInfo.MoveStep <= MoveStep.S1_C05_CheckS1);
if (!isUseLowShelf && LineManager.checkWatch(lowWatch, 3000))
......@@ -72,10 +72,10 @@ namespace OnlineStore.DeviceLibrary
Task.Factory.StartNew(delegate
{
LowProcess = true;
LogUtil.info("左侧双层线_" + "左下层放料架到阻挡3");
LogUtil.info("左侧双层线_" + "左下层放料架到阻挡2");
IOMove(IO_Type.LLown_LineRun, IO_VALUE.HIGH, 30000);
IOMove(IO_Type.LLow_StopCylinder2, IO_VALUE.HIGH, 3000);
if (WaitIo(IO_Type.LLow_StopCheck3, IO_VALUE.HIGH, 30000, "左侧_下层放料架到阻挡3"))
IOMove(IO_Type.LLow_StopCylinder1, IO_VALUE.HIGH, 3000);
if (WaitIo(IO_Type.LLow_StopCheck2, IO_VALUE.HIGH, 30000, "左侧_下层放料架到阻挡2"))
{
IOMove(IO_Type.LLown_LineRun, IO_VALUE.LOW);
}
......@@ -98,11 +98,11 @@ namespace OnlineStore.DeviceLibrary
LeftUpdownRFID = RFIDManager.ReadRFID(Config.L_Updown_Rfid, false).NumStr();
bool needProces = false;
//等待可放料架
if (LeftUpdownRFID.StartsWith(Static_String.SmallShelf_RFID_Prefix) && IOValue(IO_Type.LHigh_StopCheck1).Equals(IO_VALUE.LOW))
if (LeftUpdownRFID.StartsWith(Static_String.SmallShelf_RFID_Prefix) && IOValue(IO_Type.LHigh_FullCheck).Equals(IO_VALUE.LOW))
{
needProces = true;
}
else if (LeftUpdownRFID.StartsWith(Static_String.BigShelf_RFID_Prefix) && IOValue(IO_Type.LLow_StopCheck1).Equals(IO_VALUE.LOW))
else if (LeftUpdownRFID.StartsWith(Static_String.BigShelf_RFID_Prefix) && IOValue(IO_Type.LLow_FullCheck).Equals(IO_VALUE.LOW))
{
needProces = true;
}
......@@ -167,13 +167,13 @@ namespace OnlineStore.DeviceLibrary
//等待可放料架
if (LeftUpdownRFID.StartsWith(Static_String.SmallShelf_RFID_Prefix))
{
LogUtil.info(Name + MoveInfo.SLog + " :左侧新料架=" + LeftUpdownRFID + ",等待上层 LHigh_StopCheck1无信号");
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LHigh_StopCheck1, IO_VALUE.LOW));
LogUtil.info(Name + MoveInfo.SLog + " :左侧新料架=" + LeftUpdownRFID + ",等待上层 LHigh_FullCheck无信号");
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LHigh_FullCheck, IO_VALUE.LOW));
}
else if (LeftUpdownRFID.StartsWith(Static_String.BigShelf_RFID_Prefix))
{
LogUtil.info(Name + MoveInfo.SLog + " :左侧新料架=" + LeftUpdownRFID + ",等待下层 LLow_StopCheck1无信号");
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LLow_StopCheck1, IO_VALUE.LOW));
LogUtil.info(Name + MoveInfo.SLog + " :左侧新料架=" + LeftUpdownRFID + ",等待下层 LLow_FullCheck无信号");
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.LLow_FullCheck, IO_VALUE.LOW));
}
else
{
......
......@@ -27,32 +27,32 @@ namespace OnlineStore.DeviceLibrary
public static string updateDeviceAlarmMsg(List<AlarmMsg> msgList)
{
string msg = "";
try
{
Dictionary<string, string> paramMap = new Dictionary<string, string>();
string msgListStr = JsonHelper.SerializeObject(msgList);
paramMap.Add("deviceAlarmList", msgListStr);
string server = GetAddr(Addr_updateDeviceAlarmMsg, paramMap);
DateTime startTime = DateTime.Now;
string resultStr = HttpHelper.Post(server, "", 2000);
LogUtil.debug("updateDeviceAlarmMsg " + FormUtil.GetSpanStr(DateTime.Now - startTime) + " 【" + server + "】【" + resultStr + "】");
RfidData data = JsonHelper.DeserializeJsonToObject<RfidData>(resultStr);
if (data == null)
{
return msg = " updateDeviceAlarmMsg 没有收到服务器反馈";
}
else if (data.code.Equals(0).Equals(false))
{
return msg = " updateDeviceAlarmMsg 【" + server + "】【" + resultStr + "】" + data.msg;
}
return "";
}
catch (Exception ex)
{
LogUtil.error(" updateDeviceAlarmMsg Error: " + ex.ToString());
}
//try
//{
// Dictionary<string, string> paramMap = new Dictionary<string, string>();
// string msgListStr = JsonHelper.SerializeObject(msgList);
// paramMap.Add("deviceAlarmList", msgListStr);
// string server = GetAddr(Addr_updateDeviceAlarmMsg, paramMap);
// DateTime startTime = DateTime.Now;
// string resultStr = HttpHelper.Post(server, "", 2000);
// LogUtil.debug("updateDeviceAlarmMsg " + FormUtil.GetSpanStr(DateTime.Now - startTime) + " 【" + server + "】【" + resultStr + "】");
// RfidData data = JsonHelper.DeserializeJsonToObject<RfidData>(resultStr);
// if (data == null)
// {
// return msg = " updateDeviceAlarmMsg 没有收到服务器反馈";
// }
// else if (data.code.Equals(0).Equals(false))
// {
// return msg = " updateDeviceAlarmMsg 【" + server + "】【" + resultStr + "】" + data.msg;
// }
// return "";
//}
//catch (Exception ex)
//{
// LogUtil.error(" updateDeviceAlarmMsg Error: " + ex.ToString());
//}
return msg;
}
private static string GetAddr(string addr, Dictionary<string, string> paramsMap)
......

using Asa.RFID;
using OnlineStore.Common;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace OnlineStore.DeviceLibrary
{
public class RFIDManager
{
private static ReadAll readAll = new ReadAll("TheRFID");
private static bool IsOpen = false;
private static ConcurrentDictionary<string, string> LastRfidMap = new ConcurrentDictionary<string, string>();
public static void Open(string[] iparray)
{
if (IsOpen)
{
return;
}
try
{
// readAll.Received += ReadAll_Received;
// readAll.Log += ReadAll_Log;
readAll.Start();
IsOpen = true;
}
catch (Exception ex)
{
LogUtil.error("Open 出错:" + ex.ToString());
}
}
private static void ReadAll_Log(string ip, string log)
{
LogUtil.LOGGER.Info("RFID : [" + ip + "] " + log);
}
public static RFIDData ReadRFID(string ip, bool isClear = false)
{
try
{
if (String.IsNullOrEmpty(ip).Equals(false))
{
if (isClear)
{
readAll.Clear(ip);
}
Thread.Sleep(1000);
string outValue = readAll.Read(ip);
if (outValue.Equals("000"))
{
// LogUtil.error("ReadRFID[" + ip + "]=" + outValue);
}
RFIDData data = new RFIDData(outValue);
return data;
}
}
catch (Exception ex)
{
LogUtil.error("ReadRFID[" + ip + "] [" + isClear + "] 出错:" + ex.ToString());
}
return new RFIDData();
}
public static void Close()
{
try
{
readAll.Stop();
}
catch (Exception ex)
{
LogUtil.error("关闭RFID出错:" + ex.ToString());
}
}
}
public class RFIDData
{
public string StrData = "";
public RFIDData(string data="00")
{
if (String.IsNullOrEmpty(data))
{
data = "00";
}
this.StrData = data;
}
public string NumStr()
{
return StrData;
}
internal static bool IsRealRfid(string shelfRfid)
{
//判断料架号是否是真实的料架号
if (shelfRfid.StartsWith("C") || shelfRfid.StartsWith("D"))
{
int num = -1;
try
{
num = Convert.ToInt32(shelfRfid.Substring(1, shelfRfid.Length - 1));
}
catch (Exception ex)
{
}
if (num > 0)
{
return true;
}
}
return false;
}
}
}

using Asa.RFID;
using Asa.RFID;
using OnlineStore.Common;
using System;
using System.Collections.Concurrent;
......@@ -8,16 +7,21 @@ using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace OnlineStore.DeviceLibrary
{
public class RFIDManager
{
private static ReadAll readAll = new ReadAll("TheRFID");
private static Asa.RFID.ReadAll read;
private static bool IsOpen = false;
private static ConcurrentDictionary<string, string> LastRfidMap = new ConcurrentDictionary<string, string>();
public static void Open(string[] iparray)
public static bool IsAuto = false;
/// <summary>
/// 是否连接
/// </summary>
public static bool IsConnected { get; set; } = false;
private static Dictionary<string, string> LastRfidMap = new Dictionary<string, string>();
public static void Open(string[] ip)
{
if (IsOpen)
{
......@@ -25,9 +29,9 @@ namespace OnlineStore.DeviceLibrary
}
try
{
// readAll.Received += ReadAll_Received;
// readAll.Log += ReadAll_Log;
readAll.Start();
read = new ReadAll("TheRFID");
read.Received += Read_Received;
read.Start(12001);
IsOpen = true;
}
catch (Exception ex)
......@@ -35,14 +39,40 @@ namespace OnlineStore.DeviceLibrary
LogUtil.error("Open 出错:" + ex.ToString());
}
}
private static string lastStr = "";
private static void Read_Received(string ip, string id)
{
try
{
if(LastRfidMap.ContainsKey(ip))
{
LastRfidMap[ip] = id;
}
else
{
LastRfidMap.Add(ip,id);
}
}
catch (ObjectDisposedException ex)
{
//程序刚退出,又回传数据
}
}
private static void ReadAll_Log(string ip, string log)
{
LogUtil.LOGGER.Info("RFID : [" + ip + "] " + log);
string str = "RFID : [" + ip + "] " + log;
if (lastStr.Equals(str))
{
return;
}
LogUtil.info(str);
lastStr = str;
}
public static RFIDData ReadRFID(string ip, bool isClear = false)
public static RFIDData ReadRFID(string ip,bool isClear= true)
{
try
{
......@@ -50,15 +80,13 @@ namespace OnlineStore.DeviceLibrary
{
if (isClear)
{
readAll.Clear(ip);
}
Thread.Sleep(1000);
string outValue = readAll.Read(ip);
if (outValue.Equals("000"))
{
// LogUtil.error("ReadRFID[" + ip + "]=" + outValue);
read.Clear(ip);
}
Thread.Sleep(100);
string outValue = read.Read(ip);
RFIDData data = new RFIDData(outValue);
return data;
}
}
......@@ -74,7 +102,7 @@ namespace OnlineStore.DeviceLibrary
{
try
{
readAll.Stop();
read.Stop();
}
catch (Exception ex)
{
......@@ -86,7 +114,7 @@ namespace OnlineStore.DeviceLibrary
public class RFIDData
{
public string StrData = "";
public RFIDData(string data="00")
public RFIDData(string data = "00")
{
if (String.IsNullOrEmpty(data))
{
......@@ -94,29 +122,29 @@ namespace OnlineStore.DeviceLibrary
}
this.StrData = data;
}
public string NumStr()
{
return StrData;
}
internal static bool IsRealRfid(string shelfRfid)
{
{
//判断料架号是否是真实的料架号
if (shelfRfid.StartsWith("C") || shelfRfid.StartsWith("D"))
{
int num = -1;
try
{
num = Convert.ToInt32(shelfRfid.Substring(1, shelfRfid.Length - 1));
num = Convert.ToInt32(shelfRfid.Substring(1, shelfRfid.Length - 1));
}
catch (Exception ex)
{
{
}
if (num > 0)
{
return true;
}
}
}
return false;
}
......
......@@ -55,8 +55,8 @@ namespace OnlineStore.DeviceLibrary
FINISH_LEAVE
}
public StepInfo<AGV_ENTER_A3_STEP> agvA3Step = new StepInfo<AGV_ENTER_A3_STEP>(AGV_ENTER_A3_STEP.NONE);
public StepInfo<AGV_LEAVE_A4_STEP> agvA4Step = new StepInfo<AGV_LEAVE_A4_STEP>(AGV_LEAVE_A4_STEP.NONE);
// public StepInfo<AGV_ENTER_A3_STEP> agvA3Step = new StepInfo<AGV_ENTER_A3_STEP>(AGV_ENTER_A3_STEP.NONE);
//public StepInfo<AGV_LEAVE_A4_STEP> agvA4Step = new StepInfo<AGV_LEAVE_A4_STEP>(AGV_LEAVE_A4_STEP.NONE);
/// <summary>
/// A4料架情况
/// </summary>
......@@ -64,194 +64,194 @@ namespace OnlineStore.DeviceLibrary
/// <summary>
/// AGV进入处理
/// </summary>
private void ProcessA3Agv()
{
if (agvA3Step.IsStep(AGV_ENTER_A3_STEP.NONE))
{
//检测左侧入口IO,是否可继续进入料架
if (IOValue(IO_Type.Pkg_Stop_Check1).Equals(IO_VALUE.LOW))
{
agvA3Step.Msg = "料架未满,可以进入";
agvClient.SetStatus("A3", "", "", Asa.ClientAction.NeedEnter);
}
else
{
//已经满了
agvA3Step.Msg = "料架已满,不允许进入";
agvA3Step.ToNextStep(AGV_ENTER_A3_STEP.NONE);
agvClient.SetStatus("A3", "", "", Asa.ClientAction.None);
}
}
else if (agvA3Step.IsStep(AGV_ENTER_A3_STEP.START_ENTER))
{
if (IOValue(IO_Type.Pkg_Stop_Check1).Equals(IO_VALUE.LOW))
{
agvA3Step.Msg = "收到 Agv 到达包装线A3点, 线体未满,开启链条1和2 ";
IOMove(IO_Type.Pkg_Line1_Forward, IO_VALUE.HIGH);
IOMove(IO_Type.Pkg_Line2_Forward, IO_VALUE.HIGH);
agvA3Step.ToNextStep(AGV_ENTER_A3_STEP.WAIT_ENTER_FINISH);
}
}
else if (agvA3Step.IsStep(AGV_ENTER_A3_STEP.WAIT_ENTER_FINISH))
{
bool enterFinished = IOValue(IO_Type.Pkg_In_Check).Equals(IO_VALUE.HIGH);
if (enterFinished)
{
agvA3Step.Msg = "Agv 料架进入包装线A3点完成, 3秒后允许继续进入 ";
agvClient.SetStatus("A3", "", "", Asa.ClientAction.FinishEnter);
agvA3Step.ToNextStep(AGV_ENTER_A3_STEP.FINISH_ENTER);
agvA3Step.AddTimeWait(3000);
}
else
{
bool timeOut = agvA3Step.IsTimeOut(20000);
if (timeOut)
{
agvA3Step.Msg = "Agv 料架进入包装线A3点20秒内未检测到入口信号,超时结束 ";
agvClient.SetStatus("A3", "", "", Asa.ClientAction.FinishEnter);
agvA3Step.ToNextStep(AGV_ENTER_A3_STEP.FINISH_ENTER);
agvA3Step.AddTimeWait(3000);
}
//private void ProcessA3Agv()
//{
// if (agvA3Step.IsStep(AGV_ENTER_A3_STEP.NONE))
// {
// //检测左侧入口IO,是否可继续进入料架
// if (IOValue(IO_Type.Pkg_Stop_Check1).Equals(IO_VALUE.LOW))
// {
// agvA3Step.Msg = "料架未满,可以进入";
// agvClient.SetStatus("A3", "", "", Asa.ClientAction.NeedEnter);
// }
// else
// {
// //已经满了
// agvA3Step.Msg = "料架已满,不允许进入";
// agvA3Step.ToNextStep(AGV_ENTER_A3_STEP.NONE);
// agvClient.SetStatus("A3", "", "", Asa.ClientAction.None);
// }
// }
// else if (agvA3Step.IsStep(AGV_ENTER_A3_STEP.START_ENTER))
// {
// if (IOValue(IO_Type.Pkg_Stop_Check1).Equals(IO_VALUE.LOW))
// {
// agvA3Step.Msg = "收到 Agv 到达包装线A3点, 线体未满,开启链条1和2 ";
// IOMove(IO_Type.Pkg_Line1_Forward, IO_VALUE.HIGH);
// IOMove(IO_Type.Pkg_Line2_Forward, IO_VALUE.HIGH);
// agvA3Step.ToNextStep(AGV_ENTER_A3_STEP.WAIT_ENTER_FINISH);
// }
// }
// else if (agvA3Step.IsStep(AGV_ENTER_A3_STEP.WAIT_ENTER_FINISH))
// {
// bool enterFinished = IOValue(IO_Type.Pkg_In_Check).Equals(IO_VALUE.HIGH);
// if (enterFinished)
// {
// agvA3Step.Msg = "Agv 料架进入包装线A3点完成, 3秒后允许继续进入 ";
// agvClient.SetStatus("A3", "", "", Asa.ClientAction.FinishEnter);
// agvA3Step.ToNextStep(AGV_ENTER_A3_STEP.FINISH_ENTER);
// agvA3Step.AddTimeWait(3000);
// }
// else
// {
// bool timeOut = agvA3Step.IsTimeOut(20000);
// if (timeOut)
// {
// agvA3Step.Msg = "Agv 料架进入包装线A3点20秒内未检测到入口信号,超时结束 ";
// agvClient.SetStatus("A3", "", "", Asa.ClientAction.FinishEnter);
// agvA3Step.ToNextStep(AGV_ENTER_A3_STEP.FINISH_ENTER);
// agvA3Step.AddTimeWait(3000);
// }
}
}
else if (agvA3Step.IsStep(AGV_ENTER_A3_STEP.FINISH_ENTER))
{
if (agvA3Step.IsFinished())
{
agvA3Step.ToNextStep(AGV_ENTER_A3_STEP.NONE);
}
}
}
// }
// }
// else if (agvA3Step.IsStep(AGV_ENTER_A3_STEP.FINISH_ENTER))
// {
// if (agvA3Step.IsFinished())
// {
// agvA3Step.ToNextStep(AGV_ENTER_A3_STEP.NONE);
// }
// }
//}
/// <summary>
/// AGV送出处理
/// </summary>
private void ProcessA4Agv()
{
if (agvA4Step.IsStep(AGV_LEAVE_A4_STEP.NONE))
{
//检测右侧IO,是否有料架要出/入(需要保留2个料架)
bool hasEmptyShelf = IOValue(IO_Type.Pkg_Out_Stop_Check).Equals(IO_VALUE.HIGH);
bool has3EmptyShelf = IOValue(IO_Type.Pkg_Empty_Shelf_Check).Equals(IO_VALUE.HIGH);
bool hasMoreThan3Shelf = IOValue(IO_Type.Pkg_Rotot_Forbidden_Check).Equals(IO_VALUE.HIGH);
if (hasEmptyShelf)
{
A4_Shelf_Exist = true;
if (has3EmptyShelf && hasMoreThan3Shelf)
{
//出口已经满了,影响机器人工作了,优先级变高
agvA4Step.Msg = "包装线出口料架大于等于3个,必须尽快拉走一个";
agvClient.SetStatus("A4", "", "00", Asa.ClientAction.NeedLeave, Asa.ClientLevel.High);
}else if (has3EmptyShelf)
{
agvA4Step.Msg = "包装线出口料架大于2个,需要拉走一个";
agvClient.SetStatus("A4", "", "00", Asa.ClientAction.NeedLeave, Asa.ClientLevel.Middle);
}
else
{
agvA4Step.Msg = "包装线出口料架小于2个,低优先级";
agvClient.SetStatus("A4", "", "00", Asa.ClientAction.NeedLeave, Asa.ClientLevel.Low);
}
}
else
{
if (has3EmptyShelf || hasMoreThan3Shelf)
{
agvA4Step.Msg = "包装线出口料架信号未检测到,但已有2料架信号,转动链条2, 3";
IOMove(IO_Type.Pkg_Line3_Forward, IO_VALUE.HIGH);
IOMove(IO_Type.Pkg_Line2_Forward, IO_VALUE.HIGH);
agvA4Step.ToNextStep(AGV_LEAVE_A4_STEP.WAIT_TO_EXIT);
agvA4Step.AddIoWait(IO_Type.Pkg_Rotot_Forbidden_Check, IO_VALUE.LOW);
agvA4Step.AddIoWait(IO_Type.Pkg_Out_Stop_Check, IO_VALUE.HIGH);
}
else
{
//已经没料架了
agvA4Step.Msg = "包装线出口无料架,需要尽快补充";
A4_Shelf_Exist = false;
agvClient.SetStatus("A4", "", "00", Asa.ClientAction.None, Asa.ClientLevel.Low);
agvA4Step.ToNextStep(AGV_LEAVE_A4_STEP.NONE);
}
//private void ProcessA4Agv()
//{
// if (agvA4Step.IsStep(AGV_LEAVE_A4_STEP.NONE))
// {
// //检测右侧IO,是否有料架要出/入(需要保留2个料架)
// bool hasEmptyShelf = IOValue(IO_Type.Pkg_Out_Stop_Check).Equals(IO_VALUE.HIGH);
// bool has3EmptyShelf = IOValue(IO_Type.Pkg_Empty_Shelf_Check).Equals(IO_VALUE.HIGH);
// bool hasMoreThan3Shelf = IOValue(IO_Type.Pkg_Rotot_Forbidden_Check).Equals(IO_VALUE.HIGH);
// if (hasEmptyShelf)
// {
// A4_Shelf_Exist = true;
// if (has3EmptyShelf && hasMoreThan3Shelf)
// {
// //出口已经满了,影响机器人工作了,优先级变高
// agvA4Step.Msg = "包装线出口料架大于等于3个,必须尽快拉走一个";
// agvClient.SetStatus("A4", "", "00", Asa.ClientAction.NeedLeave, Asa.ClientLevel.High);
// }else if (has3EmptyShelf)
// {
// agvA4Step.Msg = "包装线出口料架大于2个,需要拉走一个";
// agvClient.SetStatus("A4", "", "00", Asa.ClientAction.NeedLeave, Asa.ClientLevel.Middle);
// }
// else
// {
// agvA4Step.Msg = "包装线出口料架小于2个,低优先级";
// agvClient.SetStatus("A4", "", "00", Asa.ClientAction.NeedLeave, Asa.ClientLevel.Low);
// }
// }
// else
// {
// if (has3EmptyShelf || hasMoreThan3Shelf)
// {
// agvA4Step.Msg = "包装线出口料架信号未检测到,但已有2料架信号,转动链条2, 3";
// IOMove(IO_Type.Pkg_Line3_Forward, IO_VALUE.HIGH);
// IOMove(IO_Type.Pkg_Line2_Forward, IO_VALUE.HIGH);
// agvA4Step.ToNextStep(AGV_LEAVE_A4_STEP.WAIT_TO_EXIT);
// agvA4Step.AddIoWait(IO_Type.Pkg_Rotot_Forbidden_Check, IO_VALUE.LOW);
// agvA4Step.AddIoWait(IO_Type.Pkg_Out_Stop_Check, IO_VALUE.HIGH);
// }
// else
// {
// //已经没料架了
// agvA4Step.Msg = "包装线出口无料架,需要尽快补充";
// A4_Shelf_Exist = false;
// agvClient.SetStatus("A4", "", "00", Asa.ClientAction.None, Asa.ClientLevel.Low);
// agvA4Step.ToNextStep(AGV_LEAVE_A4_STEP.NONE);
// }
}
}else if (agvA4Step.IsStep(AGV_LEAVE_A4_STEP.WAIT_TO_EXIT))
{
if (agvA4Step.IsFinished())
{
agvA4Step.Msg = "料架已到包装线出口,停止链条3";
agvA4Step.ToNextStep(AGV_LEAVE_A4_STEP.NONE);
IOMove(IO_Type.Pkg_Line3_Forward, IO_VALUE.LOW);
IOMove(IO_Type.Pkg_Line2_Forward, IO_VALUE.LOW);
}
else if (agvA4Step.IsTimeOut(20000))
{
agvA4Step.Msg = "料架到包装线出口超时,停止链条3";
agvA4Step.ToNextStep(AGV_LEAVE_A4_STEP.NONE);
IOMove(IO_Type.Pkg_Line3_Forward, IO_VALUE.LOW);
IOMove(IO_Type.Pkg_Line2_Forward, IO_VALUE.LOW);
}
else
{
KeepLineRun(IO_Type.Pkg_Line3_Forward);
KeepLineRun(IO_Type.Pkg_Line2_Forward);
}
// }
// }else if (agvA4Step.IsStep(AGV_LEAVE_A4_STEP.WAIT_TO_EXIT))
// {
// if (agvA4Step.IsFinished())
// {
// agvA4Step.Msg = "料架已到包装线出口,停止链条3";
// agvA4Step.ToNextStep(AGV_LEAVE_A4_STEP.NONE);
// IOMove(IO_Type.Pkg_Line3_Forward, IO_VALUE.LOW);
// IOMove(IO_Type.Pkg_Line2_Forward, IO_VALUE.LOW);
// }
// else if (agvA4Step.IsTimeOut(20000))
// {
// agvA4Step.Msg = "料架到包装线出口超时,停止链条3";
// agvA4Step.ToNextStep(AGV_LEAVE_A4_STEP.NONE);
// IOMove(IO_Type.Pkg_Line3_Forward, IO_VALUE.LOW);
// IOMove(IO_Type.Pkg_Line2_Forward, IO_VALUE.LOW);
// }
// else
// {
// KeepLineRun(IO_Type.Pkg_Line3_Forward);
// KeepLineRun(IO_Type.Pkg_Line2_Forward);
// }
}
else if (agvA4Step.IsStep(AGV_LEAVE_A4_STEP.START_LEAVE))
{
agvA4Step.Msg = "收到 Agv 到达包装线A4点, 开启链条,准备送出料架 ";
IOMove(IO_Type.Pkg_Line3_Forward, IO_VALUE.HIGH);
IOMove(IO_Type.Pkg_Out_Stop_Down, IO_VALUE.HIGH, 2000);
agvA4Step.ToNextStep(AGV_LEAVE_A4_STEP.WAIT_LEAVE_FINISH);
agvA4Step.AddTimeWait(30000);
}
else if (agvA4Step.IsStep(AGV_LEAVE_A4_STEP.WAIT_LEAVE_FINISH))
{
if (agvA4Step.IsFinished())
{
agvA4Step.Msg = "Agv 料架离开包装线A4点超时完成, 停止链条 ";
agvA4Step.ToNextStep(AGV_LEAVE_A4_STEP.FINISH_LEAVE);
agvA4Step.AddTimeWait(5000);
// }
// else if (agvA4Step.IsStep(AGV_LEAVE_A4_STEP.START_LEAVE))
// {
// agvA4Step.Msg = "收到 Agv 到达包装线A4点, 开启链条,准备送出料架 ";
// IOMove(IO_Type.Pkg_Line3_Forward, IO_VALUE.HIGH);
// IOMove(IO_Type.Pkg_Out_Stop_Down, IO_VALUE.HIGH, 2000);
// agvA4Step.ToNextStep(AGV_LEAVE_A4_STEP.WAIT_LEAVE_FINISH);
// agvA4Step.AddTimeWait(30000);
// }
// else if (agvA4Step.IsStep(AGV_LEAVE_A4_STEP.WAIT_LEAVE_FINISH))
// {
// if (agvA4Step.IsFinished())
// {
// agvA4Step.Msg = "Agv 料架离开包装线A4点超时完成, 停止链条 ";
// agvA4Step.ToNextStep(AGV_LEAVE_A4_STEP.FINISH_LEAVE);
// agvA4Step.AddTimeWait(5000);
}
}
else if (agvA4Step.IsStep(AGV_LEAVE_A4_STEP.FINISH_LEAVE))
{
if (agvA4Step.IsFinished())
{
agvClient.SetStatus("A4", "", "00", Asa.ClientAction.FinishLeave);
IOMove(IO_Type.Pkg_Line3_Forward, IO_VALUE.LOW);
agvA4Step.ToNextStep(AGV_LEAVE_A4_STEP.NONE);
}
}
}
// }
// }
// else if (agvA4Step.IsStep(AGV_LEAVE_A4_STEP.FINISH_LEAVE))
// {
// if (agvA4Step.IsFinished())
// {
// agvClient.SetStatus("A4", "", "00", Asa.ClientAction.FinishLeave);
// IOMove(IO_Type.Pkg_Line3_Forward, IO_VALUE.LOW);
// agvA4Step.ToNextStep(AGV_LEAVE_A4_STEP.NONE);
// }
// }
//}
private void AgvClient_Ready(string name, string content)
{
LogUtil.info("收到 AgvClient_Ready [" + name + "] ");
if (name.Equals("A3"))
{
agvA3Step.ToNextStep(AGV_ENTER_A3_STEP.START_ENTER);
}else if (name.Equals("A4"))
{
agvA4Step.ToNextStep(AGV_LEAVE_A4_STEP.START_LEAVE);
}
}
//private void AgvClient_Ready(string name, string content)
//{
// LogUtil.info("收到 AgvClient_Ready [" + name + "] ");
// if (name.Equals("A3"))
// {
// agvA3Step.ToNextStep(AGV_ENTER_A3_STEP.START_ENTER);
// }else if (name.Equals("A4"))
// {
// agvA4Step.ToNextStep(AGV_LEAVE_A4_STEP.START_LEAVE);
// }
//}
private void AgvClient_CloseDoor(string name, string rfid)
{
if (name.Equals("A4"))
{
agvA4Step.Msg = "Agv 料架离开包装线A4点,收到AGV反馈完成, 停止链条 ";
agvA4Step.ToNextStep(AGV_LEAVE_A4_STEP.FINISH_LEAVE);
}
}
//private void AgvClient_CloseDoor(string name, string rfid)
//{
// if (name.Equals("A4"))
// {
// agvA4Step.Msg = "Agv 料架离开包装线A4点,收到AGV反馈完成, 停止链条 ";
// agvA4Step.ToNextStep(AGV_LEAVE_A4_STEP.FINISH_LEAVE);
// }
//}
private void AgvClient_Log(string s)
{
LogUtil.debug("AGV: " + s);
}
//private void AgvClient_Log(string s)
//{
// LogUtil.debug("AGV: " + s);
//}
}
}
......@@ -96,8 +96,8 @@ namespace OnlineStore.DeviceLibrary
if (agvClient_Dbline.A5_ReadyEnter)
{
//检测左侧升降无料架,且在下方,并且料架没满
bool topFull = IOValue(IO_Type.LHigh_StopCheck1).Equals(IO_VALUE.HIGH);
bool bottomFull = IOValue(IO_Type.LLow_StopCheck1).Equals(IO_VALUE.HIGH);
bool topFull = IOValue(IO_Type.LHigh_FullCheck).Equals(IO_VALUE.HIGH);
bool bottomFull = IOValue(IO_Type.LLow_FullCheck).Equals(IO_VALUE.HIGH);
bool hasShelfLeft = IOValue(IO_Type.Line_InCheck).Equals(IO_VALUE.HIGH);
bool hasShelfRight = IOValue(IO_Type.Line_StopCheck).Equals(IO_VALUE.HIGH);
//升降机在上方
......@@ -183,7 +183,7 @@ namespace OnlineStore.DeviceLibrary
//升降机在下方
bool isRightUpdownDown = CylinderIsOk(IO_Type.R_Updown_Up, IO_Type.R_Updown_Down);
//上层料满
bool topFull = IOValue(IO_Type.RHigh_StopCheck1).Equals(IO_VALUE.HIGH);
bool topFull = IOValue(IO_Type.RHigh_FullCheck).Equals(IO_VALUE.HIGH);
if (isChainRun || !isRightUpdownDown || topFull)//料盘无法送入
{
string msg = "A6 ";
......@@ -200,13 +200,13 @@ namespace OnlineStore.DeviceLibrary
msg = msg + "上层料满,";
}
//有料架或线上无空间
benQInStepRight.Msg = msg + "送料 BenQ AGV 不允许进入,";
benQInStepRight.Msg = msg + "送料AGV 不允许进入,";
benQInStepRight.ToNextStep(BenQ_IN_STEP.NONE);
}
else
{
agvClient_Dbline.MayEnter("A6");
benQInStepRight.Msg = "BenQ AGV 料架准备送入,链条启动";
benQInStepRight.Msg = "产线AGV 料架准备送入,链条启动";
benQInStepRight.ToNextStep(BenQ_IN_STEP.SHELT_IN);
benQInStepRight.AddIoWait(IO_Type.R_RightStopCheck, IO_VALUE.HIGH);
benQInStepRight.AddIoWait(IO_Type.R_LeftStopCheck, IO_VALUE.HIGH);
......@@ -372,7 +372,7 @@ namespace OnlineStore.DeviceLibrary
if (agvClient_Dbline.A6_InProcess)
return;
//上层料满
bool topfull = IOValue(IO_Type.RHigh_StopCheck1).Equals(IO_VALUE.HIGH);
bool topfull = IOValue(IO_Type.RHigh_FullCheck).Equals(IO_VALUE.HIGH);
//下层有料出
bool bottomfull = IOValue(IO_Type.R_StopCheck2).Equals(IO_VALUE.HIGH);
......@@ -414,10 +414,10 @@ namespace OnlineStore.DeviceLibrary
{
if (agvClient_Dbline.A5_InProcess)
return;
bool topFull = IOValue(IO_Type.LHigh_StopCheck1).Equals(IO_VALUE.HIGH);
bool bottomFull = IOValue(IO_Type.LLow_StopCheck1).Equals(IO_VALUE.HIGH);
bool topFull = IOValue(IO_Type.LHigh_FullCheck).Equals(IO_VALUE.HIGH);
bool bottomFull = IOValue(IO_Type.LLow_FullCheck).Equals(IO_VALUE.HIGH);
//左侧上层只剩最后一个料,优先级最高
bool topX613 = IOValue(IO_Type.LHigh_StopCheck2).Equals(IO_VALUE.HIGH);
bool topX613 = IOValue(IO_Type.LHigh_StopCheck1).Equals(IO_VALUE.HIGH);
//提升机上有料
bool hasShelfLeft = IOValue(IO_Type.Line_InCheck).Equals(IO_VALUE.HIGH);
bool hasShelfRight = IOValue(IO_Type.Line_StopCheck).Equals(IO_VALUE.HIGH);
......
......@@ -14,17 +14,17 @@ namespace OnlineStore.DeviceLibrary
DoubleLineConfig Config;
static String agvServerIp = ConfigAppSettings.GetValue(Setting_Init.AgvServerIp);
Asa.AgvClient agvClient = new Asa.AgvClient(agvServerIp);
//Asa.AgvClient agvClient = new Asa.AgvClient(agvServerIp);
AgvClient_Dbline agvClient_Dbline = new AgvClient_Dbline();
public PackageLine(DoubleLineConfig config) : base(config)
{
this.Config = config;
agvClient.CancelState = false;
agvClient.Log += AgvClient_Log;
agvClient.Ready += AgvClient_Ready;
//agvClient.CancelState = false;
//agvClient.Log += AgvClient_Log;
//agvClient.Ready += AgvClient_Ready;
agvClient.CloseDoor += AgvClient_CloseDoor;
//agvClient.CloseDoor += AgvClient_CloseDoor;
mainTimer.Elapsed += packageLineProcess;
agvClient_Dbline.Init();
}
......@@ -39,43 +39,43 @@ namespace OnlineStore.DeviceLibrary
public override void Reset()
{
LogUtil.info("包装线体开始复位");
LogUtil.info("双层线出入口开始复位");
mainStep = new StepInfo<MAIN_STEP>(MAIN_STEP.NONE);
agvA3Step = new StepInfo<AGV_ENTER_A3_STEP>(AGV_ENTER_A3_STEP.NONE);
agvA4Step = new StepInfo<AGV_LEAVE_A4_STEP>(AGV_LEAVE_A4_STEP.NONE);
//agvA3Step = new StepInfo<AGV_ENTER_A3_STEP>(AGV_ENTER_A3_STEP.NONE);
// agvA4Step = new StepInfo<AGV_LEAVE_A4_STEP>(AGV_LEAVE_A4_STEP.NONE);
inStep = new StepInfo<IN_SHELF>(IN_SHELF.NONE);
pkgStationStep = new StepInfo<PKG_STATION_STEP>(PKG_STATION_STEP.NONE);
s2StationStep = new StepInfo<S2_STATION_STEP>(S2_STATION_STEP.NONE);
//pkgStationStep = new StepInfo<PKG_STATION_STEP>(PKG_STATION_STEP.NONE);
//s2StationStep = new StepInfo<S2_STATION_STEP>(S2_STATION_STEP.NONE);
benQInStepLeft = new StepInfo<BenQ_IN_STEP>(BenQ_IN_STEP.NONE);
benQInStepRight = new StepInfo<BenQ_IN_STEP>(BenQ_IN_STEP.NONE);
benQOutStep = new StepInfo<BenQ_OUT_STEP>(BenQ_OUT_STEP.NONE);
//判断机器人是否连接,若未连接,直接连接
if (!ABBControl.IsConnected(Config.ABB3_IP))
{
ABBControl.StartABBControl(Config.ABB3_IP);
}
if (!agvClient.IsConn)
{
LogUtil.info("开始连接AGV服务");
agvClient.Connect();
}
//if (!ABBControl.IsConnected(Config.ABB3_IP))
//{
// ABBControl.StartABBControl(Config.ABB3_IP);
//}
//if (!agvClient.IsConn)
//{
// LogUtil.info("开始连接AGV服务");
// agvClient.Connect();
//}
if (!agvClient_Dbline.ISConnected())
{
agvClient_Dbline.agvClient.Connect();
LogUtil.info("开启BenQ AGV 连接");
LogUtil.info("开启产线 AGV 连接");
}
//包装线体工位下降
CylinderMove(null, IO_Type.Pkg_Station_SOL_UP, IO_Type.Pkg_Station_SOL_Down);
//CylinderMove(null, IO_Type.Pkg_Station_SOL_UP, IO_Type.Pkg_Station_SOL_Down);
//阻挡1下降 2上升 3上升 4上升
IOMove(IO_Type.Pkg_Stop1_Down, IO_VALUE.HIGH);
IOMove(IO_Type.Pkg_Stop2_Down, IO_VALUE.LOW);
IOMove(IO_Type.Pkg_Stop3_Down, IO_VALUE.LOW);
IOMove(IO_Type.Pkg_Out_Stop_Down, IO_VALUE.LOW);
//IOMove(IO_Type.Pkg_Stop1_Down, IO_VALUE.HIGH);
//IOMove(IO_Type.Pkg_Stop2_Down, IO_VALUE.LOW);
//IOMove(IO_Type.Pkg_Stop3_Down, IO_VALUE.LOW);
//IOMove(IO_Type.Pkg_Out_Stop_Down, IO_VALUE.LOW);
//双层线上层阻挡
IOMove(IO_Type.RHigh_StopCylinder1, IO_VALUE.HIGH);
......@@ -84,14 +84,14 @@ namespace OnlineStore.DeviceLibrary
//
LogUtil.info(Name + " 线体复位:线体转30秒");
int lineRunTime = 30000;
IOMove(IO_Type.Pkg_Line1_Forward, IO_VALUE.HIGH, lineRunTime);
IOMove(IO_Type.Pkg_Line2_Forward, IO_VALUE.HIGH, lineRunTime);
IOMove(IO_Type.Pkg_Line3_Forward, IO_VALUE.HIGH, lineRunTime);
//IOMove(IO_Type.Pkg_Line1_Forward, IO_VALUE.HIGH, lineRunTime);
//IOMove(IO_Type.Pkg_Line2_Forward, IO_VALUE.HIGH, lineRunTime);
//IOMove(IO_Type.Pkg_Line3_Forward, IO_VALUE.HIGH, lineRunTime);
IOMove(IO_Type.RHigh_LineRun, IO_VALUE.HIGH, lineRunTime);
//S2工位
IOMove(IO_Type.S2_StopCylinder1, IO_VALUE.LOW);
IOMove(IO_Type.S2_StopCylinder2, IO_VALUE.LOW);
//IOMove(IO_Type.S2_StopCylinder1, IO_VALUE.LOW);
// IOMove(IO_Type.S2_StopCylinder2, IO_VALUE.LOW);
//双层线出料口
IOMove(IO_Type.R_StopCylinder1, IO_VALUE.HIGH);
......@@ -115,11 +115,11 @@ namespace OnlineStore.DeviceLibrary
{
try
{
ProcessA3Agv();
ProcessA4Agv();
ProcessInShelf();
ProcessPkgStation();
ProcessS2Station();
//ProcessA3Agv();
//ProcessA4Agv();
//ProcessInShelf();
//ProcessPkgStation();
//ProcessS2Station();
ProcessBenQLeftEnter();
ProcessBenQRightEnter();
ProcessBenQLeave();
......@@ -137,7 +137,7 @@ namespace OnlineStore.DeviceLibrary
{
if (mainStep.IsFinished())
{
LogUtil.info("包装线体复位完成");
LogUtil.info("双层线出入口复位完成");
mainStep.ToNextStep(MAIN_STEP.RUN);
}
}
......@@ -145,7 +145,7 @@ namespace OnlineStore.DeviceLibrary
public override bool StartRun()
{
LogUtil.info(Name + "包装线开始启动,启动时间:" + DateTime.Now);
LogUtil.info(Name + "双层线出入口开始启动,启动时间:" + DateTime.Now);
Reset();
return true;
}
......@@ -153,23 +153,23 @@ namespace OnlineStore.DeviceLibrary
public override void StopMove()
{
mainStep.ToNextStep(MAIN_STEP.NONE);
LogUtil.info(Name + " 包装线体停止");
LogUtil.info(Name + " 双层线出入口停止");
//包装线体工位下降
CylinderMove(null, IO_Type.Pkg_Station_SOL_UP, IO_Type.Pkg_Station_SOL_Down);
//CylinderMove(null, IO_Type.Pkg_Station_SOL_UP, IO_Type.Pkg_Station_SOL_Down);
IOMove(IO_Type.Pkg_Stop1_Down, IO_VALUE.LOW);
IOMove(IO_Type.Pkg_Stop2_Down, IO_VALUE.LOW);
IOMove(IO_Type.Pkg_Stop3_Down, IO_VALUE.LOW);
IOMove(IO_Type.Pkg_Out_Stop_Down, IO_VALUE.LOW);
//IOMove(IO_Type.Pkg_Stop1_Down, IO_VALUE.LOW);
//IOMove(IO_Type.Pkg_Stop2_Down, IO_VALUE.LOW);
//IOMove(IO_Type.Pkg_Stop3_Down, IO_VALUE.LOW);
//IOMove(IO_Type.Pkg_Out_Stop_Down, IO_VALUE.LOW);
//
IOMove(IO_Type.Pkg_Line1_Forward, IO_VALUE.LOW);
IOMove(IO_Type.Pkg_Line2_Forward, IO_VALUE.LOW);
IOMove(IO_Type.Pkg_Line3_Forward, IO_VALUE.LOW);
////
//IOMove(IO_Type.Pkg_Line1_Forward, IO_VALUE.LOW);
//IOMove(IO_Type.Pkg_Line2_Forward, IO_VALUE.LOW);
//IOMove(IO_Type.Pkg_Line3_Forward, IO_VALUE.LOW);
//S2工位
IOMove(IO_Type.S2_StopCylinder1, IO_VALUE.LOW);
IOMove(IO_Type.S2_StopCylinder2, IO_VALUE.LOW);
//IOMove(IO_Type.S2_StopCylinder2, IO_VALUE.LOW);
//双层线出料口
IOMove(IO_Type.R_StopCylinder1, IO_VALUE.HIGH);
......@@ -181,27 +181,27 @@ namespace OnlineStore.DeviceLibrary
IOMove(IO_Type.R_LineRun, IO_VALUE.LOW);
try
{
if (!agvClient.IsConn)
{
LogUtil.info("停止AGV服务");
agvClient.Close();
}
}
catch (Exception ex)
{
LogUtil.error("停止AGV服务出错", ex);
}
//try
//{
// if (!agvClient.IsConn)
// {
// LogUtil.info("停止AGV服务");
// agvClient.Close();
// }
//}
//catch (Exception ex)
//{
// LogUtil.error("停止AGV服务出错", ex);
//}
try
{
LogUtil.info("停止BenQ AGV服务");
LogUtil.info("停止产线 AGV服务");
agvClient_Dbline.Dispose();
}
catch(Exception ex)
{
LogUtil.error("停止BenQ AGV服务出错", ex);
LogUtil.error("停止产线 AGV服务出错", ex);
}
}
......
......@@ -62,7 +62,7 @@ namespace OnlineStore.DeviceLibrary
bool hasShelfRight = IOValue(IO_Type.R_RightStopCheck).Equals(IO_VALUE.HIGH);
bool noShelfLeft = IOValue(IO_Type.R_LeftStopCheck).Equals(IO_VALUE.LOW);
//上层料满
bool full = IOValue(IO_Type.RHigh_StopCheck1).Equals(IO_VALUE.HIGH);
bool full = IOValue(IO_Type.RHigh_FullCheck).Equals(IO_VALUE.HIGH);
bool chainNoRun = IOValue(IO_Type.R_OutLineRun).Equals(IO_VALUE.LOW);
//判断是否是手动拉料架
if (!hasShelfRight && !noShelfLeft && chainNoRun)
......
......@@ -28,42 +28,42 @@ namespace OnlineStore.DeviceLibrary
/// <summary>
/// 料架进入处理
/// </summary>
private void ProcessInShelf()
{
//检测左侧入口IO,检测到后线体转60S
bool hasShelfIn = IOValue(IO_Type.Pkg_In_Check).Equals(IO_VALUE.HIGH);
if (hasShelfIn)
{
inStep.Msg = "包装线检测到有料架进入,启动线体1和2";
inStep.ToNextStep(IN_SHELF.LINE_RUN);
int lineRunTime = 60000;
inStep.AddTimeWait(lineRunTime);
inStep.AddIoWait(IO_Type.Pkg_Stop_Check2, IO_VALUE.HIGH);
KeepLineRun(IO_Type.Pkg_Line1_Forward);
KeepLineRun(IO_Type.Pkg_Line2_Forward);
}
//private void ProcessInShelf()
//{
// //检测左侧入口IO,检测到后线体转60S
// bool hasShelfIn = IOValue(IO_Type.Pkg_In_Check).Equals(IO_VALUE.HIGH);
// if (hasShelfIn)
// {
// inStep.Msg = "包装线检测到有料架进入,启动线体1和2";
// inStep.ToNextStep(IN_SHELF.LINE_RUN);
// int lineRunTime = 60000;
// inStep.AddTimeWait(lineRunTime);
// inStep.AddIoWait(IO_Type.Pkg_Stop_Check2, IO_VALUE.HIGH);
// KeepLineRun(IO_Type.Pkg_Line1_Forward);
// KeepLineRun(IO_Type.Pkg_Line2_Forward);
// }
if (inStep.IsStep(IN_SHELF.NONE))
{
// if (inStep.IsStep(IN_SHELF.NONE))
// {
}
else if (inStep.IsStep(IN_SHELF.LINE_RUN))
{
if (inStep.IsFinished())
{
inStep.Msg = "包装线料架进入后,线体已启动60秒,停止线体";
//10秒已到,停止线体
inStep.ToNextStep(IN_SHELF.NONE);
IOMove(IO_Type.Pkg_Line1_Forward, IO_VALUE.LOW);
IOMove(IO_Type.Pkg_Line2_Forward, IO_VALUE.LOW);
}
else
{
KeepLineRun(IO_Type.Pkg_Line1_Forward);
KeepLineRun(IO_Type.Pkg_Line2_Forward);
}
}
}
// }
// else if (inStep.IsStep(IN_SHELF.LINE_RUN))
// {
// if (inStep.IsFinished())
// {
// inStep.Msg = "包装线料架进入后,线体已启动60秒,停止线体";
// //10秒已到,停止线体
// inStep.ToNextStep(IN_SHELF.NONE);
// IOMove(IO_Type.Pkg_Line1_Forward, IO_VALUE.LOW);
// IOMove(IO_Type.Pkg_Line2_Forward, IO_VALUE.LOW);
// }
// else
// {
// KeepLineRun(IO_Type.Pkg_Line1_Forward);
// KeepLineRun(IO_Type.Pkg_Line2_Forward);
// }
// }
//}
}
}
......@@ -11,7 +11,7 @@ namespace OnlineStore.DeviceLibrary
{
partial class PackageLine
{
public StepInfo<PKG_STATION_STEP> pkgStationStep = new StepInfo<PKG_STATION_STEP>(PKG_STATION_STEP.NONE);
// public StepInfo<PKG_STATION_STEP> pkgStationStep = new StepInfo<PKG_STATION_STEP>(PKG_STATION_STEP.NONE);
/// <summary>
/// 包装料架工位
/// </summary>
......@@ -55,129 +55,129 @@ namespace OnlineStore.DeviceLibrary
/// <summary>
/// 包装线工位
/// </summary>
private void ProcessPkgStation()
{
if (pkgStationStep.IsStep(PKG_STATION_STEP.NONE))
{
bool hasPkgShelf = IOValue(IO_Type.Pkg_Station_Check).Equals(IO_VALUE.HIGH);
if (hasPkgShelf)
{
pkgStationStep.Msg = "包装线已有料架,等待读取RFID";
pkgStationStep.ToNextStep(PKG_STATION_STEP.READ_RFID);
}
else
{
pkgStationStep.Msg = "包装线无料架,等待料架进入";
pkgStationStep.ToNextStep(PKG_STATION_STEP.WAIT_SHELF);
}
}
else if (pkgStationStep.IsStep(PKG_STATION_STEP.WAIT_SHELF))
{
bool hasWaitShelf = IOValue(IO_Type.Pkg_Stop_Check2).Equals(IO_VALUE.HIGH);
//有等待的料架
if (hasWaitShelf)
{
pkgStationStep.Msg = "包装线等待位发现料架, 将其送入工位";
pkgStationStep.ToNextStep(PKG_STATION_STEP.WAIT_SHELF_TO_STATION);
pkgStationStep.AddIoWait(IO_Type.Pkg_Station_Check, IO_VALUE.HIGH,3000);
//private void ProcessPkgStation()
//{
// if (pkgStationStep.IsStep(PKG_STATION_STEP.NONE))
// {
// bool hasPkgShelf = IOValue(IO_Type.Pkg_Station_Check).Equals(IO_VALUE.HIGH);
// if (hasPkgShelf)
// {
// pkgStationStep.Msg = "包装线已有料架,等待读取RFID";
// pkgStationStep.ToNextStep(PKG_STATION_STEP.READ_RFID);
// }
// else
// {
// pkgStationStep.Msg = "包装线无料架,等待料架进入";
// pkgStationStep.ToNextStep(PKG_STATION_STEP.WAIT_SHELF);
// }
// }
// else if (pkgStationStep.IsStep(PKG_STATION_STEP.WAIT_SHELF))
// {
// bool hasWaitShelf = IOValue(IO_Type.Pkg_Stop_Check2).Equals(IO_VALUE.HIGH);
// //有等待的料架
// if (hasWaitShelf)
// {
// pkgStationStep.Msg = "包装线等待位发现料架, 将其送入工位";
// pkgStationStep.ToNextStep(PKG_STATION_STEP.WAIT_SHELF_TO_STATION);
// pkgStationStep.AddIoWait(IO_Type.Pkg_Station_Check, IO_VALUE.HIGH,3000);
//IOMove(IO_Type.Pkg_Line1_Forward, IO_VALUE.HIGH);
IOMove(IO_Type.Pkg_Line2_Forward, IO_VALUE.HIGH);
// //IOMove(IO_Type.Pkg_Line1_Forward, IO_VALUE.HIGH);
// IOMove(IO_Type.Pkg_Line2_Forward, IO_VALUE.HIGH);
IOMove(IO_Type.Pkg_Stop2_Down, IO_VALUE.HIGH, 2000);
}
}
else if (pkgStationStep.IsStep(PKG_STATION_STEP.WAIT_SHELF_TO_STATION))
{
if (pkgStationStep.IsFinished())
{
pkgStationStep.Msg = "包装线料架到达工位,停止线体1和2,等待读取RFID";
pkgStationStep.ToNextStep(PKG_STATION_STEP.READ_RFID);
IOMove(IO_Type.Pkg_Line2_Forward, IO_VALUE.LOW);
}
else
{
bool line2Stop = IOValue(IO_Type.Pkg_Line2_Forward).Equals(IO_VALUE.LOW);
if (line2Stop)
{
LogUtil.info("包装线线体2已停止,但料架还未到达工位,重新启动");
IOMove(IO_Type.Pkg_Line2_Forward, IO_VALUE.HIGH);
}
}
// IOMove(IO_Type.Pkg_Stop2_Down, IO_VALUE.HIGH, 2000);
// }
// }
// else if (pkgStationStep.IsStep(PKG_STATION_STEP.WAIT_SHELF_TO_STATION))
// {
// if (pkgStationStep.IsFinished())
// {
// pkgStationStep.Msg = "包装线料架到达工位,停止线体1和2,等待读取RFID";
// pkgStationStep.ToNextStep(PKG_STATION_STEP.READ_RFID);
// IOMove(IO_Type.Pkg_Line2_Forward, IO_VALUE.LOW);
// }
// else
// {
// bool line2Stop = IOValue(IO_Type.Pkg_Line2_Forward).Equals(IO_VALUE.LOW);
// if (line2Stop)
// {
// LogUtil.info("包装线线体2已停止,但料架还未到达工位,重新启动");
// IOMove(IO_Type.Pkg_Line2_Forward, IO_VALUE.HIGH);
// }
// }
}
else if (pkgStationStep.IsStep(PKG_STATION_STEP.READ_RFID))
{
if (pkgStationStep.IsTimeOut(1000))
{
//1秒读取1次
PkgShelfRFID = "";
string rfid = RFIDManager.ReadRFID(Config.Pkg_Rfid, true).NumStr();
if (rfid.Contains("A"))
{
pkgStationStep.Msg = "包装线读取到RFID[" + rfid + "], 工位顶升";
pkgStationStep.ToNextStep(PKG_STATION_STEP.WAIT_STATION_UP);
pkgStationStep.AddIoWait(IO_Type.Pkg_Station_Down, IO_VALUE.LOW);
pkgStationStep.AddIoWait(IO_Type.Pkg_Station_Up, IO_VALUE.HIGH);
PkgShelfRFID = rfid;
//包装线体工位上升
CylinderMove(null, IO_Type.Pkg_Station_SOL_Down, IO_Type.Pkg_Station_SOL_UP);
}
else
{
pkgStationStep.Msg = "包装线读取到的RFID数据[" + rfid + "]错误";
pkgStationStep.ToNextStep(PKG_STATION_STEP.READ_RFID);
}
}
// }
// else if (pkgStationStep.IsStep(PKG_STATION_STEP.READ_RFID))
// {
// if (pkgStationStep.IsTimeOut(1000))
// {
// //1秒读取1次
// PkgShelfRFID = "";
// string rfid = RFIDManager.ReadRFID(Config.Pkg_Rfid, true).NumStr();
// if (rfid.Contains("A"))
// {
// pkgStationStep.Msg = "包装线读取到RFID[" + rfid + "], 工位顶升";
// pkgStationStep.ToNextStep(PKG_STATION_STEP.WAIT_STATION_UP);
// pkgStationStep.AddIoWait(IO_Type.Pkg_Station_Down, IO_VALUE.LOW);
// pkgStationStep.AddIoWait(IO_Type.Pkg_Station_Up, IO_VALUE.HIGH);
// PkgShelfRFID = rfid;
// //包装线体工位上升
// CylinderMove(null, IO_Type.Pkg_Station_SOL_Down, IO_Type.Pkg_Station_SOL_UP);
// }
// else
// {
// pkgStationStep.Msg = "包装线读取到的RFID数据[" + rfid + "]错误";
// pkgStationStep.ToNextStep(PKG_STATION_STEP.READ_RFID);
// }
// }
}
else if (pkgStationStep.IsStep(PKG_STATION_STEP.WAIT_STATION_UP))
{
if (pkgStationStep.IsFinished())
{
pkgStationStep.Msg = "包装线工位顶升到位,等待机器人抓取[" + PkgShelfRFID + "]";
pkgStationStep.ToNextStep(PKG_STATION_STEP.WAIT_ROBOT);
}
}else if (pkgStationStep.IsStep(PKG_STATION_STEP.SHELF_EMPTY))
{
pkgStationStep.Msg = "包装线工位料架[" + PkgShelfRFID + "]已空,下降顶升,准备放行";
// }
// else if (pkgStationStep.IsStep(PKG_STATION_STEP.WAIT_STATION_UP))
// {
// if (pkgStationStep.IsFinished())
// {
// pkgStationStep.Msg = "包装线工位顶升到位,等待机器人抓取[" + PkgShelfRFID + "]";
// pkgStationStep.ToNextStep(PKG_STATION_STEP.WAIT_ROBOT);
// }
// }else if (pkgStationStep.IsStep(PKG_STATION_STEP.SHELF_EMPTY))
// {
// pkgStationStep.Msg = "包装线工位料架[" + PkgShelfRFID + "]已空,下降顶升,准备放行";
pkgStationStep.ToNextStep(PKG_STATION_STEP.WAIT_STATION_DOWN);
pkgStationStep.AddIoWait(IO_Type.Pkg_Station_Down, IO_VALUE.HIGH);
pkgStationStep.AddIoWait(IO_Type.Pkg_Station_Up, IO_VALUE.LOW);
//包装线体工位下降
CylinderMove(null, IO_Type.Pkg_Station_SOL_UP, IO_Type.Pkg_Station_SOL_Down);
}
else if (pkgStationStep.IsStep(PKG_STATION_STEP.WAIT_STATION_DOWN))
{
if (pkgStationStep.IsFinished())
{
pkgStationStep.Msg = "包装线工位料架[" + PkgShelfRFID + "]顶升下降到位,开始放行";
pkgStationStep.ToNextStep(PKG_STATION_STEP.TO_EMPTY_STATION);
pkgStationStep.AddIoWait(IO_Type.Pkg_Out_Stop_Check, IO_VALUE.HIGH);
pkgStationStep.AddIoWait(IO_Type.Pkg_Rotot_Forbidden_Check, IO_VALUE.HIGH);
pkgStationStep.AddTimeWait(20000);
// pkgStationStep.ToNextStep(PKG_STATION_STEP.WAIT_STATION_DOWN);
// pkgStationStep.AddIoWait(IO_Type.Pkg_Station_Down, IO_VALUE.HIGH);
// pkgStationStep.AddIoWait(IO_Type.Pkg_Station_Up, IO_VALUE.LOW);
// //包装线体工位下降
// CylinderMove(null, IO_Type.Pkg_Station_SOL_UP, IO_Type.Pkg_Station_SOL_Down);
// }
// else if (pkgStationStep.IsStep(PKG_STATION_STEP.WAIT_STATION_DOWN))
// {
// if (pkgStationStep.IsFinished())
// {
// pkgStationStep.Msg = "包装线工位料架[" + PkgShelfRFID + "]顶升下降到位,开始放行";
// pkgStationStep.ToNextStep(PKG_STATION_STEP.TO_EMPTY_STATION);
// pkgStationStep.AddIoWait(IO_Type.Pkg_Out_Stop_Check, IO_VALUE.HIGH);
// pkgStationStep.AddIoWait(IO_Type.Pkg_Rotot_Forbidden_Check, IO_VALUE.HIGH);
// pkgStationStep.AddTimeWait(20000);
IOMove(IO_Type.Pkg_Line2_Forward, IO_VALUE.HIGH);
IOMove(IO_Type.Pkg_Line3_Forward, IO_VALUE.HIGH);
IOMove(IO_Type.Pkg_Station_Stop_Down, IO_VALUE.HIGH, 3000);
IOMove(IO_Type.Pkg_Stop2_Down, IO_VALUE.HIGH, 3000);
}
}else if (pkgStationStep.IsStep(PKG_STATION_STEP.TO_EMPTY_STATION))
{
if (pkgStationStep.IsFinished())
{
pkgStationStep.Msg = "包装线工位料架[" + PkgShelfRFID + "放行完成";
PkgShelfRFID = "";
//IOMove(IO_Type.Pkg_Line2_Forward, IO_VALUE.LOW);
//IOMove(IO_Type.Pkg_Line3_Forward, IO_VALUE.LOW);
pkgStationStep.ToNextStep(PKG_STATION_STEP.NONE);
// IOMove(IO_Type.Pkg_Line2_Forward, IO_VALUE.HIGH);
// IOMove(IO_Type.Pkg_Line3_Forward, IO_VALUE.HIGH);
// IOMove(IO_Type.Pkg_Station_Stop_Down, IO_VALUE.HIGH, 3000);
// IOMove(IO_Type.Pkg_Stop2_Down, IO_VALUE.HIGH, 3000);
// }
// }else if (pkgStationStep.IsStep(PKG_STATION_STEP.TO_EMPTY_STATION))
// {
// if (pkgStationStep.IsFinished())
// {
// pkgStationStep.Msg = "包装线工位料架[" + PkgShelfRFID + "放行完成";
// PkgShelfRFID = "";
// //IOMove(IO_Type.Pkg_Line2_Forward, IO_VALUE.LOW);
// //IOMove(IO_Type.Pkg_Line3_Forward, IO_VALUE.LOW);
// pkgStationStep.ToNextStep(PKG_STATION_STEP.NONE);
agvA4Step.ToNextStep(AGV_LEAVE_A4_STEP.WAIT_TO_EXIT);
}
}
// agvA4Step.ToNextStep(AGV_LEAVE_A4_STEP.WAIT_TO_EXIT);
// }
// }
}
//}
}
}
......@@ -21,7 +21,7 @@ namespace OnlineStore.DeviceLibrary
PackageRobotTaskBean packgeRobotTaskBean;
public StepInfo<S2_STATION_STEP> s2StationStep = new StepInfo<S2_STATION_STEP>(S2_STATION_STEP.NONE);
//public StepInfo<S2_STATION_STEP> s2StationStep = new StepInfo<S2_STATION_STEP>(S2_STATION_STEP.NONE);
/// <summary>
/// 包装料架工位
/// </summary>
......@@ -71,284 +71,284 @@ namespace OnlineStore.DeviceLibrary
/// <summary>
/// 双层线大料工位
/// </summary>
private void ProcessS2Station()
{
ProcessShelfOutS2();
if (s2StationStep.IsStep(S2_STATION_STEP.NONE))
{
bool hasShelf = IOValue(IO_Type.S2_StopCheck2).Equals(IO_VALUE.HIGH);
if (hasShelf)
{
s2StationStep.Msg ="工位2检测到料架,等待读取RFID";
s2StationStep.ToNextStep(S2_STATION_STEP.READ_RFID);
} else
{
s2StationStep.Msg ="工位2无料架,等待料架进入";
s2StationStep.ToNextStep(S2_STATION_STEP.WAIT_SHELF);
}
}
else if (s2StationStep.IsStep(S2_STATION_STEP.WAIT_SHELF)) {
bool hasWaitShelf = IOValue(IO_Type.S2_StopCheck1).Equals(IO_VALUE.HIGH);
//有等待的料架
if (hasWaitShelf)
{
//验证料架是否可用
if (LineManager.Line.S2CanGetShelf)
{
s2StationStep.Msg = "工位2等待位发现料架,降下S2_StopCylinder1(2秒),打开工位2链条, 将其送入工位";
s2StationStep.ToNextStep(S2_STATION_STEP.WAIT_SHELF_TO_S2);
s2StationStep.AddIoWait(IO_Type.S2_StopCheck1, IO_VALUE.LOW);
s2StationStep.AddIoWait(IO_Type.S2_StopCheck2, IO_VALUE.HIGH);
IOMove(IO_Type.S2_LineRun, IO_VALUE.HIGH);
IOMove(IO_Type.S2_StopCylinder1, IO_VALUE.HIGH, 2000);
}
else
{
s2StationStep.Msg = "工位2等待位发现料架, 但工位一未使用完";
}
}
}
else if (s2StationStep.IsStep(S2_STATION_STEP.WAIT_SHELF_TO_S2)) {
//private void ProcessS2Station()
//{
// ProcessShelfOutS2();
// if (s2StationStep.IsStep(S2_STATION_STEP.NONE))
// {
// bool hasShelf = IOValue(IO_Type.S2_StopCheck2).Equals(IO_VALUE.HIGH);
// if (hasShelf)
// {
// s2StationStep.Msg ="工位2检测到料架,等待读取RFID";
// s2StationStep.ToNextStep(S2_STATION_STEP.READ_RFID);
// } else
// {
// s2StationStep.Msg ="工位2无料架,等待料架进入";
// s2StationStep.ToNextStep(S2_STATION_STEP.WAIT_SHELF);
// }
// }
// else if (s2StationStep.IsStep(S2_STATION_STEP.WAIT_SHELF)) {
// bool hasWaitShelf = IOValue(IO_Type.S2_StopCheck1).Equals(IO_VALUE.HIGH);
// //有等待的料架
// if (hasWaitShelf)
// {
// //验证料架是否可用
// if (LineManager.Line.S2CanGetShelf)
// {
// s2StationStep.Msg = "工位2等待位发现料架,降下S2_StopCylinder1(2秒),打开工位2链条, 将其送入工位";
// s2StationStep.ToNextStep(S2_STATION_STEP.WAIT_SHELF_TO_S2);
// s2StationStep.AddIoWait(IO_Type.S2_StopCheck1, IO_VALUE.LOW);
// s2StationStep.AddIoWait(IO_Type.S2_StopCheck2, IO_VALUE.HIGH);
// IOMove(IO_Type.S2_LineRun, IO_VALUE.HIGH);
// IOMove(IO_Type.S2_StopCylinder1, IO_VALUE.HIGH, 2000);
// }
// else
// {
// s2StationStep.Msg = "工位2等待位发现料架, 但工位一未使用完";
// }
// }
// }
// else if (s2StationStep.IsStep(S2_STATION_STEP.WAIT_SHELF_TO_S2)) {
if (s2StationStep.IsFinished())
{
s2StationStep.Msg ="料架到达工位2, 停止工位2链条, 开始读取RFID";
IOMove(IO_Type.S2_LineRun, IO_VALUE.LOW);
s2StationStep.ToNextStep(S2_STATION_STEP.READ_RFID);
}
else
{
KeepLineRun(IO_Type.S2_LineRun);
}
// if (s2StationStep.IsFinished())
// {
// s2StationStep.Msg ="料架到达工位2, 停止工位2链条, 开始读取RFID";
// IOMove(IO_Type.S2_LineRun, IO_VALUE.LOW);
// s2StationStep.ToNextStep(S2_STATION_STEP.READ_RFID);
// }
// else
// {
// KeepLineRun(IO_Type.S2_LineRun);
// }
}
else if (s2StationStep.IsStep(S2_STATION_STEP.READ_RFID))
{
if (s2StationStep.IsTimeOut(1000))
{
string rfid = RFIDManager.ReadRFID(Config.S2_Rfid, true).NumStr();
if (rfid.Contains("C"))
{
ResultBean resultBean = HttpServer.GetPackInfo(rfid, PkgShelfRFID);
//发送指令到服务器
if (resultBean != null)
{
if (resultBean.code == 0)
{
PackageRobotTaskBean shelfTaskBean = resultBean.data;
if (shelfTaskBean.emptyInBig > 0)
{
s2StationStep.Msg = "料架[" + rfid + "]剩余包装料空位数位[" + shelfTaskBean.emptyInBig + "]工位2顶升";
//还有包装料要放,升起顶升
BigShelfRFID = rfid;
s2StationStep.ToNextStep(S2_STATION_STEP.WAIT_STATION_UP);
s2StationStep.AddIoWait(IO_Type.S2_TopCylinderUp, IO_VALUE.HIGH);
s2StationStep.AddIoWait(IO_Type.S2_TopCylinderDown, IO_VALUE.LOW);
CylinderMove(null, IO_Type.S2_TopCylinderDown, IO_Type.S2_TopCylinderUp);
}
else
{
s2StationStep.Msg = "工位2料架[" + rfid + "]已无空位,放行";
s2StationStep.ToNextStep(S2_STATION_STEP.OUT_SHELF);
}
}
else
{
s2StationStep.Msg = "工位2料架[" + rfid + "] 未从服务器获取到有效信息[" + resultBean.msg + "],放行大料架";
s2StationStep.ToNextStep(S2_STATION_STEP.OUT_SHELF);
}
}
// }
// else if (s2StationStep.IsStep(S2_STATION_STEP.READ_RFID))
// {
// if (s2StationStep.IsTimeOut(1000))
// {
// string rfid = RFIDManager.ReadRFID(Config.S2_Rfid, true).NumStr();
// if (rfid.Contains("C"))
// {
// ResultBean resultBean = HttpServer.GetPackInfo(rfid, PkgShelfRFID);
// //发送指令到服务器
// if (resultBean != null)
// {
// if (resultBean.code == 0)
// {
// PackageRobotTaskBean shelfTaskBean = resultBean.data;
// if (shelfTaskBean.emptyInBig > 0)
// {
// s2StationStep.Msg = "料架[" + rfid + "]剩余包装料空位数位[" + shelfTaskBean.emptyInBig + "]工位2顶升";
// //还有包装料要放,升起顶升
// BigShelfRFID = rfid;
// s2StationStep.ToNextStep(S2_STATION_STEP.WAIT_STATION_UP);
// s2StationStep.AddIoWait(IO_Type.S2_TopCylinderUp, IO_VALUE.HIGH);
// s2StationStep.AddIoWait(IO_Type.S2_TopCylinderDown, IO_VALUE.LOW);
// CylinderMove(null, IO_Type.S2_TopCylinderDown, IO_Type.S2_TopCylinderUp);
// }
// else
// {
// s2StationStep.Msg = "工位2料架[" + rfid + "]已无空位,放行";
// s2StationStep.ToNextStep(S2_STATION_STEP.OUT_SHELF);
// }
// }
// else
// {
// s2StationStep.Msg = "工位2料架[" + rfid + "] 未从服务器获取到有效信息[" + resultBean.msg + "],放行大料架";
// s2StationStep.ToNextStep(S2_STATION_STEP.OUT_SHELF);
// }
// }
}
else if (rfid.Contains("D"))
{
s2StationStep.Msg = "工位2料架[" + rfid + "]不是大料架,直接放行";
//不是大料架直接放行
s2StationStep.ToNextStep(S2_STATION_STEP.OUT_SHELF);
}
else
{
s2StationStep.Msg = "工位2料架RFID读取错误["+rfid+"],重新读取";
s2StationStep.ToNextStep(S2_STATION_STEP.READ_RFID);
}
}
// }
// else if (rfid.Contains("D"))
// {
// s2StationStep.Msg = "工位2料架[" + rfid + "]不是大料架,直接放行";
// //不是大料架直接放行
// s2StationStep.ToNextStep(S2_STATION_STEP.OUT_SHELF);
// }
// else
// {
// s2StationStep.Msg = "工位2料架RFID读取错误["+rfid+"],重新读取";
// s2StationStep.ToNextStep(S2_STATION_STEP.READ_RFID);
// }
// }
}
else if (s2StationStep.IsStep(S2_STATION_STEP.OUT_SHELF))
{
TempBigRfid = "";
BigShelfRFID = "";
// }
// else if (s2StationStep.IsStep(S2_STATION_STEP.OUT_SHELF))
// {
// TempBigRfid = "";
// BigShelfRFID = "";
s2StationStep.Msg ="工位2顶升下降";
s2StationStep.ToNextStep(S2_STATION_STEP.WAIT_STATION_DOWN);
s2StationStep.AddIoWait(IO_Type.S2_TopCylinderUp, IO_VALUE.LOW);
s2StationStep.AddIoWait(IO_Type.S2_TopCylinderDown, IO_VALUE.HIGH);
CylinderMove(null, IO_Type.S2_TopCylinderUp, IO_Type.S2_TopCylinderDown);
}
else if (s2StationStep.IsStep(S2_STATION_STEP.WAIT_STATION_DOWN)) {
if (s2StationStep.IsFinished())
{
s2StationStep.Msg ="工位2顶升下降完成,打开右侧下方线体, 开始放行料架";
s2StationStep.ToNextStep(S2_STATION_STEP.WAIT_OUT_S2);
s2StationStep.AddIoWait(IO_Type.S2_StopCheck2, IO_VALUE.LOW, 2000);
s2StationStep.AddTimeWait(12000);
// s2StationStep.Msg ="工位2顶升下降";
// s2StationStep.ToNextStep(S2_STATION_STEP.WAIT_STATION_DOWN);
// s2StationStep.AddIoWait(IO_Type.S2_TopCylinderUp, IO_VALUE.LOW);
// s2StationStep.AddIoWait(IO_Type.S2_TopCylinderDown, IO_VALUE.HIGH);
// CylinderMove(null, IO_Type.S2_TopCylinderUp, IO_Type.S2_TopCylinderDown);
// }
// else if (s2StationStep.IsStep(S2_STATION_STEP.WAIT_STATION_DOWN)) {
// if (s2StationStep.IsFinished())
// {
// s2StationStep.Msg ="工位2顶升下降完成,打开右侧下方线体, 开始放行料架";
// s2StationStep.ToNextStep(S2_STATION_STEP.WAIT_OUT_S2);
// s2StationStep.AddIoWait(IO_Type.S2_StopCheck2, IO_VALUE.LOW, 2000);
// s2StationStep.AddTimeWait(12000);
KeepLineRun(IO_Type.S2_LineRun);
//阻挡2下降2秒
IOMove(IO_Type.S2_StopCylinder2, IO_VALUE.HIGH, 2000);
//打开右侧下方线体
KeepLineRun(IO_Type.R_LineRun);
}
}
else if (s2StationStep.IsStep(S2_STATION_STEP.WAIT_OUT_S2)) {
// KeepLineRun(IO_Type.S2_LineRun);
// //阻挡2下降2秒
// IOMove(IO_Type.S2_StopCylinder2, IO_VALUE.HIGH, 2000);
// //打开右侧下方线体
// KeepLineRun(IO_Type.R_LineRun);
// }
// }
// else if (s2StationStep.IsStep(S2_STATION_STEP.WAIT_OUT_S2)) {
if (s2StationStep.IsFinished())
{
if (outShelfStep.IsStep(SHELF_TO_LEAVE_STATION.WAIT_OUT_IO))
{
//上一个料架流出未完成
s2StationStep.Msg = "料架流出工位2完成,但上一个料架未到出口";
}
else
{
s2StationStep.Msg = "工位2放行料架完成,停止工位2线体";
s2StationStep.ToNextStep(S2_STATION_STEP.NONE);
IOMove(IO_Type.S2_LineRun, IO_VALUE.LOW);
//右侧下方线体是否停止,要根据情况来
outShelfStep.ToNextStep(SHELF_TO_LEAVE_STATION.SHELF_OUT_S2);
}
}
else
{
KeepLineRun(IO_Type.R_LineRun);
if (s2StationStep.IsTimeOut(15000))
{
s2StationStep.Msg = "工位2放行料架15秒仍未完成,重新放行";
s2StationStep.ToNextStep(S2_STATION_STEP.OUT_SHELF);
}
}
// if (s2StationStep.IsFinished())
// {
// if (outShelfStep.IsStep(SHELF_TO_LEAVE_STATION.WAIT_OUT_IO))
// {
// //上一个料架流出未完成
// s2StationStep.Msg = "料架流出工位2完成,但上一个料架未到出口";
// }
// else
// {
// s2StationStep.Msg = "工位2放行料架完成,停止工位2线体";
// s2StationStep.ToNextStep(S2_STATION_STEP.NONE);
// IOMove(IO_Type.S2_LineRun, IO_VALUE.LOW);
// //右侧下方线体是否停止,要根据情况来
// outShelfStep.ToNextStep(SHELF_TO_LEAVE_STATION.SHELF_OUT_S2);
// }
// }
// else
// {
// KeepLineRun(IO_Type.R_LineRun);
// if (s2StationStep.IsTimeOut(15000))
// {
// s2StationStep.Msg = "工位2放行料架15秒仍未完成,重新放行";
// s2StationStep.ToNextStep(S2_STATION_STEP.OUT_SHELF);
// }
// }
}
else if (s2StationStep.IsStep(S2_STATION_STEP.WAIT_STATION_UP))
{
if (s2StationStep.IsFinished())
{
//顶升已经升起,等待机器人处理
s2StationStep.ToNextStep(S2_STATION_STEP.WAIT_ROBOT);
}
}
else if (s2StationStep.IsStep(S2_STATION_STEP.WAIT_ROBOT))
{
packgeRobotTaskBean = null;
string currentPkgShelfRfid = "";
if (pkgStationStep.IsStep(PKG_STATION_STEP.WAIT_ROBOT))
{
currentPkgShelfRfid = PkgShelfRFID;
}
//发送指令到服务器
ResultBean resultBean = HttpServer.GetPackInfo(BigShelfRFID, currentPkgShelfRfid);
if (resultBean != null)
{
if(resultBean.code == 0)
{
PackageRobotTaskBean shelfTaskBean = resultBean.data;
if (pkgStationStep.IsStep(PKG_STATION_STEP.WAIT_ROBOT))
{
if (shelfTaskBean.reelInPackage <= 0)
{
s2StationStep.Msg = "包装料架[" + PkgShelfRFID + "]上已无料盘,放行";
pkgStationStep.ToNextStep(PKG_STATION_STEP.SHELF_EMPTY);
}
}
// }
// else if (s2StationStep.IsStep(S2_STATION_STEP.WAIT_STATION_UP))
// {
// if (s2StationStep.IsFinished())
// {
// //顶升已经升起,等待机器人处理
// s2StationStep.ToNextStep(S2_STATION_STEP.WAIT_ROBOT);
// }
// }
// else if (s2StationStep.IsStep(S2_STATION_STEP.WAIT_ROBOT))
// {
// packgeRobotTaskBean = null;
// string currentPkgShelfRfid = "";
// if (pkgStationStep.IsStep(PKG_STATION_STEP.WAIT_ROBOT))
// {
// currentPkgShelfRfid = PkgShelfRFID;
// }
// //发送指令到服务器
// ResultBean resultBean = HttpServer.GetPackInfo(BigShelfRFID, currentPkgShelfRfid);
// if (resultBean != null)
// {
// if(resultBean.code == 0)
// {
// PackageRobotTaskBean shelfTaskBean = resultBean.data;
// if (pkgStationStep.IsStep(PKG_STATION_STEP.WAIT_ROBOT))
// {
// if (shelfTaskBean.reelInPackage <= 0)
// {
// s2StationStep.Msg = "包装料架[" + PkgShelfRFID + "]上已无料盘,放行";
// pkgStationStep.ToNextStep(PKG_STATION_STEP.SHELF_EMPTY);
// }
// }
if (shelfTaskBean.emptyInBig <= 0)
{
s2StationStep.Msg = "工位2料架[" + BigShelfRFID + "]已无空位,放行";
s2StationStep.ToNextStep(S2_STATION_STEP.OUT_SHELF);
}
// if (shelfTaskBean.emptyInBig <= 0)
// {
// s2StationStep.Msg = "工位2料架[" + BigShelfRFID + "]已无空位,放行";
// s2StationStep.ToNextStep(S2_STATION_STEP.OUT_SHELF);
// }
else
{
if (TempBigRfid.Equals("") || TempBigRfid.Equals(shelfTaskBean.bigRfid) || BigShelfRFID.Equals(shelfTaskBean.realBigRfid))
{
//未绑定过或与绑定的虚拟料架一致
if (pkgStationStep.IsStep(PKG_STATION_STEP.WAIT_ROBOT) && s2StationStep.IsStep(S2_STATION_STEP.WAIT_ROBOT))
{
if (TempBigRfid.Equals(""))
{
TempBigRfid = shelfTaskBean.bigRfid;
}
packgeRobotTaskBean = shelfTaskBean;
s2StationStep.ToNextStep(S2_STATION_STEP.ROBOT_GET);
s2StationStep.Msg = "机器人准备抓取包装料架[" + PkgShelfRFID + "]库位[" + shelfTaskBean.packageLoc + "]上的料盘[" + shelfTaskBean.barcode + "]";
}
}
else
{
s2StationStep.Msg = "工位2料架" + BigShelfRFID + "[" + TempBigRfid + "]与服务器给定" + shelfTaskBean.bigRfid + "[" + shelfTaskBean.realBigRfid + "]不一致,放行大料架";
s2StationStep.ToNextStep(S2_STATION_STEP.OUT_SHELF);
}
}
}
else
{
s2StationStep.Msg = "工位2料架" + BigShelfRFID + "[" + TempBigRfid + "】 未从服务器获取到有效信息["+resultBean.msg+"],放行大料架";
s2StationStep.ToNextStep(S2_STATION_STEP.OUT_SHELF);
}
// else
// {
// if (TempBigRfid.Equals("") || TempBigRfid.Equals(shelfTaskBean.bigRfid) || BigShelfRFID.Equals(shelfTaskBean.realBigRfid))
// {
// //未绑定过或与绑定的虚拟料架一致
// if (pkgStationStep.IsStep(PKG_STATION_STEP.WAIT_ROBOT) && s2StationStep.IsStep(S2_STATION_STEP.WAIT_ROBOT))
// {
// if (TempBigRfid.Equals(""))
// {
// TempBigRfid = shelfTaskBean.bigRfid;
// }
// packgeRobotTaskBean = shelfTaskBean;
// s2StationStep.ToNextStep(S2_STATION_STEP.ROBOT_GET);
// s2StationStep.Msg = "机器人准备抓取包装料架[" + PkgShelfRFID + "]库位[" + shelfTaskBean.packageLoc + "]上的料盘[" + shelfTaskBean.barcode + "]";
// }
// }
// else
// {
// s2StationStep.Msg = "工位2料架" + BigShelfRFID + "[" + TempBigRfid + "]与服务器给定" + shelfTaskBean.bigRfid + "[" + shelfTaskBean.realBigRfid + "]不一致,放行大料架";
// s2StationStep.ToNextStep(S2_STATION_STEP.OUT_SHELF);
// }
// }
// }
// else
// {
// s2StationStep.Msg = "工位2料架" + BigShelfRFID + "[" + TempBigRfid + "】 未从服务器获取到有效信息["+resultBean.msg+"],放行大料架";
// s2StationStep.ToNextStep(S2_STATION_STEP.OUT_SHELF);
// }
}
}
else if (s2StationStep.IsStep(S2_STATION_STEP.ROBOT_GET))
{
bool robotCanMove = IOValue(IO_Type.Pkg_Rotot_Forbidden_Check).Equals(IO_VALUE.LOW);
if (robotCanMove)
{
s2StationStep.ToNextStep(S2_STATION_STEP.WAIT_ROBOT_GET_OK);
s2StationStep.Msg ="机器人开始抓取包装料架[" + PkgShelfRFID + "]库位[" + packgeRobotTaskBean.packageLoc + "]上的料盘[" + packgeRobotTaskBean.barcode + "]";
ABBControl.SendCmd(Config.ABB3_IP, ABBControl.Cmd_moveget, "p" + packgeRobotTaskBean.packageLoc, "L", ABBControl.DefaultSpeed);
}else
{
s2StationStep.Msg = "包装线体机器人禁止区域有料架,暂停抓取";
s2StationStep.ToNextStep(S2_STATION_STEP.ROBOT_GET);
}
}
else if (s2StationStep.IsStep(S2_STATION_STEP.WAIT_ROBOT_GET_OK))
{
string getResult = ABBControl.GetAbbCmd(Config.ABB3_IP);
if (getResult.Equals(""))
{
//如果包装料架已经空了,放行
if (packgeRobotTaskBean.reelInPackage == 1)
{
s2StationStep.Msg ="包装料架[" + PkgShelfRFID + "]最后一盘料已取出,放行";
pkgStationStep.ToNextStep(PKG_STATION_STEP.SHELF_EMPTY);
}
// }
// }
// else if (s2StationStep.IsStep(S2_STATION_STEP.ROBOT_GET))
// {
// bool robotCanMove = IOValue(IO_Type.Pkg_Rotot_Forbidden_Check).Equals(IO_VALUE.LOW);
// if (robotCanMove)
// {
// s2StationStep.ToNextStep(S2_STATION_STEP.WAIT_ROBOT_GET_OK);
// s2StationStep.Msg ="机器人开始抓取包装料架[" + PkgShelfRFID + "]库位[" + packgeRobotTaskBean.packageLoc + "]上的料盘[" + packgeRobotTaskBean.barcode + "]";
// ABBControl.SendCmd(Config.ABB3_IP, ABBControl.Cmd_moveget, "p" + packgeRobotTaskBean.packageLoc, "L", ABBControl.DefaultSpeed);
// }else
// {
// s2StationStep.Msg = "包装线体机器人禁止区域有料架,暂停抓取";
// s2StationStep.ToNextStep(S2_STATION_STEP.ROBOT_GET);
// }
// }
// else if (s2StationStep.IsStep(S2_STATION_STEP.WAIT_ROBOT_GET_OK))
// {
// string getResult = ABBControl.GetAbbCmd(Config.ABB3_IP);
// if (getResult.Equals(""))
// {
// //如果包装料架已经空了,放行
// if (packgeRobotTaskBean.reelInPackage == 1)
// {
// s2StationStep.Msg ="包装料架[" + PkgShelfRFID + "]最后一盘料已取出,放行";
// pkgStationStep.ToNextStep(PKG_STATION_STEP.SHELF_EMPTY);
// }
s2StationStep.ToNextStep(S2_STATION_STEP.WAIT_ROBOT_PUT_FINISH);
s2StationStep.Msg ="机器人开始将料盘[" + packgeRobotTaskBean.barcode + "]放入[" + packgeRobotTaskBean.realBigRfid + "]库位[" + packgeRobotTaskBean.bigLoc + "]";
ABBControl.SendCmd(Config.ABB3_IP, ABBControl.Cmd_moveput, "cp" + packgeRobotTaskBean.bigLoc, "L", ABBControl.DefaultSpeed);
}
} else if (s2StationStep.IsStep(S2_STATION_STEP.WAIT_ROBOT_PUT_FINISH))
{
string putResult = ABBControl.GetAbbCmd(Config.ABB3_IP);
if (putResult.Contains("FINISHED"))
{
s2StationStep.Msg ="机器人将料盘[" + packgeRobotTaskBean.barcode + "]放入" + packgeRobotTaskBean.bigRfid + "[" + packgeRobotTaskBean.realBigRfid + "]库位[" + packgeRobotTaskBean.bigLoc + "]完成";
s2StationStep.ToNextStep(S2_STATION_STEP.WAIT_ROBOT_PUT_OK);
//发送消息到服务器
HttpServer.PackFinish(packgeRobotTaskBean.barcode, packgeRobotTaskBean.packageRfid, packgeRobotTaskBean.packageLoc, BigShelfRFID, packgeRobotTaskBean.bigLoc);
}
}
else if (s2StationStep.IsStep(S2_STATION_STEP.WAIT_ROBOT_PUT_OK))
{
string putResult = ABBControl.GetAbbCmd(Config.ABB3_IP);
if (putResult.Equals(""))
{
s2StationStep.Msg ="机器人将料盘[" + packgeRobotTaskBean.barcode + "]放入[" + packgeRobotTaskBean.realBigRfid + "]库位[" + packgeRobotTaskBean.bigLoc + "]结束";
s2StationStep.ToNextStep(S2_STATION_STEP.WAIT_ROBOT);
}
}
}
// s2StationStep.ToNextStep(S2_STATION_STEP.WAIT_ROBOT_PUT_FINISH);
// s2StationStep.Msg ="机器人开始将料盘[" + packgeRobotTaskBean.barcode + "]放入[" + packgeRobotTaskBean.realBigRfid + "]库位[" + packgeRobotTaskBean.bigLoc + "]";
// ABBControl.SendCmd(Config.ABB3_IP, ABBControl.Cmd_moveput, "cp" + packgeRobotTaskBean.bigLoc, "L", ABBControl.DefaultSpeed);
// }
// } else if (s2StationStep.IsStep(S2_STATION_STEP.WAIT_ROBOT_PUT_FINISH))
// {
// string putResult = ABBControl.GetAbbCmd(Config.ABB3_IP);
// if (putResult.Contains("FINISHED"))
// {
// s2StationStep.Msg ="机器人将料盘[" + packgeRobotTaskBean.barcode + "]放入" + packgeRobotTaskBean.bigRfid + "[" + packgeRobotTaskBean.realBigRfid + "]库位[" + packgeRobotTaskBean.bigLoc + "]完成";
// s2StationStep.ToNextStep(S2_STATION_STEP.WAIT_ROBOT_PUT_OK);
// //发送消息到服务器
// HttpServer.PackFinish(packgeRobotTaskBean.barcode, packgeRobotTaskBean.packageRfid, packgeRobotTaskBean.packageLoc, BigShelfRFID, packgeRobotTaskBean.bigLoc);
// }
// }
// else if (s2StationStep.IsStep(S2_STATION_STEP.WAIT_ROBOT_PUT_OK))
// {
// string putResult = ABBControl.GetAbbCmd(Config.ABB3_IP);
// if (putResult.Equals(""))
// {
// s2StationStep.Msg ="机器人将料盘[" + packgeRobotTaskBean.barcode + "]放入[" + packgeRobotTaskBean.realBigRfid + "]库位[" + packgeRobotTaskBean.bigLoc + "]结束";
// s2StationStep.ToNextStep(S2_STATION_STEP.WAIT_ROBOT);
// }
// }
//}
private StepInfo<SHELF_TO_LEAVE_STATION> outShelfStep = new StepInfo<SHELF_TO_LEAVE_STATION>(SHELF_TO_LEAVE_STATION.NONE);
private enum SHELF_TO_LEAVE_STATION
......
......@@ -55,7 +55,7 @@
<appender-ref ref="RollingLogFileAppender" />
</logger>
<logger name="TheRFID">
<level value="Error" />
<level value="Info" />
<appender-ref ref="TheRFID" />
</logger>
<!--<root>
......
......@@ -119,6 +119,9 @@
this.btnS1Stop = new System.Windows.Forms.Button();
this.groupBox8 = new System.Windows.Forms.GroupBox();
this.ABB1_TrayCheck = new System.Windows.Forms.Label();
this.groupBox9 = new System.Windows.Forms.GroupBox();
this.button1 = new System.Windows.Forms.Button();
this.label1 = new System.Windows.Forms.Label();
this.groupBox6.SuspendLayout();
this.groupBox5.SuspendLayout();
this.groupBox4.SuspendLayout();
......@@ -127,6 +130,7 @@
this.groupBox7.SuspendLayout();
this.groupBox3.SuspendLayout();
this.groupBox8.SuspendLayout();
this.groupBox9.SuspendLayout();
this.SuspendLayout();
//
// groupBox6
......@@ -344,12 +348,13 @@
this.groupBox5.Controls.Add(this.S2_LineRun);
this.groupBox5.Controls.Add(this.S2_LineBackRun);
this.groupBox5.Controls.Add(this.S2_TopCylinderUp);
this.groupBox5.Location = new System.Drawing.Point(33, 393);
this.groupBox5.Location = new System.Drawing.Point(997, 367);
this.groupBox5.Name = "groupBox5";
this.groupBox5.Size = new System.Drawing.Size(320, 281);
this.groupBox5.Size = new System.Drawing.Size(252, 33);
this.groupBox5.TabIndex = 46;
this.groupBox5.TabStop = false;
this.groupBox5.Text = "上料工位2";
this.groupBox5.Visible = false;
//
// S2_StopCylinder2
//
......@@ -412,7 +417,7 @@
this.S2_TopCylinderDown.Name = "S2_TopCylinderDown";
this.S2_TopCylinderDown.Size = new System.Drawing.Size(111, 21);
this.S2_TopCylinderDown.TabIndex = 8;
this.S2_TopCylinderDown.Text = "X632 下降到位";
this.S2_TopCylinderDown.Text = "X32 下降到位";
this.S2_TopCylinderDown.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// btnS2Up
......@@ -476,7 +481,7 @@
this.S2_TopCylinderUp.Name = "S2_TopCylinderUp";
this.S2_TopCylinderUp.Size = new System.Drawing.Size(111, 21);
this.S2_TopCylinderUp.TabIndex = 5;
this.S2_TopCylinderUp.Text = "X631 上升到位";
this.S2_TopCylinderUp.Text = "X31 上升到位";
this.S2_TopCylinderUp.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// groupBox4
......@@ -602,7 +607,7 @@
this.S1_TopCylinderDown.Name = "S1_TopCylinderDown";
this.S1_TopCylinderDown.Size = new System.Drawing.Size(111, 21);
this.S1_TopCylinderDown.TabIndex = 8;
this.S1_TopCylinderDown.Text = "X630 下降到位";
this.S1_TopCylinderDown.Text = "X26下降到位";
this.S1_TopCylinderDown.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// btnS1Up
......@@ -666,7 +671,7 @@
this.S1_TopCylinderUp.Name = "S1_TopCylinderUp";
this.S1_TopCylinderUp.Size = new System.Drawing.Size(111, 21);
this.S1_TopCylinderUp.TabIndex = 5;
this.S1_TopCylinderUp.Text = "X629 上升到位";
this.S1_TopCylinderUp.Text = "X27上升到位";
this.S1_TopCylinderUp.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// groupBox2
......@@ -749,7 +754,7 @@
this.M_Updown_Down.Name = "M_Updown_Down";
this.M_Updown_Down.Size = new System.Drawing.Size(111, 21);
this.M_Updown_Down.TabIndex = 8;
this.M_Updown_Down.Text = "X616下降到位";
this.M_Updown_Down.Text = "X13下降到位";
this.M_Updown_Down.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// btnMUp
......@@ -802,7 +807,7 @@
this.M_Updown_Up.Name = "M_Updown_Up";
this.M_Updown_Up.Size = new System.Drawing.Size(111, 21);
this.M_Updown_Up.TabIndex = 5;
this.M_Updown_Up.Text = "X615上升到位";
this.M_Updown_Up.Text = "X12上升到位";
this.M_Updown_Up.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// ABB2_TrayCheck
......@@ -812,9 +817,9 @@
this.ABB2_TrayCheck.Location = new System.Drawing.Point(343, 22);
this.ABB2_TrayCheck.Margin = new System.Windows.Forms.Padding(3);
this.ABB2_TrayCheck.Name = "ABB2_TrayCheck";
this.ABB2_TrayCheck.Size = new System.Drawing.Size(220, 20);
this.ABB2_TrayCheck.Size = new System.Drawing.Size(176, 17);
this.ABB2_TrayCheck.TabIndex = 7;
this.ABB2_TrayCheck.Text = "右侧_分盘装置2料盘检测_ABB1";
this.ABB2_TrayCheck.Text = "右侧_分盘装置2料盘检测_ABB2";
this.ABB2_TrayCheck.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// groupBox1
......@@ -883,7 +888,7 @@
this.L_Updown_Down.Name = "L_Updown_Down";
this.L_Updown_Down.Size = new System.Drawing.Size(111, 21);
this.L_Updown_Down.TabIndex = 8;
this.L_Updown_Down.Text = "X606下降到位";
this.L_Updown_Down.Text = "X05下降到位";
this.L_Updown_Down.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// btnLUp
......@@ -947,7 +952,7 @@
this.L_Updown_Up.Name = "L_Updown_Up";
this.L_Updown_Up.Size = new System.Drawing.Size(111, 21);
this.L_Updown_Up.TabIndex = 5;
this.L_Updown_Up.Text = "X605上升到位";
this.L_Updown_Up.Text = "X04上升到位";
this.L_Updown_Up.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// timer1
......@@ -980,7 +985,7 @@
this.groupBox7.Controls.Add(this.RHigh_StopCylinder1);
this.groupBox7.Controls.Add(this.RHigh_StopCheck1);
this.groupBox7.Controls.Add(this.RHigh_LineRun);
this.groupBox7.Location = new System.Drawing.Point(401, 406);
this.groupBox7.Location = new System.Drawing.Point(17, 408);
this.groupBox7.Name = "groupBox7";
this.groupBox7.Size = new System.Drawing.Size(234, 255);
this.groupBox7.TabIndex = 291;
......@@ -1126,7 +1131,7 @@
this.groupBox3.Controls.Add(this.R_OutLineRun);
this.groupBox3.Controls.Add(this.R_OutLineBackRun);
this.groupBox3.Controls.Add(this.R_Updown_Up);
this.groupBox3.Location = new System.Drawing.Point(683, 403);
this.groupBox3.Location = new System.Drawing.Point(274, 408);
this.groupBox3.Name = "groupBox3";
this.groupBox3.Size = new System.Drawing.Size(374, 260);
this.groupBox3.TabIndex = 290;
......@@ -1194,7 +1199,7 @@
this.R_Updown_Down.Name = "R_Updown_Down";
this.R_Updown_Down.Size = new System.Drawing.Size(111, 21);
this.R_Updown_Down.TabIndex = 8;
this.R_Updown_Down.Text = "X634 下降到位";
this.R_Updown_Down.Text = "X32下降到位";
this.R_Updown_Down.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// btnRUp
......@@ -1258,7 +1263,7 @@
this.R_Updown_Up.Name = "R_Updown_Up";
this.R_Updown_Up.Size = new System.Drawing.Size(111, 21);
this.R_Updown_Up.TabIndex = 5;
this.R_Updown_Up.Text = "X633 上升到位";
this.R_Updown_Up.Text = "X31 上升到位";
this.R_Updown_Up.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// btnS1StopDown
......@@ -1319,16 +1324,52 @@
this.ABB1_TrayCheck.Location = new System.Drawing.Point(92, 22);
this.ABB1_TrayCheck.Margin = new System.Windows.Forms.Padding(3);
this.ABB1_TrayCheck.Name = "ABB1_TrayCheck";
this.ABB1_TrayCheck.Size = new System.Drawing.Size(220, 20);
this.ABB1_TrayCheck.Size = new System.Drawing.Size(176, 17);
this.ABB1_TrayCheck.TabIndex = 7;
this.ABB1_TrayCheck.Text = "左侧_分盘装置1料盘检测_ABB2";
this.ABB1_TrayCheck.Text = "左侧_分盘装置1料盘检测_ABB1";
this.ABB1_TrayCheck.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// groupBox9
//
this.groupBox9.BackColor = System.Drawing.Color.Aqua;
this.groupBox9.Controls.Add(this.label1);
this.groupBox9.Controls.Add(this.button1);
this.groupBox9.Location = new System.Drawing.Point(657, 408);
this.groupBox9.Name = "groupBox9";
this.groupBox9.Size = new System.Drawing.Size(275, 188);
this.groupBox9.TabIndex = 296;
this.groupBox9.TabStop = false;
this.groupBox9.Text = "RFID读取";
//
// button1
//
this.button1.BackColor = System.Drawing.Color.White;
this.button1.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.button1.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.button1.Location = new System.Drawing.Point(80, 19);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(103, 37);
this.button1.TabIndex = 290;
this.button1.Text = "读取";
this.button1.UseVisualStyleBackColor = false;
this.button1.Click += new System.EventHandler(this.btnInitRFID_Click);
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(6, 80);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(35, 17);
this.label1.TabIndex = 0;
this.label1.Tag = "192.168.103.51";
this.label1.Text = "RFID";
//
// FrmDbLineIO
//
this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F);
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(1284, 721);
this.Controls.Add(this.groupBox9);
this.Controls.Add(this.groupBox8);
this.Controls.Add(this.btnS1Stop);
this.Controls.Add(this.S1StopDown);
......@@ -1354,6 +1395,8 @@
this.groupBox3.ResumeLayout(false);
this.groupBox8.ResumeLayout(false);
this.groupBox8.PerformLayout();
this.groupBox9.ResumeLayout(false);
this.groupBox9.PerformLayout();
this.ResumeLayout(false);
}
......@@ -1450,5 +1493,8 @@
internal System.Windows.Forms.Button btnS1Stop;
private System.Windows.Forms.GroupBox groupBox8;
private System.Windows.Forms.Label ABB1_TrayCheck;
private System.Windows.Forms.GroupBox groupBox9;
private System.Windows.Forms.Label label1;
internal System.Windows.Forms.Button button1;
}
}
\ No newline at end of file
......@@ -18,7 +18,7 @@ namespace OnlineStore.DoubleLineClient
{
InitializeComponent();
}
private List<Control> DILabel = new List<Control>();
private List<Control> DILabel = new List<Control>();
private List<Control> doList = new List<Control>();
private void FrmDbLineIO_Load(object sender, EventArgs e)
{
......@@ -31,13 +31,13 @@ namespace OnlineStore.DoubleLineClient
{
DILabel = new List<Control>();
doList = new List<Control>();
foreach(Control con in this.Controls)
foreach (Control con in this.Controls)
{
if(con is GroupBox)
if (con is GroupBox)
{
foreach(Control c in con.Controls)
foreach (Control c in con.Controls)
{
if(c is Label)
if (c is Label)
{
if (LineManager.Line.Config.DIList.ContainsKey(c.Name))
{
......@@ -63,14 +63,15 @@ namespace OnlineStore.DoubleLineClient
if (!this.Visible)
{
return;
}
}
foreach (Control labl in DILabel)
{
IO_VALUE value = LineManager.Line.IOValue(labl.Name);
if (value.Equals(IO_VALUE.HIGH))
{
labl.BackColor = Color.LawnGreen;
}else if (value.Equals(IO_VALUE.LOW))
}
else if (value.Equals(IO_VALUE.LOW))
{
labl.BackColor = Color.LightGray;
}
......@@ -84,11 +85,21 @@ namespace OnlineStore.DoubleLineClient
}
else if (value.Equals(IO_VALUE.LOW))
{
labl.BackColor = labl.Parent.BackColor ;
labl.BackColor = labl.Parent.BackColor;
//labl.BackColor = Color.LightGray;
}
}
if (LineManager.Line.RfidIpList != null && LineManager.Line.RfidIpList.Count > 0)
{
string tmp = "";
foreach (string con in LineManager.Line.RfidIpList)
{
tmp += con + ":" + RFIDManager.ReadRFID(con).NumStr() + "\r\t";
}
this.Invoke(new Action(() => {
label1.Text = tmp;
}));
}
}
private void Line_StopCylinder_Click(object sender, EventArgs e)
......@@ -144,13 +155,13 @@ namespace OnlineStore.DoubleLineClient
private void btnS2Up_Click(object sender, EventArgs e)
{
LineManager.Line.CylinderMove(null, IO_Type.S2_TopCylinderDown, IO_Type.S2_TopCylinderUp);
// LineManager.Line.CylinderMove(null, IO_Type.S2_TopCylinderDown, IO_Type.S2_TopCylinderUp);
}
private void btnS2Down_Click(object sender, EventArgs e)
{
LineManager.Line.CylinderMove(null, IO_Type.S2_TopCylinderUp, IO_Type.S2_TopCylinderDown);
// LineManager.Line.CylinderMove(null, IO_Type.S2_TopCylinderUp, IO_Type.S2_TopCylinderDown);
}
private void btnRUp_Click(object sender, EventArgs e)
......@@ -182,5 +193,9 @@ namespace OnlineStore.DoubleLineClient
LineManager.Line.IOMove(IO_Type.S1_LineRun, IO_VALUE.LOW);
}
private void btnInitRFID_Click(object sender, EventArgs e)
{
}
}
}
......@@ -65,8 +65,8 @@ namespace OnlineStore.DoubleLineClient
AddForm(" 线体操作调试 ", frmdb);
frmdb.btnBack.Click += BtnBack_Click;
PackageLineClien pakageLineClient = new PackageLineClien();
AddForm(" 包装线 ", pakageLineClient);
//PackageLineClien pakageLineClient = new PackageLineClien();
//AddForm(" 包装线 ", pakageLineClient);
LoadOk = true;
}
......@@ -126,11 +126,11 @@ namespace OnlineStore.DoubleLineClient
isAlarm = true;
msglist.Add(new AlarmMsg("1号机器人", "doubleLine.RightRobot.WarnMsg", DoubleLine.RightRobot.WarnMsg));
}
if (!LineManager.packageLine.A4_Shelf_Exist)
{
isAlarm = true;
msglist.Add(new AlarmMsg("A4包装线出口状态", "doubleLine.packageLine.agvA4Step.Msg", LineManager.packageLine.agvA4Step.Msg));
}
//if (!LineManager.packageLine.A4_Shelf_Exist)
//{
// isAlarm = true;
// msglist.Add(new AlarmMsg("A4包装线出口状态", "doubleLine.packageLine.agvA4Step.Msg", LineManager.packageLine.agvA4Step.Msg));
//}
if (!LineManager.packageLine.LeftAllowIn)
{
isAlarm = true;
......
......@@ -273,7 +273,7 @@ namespace OnlineStore.DoubleLineClient
private void btnDriveMotor_Run_Click(object sender, EventArgs e)
{
BtnMove(btnNGCylinder, "左侧升降机下降", "左侧升降机上升", IO_Type.L_Updown_Up, IO_Type.L_Updown_Down);
BtnMove(btnDriveMotor_Run, "左侧升降机下降", "左侧升降机上升", IO_Type.L_Updown_Up, IO_Type.L_Updown_Down);
}
private void btnNGCylinder_Click(object sender, EventArgs e)
......@@ -290,7 +290,7 @@ namespace OnlineStore.DoubleLineClient
private void btnSw1Location_Click(object sender, EventArgs e)
{
BtnMove(btnSw1Location, "工位2顶升下降", "工位2顶升上升", IO_Type.S2_TopCylinderUp, IO_Type.S2_TopCylinderDown);
// BtnMove(btnSw1Location, "工位2顶升下降", "工位2顶升上升", IO_Type.S2_TopCylinderUp, IO_Type.S2_TopCylinderDown);
}
private void btnSw4Location_Click(object sender, EventArgs e)
......
......@@ -77,17 +77,17 @@ namespace OnlineStore.DoubleLineClient
private void updateStatus()
{
pkgStationStatus.Text = LineManager.packageLine.pkgStationStep.StatusStr();
pkgStatusMsg.Text = LineManager.packageLine.pkgStationStep.Msg;
//pkgStationStatus.Text = LineManager.packageLine.pkgStationStep.StatusStr();
//pkgStatusMsg.Text = LineManager.packageLine.pkgStationStep.Msg;
agvA3Status.Text = LineManager.packageLine.agvA3Step.StatusStr();
agvA3Msg.Text = LineManager.packageLine.agvA3Step.Msg;
//agvA3Status.Text = LineManager.packageLine.agvA3Step.StatusStr();
//agvA3Msg.Text = LineManager.packageLine.agvA3Step.Msg;
agvA4Status.Text = LineManager.packageLine.agvA4Step.StatusStr();
agvA4Msg.Text = LineManager.packageLine.agvA4Step.Msg;
//agvA4Status.Text = LineManager.packageLine.agvA4Step.StatusStr();
//agvA4Msg.Text = LineManager.packageLine.agvA4Step.Msg;
s2StationStatus.Text = LineManager.packageLine.s2StationStep.StatusStr();
s2StationMsg.Text = LineManager.packageLine.s2StationStep.Msg;
//s2StationStatus.Text = LineManager.packageLine.s2StationStep.StatusStr();
//s2StationMsg.Text = LineManager.packageLine.s2StationStep.Msg;
benQLeftInStatus.Text = LineManager.packageLine.benQInStepLeft.StatusStr();
benQLeftInMsg.Text = LineManager.packageLine.benQInStepLeft.Msg;
......@@ -139,12 +139,12 @@ namespace OnlineStore.DoubleLineClient
private void btnS2Down_Click(object sender, EventArgs e)
{
LineManager.Line.CylinderMove(null, IO_Type.Pkg_Station_SOL_UP, IO_Type.Pkg_Station_SOL_Down);
//LineManager.Line.CylinderMove(null, IO_Type.Pkg_Station_SOL_UP, IO_Type.Pkg_Station_SOL_Down);
}
private void btnS2Up_Click(object sender, EventArgs e)
{
LineManager.Line.CylinderMove(null, IO_Type.Pkg_Station_SOL_Down, IO_Type.Pkg_Station_SOL_UP);
// LineManager.Line.CylinderMove(null, IO_Type.Pkg_Station_SOL_Down, IO_Type.Pkg_Station_SOL_UP);
}
private void BtnClick(object sender, EventArgs e)
......
......@@ -58,30 +58,30 @@ namespace OnlineStore.LoadCSVLibrary
/// <summary>
/// PRO ABB机器人3IP ABB3_IP 192.168.103.53
/// </summary>
[ConfigProAttribute("ABB3_IP", false)]
public string ABB3_IP { get; set; }
//[ConfigProAttribute("ABB3_IP", false)]
//public string ABB3_IP { get; set; }
/// <summary>
/// PRO 双层线左侧提升机 L_Updown_Rfid 192.168.103.101
/// PRO 双层线左侧提升机 L_Updown_Rfid 192.168.103.51
/// </summary>
[ConfigProAttribute("L_Updown_Rfid", false)]
public string L_Updown_Rfid { get; set; }
/// <summary>
/// PRO 双层线中间提升机 M_Updown_Rfid 192.168.103.102
/// PRO 双层线中间提升机 M_Updown_Rfid 192.168.103.52
/// </summary>
[ConfigProAttribute("M_Updown_Rfid", false)]
public string M_Updown_Rfid { get; set; }
/// <summary>
/// PRO 双层线上料工位1 S1_Rfid 192.168.103.103
/// PRO 双层线上料工位1 S1_Rfid 192.168.103.53
/// </summary>
[ConfigProAttribute("S1_Rfid", false)]
public string S1_Rfid { get; set; }
/// <summary>
/// PRO 双层线上料工位2 S2_Rfid 192.168.103.104
/// </summary>
[ConfigProAttribute("S2_Rfid", false)]
public string S2_Rfid { get; set; }
//[ConfigProAttribute("S2_Rfid", false)]
//public string S2_Rfid { get; set; }
/// <summary>
/// PRO 双层线右侧提升机 R_Updown_Rfid 192.168.103.105
/// PRO 双层线右侧提升机 R_Updown_Rfid 192.168.103.54
/// </summary>
[ConfigProAttribute("R_Updown_Rfid", false)]
public string R_Updown_Rfid { get; set; }
......@@ -89,10 +89,10 @@ namespace OnlineStore.LoadCSVLibrary
/// <summary>
/// PRO,包装线RFID,Pkg_Rfid,192.168.103.106
/// </summary>
[ConfigProAttribute("Pkg_Rfid", false)]
public string Pkg_Rfid { get; set; }
//[ConfigProAttribute("Pkg_Rfid", false)]
//public string Pkg_Rfid { get; set; }
/// <summary>
/// PRO,双层线上层右侧RFID,RHigh_Rfid,192.168.103.109
/// PRO,双层线上层右侧RFID,RHigh_Rfid,192.168.103.55
/// </summary>
[ConfigProAttribute("RHigh_Rfid", false)]
public string RHigh_Rfid { get; set; }
......
......@@ -27,452 +27,449 @@ namespace OnlineStore.LoadCSVLibrary
#region PRO_AOI_IP_1
/// <summary>
/// DI 急停 SuddenStop_BTN 0 PRO_AOI_IP_1 0 急停 X601
/// DI,急停,SuddenStop_BTN,0,PRO_AOI_IP_1,0,急停,X01,X01,0
/// </summary>
public static string SuddenStop_BTN = "SuddenStop_BTN";
/// <summary>
/// DI 复位 Reset_BTN 1 PRO_AOI_IP_1 0 复位 X602
///DI,复位,Reset_BTN,1,PRO_AOI_IP_1,0,复位,X02,X02,0
/// </summary>
public static string Reset_BTN = "Reset_BTN";
/// <summary>
/// DI 联动 Auto_BTN 2 PRO_AOI_IP_1 0 联动 X603
/// </summary>
public static string Auto_BTN = "Auto_BTN";
/// <summary>
/// DI 气压检测 AirCheck 3 PRO_AOI_IP_1 0 气压检测 X604
///DI,气压检测,AirCheck,2,PRO_AOI_IP_1,0,气压检测,X03,X03,0
/// </summary>
public static string AirCheck = "AirCheck";
/// <summary>
/// DI 左侧升降气缸上升端 L_Updown_Up 4 PRO_AOI_IP_1 0 左侧升降气缸上升端 X605
///DI,左升降气缸上升端,L_Updown_Up,3,PRO_AOI_IP_1,0,左升降气缸上升端,X04,X04,0
/// </summary>
public static string L_Updown_Up = "L_Updown_Up";
/// <summary>
/// DI 左侧升降气缸下降端 L_Updown_Down 5 PRO_AOI_IP_1 0 左侧升降气缸下降端 X606
/// DI,左升降气缸下降端,L_Updown_Down,4,PRO_AOI_IP_1,0,左升降气缸下降端,X05,X05,0
/// </summary>
public static string L_Updown_Down = "L_Updown_Down";
/// <summary>
/// DI 入口轨道检测 Line_InCheck 6 PRO_AOI_IP_1 0 入口轨道检测 X607
/// DI,入口轨道检测,Line_InCheck,5,PRO_AOI_IP_1,0,入口轨道检测,X06,X06,0
/// </summary>
public static string Line_InCheck = "Line_InCheck";
/// <summary>
/// DI 入口轨道阻挡检测 Line_StopCheck 7 PRO_AOI_IP_1 0 入口轨道阻挡检测 X608
///DI,入口轨道阻挡检测,Line_StopCheck,6,PRO_AOI_IP_1,0,入口轨道阻挡检测,X07,X07,0
/// </summary>
public static string Line_StopCheck = "Line_StopCheck";
/// <summary>
/// DI 左侧下层线体阻挡1检测 LLow_StopCheck1 8 PRO_AOI_IP_1 0 左侧下层线体阻挡1检测 X609
/// DI,左下层线体阻挡1检测,LLow_StopCheck1,7,PRO_AOI_IP_1,0,左下层线体阻挡1检测,X08,X08,0
/// </summary>
public static string LLow_StopCheck1 = "LLow_StopCheck1";
/// <summary>
/// DI 左侧下层线体阻挡2检测 LLow_StopCheck2 9 PRO_AOI_IP_1 0 左侧下层线体阻挡2检测 X610
/// DI,左下层线体阻挡2检测,LLow_StopCheck2,8,PRO_AOI_IP_1,0,左下层线体阻挡2检测,X09,X09,0
/// </summary>
public static string LLow_StopCheck2 = "LLow_StopCheck2";
/// <summary>
/// DI 左侧下层线体阻挡3检测 LLow_StopCheck3 10 PRO_AOI_IP_1 0 左侧下层线体阻挡3检测 X611
/// </summary>
public static string LLow_StopCheck3 = "LLow_StopCheck3";
/// <summary>
/// DI 左侧上层线体阻挡1检测 LHigh_StopCheck1 11 PRO_AOI_IP_1 0 左侧上层线体阻挡1检测 X612
/// DI,左上层线体阻挡1检测,LHigh_StopCheck1,9,PRO_AOI_IP_1,0,左上层线体阻挡1检测,X10,X10,0
/// </summary>
public static string LHigh_StopCheck1 = "LHigh_StopCheck1";
/// <summary>
/// DI 左侧上层线体阻挡2检测 LHigh_StopCheck2 12 PRO_AOI_IP_1 0 左侧上层线体阻挡2检测 X613
///DI,左上层线体阻挡2检测,LHigh_StopCheck2,10,PRO_AOI_IP_1,0,左上层线体阻挡2检测,X11,X11,0
/// </summary>
public static string LHigh_StopCheck2 = "LHigh_StopCheck2";
/// <summary>
/// DI 左侧上层线体阻挡3检测 LHigh_StopCheck3 13 PRO_AOI_IP_1 0 左侧上层线体阻挡3检测 X614
/// </summary>
public static string LHigh_StopCheck3 = "LHigh_StopCheck3";
/// <summary>
/// DI 中间升降气缸上升端 M_Updown_Up 14 PRO_AOI_IP_1 0 中间升降气缸上升端 X615
/// DI,中间升降气缸上升端,M_Updown_Up,11,PRO_AOI_IP_1,0,中间升降气缸上升端,X12,X12,0
/// </summary>
public static string M_Updown_Up = "M_Updown_Up";
/// <summary>
/// DI 中间升降气缸下降端 M_Updown_Down 15 PRO_AOI_IP_1 0 中间升降气缸下降端 X616
/// DI,中间升降气缸下降端,M_Updown_Down,12,PRO_AOI_IP_1,0,中间升降气缸下降端,X13,X13,0
/// </summary>
public static string M_Updown_Down = "M_Updown_Down";
/// <summary>
/// DO 待机状态(指示灯) AutoRun_HddLed 0 PRO_AOI_IP_1 0 待机状态(指示灯) Y601
/// DI,中间轨道正阻挡检测,M_LeftStopCheck,13,PRO_AOI_IP_1,0,中间轨道正阻挡检测,X14,X14,0
/// </summary>
public static string M_LeftStopCheck = "M_LeftStopCheck";
/// <summary>
/// DI,中间轨道反阻挡检测,M_RightStopCheck,14,PRO_AOI_IP_1,0,中间轨道反阻挡检测,X15,X15,0
/// </summary>
public static string M_RightStopCheck = "M_RightStopCheck";
/// <summary>
/// DI,上料位前反阻挡检测,S1_StopCheck1,15,PRO_AOI_IP_1,0,上料位前反阻挡检测,X16,X16,0
/// </summary>
public static string S1_StopCheck1 = "M_RightStopCheck";
/// <summary>
/// DO,待机状态(指示灯),AutoRun_HddLed,0,PRO_AOI_IP_1,0,待机状态(指示灯),Y01,Y01,0
/// </summary>
public static string AutoRun_HddLed = "AutoRun_HddLed";
/// <summary>
/// DO 运行状态(指示灯) RunSign_HddLed 1 PRO_AOI_IP_1 0 运行状态(指示灯) Y602
/// DO,运行状态(指示灯),RunSign_HddLed,1,PRO_AOI_IP_1,0,运行状态(指示灯),Y02,Y02,0
/// </summary>
public static string RunSign_HddLed = "RunSign_HddLed";
/// <summary>
/// DO 故障状态(指示灯) Alarm_HddLed 2 PRO_AOI_IP_1 0 故障状态(指示灯) Y603
/// DO,故障状态(指示灯),Alarm_HddLed,2,PRO_AOI_IP_1,0,故障状态(指示灯),Y03,Y03,0
/// </summary>
public static string Alarm_HddLed = "Alarm_HddLed";
/// <summary>
/// DO 故障状态(蜂鸣器) Alarm_Buzzer 3 PRO_AOI_IP_1 0 故障状态(蜂鸣器) Y604
/// DO,故障状态(蜂鸣器),Alarm_Buzzer,3,PRO_AOI_IP_1,0,故障状态(蜂鸣器),Y04,Y04,0
/// </summary>
public static string Alarm_Buzzer = "Alarm_Buzzer";
/// <summary>
/// DO 左侧入口轨道阻挡下降 Line_StopCylinder 6 PRO_AOI_IP_1 0 左侧入口轨道阻挡下降 Y607
/// DO,左下层电机正转,LLown_LineRun,4,PRO_AOI_IP_1,0,左下层电机正转,Y05,Y05,0
/// </summary>
public static string Line_StopCylinder = "Line_StopCylinder";
/// <summary>
/// DO,左侧下层线体阻挡1下降,LLow_StopCylinder1,7,PRO_AOI_IP_1,0,左侧下层线体阻挡1下降,Y608,Y608,0
/// </summary>
public static string LLow_StopCylinder1 = "LLow_StopCylinder1";
public static string LLown_LineRun = "LLown_LineRun";
/// <summary>
/// DO,左侧下层线体阻挡2下降,LLow_StopCylinder2,8,PRO_AOI_IP_1,0,左侧下层线体阻挡2下降,Y609,Y609,0
/// DO,左上层电机正转,LHigh_LineRun,5,PRO_AOI_IP_1,0,左上层电机正转,Y06,Y06,0
/// </summary>
public static string LLow_StopCylinder2 = "LLow_StopCylinder2";
public static string LHigh_LineRun = "LHigh_LineRun";
/// <summary>
/// DO,左侧下层线体阻挡3下降,LLow_StopCylinder3,9,PRO_AOI_IP_1,0,左侧下层线体阻挡3下降,Y610,Y610,0
/// DO,上料工位电机正转,S1_LineRun,6,PRO_AOI_IP_1,0,上料工位电机正转,Y07,Y07,0
/// </summary>
public static string LLow_StopCylinder3 = "LLow_StopCylinder3";
public static string S1_LineRun = "S1_LineRun";
/// <summary>
/// DO,左侧上层线体阻挡1下降,LHigh_StopCylinder,10,PRO_AOI_IP_1,0,左侧上层线体阻挡1下降,Y611,Y611,0
/// DO,上料工位电机反转,S1_LineBackRun,7,PRO_AOI_IP_1,0,上料工位电机反转,Y08,Y08,0
/// </summary>
public static string LHigh_StopCylinder1 = "LHigh_StopCylinder1";
public static string S1_LineBackRun = "S1_LineBackRun";
/// <summary>
/// DO,左侧上层线体阻挡2下降,LHigh_StopCylinder,11,PRO_AOI_IP_1,0,左侧上层线体阻挡2下降,Y612,Y612,0
/// DO,右下层电机正转,R_LineRun,8,PRO_AOI_IP_1,0,右下层电机正转,Y09,Y09,0
/// </summary>
public static string LHigh_StopCylinder2 = "LHigh_StopCylinder2";
public static string R_LineRun = "R_LineRun";
/// <summary>
/// DO,左侧上层线体阻挡3下降,LHigh_StopCylinder,12,PRO_AOI_IP_1,0,左侧上层线体阻挡3下降,Y613,Y613,0
///DO,右上层电机正转,RHigh_LineRun,9,PRO_AOI_IP_1,0,右上层电机正转,Y10,Y10,0
/// </summary>
public static string LHigh_StopCylinder3 = "LHigh_StopCylinder3";
public static string RHigh_LineRun = "RHigh_LineRun";
/// <summary>
/// DO,左侧入口轨道电机正转,L_InLineRun,13,PRO_AOI_IP_1,0,左侧入口轨道电机正转,Y614,Y614,0
///DO,左入口轨道电机正转,L_InLineRun,10,PRO_AOI_IP_1,0,左入口轨道电机正转,Y11,Y11,0
/// </summary>
public static string L_InLineRun = "L_InLineRun";
/// <summary>
/// DO,左侧入口轨道电机反转,L_InLineBackRun,14,PRO_AOI_IP_1,0,左侧入口轨道电机反转,Y615,Y615,0
/// DO,中间轨道电机正转,M_LineRun,11,PRO_AOI_IP_1,0,中间轨道电机正转,Y12,Y12,0
/// </summary>
public static string L_InLineBackRun = "L_InLineBackRun";
#endregion
#region PRO_AOI_IP_2
public static string M_LineRun = "M_LineRun";
/// <summary>
///DI,中间轨道左阻挡检测,M_LeftStopCheck,0,PRO_AOI_IP_2,0,中间轨道左阻挡检测,X621,X621,0
/// DO,中间轨道电机反转,M_LineBackRun,12,PRO_AOI_IP_1,0,中间轨道电机反转,Y13,Y13,0
/// </summary>
public static string M_LeftStopCheck = "M_LeftStopCheck";
public static string M_LineBackRun = "M_LineBackRun";
/// <summary>
///DI,中间轨道右阻挡检测,M_RightStopCheck,1,PRO_AOI_IP_2,0,中间轨道右阻挡检测,X622,X622,0
/// DO,右出口轨道电机正转,R_OutLineRun,13,PRO_AOI_IP_1,0,右出口轨道电机正转,Y14,Y14,0
/// </summary>
public static string M_RightStopCheck = "M_RightStopCheck";
public static string R_OutLineRun = "R_OutLineRun";
/// <summary>
///DI,上料工位1阻挡1检测,S1_StopCheck1,2,PRO_AOI_IP_2,0,上料工位1阻挡1检测,X623,X623,0
///DO,右出口轨道电机反转,R_OutLineBackRun,14,PRO_AOI_IP_1,0,右出口轨道电机反转,Y15,Y15,0
/// </summary>
public static string S1_StopCheck1 = "S1_StopCheck1";
public static string R_OutLineBackRun = "R_OutLineBackRun";
#endregion
#region PRO_AOI_IP_2
/// <summary>
///DI,上料工位1阻挡2检测,S1_StopCheck2,3,PRO_AOI_IP_2,0,上料工位1阻挡2检测,X624,X624,0
///DI,上料位前正阻挡检测,S1_StopCheck2,0,PRO_AOI_IP_2,0,上料位前正阻挡检测,X21,X21,0
/// </summary>
public static string S1_StopCheck2 = "S1_StopCheck2";
///// <summary>
/////DI,上料工位1阻挡3检测,S1_StopCheck3,4,PRO_AOI_IP_2,0,上料工位1阻挡3检测,X625,X625,0
///// </summary>
//public static string S1_StopCheck3 = "S1_StopCheck3";
/// <summary>
///DI,上料工位1阻挡4检测,S1_StopCheck4,5,PRO_AOI_IP_2,0,上料工位1阻挡4检测,X626,X626,0
///DI,上料位反定位阻挡检测,S1_StopCheck3,1,PRO_AOI_IP_2,0,上料位反定位阻挡检测,X22,X22,0
/// </summary>
public static string S1_StopCheck4 = "S1_StopCheck4";
public static string S1_StopCheck3 = "S1_StopCheck3";
/// <summary>
///DI,上料工位2阻挡1检测,S2_StopCheck1,6,PRO_AOI_IP_2,0,上料工位2阻挡1检测,X627,X627,0
///DI,上料位正定位阻挡检测,S1_StopCheck4,2,PRO_AOI_IP_2,0,上料位正定位阻挡检测,X23,X23,0
/// </summary>
public static string S2_StopCheck1 = "S2_StopCheck1";
/// <summary>
///DI,上料工位2阻挡2检测,S2_StopCheck2,7,PRO_AOI_IP_2,0,上料工位2阻挡2检测,X628,X628,0
/// <summary>
public static string S2_StopCheck2 = "S2_StopCheck2";
public static string S1_StopCheck4 = "S1_StopCheck4";
/// <summary>
///DI,上料工位1顶升上升端,S1_TopCylinderUp,8,PRO_AOI_IP_2,0,上料工位1顶升上升端,X629,X629,0
///DI,上料位后阻挡检测,S2_StopCheck1,3,PRO_AOI_IP_2,0,上料位后阻挡检测,X24,X24,0
/// </summary>
public static string S2_StopCheck1 = "S2_StopCheck1";
///// <summary>
/////DI,上料工位顶升上升端1,S1_TopCylinderUp,4,PRO_AOI_IP_2,0,上料工位顶升上升端1,X25,X25,0
///// </summary>
public static string S1_TopCylinderUp = "S1_TopCylinderUp";
/// <summary>
///DI,上料工位1顶升下降端,S1_TopCylinderDown,9,PRO_AOI_IP_2,0,上料工位1顶升下降端,X630,X630,0
///DI,上料工位顶升下降端1,S1_TopCylinderDown,5,PRO_AOI_IP_2,0,上料工位顶升下降端1,X26,X26,0
/// </summary>
public static string S1_TopCylinderDown = "S1_TopCylinderDown";
/// <summary>
///DI,上料工位2顶升上升端,S2_TopCylinderUp,10,PRO_AOI_IP_2,0,上料工位2顶升上升端,X631,X631,0
///DI,上料工位顶升上升端2,S2_TopCylinderUp,6,PRO_AOI_IP_2,0,上料工位顶升上升端2,X27,X27,0
/// </summary>
public static string S2_TopCylinderUp = "S2_TopCylinderUp";
/// <summary>
///DI,上料工位2顶升下降端,S2_TopCylinderDown,11,PRO_AOI_IP_2,0,上料工位2顶升下降端,X632,X632,0
/// </summary>
///DI,上料工位顶升下降端2,S2_TopCylinderDown,7,PRO_AOI_IP_2,0,上料工位顶升下降端2,X28,X28,0
/// <summary>
public static string S2_TopCylinderDown = "S2_TopCylinderDown";
/// <summary>
///DI,右侧升降气缸上升端,R_Updown_Up,12,PRO_AOI_IP_2,0,右侧升降气缸上升端,X633,X633,0
///DI,J1接驳台有料检测,ABB1_TrayCheck,8,PRO_AOI_IP_2,0,J1接驳台有料检测,X29,X29,0
/// </summary>
public static string ABB1_TrayCheck = "ABB1_TrayCheck";
/// <summary>
///DI,J2接驳台有料检测,ABB2_TrayCheck,9,PRO_AOI_IP_2,0,J2接驳台有料检测,X30,X30,0
/// </summary>
public static string ABB2_TrayCheck = "ABB2_TrayCheck";
/// <summary>
///DI,右升降气缸上升端,R_Updown_Up,10,PRO_AOI_IP_2,0,右侧升降气缸上升端,X31,X31,0
/// </summary>
public static string R_Updown_Up = "R_Updown_Up";
/// <summary>
///DI,右侧升降气缸下降端,R_Updown_Down,13,PRO_AOI_IP_2,0,右侧升降气缸下降端,X634,X634,0
///DI,右升降气缸下降端,R_Updown_Down,11,PRO_AOI_IP_2,0,右侧升降气缸下降端,X32,X32,0
/// </summary>
public static string R_Updown_Down = "R_Updown_Down";
/// <summary>
///DI,右侧下层线体阻挡1检测,R_StopCheck1,14,PRO_AOI_IP_2,0,右侧下层线体阻挡1检测,X635,X635,0
///DI,右下层线体阻挡1检测,R_StopCheck1,12,PRO_AOI_IP_2,0,右侧下层线体阻挡1检测,X33,X33,0
/// </summary>
public static string R_StopCheck1 = "R_StopCheck1";
/// <summary>
///DI,右侧下层线体阻挡2检测,R_StopCheck2,15,PRO_AOI_IP_2,0,右侧下层线体阻挡2检测,X636,X636,0
///DI,右下层线体阻挡2检测,R_StopCheck2,13,PRO_AOI_IP_2,0,右侧下层线体阻挡2检测,X34,X34,0
/// </summary>
public static string R_StopCheck2 = "R_StopCheck2";
/// <summary>
/// DO,左侧下层电机正转,LLown_LineRun,0,PRO_AOI_IP_2,0,左侧下层电机正转,Y621,Y621,0
///DI,右轨道入料阻挡检测,R_RightStopCheck,14,PRO_AOI_IP_2,0,右轨道入料阻挡检测,X35,X35,0
/// </summary>
public static string LLown_LineRun = "LLown_LineRun";
public static string R_RightStopCheck = "R_RightStopCheck";
/// <summary>
/// DO,左侧上层电机正转,LHigh_LineRun,1,PRO_AOI_IP_2,0,左侧上层电机正转,Y622,Y622,0
///DI,右轨道出料阻挡检测,R_LeftStopCheck,15,PRO_AOI_IP_2,0,右轨道出料阻挡检测,X36,X36,0
/// </summary>
public static string LHigh_LineRun = "LHigh_LineRun";
public static string R_LeftStopCheck = "R_LeftStopCheck";
/// <summary>
/// DO,中间轨道电机正转,M_LineRun,2,PRO_AOI_IP_2,0,中间轨道电机正转,Y623,Y623,0
///DO,左入口轨道阻挡下降,Line_StopCylinder,0,PRO_AOI_IP_2,0,左入口轨道阻挡下降,Y21,Y21,0
/// </summary>
public static string M_LineRun = "M_LineRun";
public static string Line_StopCylinder = "Line_StopCylinder";
/// <summary>
/// DO,中间轨道电机反转,M_LineBackRun,3,PRO_AOI_IP_2,0,中间轨道电机反转,Y624,Y624,0
/// DO,左升降气缸上升,L_Updown_Up,1,PRO_AOI_IP_2,0,左升降气缸上升,Y22,Y22,0
/// </summary>
public static string M_LineBackRun = "M_LineBackRun";
//public static string L_Updown_Up = "L_Updown_Up";
/// <summary>
/// DO,中间轨道左阻挡下降,M_LeftStopCylinder,6,PRO_AOI_IP_2,0,中间轨道左阻挡下降,Y627,Y627,0
/// DO,左升降气缸下降,L_Updown_Down,2,PRO_AOI_IP_2,0,左升降气缸下降,Y23,Y23,0
/// </summary>
public static string M_LeftStopCylinder = "M_LeftStopCylinder";
/// <summary>
/// DO,中间轨道右阻挡下降,M_RightStopCylinder,7,PRO_AOI_IP_2,0,中间轨道右阻挡下降,Y628,Y628,0
//public static string L_Updown_Down = "L_Updown_Down";
/// <summary>
public static string M_RightStopCylinder = "M_RightStopCylinder";
/// <summary>
/// DO,上料工位1阻挡1下降,S1_StopCylinder1,8,PRO_AOI_IP_2,0,上料工位1阻挡1下降,Y629,Y629,0
/// DO,左下层线体阻挡1下降,LLow_StopCylinder1,3,PRO_AOI_IP_2,0,左下层线体阻挡1下降,Y24,Y24,0
/// </summary>
public static string S1_StopCylinder1 = "S1_StopCylinder1";
public static string LLow_StopCylinder1 = "LLow_StopCylinder1";
/// <summary>
/// DO,上料工位1阻挡2下降,S1_StopCylinder2,9,PRO_AOI_IP_2,0,上料工位1阻挡2下降,Y630,Y630,0
/// DO,左下层线体阻挡2下降,LLow_StopCylinder2,4,PRO_AOI_IP_2,0,左下层线体阻挡2下降,Y25,Y25,0
/// </summary>
public static string S1_StopCylinder2 = "S1_StopCylinder2";
public static string LLow_StopCylinder2 = "LLow_StopCylinder2";
/// <summary>
/// DO,左上层线体阻挡1下降,LHigh_StopCylinder1,5,PRO_AOI_IP_2,0,左上层线体阻挡1下降,Y26,Y26,0
/// <summary>
public static string LHigh_StopCylinder1 = "LHigh_StopCylinder1";
/// <summary>
/// DO,上料工位1阻挡3下降,S1_StopCylinder3,10,PRO_AOI_IP_2,0,上料工位1阻挡3下降,Y631,Y631,0
/// DO,左上层线体阻挡2下降,LHigh_StopCylinder2,6,PRO_AOI_IP_2,0,左上层线体阻挡2下降,Y27,Y27,0
/// </summary>
public static string S1_StopCylinder3 = "S1_StopCylinder3";
public static string LHigh_StopCylinder2 = "LHigh_StopCylinder2";
/// <summary>
/// DO,上料工位1阻挡4下降,S1_StopCylinder4,11,PRO_AOI_IP_2,0,上料工位1阻挡4下降,Y632,Y632,0
///DO,中间轨道正阻挡下降,M_LeftStopCylinder,7,PRO_AOI_IP_2,0,中间轨道正阻挡下降,Y28,Y28,0
/// </summary>
public static string S1_StopCylinder4 = "S1_StopCylinder4";
public static string M_LeftStopCylinder = "M_LeftStopCylinder";
/// <summary>
/// DO,上料工位2阻挡1下降,S2_StopCylinder1,12,PRO_AOI_IP_2,0,上料工位2阻挡1下降,Y633,Y633,0
/// DO,中间轨道反阻挡下降,M_RightStopCylinder,8,PRO_AOI_IP_2,0,中间轨道反阻挡下降,Y29,Y29,0
/// </summary>
public static string S2_StopCylinder1 = "S2_StopCylinder1";
public static string M_RightStopCylinder = "M_RightStopCylinder";
/// <summary>
/// DO,上料工位2阻挡2下降,S2_StopCylinder2,13,PRO_AOI_IP_2,0,上料工位2阻挡2下降,Y634,Y634,0
/// DO,中间升降气缸上升,M_Updown_Up,9,PRO_AOI_IP_2,0,中间升降气缸上升,Y30,Y30,0
/// </summary>
public static string S2_StopCylinder2 = "S2_StopCylinder2";
#endregion
#region PRO_AOI_IP_3
//public static string M_Updown_Up = "M_Updown_Up";
/// <summary>
///DI,右侧轨道左阻挡检测,R_LeftStopCheck,0,PRO_AOI_IP_3,0,右侧轨道左阻挡检测,X641,X641,0
///DO,中间升降气缸下降,M_Updown_Down,10,PRO_AOI_IP_2,0,中间升降气缸下降,Y31,Y31,0
/// </summary>
public static string R_LeftStopCheck = "R_LeftStopCheck";
//public static string M_Updown_Down = "M_Updown_Down";
/// <summary>
///DI,右侧轨道右阻挡检测,R_RightStopCheck,1,PRO_AOI_IP_3,0,右侧轨道右阻挡检测,X642,X642,0
///DO,上料位前反阻挡下降,S1_StopCylinder1,11,PRO_AOI_IP_2,0,上料位前反阻挡下降,Y32,Y32,0
/// </summary>
public static string R_RightStopCheck = "R_RightStopCheck";
public static string S1_StopCylinder1 = "S1_StopCylinder1";
/// <summary>
/// DI,右侧上层线体阻挡1检测,RHigh_StopCheck1,2,PRO_AOI_IP_3,0,右侧上层线体阻挡1检测,X643,X643,0
///DO,上料位前正阻挡下降,S1_StopCylinder2,12,PRO_AOI_IP_2,0,上料位前正阻挡下降,Y33,Y33,0
/// </summary>
public static string RHigh_StopCheck1 = "RHigh_StopCheck1";
public static string S1_StopCylinder2 = "S1_StopCylinder2";
/// <summary>
/// DI,右侧上层线体阻挡2检测,RHigh_StopCheck2,3,PRO_AOI_IP_3,0,右侧上层线体阻挡2检测,X644,X644,0
///DO,上料位反定位阻挡下降,S1_StopCylinder3,13,PRO_AOI_IP_2,0,上料位反定位阻挡下降,Y34,Y34,0
/// </summary>
public static string RHigh_StopCheck2 = "RHigh_StopCheck2";
public static string S1_StopCylinder3 = "S1_StopCylinder3";
/// <summary>
/// DI,左侧工作位横移平台下降端1,Left_Tranverse_Down_Sig1,4,PRO_AOI_IP_3,0,左侧工作位横移平台下降端1,X645,X645,0
///DO,上料位正定位阻挡下降,S1_StopCylinder4,14,PRO_AOI_IP_2,0,上料位正定位阻挡下降,Y35,Y35,0
/// </summary>
public static string Left_Tranverse_Down_Sig1 = "Left_Tranverse_Down_Sig1";
public static string S1_StopCylinder4 = "S1_StopCylinder4";
/// <summary>
/// DI,左侧工作位横移平台下降端2,Left_Tranverse_Down_Sig2,5,PRO_AOI_IP_3,0,左侧工作位横移平台下降端2,X646,X646,0
///DO,上料位后阻挡下降,S2_StopCylinder1,15,PRO_AOI_IP_2,0,上料位后阻挡下降,Y36,Y36,0
/// </summary>
public static string Left_Tranverse_Down_Sig2 = "Left_Tranverse_Down_Sig2";
public static string S2_StopCylinder1 = "S2_StopCylinder1";
#endregion
#region PRO_AOI_IP_3
/// <summary>
/// DI,左侧工作位横移平台上升端1,Left_Tranverse_Up_Sig1,6,PRO_AOI_IP_3,0,左侧缓存位横移平台上升端1,X647,X647,0
///DI,右上层线体阻挡1检测,RHigh_StopCheck1,0,PRO_AOI_IP_3,0,右上层线体阻挡1检测,X41,X41,0
/// </summary>
public static string Left_Tranverse_Up_Sig1 = "Left_Tranverse_Up_Sig1";
public static string RHigh_StopCheck1 = "RHigh_StopCheck1";
/// <summary>
/// DI,左侧工作位横移平台上升端2,Left_Tranverse_Up_Sig2,7,PRO_AOI_IP_3,0,左侧缓存位横移平台上升端2,X648,X648,0
///DI,右上层线体阻挡2检测,RHigh_StopCheck2,1,PRO_AOI_IP_3,0,右上层线体阻挡2检测,X42,X42,0
/// </summary>
public static string Left_Tranverse_Up_Sig2 = "Left_Tranverse_Up_Sig2";
public static string RHigh_StopCheck2 = "RHigh_StopCheck2";
/// <summary>
/// DO,上料工位1电机正转,S1_LineRun,12,PRO_AOI_IP_3,0,上料工位1电机正转,Y645,Y645,0
/// DI,左下层线体满料检测,LLow_FullCheck,2,PRO_AOI_IP_3,0,左下层线体满料检测,X43,X43,0
/// </summary>
public static string S1_LineRun = "S1_LineRun";
public static string LLow_FullCheck = "LLow_FullCheck";
/// <summary>
/// DO,上料工位1电机反转,S1_LineBackRun,13,PRO_AOI_IP_3,0,上料工位1电机反转,Y646,Y646,0
/// DI,左上层线体满料检测,LHigh_FullCheck,3,PRO_AOI_IP_3,0,左上层线体满料检测,X44,X44,0
/// </summary>
public static string S1_LineBackRun = "S1_LineBackRun";
public static string LHigh_FullCheck = "LHigh_FullCheck";
/// <summary>
/// DO,上料工位2电机正转,S2_LineRun,14,PRO_AOI_IP_3,0,上料工位2电机正转,Y647,Y647,0
/// DI,右上层线体满料检测,RHigh_FullCheck,4,PRO_AOI_IP_3,0,右上层线体满料检测,X45,X45,0
/// </summary>
public static string S2_LineRun = "S2_LineRun";
public static string RHigh_FullCheck = "RHigh_FullCheck";
/// <summary>
/// DO,上料工位2电机反转,S2_LineBackRun,15,PRO_AOI_IP_3,0,上料工位2电机反转,Y648,Y648,0
/// DO,上料工位顶升上升,S1_TopCylinderUp,0,PRO_AOI_IP_3,0,上料工位顶升上升,Y41,Y41,0
/// </summary>
public static string S2_LineBackRun = "S2_LineBackRun";
//public static string S1_TopCylinderUp = "S1_TopCylinderUp";
/// <summary>
/// DO,右侧出口轨道电机正转,R_OutLineRun,0,PRO_AOI_IP_3,0,右侧出口轨道电机正转,Y649,Y649,0
/// DO,上料工位顶升下降,S1_TopCylinderDown,1,PRO_AOI_IP_3,0,上料工位顶升下降,Y42,Y42,0
/// </summary>
public static string R_OutLineRun = "R_OutLineRun";
//public static string S1_TopCylinderDown = "S1_TopCylinderDown";
/// <summary>
/// DO,右侧出口轨道电机反转,R_OutLineBackRun,1,PRO_AOI_IP_3,0,右侧出口轨道电机反转,Y650,Y650,0
///DO,右下层线体阻挡1下降,R_StopCylinder1,2,PRO_AOI_IP_3,0,右下层线体阻挡1下降,Y43,Y43,0
/// </summary>
public static string R_OutLineBackRun = "R_OutLineBackRun";
public static string R_StopCylinder1 = "R_StopCylinder1";
/// <summary>
/// DO,右侧下层电机正转,R_LineRun,2,PRO_AOI_IP_3,0,右侧下层电机正转,Y651,Y651,0
/// DO,右下层线体阻挡2下降,R_StopCylinder2,3,PRO_AOI_IP_3,0,右下层线体阻挡2下降,Y44,Y44,0
/// </summary>
public static string R_LineRun = "R_LineRun";
public static string R_StopCylinder2 = "R_StopCylinder2";
/// <summary>
/// DO,右侧上层电机正转,RHigh_LineRun,11,PRO_AOI_IP_3,0,右侧上层电机正转,Y652,Y652,0
///DO,右上层线体阻挡1下降,RHigh_StopCylinder1,4,PRO_AOI_IP_3,0,右上层线体阻挡1下降,Y45,Y45,0
/// </summary>
public static string RHigh_LineRun = "RHigh_LineRun";
public static string RHigh_StopCylinder1 = "RHigh_StopCylinder1";
/// <summary>
/// DO,右侧下层线体阻挡1SOL,R_StopCylinder1,4,PRO_AOI_IP_3,0,右侧下层线体阻挡1SOL,Y653,Y653,0
/// DO,右上层线体阻挡2下降,RHigh_StopCylinder2,5,PRO_AOI_IP_3,0,右上层线体阻挡2下降,Y46,Y46,0
/// </summary>
public static string R_StopCylinder1 = "R_StopCylinder1";
public static string RHigh_StopCylinder2 = "RHigh_StopCylinder2";
/// <summary>
/// DO,右侧下层线体阻挡2SOL,R_StopCylinder2,5,PRO_AOI_IP_3,0,右侧下层线体阻挡2SOL,Y654,Y654,0
///DO,右轨道入料阻挡下降,R_RightStopCylinder,6,PRO_AOI_IP_3,0,右轨道入料阻挡下降,Y47,Y47,0
/// </summary>
public static string R_StopCylinder2 = "R_StopCylinder2";
public static string R_RightStopCylinder = "R_RightStopCylinder";
/// <summary>
/// DO,右侧轨道左阻挡下降,R_LeftStopCylinder,8,PRO_AOI_IP_3,0,右侧轨道左阻挡下降,Y661,Y661,0
///DO,右轨道出料阻挡下降,R_LeftStopCylinder,7,PRO_AOI_IP_3,0,右轨道出料阻挡下降,Y48,Y48,0
/// </summary>
public static string R_LeftStopCylinder = "R_LeftStopCylinder";
///// <summary>
///// DO,右侧轨道右阻挡下降,R_RightStopCylinder,9,PRO_AOI_IP_3,0,右侧轨道右阻挡下降,Y662,Y662,0
///// </summary>
//public static string R_RightStopCylinder = "R_RightStopCylinder";
/// <summary>
/// DO,右侧上层线体阻挡1下降,RHigh_StopCylinder1,18,PRO_AOI_IP_3,0,右侧上层线体阻挡1下降,Y663,Y663,0
/// DO,右升降气缸上升,R_Updown_Up,8,PRO_AOI_IP_3,0,右升降气缸上升,Y49,Y49,0
/// </summary>
public static string RHigh_StopCylinder1 = "RHigh_StopCylinder1";
// public static string R_Updown_Up = "R_Updown_Up";
/// <summary>
/// DO,右侧上层线体阻挡2下降,RHigh_StopCylinder2,19,PRO_AOI_IP_3,0,右侧上层线体阻挡2下降,Y664,Y664,0
/// DO,右升降气缸下降,R_Updown_Down,9,PRO_AOI_IP_3,0,右升降气缸下降,Y50,Y50,0
/// </summary>
public static string RHigh_StopCylinder2 = "RHigh_StopCylinder2";
// public static string R_Updown_Down = "R_Updown_Down";
#endregion
#region PRO_AOI_IP_6
/// <summary>
///DI,分盘装置1料盘检测_ABB2,ABB2_TrayCheck,3,PRO_AOI_IP_6,0,分盘装置1料盘检测,X673,X673,0
/// </summary>
public static string ABB2_TrayCheck = "ABB2_TrayCheck";
// public static string ABB2_TrayCheck = "ABB2_TrayCheck";
#endregion
#region PRO_AOI_IP_7
/// <summary>
///DI,分盘装置2料盘检测_ABB1,ABB1_TrayCheck,3,PRO_AOI_IP_7,0,分盘装置2料盘检测,X683,X683,0
/// </summary>
public static string ABB1_TrayCheck = "ABB1_TrayCheck";
//public static string ABB1_TrayCheck = "ABB1_TrayCheck";
#endregion
#region PRO_AOI_IP_4
/// <summary>
/// DI,包装线急停,Pkg_SuddenStop_BTN,0,PRO_AOI_IP_4,0,包装线急停,X701,X701,0
/// </summary>
public static string Pkg_SuddenStop_BTN = "Pkg_SuddenStop_BTN";
/// <summary>
/// DI,包装线复位,Pkg_Reset,1,PRO_AOI_IP_4,0,包装线复位,X702,X702,0
/// </summary>
public static string Pkg_Reset = "Pkg_Reset";
/// <summary>
/// DI,包装线入口检测1,Pkg_In_Check,2,PRO_AOI_IP_4,0,包装线入口检测1,X703,X703,0
/// </summary>
public static string Pkg_In_Check = "Pkg_In_Check";
/// <summary>
/// DI,包装线阻挡检测1,Pkg_Stop_Check1,3,PRO_AOI_IP_4,0,包装线阻挡检测1,X704,X704,0
/// </summary>
public static string Pkg_Stop_Check1 = "Pkg_Stop_Check1";
/// <summary>
/// DI,包装线阻挡检测2,Pkg_Stop_Check2,4,PRO_AOI_IP_4,0,包装线阻挡检测2,X705,X705,0
/// </summary>
public static string Pkg_Stop_Check2 = "Pkg_Stop_Check2";
/// <summary>
/// DI,包装线顶升定位工位检测,Pkg_Station_Check,5,PRO_AOI_IP_4,0,包装线顶升定位工位检测,X706,X706,0
/// </summary>
public static string Pkg_Station_Check = "Pkg_Station_Check";
/// <summary>
/// DI,包装线上料工位顶升上升端,Pkg_Station_Up,6,PRO_AOI_IP_4,0,包装线上料工位顶升上升端,X707,X707,0
/// </summary>
public static string Pkg_Station_Up = "Pkg_Station_Up";
/// <summary>
/// DI,包装线上料工位顶升下降端,Pkg_Station_Down,7,PRO_AOI_IP_4,0,包装线上料工位顶升下降端,X708,X708,0
/// </summary>
public static string Pkg_Station_Down = "Pkg_Station_Down";
/// <summary>
/// DI,包装线出口阻挡检测,Pkg_Out_Stop_Check,8,PRO_AOI_IP_4,0,包装线出口阻挡检测,X709,X709,0
/// </summary>
public static string Pkg_Out_Stop_Check = "Pkg_Out_Stop_Check";
///// <summary>
///// DI,包装线急停,Pkg_SuddenStop_BTN,0,PRO_AOI_IP_4,0,包装线急停,X701,X701,0
///// </summary>
//public static string Pkg_SuddenStop_BTN = "Pkg_SuddenStop_BTN";
///// <summary>
///// DI,包装线复位,Pkg_Reset,1,PRO_AOI_IP_4,0,包装线复位,X702,X702,0
///// </summary>
//public static string Pkg_Reset = "Pkg_Reset";
///// <summary>
///// DI,包装线入口检测1,Pkg_In_Check,2,PRO_AOI_IP_4,0,包装线入口检测1,X703,X703,0
///// </summary>
//public static string Pkg_In_Check = "Pkg_In_Check";
///// <summary>
///// DI,包装线阻挡检测1,Pkg_Stop_Check1,3,PRO_AOI_IP_4,0,包装线阻挡检测1,X704,X704,0
///// </summary>
//public static string Pkg_Stop_Check1 = "Pkg_Stop_Check1";
///// <summary>
///// DI,包装线阻挡检测2,Pkg_Stop_Check2,4,PRO_AOI_IP_4,0,包装线阻挡检测2,X705,X705,0
///// </summary>
//public static string Pkg_Stop_Check2 = "Pkg_Stop_Check2";
///// <summary>
///// DI,包装线顶升定位工位检测,Pkg_Station_Check,5,PRO_AOI_IP_4,0,包装线顶升定位工位检测,X706,X706,0
///// </summary>
//public static string Pkg_Station_Check = "Pkg_Station_Check";
///// <summary>
///// DI,包装线上料工位顶升上升端,Pkg_Station_Up,6,PRO_AOI_IP_4,0,包装线上料工位顶升上升端,X707,X707,0
///// </summary>
//public static string Pkg_Station_Up = "Pkg_Station_Up";
///// <summary>
///// DI,包装线上料工位顶升下降端,Pkg_Station_Down,7,PRO_AOI_IP_4,0,包装线上料工位顶升下降端,X708,X708,0
///// </summary>
//public static string Pkg_Station_Down = "Pkg_Station_Down";
///// <summary>
///// DI,包装线出口阻挡检测,Pkg_Out_Stop_Check,8,PRO_AOI_IP_4,0,包装线出口阻挡检测,X709,X709,0
///// </summary>
//public static string Pkg_Out_Stop_Check = "Pkg_Out_Stop_Check";
/// <summary>
/// DI,包装线ROBOT禁用检测,Pkg_Rotot_Forbidden_Check,9,PRO_AOI_IP_4,0,包装线ROBOT禁用检测,X710,X710,0
/// </summary>
public static string Pkg_Rotot_Forbidden_Check = "Pkg_Rotot_Forbidden_Check";
/// <summary>
/// DI,包装线空架缓存检测,Pkg_Empty_Shelf_Check,10,PRO_AOI_IP_4,0,包装线空架缓存检测,X711,X711,0
/// </summary>
public static string Pkg_Empty_Shelf_Check = "Pkg_Empty_Shelf_Check";
/// <summary>
/// DO,包装线运行状态(指示灯),Pkg_Status_Run,0,PRO_AOI_IP_4,0,包装线运行状态(指示灯),Y701,Y701,0
/// </summary>
public static string Pkg_Status_Run = "Pkg_Status_Run";
/// <summary>
/// DO,包装线故障状态(指示灯),Pkg_Status_Warnning,1,PRO_AOI_IP_4,0,包装线故障状态(指示灯),Y702,Y702,0
/// </summary>
public static string Pkg_Status_Warnning = "Pkg_Status_Warnning";
/// <summary>
/// DO,包装线阻挡1下降,Pkg_Stop1_Down,2,PRO_AOI_IP_4,0,包装线阻挡1下降,Y703,Y703,0
/// </summary>
public static string Pkg_Stop1_Down = "Pkg_Stop1_Down";
/// <summary>
/// DO,包装线阻挡2下降,Pkg_Stop2_Down,3,PRO_AOI_IP_4,0,包装线阻挡2下降,Y704,Y704,0
/// </summary>
public static string Pkg_Stop2_Down = "Pkg_Stop2_Down";
/// <summary>
/// DO,包装线阻挡3下降,Pkg_Stop3_Down,4,PRO_AOI_IP_4,0,包装线阻挡3下降,Y705,Y705,0
/// </summary>
public static string Pkg_Stop3_Down = "Pkg_Stop3_Down";
/// <summary>
/// DO,包装线顶升定位工位阻档下降,Pkg_Station_Stop_Down,5,PRO_AOI_IP_4,0,包装线顶升定位工位阻档下降,Y706,Y706,0
/// </summary>
public static string Pkg_Station_Stop_Down = "Pkg_Station_Stop_Down";
/// <summary>
/// DO,包装线出口阻挡下降,Pkg_Out_Stop_Down,6,PRO_AOI_IP_4,0,包装线出口阻挡下降,Y707,Y707,0
/// </summary>
public static string Pkg_Out_Stop_Down = "Pkg_Out_Stop_Down";
/// <summary>
/// DO,包装线上料工位顶升上升SOL,Pkg_Station_SOL_UP,7,PRO_AOI_IP_4,0,包装线上料工位顶升上升SOL,Y708,Y708,0
/// </summary>
public static string Pkg_Station_SOL_UP = "Pkg_Station_SOL_UP";
/// <summary>
/// DO,包装线上料工位顶升下降SOL,Pkg_Station_SOL_Down,8,PRO_AOI_IP_4,0,包装线上料工位顶升下降SOL,Y709,Y709,0
/// </summary>
public static string Pkg_Station_SOL_Down = "Pkg_Station_SOL_Down";
/// <summary>
/// DO,包装线驱动电机1正转,Pkg_Line1_Forward,9,PRO_AOI_IP_4,0,包装线驱动电机1正转,Y710,Y710,0
/// </summary>
public static string Pkg_Line1_Forward = "Pkg_Line1_Forward";
/// <summary>
/// DO,包装线驱动电机2正转,Pkg_Line2_Forward,10,PRO_AOI_IP_4,0,包装线驱动电机2正转,Y711,Y711,0
/// </summary>
public static string Pkg_Line2_Forward = "Pkg_Line2_Forward";
/// <summary>
/// DO,包装线驱动电机2反转,Pkg_Line2_Backward,11,PRO_AOI_IP_4,0,包装线驱动电机2反转,Y712,Y712,0
/// </summary>
public static string Pkg_Line2_Backward = "Pkg_Line2_Backward";
/// <summary>
/// DO,包装线驱动电机3正转,Pkg_Line3_Forward,12,PRO_AOI_IP_4,0,包装线驱动电机3正转,Y713,Y713,0
/// </summary>
public static string Pkg_Line3_Forward = "Pkg_Line3_Forward";
/// <summary>
/// DO,包装线驱动电机3反转,Pkg_Line3_Backward,13,PRO_AOI_IP_4,0,包装线驱动电机3反转,Y714,Y714,0
/// </summary>
public static string Pkg_Line3_Backward = "Pkg_Line3_Backward";
///// <summary>
///// DI,包装线ROBOT禁用检测,Pkg_Rotot_Forbidden_Check,9,PRO_AOI_IP_4,0,包装线ROBOT禁用检测,X710,X710,0
///// </summary>
//public static string Pkg_Rotot_Forbidden_Check = "Pkg_Rotot_Forbidden_Check";
///// <summary>
///// DI,包装线空架缓存检测,Pkg_Empty_Shelf_Check,10,PRO_AOI_IP_4,0,包装线空架缓存检测,X711,X711,0
///// </summary>
//public static string Pkg_Empty_Shelf_Check = "Pkg_Empty_Shelf_Check";
///// <summary>
///// DO,包装线运行状态(指示灯),Pkg_Status_Run,0,PRO_AOI_IP_4,0,包装线运行状态(指示灯),Y701,Y701,0
///// </summary>
//public static string Pkg_Status_Run = "Pkg_Status_Run";
///// <summary>
///// DO,包装线故障状态(指示灯),Pkg_Status_Warnning,1,PRO_AOI_IP_4,0,包装线故障状态(指示灯),Y702,Y702,0
///// </summary>
//public static string Pkg_Status_Warnning = "Pkg_Status_Warnning";
///// <summary>
///// DO,包装线阻挡1下降,Pkg_Stop1_Down,2,PRO_AOI_IP_4,0,包装线阻挡1下降,Y703,Y703,0
///// </summary>
//public static string Pkg_Stop1_Down = "Pkg_Stop1_Down";
///// <summary>
///// DO,包装线阻挡2下降,Pkg_Stop2_Down,3,PRO_AOI_IP_4,0,包装线阻挡2下降,Y704,Y704,0
///// </summary>
//public static string Pkg_Stop2_Down = "Pkg_Stop2_Down";
///// <summary>
///// DO,包装线阻挡3下降,Pkg_Stop3_Down,4,PRO_AOI_IP_4,0,包装线阻挡3下降,Y705,Y705,0
///// </summary>
//public static string Pkg_Stop3_Down = "Pkg_Stop3_Down";
///// <summary>
///// DO,包装线顶升定位工位阻档下降,Pkg_Station_Stop_Down,5,PRO_AOI_IP_4,0,包装线顶升定位工位阻档下降,Y706,Y706,0
///// </summary>
//public static string Pkg_Station_Stop_Down = "Pkg_Station_Stop_Down";
///// <summary>
///// DO,包装线出口阻挡下降,Pkg_Out_Stop_Down,6,PRO_AOI_IP_4,0,包装线出口阻挡下降,Y707,Y707,0
///// </summary>
//public static string Pkg_Out_Stop_Down = "Pkg_Out_Stop_Down";
///// <summary>
///// DO,包装线上料工位顶升上升SOL,Pkg_Station_SOL_UP,7,PRO_AOI_IP_4,0,包装线上料工位顶升上升SOL,Y708,Y708,0
///// </summary>
//public static string Pkg_Station_SOL_UP = "Pkg_Station_SOL_UP";
///// <summary>
///// DO,包装线上料工位顶升下降SOL,Pkg_Station_SOL_Down,8,PRO_AOI_IP_4,0,包装线上料工位顶升下降SOL,Y709,Y709,0
///// </summary>
//public static string Pkg_Station_SOL_Down = "Pkg_Station_SOL_Down";
///// <summary>
///// DO,包装线驱动电机1正转,Pkg_Line1_Forward,9,PRO_AOI_IP_4,0,包装线驱动电机1正转,Y710,Y710,0
///// </summary>
//public static string Pkg_Line1_Forward = "Pkg_Line1_Forward";
///// <summary>
///// DO,包装线驱动电机2正转,Pkg_Line2_Forward,10,PRO_AOI_IP_4,0,包装线驱动电机2正转,Y711,Y711,0
///// </summary>
//public static string Pkg_Line2_Forward = "Pkg_Line2_Forward";
///// <summary>
///// DO,包装线驱动电机2反转,Pkg_Line2_Backward,11,PRO_AOI_IP_4,0,包装线驱动电机2反转,Y712,Y712,0
///// </summary>
//public static string Pkg_Line2_Backward = "Pkg_Line2_Backward";
///// <summary>
///// DO,包装线驱动电机3正转,Pkg_Line3_Forward,12,PRO_AOI_IP_4,0,包装线驱动电机3正转,Y713,Y713,0
///// </summary>
//public static string Pkg_Line3_Forward = "Pkg_Line3_Forward";
///// <summary>
///// DO,包装线驱动电机3反转,Pkg_Line3_Backward,13,PRO_AOI_IP_4,0,包装线驱动电机3反转,Y714,Y714,0
///// </summary>
//public static string Pkg_Line3_Backward = "Pkg_Line3_Backward";
#endregion
#region PRO_AOI_IP_8
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!