Commit 4be59287 LN

修改名称

1 个父辈 62061a75
正在显示 39 个修改的文件 包含 1500 行增加5937 行删除
...@@ -69,9 +69,6 @@ ...@@ -69,9 +69,6 @@
<Compile Include="util\TcpServer.cs" /> <Compile Include="util\TcpServer.cs" />
<Compile Include="util\UdpServer.cs" /> <Compile Include="util\UdpServer.cs" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<WCFMetadata Include="Service References\" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it. <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets. Other similar extension points exist, see Microsoft.Common.targets.
......
...@@ -11,6 +11,10 @@ namespace OnlineStore.Common ...@@ -11,6 +11,10 @@ namespace OnlineStore.Common
/// </summary> /// </summary>
public class Setting_Init public class Setting_Init
{ {
public static readonly string DefaultDeviceIP= "DefaultDeviceIP";
public static readonly string ColorRuleConfig= "ColorRuleConfig";
public static readonly string DeviceLedType= "DeviceLedType";
public static readonly string StatusLedDmx= "StatusLedDmx";
public static string Server_Log_Open = "Server_Log_Open"; public static string Server_Log_Open = "Server_Log_Open";
/// <summary> /// <summary>
/// 系统启动时自动启动料仓,=1时自动启动,并隐藏窗口,=0时不需要 /// 系统启动时自动启动料仓,=1时自动启动,并隐藏窗口,=0时不需要
......
...@@ -66,14 +66,13 @@ ...@@ -66,14 +66,13 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="acVerticalStore\VerticalStoreBean.cs" /> <Compile Include="acVerticalStore\VerticalStoreBean.cs" />
<Compile Include="acVerticalStore\VerticalStoreBean_Partial.cs" />
<Compile Include="acVerticalStore\VerticalStoreBean_InOut.cs" /> <Compile Include="acVerticalStore\VerticalStoreBean_InOut.cs" />
<Compile Include="acVerticalStore\StoreManager.cs" /> <Compile Include="acVerticalStore\StoreManager.cs" />
<Compile Include="device\halcon\CodeManager.cs" /> <Compile Include="device\halcon\CodeManager.cs" />
<Compile Include="device\IO\AIOBOX\AIOBOXManager.cs" /> <Compile Include="device\IO\AIOBOX\AIOBOXManager.cs" />
<Compile Include="device\IO\IOManager.cs" /> <Compile Include="device\IO\IOManager.cs" />
<Compile Include="device\weights\OKLE.cs" /> <Compile Include="device\led\BaseLedManager.cs" />
<Compile Include="device\weights\OKLEController.cs" /> <Compile Include="device\led\LEDColorArtNet.cs" />
<Compile Include="store\StoreMoveP.cs" /> <Compile Include="store\StoreMoveP.cs" />
<Compile Include="store\StoreAlarm.cs"> <Compile Include="store\StoreAlarm.cs">
<SubType>Code</SubType> <SubType>Code</SubType>
......
类型,说明,名称,属性值,设备名称,描述,电器定义,代码定义,目标速度,加速时间,减速时间,原点低速度,原点高速,原点加速度,脉冲最小误差,脉冲最大误差,脉冲最小限位,脉冲最大限位 类型,说明,名称,属性值,设备名称,描述,电器定义,代码定义,目标速度,加速时间,减速时间,原点低速度,原点高速,原点加速度,脉冲最小误差,脉冲最大误差,脉冲最小限位,脉冲最大限位
,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,
AXIS,(轴一)取料旋转轴,Middle_Axis,1,COM1,,,,250,80,80,80,60,50,10,1000,0,0 AXIS,(轴一)料斗旋转轴,Middle_Axis,1,COM1,,,,250,80,80,80,60,50,10,1000,0,0
AXIS,(轴二)取料上下轴,UpDown_Axis,2,COM1,,,,100,300,200,20,50,200,10,1000,0,0 PRO,IO模块对应的DI数量,IO_DILength,192.168.200.21#16,,,,,,,,,,,,,,
AXIS,(轴三)取料进出轴,InOut_Axis,3,COM1,,,,100,300,200,20,50,200,10,1000,0,0 PRO,模块对应的DO数量,IO_DOLength,192.168.200.21#16,,,,,,,,,,,,,,
AXIS,(轴四)回温区旋转轴,Warming_Axis,4,COM1,,,,100,300,200,20,50,200,10,1000,0,0
AXIS,(轴五)冷藏区旋转轴,Colding_Axis,5,COM1,,,,100,300,200,20,50,200,10,1000,0,0
AXIS,(轴六)搅拌旋转轴,Stir_Axis,6,COM1,,,,100,300,200,20,50,200,10,1000,0,0
PRO,IO模块对应的DI数量,IO_DILength,192.168.200.21#16;192.168.200.22#8,,,,,,,,,,,,,,
PRO,模块对应的DO数量,IO_DOLength,192.168.200.21#16;192.168.200.22#8,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,
DI,急停,SuddenStop_BTN,0,192.168.200.21,急停,X01,X01,,,,,,,,,, DI,急停,SuddenStop_BTN,0,192.168.200.21,急停,X01,X01,,,,,,,,,,
DI,复位,Reset_BTN,1,192.168.200.21,复位,X02,X02,,,,,,,,,, DI,复位,Reset_BTN,1,192.168.200.21,复位,X02,X02,,,,,,,,,,
DI,自动启动,AutoRun_Signal,2,192.168.200.21,自动启动,X03,X03,,,,,,,,,, DI,安全光栅,SafetyLightCurtains,2,192.168.200.21,安全光栅,X03,X03,,,,,,,,,,
DI,气压检测,Airpressure_Check,3,192.168.200.21,气压检测,X04,X04,,,,,,,,,, DI,升降门上升端,Door_Up,3,192.168.200.21,升降门上升端,X04,X04,,,,,,,,,,
DI,安全光栅,SafetyLightCurtains,4,192.168.200.21,安全光栅,X05,X05,,,,,,,,,, DI,升降门下降端,Door_Down,4,192.168.200.21,升降门下降端,X05,X05,,,,,,,,,,
DI,左侧门禁信号,Door_LeftLimit,5,192.168.200.21,左侧门禁信号,X06,X06,,,,,,,,,, ,链轮计数信号,,5,192.168.200.21,链轮计数信号,X06,X06,,,,,,,,,,
DI,右侧门禁信号,Door_RightLimit,6,192.168.200.21,右侧门禁信号,X07,X07,,,,,,,,,, ,,,6,192.168.200.21,,X07,X07,,,,,,,,,,
DI,左侧锡膏检测,TinCheck_DoorLeft,7,192.168.200.21,左侧锡膏检测,X08,X08,,,,,,,,,, ,,,7,192.168.200.21,,X08,X08,,,,,,,,,,
DI,右侧锡膏检测,TinCheck_DoorRight,8,192.168.200.21,右侧锡膏检测,X09,X09,,,,,,,,,, ,,,8,192.168.200.21,,X09,X09,,,,,,,,,,
DI,夹具检测,TinCheck_Fixture,9,192.168.200.21,夹具检测,X10,X10,,,,,,,,,, ,,,9,192.168.200.21,,X10,X10,,,,,,,,,,
DI,搅拌区锡膏检测,TinCheck_Stir,10,192.168.200.21,搅拌区锡膏检测,X11,X11,,,,,,,,,, ,,,10,192.168.200.21,,X11,X11,,,,,,,,,,
DI,进料口门上升端,Door_Up,11,192.168.200.21,进料口门上升端,X12,X12,,,,,,,,,, ,,,11,192.168.200.21,,X12,X12,,,,,,,,,,
DI,进料口门下降端,Door_Down,12,192.168.200.21,进料口门下降端,X13,X13,,,,,,,,,, ,,,12,192.168.200.21,,X13,X13,,,,,,,,,,
DI,夹爪气缸夹紧端,Clamping_Tighten,13,192.168.200.21,夹爪气缸夹紧端,X14,X14,,,,,,,,,, ,,,13,192.168.200.21,,X14,X14,,,,,,,,,,
DI,夹爪气缸放松端,Clamping_Relax,14,192.168.200.21,夹爪气缸放松端,X15,X15,,,,,,,,,, ,,,14,192.168.200.21,,X15,X15,,,,,,,,,,
DI,夹爪锡膏检测,TinCheck_Clamping,15,192.168.200.21,夹爪锡膏检测,X16,X16,,,,,,,,,, ,,,15,192.168.200.21,,X16,X16,,,,,,,,,,
,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,
DO,自动指示灯,AutoRun_HddLed,0,192.168.200.21,自动指示灯,Y01,Y01,,,,,,,,,, DO,自动指示灯,AutoRun_HddLed,0,192.168.200.21,自动指示灯,Y01,Y01,,,,,,,,,,
DO,故障指示灯,Alarm_HddLed,1,192.168.200.21,故障指示灯,Y02,Y02,,,,,,,,,, DO,故障指示灯,Alarm_HddLed,1,192.168.200.21,故障指示灯,Y02,Y02,,,,,,,,,,
DO,待机指示灯,RunSign_HddLed,2,192.168.200.21,待机指示灯,Y03,Y03,,,,,,,,,, DO,待机指示灯,RunSign_HddLed,2,192.168.200.21,待机指示灯,Y03,Y03,,,,,,,,,,
DO,报警蜂鸣器,Alarm_Buzzer,3,192.168.200.21,报警蜂鸣器,Y04,Y04,,,,,,,,,, DO,报警蜂鸣器,Alarm_Buzzer,3,192.168.200.21,报警蜂鸣器,Y04,Y04,,,,,,,,,,
DO,料仓运转ON,Run_Signal,4,192.168.200.21,料仓运转ON,Y05,Y05,,,,,,,,,, DO,设备运转ON,Run_Signal,4,192.168.200.21,设备运转ON,Y05,Y05,,,,,,,,,,
DO,取料机构刹车电源ON,Axis_Brake,5,192.168.200.21,取料机构刹车电源ON,Y06,Y06,,,,,,,,,, DO,料斗伺服刹车ON,Axis_Brake,5,192.168.200.21,料斗伺服刹车ON,Y06,Y06,,,,,,,,,,
DO,相机照明开,Camera_Led,6,192.168.200.21,相机照明开,Y07,Y07,,,,,,,,,, DO,升降门刹车ON,Camera_Led,6,192.168.200.21,升降门刹车ON,Y07,Y07,,,,,,,,,,
DO,门禁功能屏蔽,Door_Limit,7,192.168.200.21,门禁功能屏蔽,Y08,Y08,,,,,,,,,, DO,升降门电机上升,Door_Up,7,192.168.200.21,升降门电机上升,Y08,Y08,,,,,,,,,,
DO,冷气机启动,Colding_Start,8,192.168.200.21,冷气机启动,Y09,Y09,,,,,,,,,, DO,升降门电机下降,Door_Down,8,192.168.200.21,升降门电机下降,Y09,Y09,,,,,,,,,,
DO,回温区风机启动,Warming_Start,9,192.168.200.21,回温区风机启动,Y10,Y10,,,,,,,,,, DO,设备照明ON,Device_Led,9,192.168.200.21,设备照明ON,Y10,Y10,,,,,,,,,,
DO,进料口门上升SOL,Door_Up,10,192.168.200.21,进料口门上升SOL,Y11,Y11,,,,,,,,,, ,,,10,192.168.200.21,,Y11,Y11,,,,,,,,,,
DO,进料口门下降SOL,Door_Down,11,192.168.200.21,进料口门下降SOL,Y12,Y12,,,,,,,,,, ,,,11,192.168.200.21,,Y12,Y12,,,,,,,,,,
DO,夹爪气缸夹紧SOL,Clamping_Tighten,12,192.168.200.21,夹爪气缸夹紧SOL,Y13,Y13,,,,,,,,,, ,,,12,192.168.200.21,,Y13,Y13,,,,,,,,,,
DO,夹爪气缸放松SOL,Clamping_Relax,13,192.168.200.21,夹爪气缸放松SOL,Y14,Y14,,,,,,,,,, ,,,13,192.168.200.21,,Y14,Y14,,,,,,,,,,
DO,搅拌定位气缸上升SOL,StirLocation_Up,14,192.168.200.21,搅拌定位气缸上升SOL,Y15,Y15,,,,,,,,,, ,,,14,192.168.200.21,,Y15,Y15,,,,,,,,,,
DO,搅拌定位气缸下降SOL,StirLocation_Down,15,192.168.200.21,搅拌定位气缸下降SOL,Y16,Y16,,,,,,,,,, ,,,15,192.168.200.21,,Y16,Y16,,,,,,,,,,
,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,
DI,搅拌定位气缸上升端,StirLocation_Up,0,192.168.200.22,搅拌定位气缸上升端,X21,X21,,,,,,,,,, PRO,旋转轴 P1待机原位点 ,MiddleAxis_P1,268000,,,,,,,,,,,,,,
DI,搅拌定位气缸下降端,StirLocation_Down,1,192.168.200.22,搅拌定位气缸下降端,X22,X22,,,,,,,,,,
DI,冷藏区门关闭端,ColdDoor_Close,2,192.168.200.22,冷藏区门关闭端,X23,X23,,,,,,,,,,
DI,冷藏区门打开端,ColdDoor_Open,3,192.168.200.22,冷藏区门打开端,X24,X24,,,,,,,,,,
,,,4,192.168.200.22,,X25,X25,,,,,,,,,,
,,,5,192.168.200.22,,X26,X26,,,,,,,,,,
,,,6,192.168.200.22,,X27,X27,,,,,,,,,,
,,,7,192.168.200.22,,X28,X28,,,,,,,,,,
DO,冷藏区门关闭SOL,ColdDoor_Close,0,192.168.200.22,冷藏区门关闭SOL,Y21,Y21,,,,,,,,,,
DO,冷藏区门打开SOL,ColdDoor_Open,1,192.168.200.22,冷藏区门打开SOL,Y22,Y22,,,,,,,,,,
,,,2,192.168.200.22,,Y23,Y23,,,,,,,,,,
,,,3,192.168.200.22,,Y24,Y24,,,,,,,,,,
,,,4,192.168.200.22,,Y25,Y25,,,,,,,,,,
,,,5,192.168.200.22,,Y26,Y26,,,,,,,,,,
,,,6,192.168.200.22,,Y27,Y27,,,,,,,,,,
,,,7,192.168.200.22,,Y28,Y28,,,,,,,,,,
,,,,,,,, ,,,,,,,,,
,,,,,,,,,,,,,,,,,
PRO,升降轴 进料口取料点 P1(夹具),UpDownAxis_OL_P1,403000,,,,,,,,,,,,,,
PRO,升降轴 进料口出料前点 P2(夹具),UpDownAxis_IH_P2,415000,,,,,,,,,,,,,,
PRO,升降轴 进料口取料缓冲点 P7(夹具),UpDownAxis_OH_P7,415000,,,,,,,,,,,,,,
PRO,升降轴 进料口出料缓冲点 P8(夹具),UpDownAxis_IL_P8,403000,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,
PRO,升降轴 进料口取料点 P11(锡膏),UpDownAxis_OL_P11,403099,,,,,,,,,,,,,,
PRO,升降轴 进料口出料前点 P21(锡膏),UpDownAxis_IH_P21,415099,,,,,,,,,,,,,,
PRO,升降轴 进料口取料缓冲点 P71(锡膏),UpDownAxis_OH_P71,415099,,,,,,,,,,,,,,
PRO,升降轴 进料口出料缓冲点 P81(锡膏),UpDownAxis_IL_P81,403099,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,
PRO,升降轴 搅拌位置高点P101(搅拌区),UpDownAxis_StirH_P101,415099,,,,,,,,,,,,,,
PRO,升降轴 搅拌位置低点P102(搅拌区),UpDownAxis_StirL_P102,403099,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,
PRO,旋转轴 P1待机原位点(夹具取料点),MiddleAxis_P1,268000,,,,,,,,,,,,,,
PRO,旋转轴 P11左侧取放料点(左侧锡膏),MiddleAxis_P11,260000,,,,,,,,,,,,,,
PRO,旋转轴 P12右侧取放料点(右侧锡膏),MiddleAxis_P12,280000,,,,,,,,,,,,,,
PRO,旋转轴 P101搅拌取放料点(搅拌区),MiddleAxis_Stir_P101,280000,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,
PRO,进出轴 P1待机原位点,InOutAxis_P1,1000,,,,,,,,,,,,,,
PRO,进出轴 P20(夹具取料点),InOutAxis_P20,2000,,,,,,,,,,,,,,
PRO,进出轴 P21(左侧锡膏取料点),InOutAxis_P21,2800,,,,,,,,,,,,,,
PRO,进出轴 P22(右侧锡膏取料点),InOutAxis_P22,2900,,,,,,,,,,,,,,
PRO,进出轴 P101(搅拌区取放料点),InOutAxis_Stir_P101,2900,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,
PRO,(轴四)回温区旋转轴 P1待机原位点,Warming_Axis_P1,2000,,,,,,,,,,,,,,
PRO,(轴五)冷藏区旋转轴 P1待机原位点,Colding_Axis_P1,2000,,,,,,,,,,,,,,
PRO,(轴六)搅拌旋转轴 P1搅拌点1,Stir_Axis_P1,2000,,,,,,,,,,,,,,
PRO,(轴六)搅拌旋转轴 P2搅拌点2,Stir_Axis_P2,8000,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,
PRO,是否有左右侧门,IsHasDoorLimit,1,,,,,,,,,,,,,,
PRO,设备是否处于调试状态(1=调试,0=正常),IsInDebug,0,,,,,,,,,,,,,,
PRO,气压检测IO关闭需要持续的时间,AirCheckSeconds,3,,,,,,,,,,,,,,
PRO,出入库多少次,会自动重置所有轴操作,Box_ResetACount,100,,,,, ,,,,,,,,,
PRO,IO信号超时时间(毫秒),IOSingle_TimerOut,10000,,,,,,,,,,,,,,
PRO,是否使用料盘检测信号,IsUse_Tray_Check,0,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,
PRO,升降轴(轴2)P1速度,UpDownAxis_P1_Speed,250,,,,,,,,,,,,,,
PRO,升降轴(轴2)P2速度,UpDownAxis_P2_Speed,250,,,,,,,,,,,,,,
PRO,升降轴(轴2)P3速度,UpDownAxis_P3_Speed,250,,,,,,,,,,,,,,
PRO,升降轴(轴2)P4速度,UpDownAxis_P4_Speed,150,,,,,,,,,,,,,,
PRO,升降轴(轴2)P5速度,UpDownAxis_P5_Speed,250,,,,,,,,,,,,,,
PRO,升降轴(轴2)P6速度,UpDownAxis_P6_Speed,100,,,,,,,,,,,,,,
PRO,升降轴(轴2)P7速度,UpDownAxis_P7_Speed,100,,,,,,,,,,,,,,
PRO,升降轴(轴2)P8速度,UpDownAxis_P8_Speed,100,,,,,,,,,,,,,,
PRO,升降轴(轴2)P101速度,UpDownAxis_P101_Speed,100,,,,,,,,,,,,,,
PRO,升降轴(轴2)P102速度,UpDownAxis_P102_Speed,100,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,
PRO,旋转轴(轴1)P1速度,MiddleAxis_P1_Speed,120,,,,,,,,,,,,,,
PRO,旋转轴(轴1)P2速度,MiddleAxis_P2_Speed,120,,,,,,,,,,,,,,
PRO,旋转轴(轴1)P101速度,MiddleAxis_P101_Speed,120,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,
PRO,进出轴(轴3)P1速度,InOutAxis_P1_Speed,100,,,,,,,,,,,,,,
PRO,进出轴(轴3)P2速度,InOutAxis_P2_Speed,100,,,,,,,,,,,,,,
PRO,进出轴(轴3)P3速度,InOutAxis_P3_Speed,100,,,,,,,,,,,,,,
PRO,进出轴(轴3)P101速度,InOutAxis_P101_Speed,100,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,
PRO,回温区旋转轴(轴4)P1速度,WarmingAxis_P1_Speed,120,,,,,,,,,,,,,,
PRO,回温区旋转轴(轴4)P2速度,WarmingAxis_P2_Speed,120,,,,,,,,,,,,,,
PRO,冷藏区旋转轴(轴5)P1速度(匀速运动速度),ColdingAxis_P1_Speed,20,,,,,,,,,,,,,,
PRO,冷藏区旋转轴(轴5)P2速度,ColdingAxis_P2_Speed,120,,,,,,,,,,,,,,
PRO,搅拌区旋转轴(轴6)P1速度(匀速运动速度),StirAxis_P1_Speed,20,,,,,,,,,,,,,,
PRO,搅拌区旋转轴(轴6)P2速度,StirAxis_P2_Speed,120,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,
PRO,伺服停止时可误差的脉冲数的最小值,Axis_ErrorCountMin,10,,,,,,,,,,,,,, PRO,伺服停止时可误差的脉冲数的最小值,Axis_ErrorCountMin,10,,,,,,,,,,,,,,
PRO,伺服停止时可误差的脉冲数的最大值,Axis_ErrorCountMax,1000,,,,,,,,,,,,,, PRO,伺服停止时可误差的脉冲数的最大值,Axis_ErrorCountMax,1000,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,
PRO,(轴一)旋转轴最小限位,MiddleAxis_PositionMin,0,,,,,,,,,,,,,, PRO,(轴一)旋转轴最小限位,MiddleAxis_PositionMin,0,,,,,,,,,,,,,,
PRO,(轴二)升降轴最小限位,UpdownAxis_PositionMin,0,,,,,,,,,,,,,,
PRO,(轴三)进出轴最小限位,InoutAxis_PositionMin,0,,,,,,,,,,,,,,
PRO,(轴一)旋转轴最大限位,MiddleAxis_PositionMax,0,,,,,,,,,,,,,, PRO,(轴一)旋转轴最大限位,MiddleAxis_PositionMax,0,,,,,,,,,,,,,,
PRO,(轴二)升降轴最大限位,UpdownAxis_PositionMax,0,,,,,,,,,,,,,, PRO,旋转轴(轴1)P1速度,MiddleAxis_P1_Speed,120,,,,,,,,,,,,,,
PRO,(轴三)进出轴最大限位,InoutAxis_PositionMax,0,,,,,,,,,,,,,, PRO,旋转轴(轴1)P2速度,MiddleAxis_P2_Speed,120,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,
PRO,每次吹气的时间(分钟),BlowAir_Time,10,,,,,,,,,,,,,, PRO,设备是否处于调试状态(1=调试,0=正常),IsInDebug,0,,,,,,,,,,,,,,
PRO,两次吹气间隔(分钟),BlowAir_Interval,10,,,,, ,,,,,,,,, PRO,IO信号超时时间(毫秒),IOSingle_TimerOut,10000,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,
\ No newline at end of file \ No newline at end of file
PRO,冷藏区温湿度端口号,Humiture_Colding_Port,COM3,,,,,,,,,,,,,,
PRO,回温区温湿度端口号,Humiture_Warming_Port,COM4,,,,,,,,,,,,,,
PRO,左侧测重控制器端口号,Weight_Left_Port,COM5,,,,,,,,,,,,,,
PRO,右侧测重控制器端口号,Weight_Right_Port,COM6,,,,,,,,,,,,,,
PRO,左侧测重空夹具重量,LeftDefWeight,30,,,,,,,,,,,,,,
PRO,右侧测重空夹具重量,RightDefWeight,45,,,,,,,,,,,,,,
,,,,,,,, ,,,,,,,,,
PRO,锡膏宽度,Tin_Width,100,,,,,,,,,,,,,,
PRO,锡膏高度,Tin_Height,50,,,,,,,,,,,,,,
PRO,夹具宽度,Fixture_Width,185,,,,,,,,,,,,,,
PRO,夹具高度,Fixture_Height,60,,,,,,,,,,,,,,
PRO,特殊二维码尺寸配置,CodeSizeConfig,XA=13x48#FA;PartNum;1=7x32,,,,,,,
位置,库位类型,优先级,高度,宽度,料仓ID,旋转轴位置P2,升降轴库位出料前点P5,升降轴库位出料缓冲点P6,升降轴库位入料前点P3,升降轴库位入料缓冲点P4,进出轴库位点取料点P3,回温区旋转轴库位点P2,冷藏区旋转轴库位点P2 貫零,욋貫잚謹,膽邱섬,죕분욱똑,죕분멕똑,죕꾑ID,좋됐乞多,죕떱旗瘻菉貫零P2
1#AC1_1_1_4,1,1,50,50,1,211783,51884,55245,55245,51884,68000,20000,10000 P_1_1,1,1,210,300,1,1,10000
1#AC1_1_1_5,1,2,50,50,1,211783,67807,71168,71168,67807,68000,20000,10000 P_1_2,1,2,210,300,1,2,10000
1#AC1_1_1_6,1,3,50,50,1,211783,83730,87091,87091,83730,68000,20000,10000 P_1_3,1,3,210,300,1,3,10000
1#AC1_1_1_7,1,4,50,50,1,211783,99653,103014,103014,99653,68000,20000,10000 P_1_4,1,4,210,300,1,4,10000
1#AC1_1_1_8,1,5,50,50,1,211783,115576,118937,118937,115576,68000,20000,10000 P_1_5,1,5,210,300,1,5,10000
1#AC1_1_1_9,1,6,50,50,1,211783,131499,134860,134860,131499,68000,20000,10000 P_1_6,1,6,210,300,1,6,10000
1#AC1_1_1_10,1,7,50,50,1,211783,147422,150783,150783,147422,68000,20000,10000 P_1_7,1,7,210,300,1,7,10000
1#AC1_1_2_3,1,8,50,50,1,211783,385700,389433,389433,385700,68000,20000,10000 P_1_8,1,8,210,300,1,8,10000
1#AC1_1_2_4,2,9,50,50,1,211783,403000,405356,405356,403000,68000,20000,10000 P_1_9,1,9,210,300,1,9,10000
1#AC1_1_2_5,2,10,50,50,1,211783,418345,421279,421279,418345,68000,20000,10000 P_1_10,1,10,210,300,1,10,10000
1#AC1_1_2_6,2,11,50,50,1,211783,434000,437202,437202,434000,68000,20000,10000 P_2_1,1,11,210,300,1,11,50000
1#AC1_1_2_7,2,12,50,50,1,211783,450000,453125,453125,450000,68000,20000,10000 P_2_2,1,12,210,300,1,12,50000
1#AC1_1_2_8,2,13,50,50,1,211783,465900,469048,469048,465900,68000,20000,10000 P_2_3,1,13,210,300,1,13,50000
1#AC1_1_2_9,2,14,50,50,1,211783,481800,484971,484971,481800,68000,20000,10000 P_2_4,1,14,210,300,1,14,50000
1#AC1_1_3_1,2,15,50,50,1,211400,706257,709866,709866,706257,68000,20000,10000 P_2_5,1,15,210,300,1,15,50000
1#AC1_1_3_2,2,16,50,50,1,211400,722180,725789,725789,722180,68000,20000,10000 P_2_6,1,16,210,300,1,16,50000
1#AC1_1_3_3,2,17,50,50,1,211400,738103,741712,741712,738103,68000,20000,10000 P_2_7,1,17,210,300,1,17,50000
1#AC1_1_3_4,2,18,50,50,1,211400,753026,757635,757635,753026,68000,20000,10000 P_2_8,1,18,210,300,1,18,50000
1#AC1_1_3_5,2,19,50,50,1,211400,767949,773558,773558,767949,68000,20000,10000 P_2_9,1,19,210,300,1,19,50000
1#AC1_1_3_6,2,20,50,50,1,211400,783872,789481,789481,783872,68000,20000,10000 P_2_10,1,20,210,300,1,20,50000
1#AC1_1_3_7,2,21,50,50,1,211400,799795,805404,805404,799795,68000,20000,10000 P_3_1,2,21,400,300,1,21;22,90000
1#AC1_1_3_8,2,22,50,50,1,211800,814218,819327,819327,814218,68000,20000,10000 P_3_2,2,22,400,300,1,23;24,90000
1#AC1_1_3_9,2,23,50,50,1,211800,832141,835250,835250,832141,68000,20000,10000 P_3_3,2,23,400,300,1,25;26,90000
1#AC1_1_3_10,2,24,50,50,1,211800,848064,851173,851173,848064,68000,20000,10000 P_3_4,2,24,400,300,1,21;23,90000
1#AC1_1_3_11,2,25,50,50,1,212000,861987,867096,867096,861987,68000,20000,10000 P_3_5,2,25,400,300,1,23;25,90000
1#AC1_1_3_12,2,26,50,50,1,212000,877910,883019,883019,877910,68000,20000,10000 P_4_1,2,26,400,300,1,25;27,130000
1#AC1_2_1_1,2,27,50,50,1,169650,5600,9900,9900,5600,68000,20000,10000 P_4_2,2,27,400,300,1,21;24,130000
1#AC1_2_1_2,2,28,50,50,1,169650,21365,25665,25665,21365,68000,20000,10000 P_4_3,2,28,400,300,1,23;26,130000
1#AC1_2_1_3,2,29,50,50,1,169650,37130,41430,41430,37130,68000,20000,10000 P_4_4,2,29,400,300,1,25;28,130000
1#AC1_2_1_4,2,30,50,50,1,169650,52895,57195,57195,52895,68000,20000,10000 P_4_5,2,30,400,300,1,21;25,130000
1#AC1_2_1_5,2,31,50,50,1,169650,68660,72960,72960,68660,68000,20000,10000
1#AC1_2_1_6,2,32,50,50,1,169650,84425,88725,88725,84425,68000,20000,10000
1#AC1_2_1_7,2,33,50,50,1,169650,100190,104490,104490,100190,68000,20000,10000
1#AC1_2_1_8,2,34,50,50,1,169650,115955,120255,120255,115955,68000,20000,10000
1#AC1_2_1_9,2,35,50,50,1,169650,131720,136020,136020,131720,68000,20000,10000
1#AC1_2_1_10,2,36,50,50,1,169650,147485,151785,151785,147485,68000,20000,10000
1#AC1_2_1_11,2,37,50,50,1,169650,163250,167550,167550,163250,68000,20000,10000
1#AC1_2_2_1,2,38,50,50,1,169650,354811,358235,358235,354811,68000,20000,10000
1#AC1_2_2_2,2,39,50,100,1,169650,370576,374000,374000,370576,68000,20000,10000
1#AC1_2_2_3,2,40,50,100,1,169650,386341,389765,389765,386341,68000,20000,10000
1#AC1_2_2_4,2,41,50,100,1,169650,402106,405530,405530,402106,68000,20000,10000
1#AC1_2_2_5,2,42,50,100,1,169650,417871,421295,421295,417871,68000,20000,10000
1#AC1_2_2_6,2,43,50,100,1,169650,433636,437060,437060,433636,68000,20000,10000
1#AC1_2_2_7,2,44,50,100,1,169650,449401,452825,452825,449401,68000,20000,10000
1#AC1_2_2_8,100,45,50,50,1,169650,465166,468590,468590,465166,68000,20000,10000
1#AC1_2_2_9,200,46,50,50,1,169650,480931,484355,484355,480931,68000,20000,10000
1#AC1_2_2_10,300,47,50,50,1,169650,496696,500120,500120,496696,68000,20000,10000
1#AC1_2_2_11,400,48,50,50,1,169650,512461,515885,515885,512461,68000,20000,10000
1#AC1_2_2_12,500,49,50,50,1,169650,528226,531650,531650,528226,68000,20000,10000
...@@ -72,7 +72,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -72,7 +72,7 @@ namespace OnlineStore.DeviceLibrary
if (File.Exists(positionConfigFile)) if (File.Exists(positionConfigFile))
{ {
LogUtil.info( "加载位置文件:" + positionConfigFile); LogUtil.info( "加载位置文件:" + positionConfigFile);
CSVPositionReader<VerticalStorePosition>.ReloadCSVFile(positionConfigFile); CSVPositionReader<VerticalPosition>.ReloadCSVFile(positionConfigFile);
} }
Config = (VerticalStoreConfig)storeConfig; Config = (VerticalStoreConfig)storeConfig;
Store = new VerticalStoreBean(Config); Store = new VerticalStoreBean(Config);
......
...@@ -48,13 +48,13 @@ namespace OnlineStore.DeviceLibrary ...@@ -48,13 +48,13 @@ namespace OnlineStore.DeviceLibrary
moveAxisList = new List<ConfigMoveAxis>(); moveAxisList = new List<ConfigMoveAxis>();
MoveAxisConfig(); MoveAxisConfig();
List<VerticalStorePosition> positionList = CSVPositionReader<VerticalStorePosition>.getPositionList(); List<VerticalPosition> positionList = CSVPositionReader<VerticalPosition>.getPositionList();
PositionNumList = new List<string>(); PositionNumList = new List<string>();
foreach (VerticalStorePosition position in positionList) foreach (VerticalPosition position in positionList)
{ {
if (position.StoreId.Equals(StoreID)) if (position.StoreId.Equals(StoreID))
{ {
bool result = VerticalStorePosition.CheckPosition(position, Config); bool result = VerticalPosition.CheckPosition(position, Config);
if (result) if (result)
{ {
PositionNumList.Add(position.PositionNum); PositionNumList.Add(position.PositionNum);
...@@ -68,7 +68,6 @@ namespace OnlineStore.DeviceLibrary ...@@ -68,7 +68,6 @@ namespace OnlineStore.DeviceLibrary
IOManager.instance.ConnectionIOList(Config.DIODeviceNameList); IOManager.instance.ConnectionIOList(Config.DIODeviceNameList);
ACServerManager.LogEvent += ACServerManager_LogEvent; ACServerManager.LogEvent += ACServerManager_LogEvent;
LoadCurrStirInfo();
mainTimer.Enabled = false; mainTimer.Enabled = false;
if (ConfigAppSettings.GetIntValue(Setting_Init.App_AutoRun).Equals(1)) if (ConfigAppSettings.GetIntValue(Setting_Init.App_AutoRun).Equals(1))
...@@ -90,18 +89,15 @@ namespace OnlineStore.DeviceLibrary ...@@ -90,18 +89,15 @@ namespace OnlineStore.DeviceLibrary
//急停按钮和气压检测需要一起判断 //急停按钮和气压检测需要一起判断
IO_VALUE suddenBtn = IOManager.IOValue(IO_Type.SuddenStop_BTN); IO_VALUE suddenBtn = IOManager.IOValue(IO_Type.SuddenStop_BTN);
IO_VALUE airCheck = IOManager.IOValue(IO_Type.Airpressure_Check);
if (suddenBtn == IO_VALUE.HIGH && airCheck == IO_VALUE.HIGH) if (suddenBtn == IO_VALUE.HIGH )
{ {
lastAirCloseTime = DateTime.Now; lastAirCloseTime = DateTime.Now;
if (!RunAxis(true)) if (!RunAxis(true))
{ {
return false; return false;
} }
//启动温湿度服务器
HumitureController.OpenAll(new string[] { Config.Humiture_Warming_Port, Config.Humiture_Colding_Port });
OKLEController.OpenAll(new string[] { Config.Weight_Left_Port, Config.Weight_Right_Port });
runStatus = StoreRunStatus.HomeMoving; runStatus = StoreRunStatus.HomeMoving;
StartReset(); StartReset();
StartTime = DateTime.Now; StartTime = DateTime.Now;
...@@ -134,7 +130,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -134,7 +130,7 @@ namespace OnlineStore.DeviceLibrary
MoveInfo.NewMove(MoveType.StoreReset); MoveInfo.NewMove(MoveType.StoreReset);
MoveInfo.NextMoveStep(StoreMoveStep.P01_InOutToP1); MoveInfo.NextMoveStep(StoreMoveStep.P01_InOutToP1);
LogUtil.info(Name + "到待机状态,进出轴到P1"); LogUtil.info(Name + "到待机状态,进出轴到P1");
ACAxisMove(Config.InOut_Axis, Config.InOutAxis_P1, Config.InOutAxis_P1_Speed); // ACAxisMove(Config.InOut_Axis, Config.InOutAxis_P1, Config.InOutAxis_P1_Speed);
} }
public override void Reset(bool isNeedClearAuto = true) public override void Reset(bool isNeedClearAuto = true)
...@@ -178,7 +174,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -178,7 +174,7 @@ namespace OnlineStore.DeviceLibrary
storeStatus = StoreStatus.ResetMove; storeStatus = StoreStatus.ResetMove;
MoveInfo.NewMove(MoveType.StoreReset); MoveInfo.NewMove(MoveType.StoreReset);
MoveInfo.NextMoveStep(StoreMoveStep.R01_InOutBack); MoveInfo.NextMoveStep(StoreMoveStep.R01_InOutBack);
ACAxisHomeMove(Config.InOut_Axis); // ACAxisHomeMove(Config.InOut_Axis);
LogUtil.info(Name + "开始原点返回,先把进出轴回原点"); LogUtil.info(Name + "开始原点返回,先把进出轴回原点");
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(2000)); MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(2000));
} }
...@@ -193,84 +189,84 @@ namespace OnlineStore.DeviceLibrary ...@@ -193,84 +189,84 @@ namespace OnlineStore.DeviceLibrary
{ {
return; return;
} }
switch (MoveInfo.MoveStep) //switch (MoveInfo.MoveStep)
{ //{
case StoreMoveStep.R01_InOutBack: // case StoreMoveStep.R01_InOutBack:
Thread.Sleep(200); // Thread.Sleep(200);
MoveInfo.NextMoveStep(StoreMoveStep.R02_InOutToP1); // MoveInfo.NextMoveStep(StoreMoveStep.R02_InOutToP1);
ResetLog("复位: 进出轴回P1,关闭仓门,冷藏门"); // ResetLog("复位: 进出轴回P1,关闭仓门,冷藏门");
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000)); // MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
ACAxisMove(Config.InOut_Axis, Config.InOutAxis_P1, Config.InOutAxis_P1_Speed); // ACAxisMove(Config.InOut_Axis, Config.InOutAxis_P1, Config.InOutAxis_P1_Speed);
CylinderMove(MoveInfo, IO_Type.Door_Up, IO_Type.Door_Down); // CylinderMove(MoveInfo, IO_Type.Door_Up, IO_Type.Door_Down);
break; // break;
case StoreMoveStep.R02_InOutToP1: // case StoreMoveStep.R02_InOutToP1:
//如果此时轴三还在报警,需要提示错误并等待 // //如果此时轴三还在报警,需要提示错误并等待
if (ACServerManager.GetAlarmStatus(Config.InOut_Axis.DeviceName, Config.InOut_Axis.GetAxisValue()) > 0) // if (ACServerManager.GetAlarmStatus(Config.InOut_Axis.DeviceName, Config.InOut_Axis.GetAxisValue()) > 0)
{ // {
WarnMsg = "进出轴报警!复位失败,请检查!"; // WarnMsg = "进出轴报警!复位失败,请检查!";
LogUtil.error ( "进出轴报警!复位失败,请检查!"); // LogUtil.error ( "进出轴报警!复位失败,请检查!");
return; // return;
} // }
MoveInfo.NextMoveStep(StoreMoveStep.R03_OtherAxisBack); // MoveInfo.NextMoveStep(StoreMoveStep.R03_OtherAxisBack);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000)); // MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
ResetLog(" 复位:升降轴,旋转轴,搅拌轴,回温轴,冷藏轴原点返回"); // ResetLog(" 复位:升降轴,旋转轴,搅拌轴,回温轴,冷藏轴原点返回");
ACAxisHomeMove(Config.Middle_Axis); // ACAxisHomeMove(Config.Middle_Axis);
ACAxisHomeMove(Config.UpDown_Axis); // ACAxisHomeMove(Config.UpDown_Axis);
ACAxisHomeMove(Config.Stir_Axis); // ACAxisHomeMove(Config.Stir_Axis);
ACAxisHomeMove(Config.Warming_Axis); // ACAxisHomeMove(Config.Warming_Axis);
ACAxisHomeMove(Config.Colding_Axis); // ACAxisHomeMove(Config.Colding_Axis);
break; // break;
case StoreMoveStep.R03_OtherAxisBack: // case StoreMoveStep.R03_OtherAxisBack:
MoveInfo.NextMoveStep(StoreMoveStep.R04_AxisToP1); // MoveInfo.NextMoveStep(StoreMoveStep.R04_AxisToP1);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000)); // MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
ResetLog( "复位:旋转轴,升降轴,搅拌轴到待机点"); // ResetLog( "复位:旋转轴,升降轴,搅拌轴到待机点");
ACAxisMove(Config.Middle_Axis, Config.MiddleAxis_P1, Config.MiddleAxis_P1_Speed); // ACAxisMove(Config.Middle_Axis, Config.MiddleAxis_P1, Config.MiddleAxis_P1_Speed);
ACAxisMove(Config.UpDown_Axis, Config.UpDownAxis_OL_P1, Config.UpDownAxis_P1_Speed); // ACAxisMove(Config.UpDown_Axis, Config.UpDownAxis_OL_P1, Config.UpDownAxis_P1_Speed);
ACAxisMove(Config.Stir_Axis, Config.Stir_Axis_P1, Config.StirAxis_P1_Speed); // ACAxisMove(Config.Stir_Axis, Config.Stir_Axis_P1, Config.StirAxis_P1_Speed);
break; // break;
case StoreMoveStep.R04_AxisToP1: // case StoreMoveStep.R04_AxisToP1:
MoveInfo.NextMoveStep(StoreMoveStep.R05_StartWork); // MoveInfo.NextMoveStep(StoreMoveStep.R05_StartWork);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000)); // MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
ResetLog("复位:启动吹气冷气,冷藏旋转,回温旋转 "); // ResetLog("复位:启动吹气冷气,冷藏旋转,回温旋转 ");
StartWork(); // StartWork();
break; // break;
case StoreMoveStep.R05_StartWork: // case StoreMoveStep.R05_StartWork:
LogUtil.info(Name + "复位完成"); // LogUtil.info(Name + "复位完成");
runStatus = StoreRunStatus.Runing; // runStatus = StoreRunStatus.Runing;
MoveInfo.EndMove(); // MoveInfo.EndMove();
storeStatus = StoreStatus.StoreOnline; // storeStatus = StoreStatus.StoreOnline;
if (alarmType.Equals(StoreAlarmType.None)) // if (alarmType.Equals(StoreAlarmType.None))
{ // {
WarnMsg = ""; // WarnMsg = "";
} // }
break; // break;
case StoreMoveStep.P01_InOutToP1: // case StoreMoveStep.P01_InOutToP1:
MoveInfo.NextMoveStep(StoreMoveStep.P02_AxisToP1); // MoveInfo.NextMoveStep(StoreMoveStep.P02_AxisToP1);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000)); // MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
ResetLog("复位: 进出轴回P1,关闭仓门,冷藏门"); // ResetLog("复位: 进出轴回P1,关闭仓门,冷藏门");
ACAxisMove(Config.InOut_Axis, Config.InOutAxis_P1, Config.InOutAxis_P1_Speed); // ACAxisMove(Config.InOut_Axis, Config.InOutAxis_P1, Config.InOutAxis_P1_Speed);
CylinderMove(MoveInfo, IO_Type.Door_Up, IO_Type.Door_Down); // CylinderMove(MoveInfo, IO_Type.Door_Up, IO_Type.Door_Down);
break; // break;
case StoreMoveStep.P02_AxisToP1: // case StoreMoveStep.P02_AxisToP1:
MoveInfo.NextMoveStep(StoreMoveStep.P03_StartWork); // MoveInfo.NextMoveStep(StoreMoveStep.P03_StartWork);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000)); // MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
ResetLog("复位:启动吹气冷气,冷藏旋转,回温旋转 "); // ResetLog("复位:启动吹气冷气,冷藏旋转,回温旋转 ");
StartWork(); // StartWork();
break; // break;
case StoreMoveStep.P03_StartWork: // case StoreMoveStep.P03_StartWork:
LogUtil.info( Name + "到待机状态完成"); // LogUtil.info( Name + "到待机状态完成");
MoveInfo.EndMove(); // MoveInfo.EndMove();
storeStatus = StoreStatus.StoreOnline; // storeStatus = StoreStatus.StoreOnline;
runStatus = StoreRunStatus.Runing; // runStatus = StoreRunStatus.Runing;
if (alarmType.Equals(StoreAlarmType.None)) // if (alarmType.Equals(StoreAlarmType.None))
{ // {
WarnMsg = ""; // WarnMsg = "";
} // }
break; // break;
default: break; // default: break;
} //}
} }
internal void MoveAxisConfig() internal void MoveAxisConfig()
...@@ -279,11 +275,6 @@ namespace OnlineStore.DeviceLibrary ...@@ -279,11 +275,6 @@ namespace OnlineStore.DeviceLibrary
moveAxisList = new List<ConfigMoveAxis>(); moveAxisList = new List<ConfigMoveAxis>();
moveAxisList.Add(Config.Middle_Axis); moveAxisList.Add(Config.Middle_Axis);
moveAxisList.Add(Config.UpDown_Axis);
moveAxisList.Add(Config.InOut_Axis);
moveAxisList.Add(Config.Warming_Axis);
moveAxisList.Add(Config.Colding_Axis);
moveAxisList.Add(Config.Stir_Axis);
this.AxisAlarmCodeMap = new Dictionary<string, AxisAlarmInfo>(); this.AxisAlarmCodeMap = new Dictionary<string, AxisAlarmInfo>();
foreach (ConfigMoveAxis axis in moveAxisList) foreach (ConfigMoveAxis axis in moveAxisList)
...@@ -293,31 +284,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -293,31 +284,7 @@ namespace OnlineStore.DeviceLibrary
} }
#endregion #endregion
/// <summary>
/// 冷藏和回温区开始工作
/// </summary>
/// <param name="posType">1=冷藏区匀速旋转。2=回温区匀速旋转</param>
private void StartWork(int posType = 0)
{
IOManager.IOMove(IO_Type.Colding_Start, IO_VALUE.HIGH);
IOManager.IOMove(IO_Type.Warming_Start, IO_VALUE.HIGH);
//匀速旋转
if (posType.Equals(0) || posType.Equals(1))
{
if (ACServerManager.GetBusyStatus(Config.Colding_Axis.DeviceName, Config.Colding_Axis.GetAxisValue()).Equals(0))
{
ACServerManager.SpeedMove(Config.Colding_Axis.DeviceName, Config.Colding_Axis.GetAxisValue(), Config.ColdingAxis_P1_Speed);
}
}
if (posType.Equals(0) || posType.Equals(2))
{
if (ACServerManager.GetBusyStatus(Config.Warming_Axis.DeviceName, Config.Warming_Axis.GetAxisValue()).Equals(0))
{
ACServerManager.SpeedMove(Config.Warming_Axis.DeviceName, Config.Warming_Axis.GetAxisValue(), Config.WarmingAxis_P1_Speed);
}
}
}
public bool RunAxis(bool isCheck) public bool RunAxis(bool isCheck)
{ {
...@@ -482,44 +449,6 @@ namespace OnlineStore.DeviceLibrary ...@@ -482,44 +449,6 @@ namespace OnlineStore.DeviceLibrary
} }
InProcess = false; InProcess = false;
} }
private void AirCheckProcess()
{
IO_VALUE currAirValue = IOManager.IOValue(IO_Type.Airpressure_Check);
if (isInSuddenDown)
{
return;
}
if (isNoAirCheck)
{
return;
}
if (currAirValue.Equals(IO_VALUE.LOW))
{
//判断是否持续了3秒
if (preAirValue.Equals(IO_VALUE.LOW))
{
TimeSpan span = DateTime.Now - lastAirCloseTime;
if (span.TotalSeconds > Config.AirCheckSeconds)
{
WarnMsg = "未检测到气压信号";
preAirValue = IO_VALUE.LOW;
LogUtil.info("已持续【" + FormUtil.GetSpanStr(span) + "】未检测到气压信号,报警");
Alarm(StoreAlarmType.NoAirCheck, "2", WarnMsg, MoveType.None);
return;
}
}
else
{
lastAirCloseTime = DateTime.Now;
isNoAirCheck = false;
}
}
else
{
isNoAirCheck = false;
}
preAirValue = currAirValue;
}
private void IoCheckProcess() private void IoCheckProcess()
{ {
...@@ -527,7 +456,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -527,7 +456,7 @@ namespace OnlineStore.DeviceLibrary
if (runStatus.Equals(StoreRunStatus.Wait)) if (runStatus.Equals(StoreRunStatus.Wait))
{ {
//取新的Io状态 //取新的Io状态
IO_VALUE autoSingle = IOManager.IOValue(IO_Type.AutoRun_Signal); IO_VALUE autoSingle = IOManager.IOValue(IO_Type.Reset_BTN);
if (ConfigAppSettings.GetIntValue(Setting_Init.App_AutoRun).Equals(1)) if (ConfigAppSettings.GetIntValue(Setting_Init.App_AutoRun).Equals(1))
{ {
if (autoSingle.Equals(IO_VALUE.HIGH) && lastAutoRun.Equals(IO_VALUE.LOW)) if (autoSingle.Equals(IO_VALUE.HIGH) && lastAutoRun.Equals(IO_VALUE.LOW))
...@@ -553,12 +482,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -553,12 +482,7 @@ namespace OnlineStore.DeviceLibrary
IO_VALUE suddenBtn = IOManager.IOValue(IO_Type.SuddenStop_BTN); IO_VALUE suddenBtn = IOManager.IOValue(IO_Type.SuddenStop_BTN);
IO_VALUE resetBtn = IOManager.IOValue(IO_Type.Reset_BTN); IO_VALUE resetBtn = IOManager.IOValue(IO_Type.Reset_BTN);
//急停按钮 if (resetBtn.Equals(IO_VALUE.HIGH))
if (suddenBtn.Equals(IO_VALUE.LOW))
{
AirCheckProcess();
}
else if (resetBtn.Equals(IO_VALUE.HIGH))
{ {
//收到复位信号,若报警直接复位,若不报警且无操作,回到待机点 //收到复位信号,若报警直接复位,若不报警且无操作,回到待机点
if (alarmType.Equals(StoreAlarmType.None) && isInSuddenDown.Equals(false) && isNoAirCheck.Equals(false)) if (alarmType.Equals(StoreAlarmType.None) && isInSuddenDown.Equals(false) && isNoAirCheck.Equals(false))
...@@ -592,14 +516,6 @@ namespace OnlineStore.DeviceLibrary ...@@ -592,14 +516,6 @@ namespace OnlineStore.DeviceLibrary
} }
} }
//ShowTimeLog("复位和启动按钮");
////检查运动轴报警
//if (storeRunStatus > StoreRunStatus.Wait && (!isInSuddenDown) )
//{
// ShowTimeLog("开始检测轴报警");
// CheckAxisAlarm();
// ShowTimeLog("轴报警检测完成");
//}
} }
private void IoCheckTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) private void IoCheckTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
...@@ -639,18 +555,10 @@ namespace OnlineStore.DeviceLibrary ...@@ -639,18 +555,10 @@ namespace OnlineStore.DeviceLibrary
} }
else if (runStatus.Equals(StoreRunStatus.Runing)) else if (runStatus.Equals(StoreRunStatus.Runing))
{ {
InstoreCheck();
AutoResetProcess();
IOTimeOutProcess(); IOTimeOutProcess();
} }
if (CurrStirInfo.InStirWork && CurrStirInfo.MoveStatus.Equals(3) && CurrStirInfo.StopTime <= DateTime.Now)
{
UpdateCurrStirState(4);
LogUtil.info(CurrStirInfo.StirParam.LogName + "到达搅拌结束时间,搅拌轴停止运动,更新状态=4 ");
AxisSuddenStop(Config.Stir_Axis);
}
} }
catch (Exception ex) catch (Exception ex)
{ {
...@@ -658,68 +566,6 @@ namespace OnlineStore.DeviceLibrary ...@@ -658,68 +566,6 @@ namespace OnlineStore.DeviceLibrary
} }
} }
private Stopwatch checkWatch_0 = new Stopwatch();
private Stopwatch checkWatch_1 = new Stopwatch();
private Stopwatch checkWatch_2 = new Stopwatch();
//判断是否需要出入库
private void InstoreCheck()
{
if (MoveInfo.MoveType.Equals(MoveType.None) && alarmType.Equals(StoreAlarmType.None))
{
if (IsScanCode)
{
return;
}
//判断料门口是否有料
if (IOManager.IOValue(IO_Type.TinCheck_Fixture).Equals(IO_VALUE.HIGH))
{
checkWatch_1.Stop();
checkWatch_2.Stop();
if (StoreManager.checkWatch(checkWatch_0, 1500, true))
{
LogUtil.info(Name + "检测到 夹具信号,开始扫码");
StartScan(0);
}
}
else if (IOManager.IOValue(IO_Type.TinCheck_DoorLeft).Equals(IO_VALUE.HIGH))
{
checkWatch_0.Stop();
checkWatch_2.Stop();
double leftWeight = OKLEController.queryData(Config.Weight_Left_Port);
if (leftWeight >= 50)
{
if (StoreManager.checkWatch(checkWatch_1, 1500, true))
{
LogUtil.info(Name + "检测到 左侧锡膏,开始扫码");
StartScan(1,leftWeight);
}
}
}
else if (IOManager.IOValue(IO_Type.TinCheck_DoorRight).Equals(IO_VALUE.HIGH))
{
checkWatch_0.Stop();
checkWatch_1.Stop();
double rightWeight = OKLEController.queryData(Config.Weight_Right_Port);
if (rightWeight >= 50)
{
if (StoreManager.checkWatch(checkWatch_2, 1500, true))
{
LogUtil.info(Name + "检测到 右侧锡膏,开始扫码");
StartScan(2,rightWeight);
}
}
}
else
{
checkWatch_0.Stop();
checkWatch_1.Stop();
checkWatch_2.Stop();
}
}
}
private DateTime preIoTimerOutTime = DateTime.Now; private DateTime preIoTimerOutTime = DateTime.Now;
private void IOTimeOutProcess() private void IOTimeOutProcess()
...@@ -758,67 +604,6 @@ namespace OnlineStore.DeviceLibrary ...@@ -758,67 +604,6 @@ namespace OnlineStore.DeviceLibrary
} }
} }
private void AutoResetProcess()
{
try
{
if (CurrInOutACount >= this.Config.Box_ResetACount)
{
if (runStatus.Equals(StoreRunStatus.Runing) && MoveInfo.MoveType.Equals(MoveType.None))
{
LogUtil.info(Name + "已经累计出入库" + CurrInOutACount + "次,需要复位一下");
Reset();
}
}
else if (CurrStirInfo.InStirWork && CurrStirInfo.MoveStatus.Equals(4) && CurrStirInfo.StirParam != null)
{
if (runStatus.Equals(StoreRunStatus.Runing) && MoveInfo.MoveType.Equals(MoveType.None))
{
LogUtil.info(Name + CurrStirInfo.StirParam.LogName + ",搅拌已完成,开始回库操作");
StartStirBackPos(CurrStirInfo.StirParam);
}
}
else
{
InOutParam param = null;
if (WaitMoveParamList.Count > 0 && CanStarInOut())
{
bool result = WaitMoveParamList.TryDequeue(out param);
}
if (param != null)
{ //出库
if (param.PosCode.Equals(""))
{
LogUtil.info(Name + "开始执行排队中的 " + param.LogName + "");
bool result = false;
if (param.paramType.Equals(MoveType.OutStore))
{
result = StartOutStore(param);
}
else if (param.paramType.Equals(MoveType.MovePos))
{
result = StartMovement(param);
}
else if (param.paramType.Equals(MoveType.Stirring))
{
result = StartStirring(param);
}
if (!result)
{
LogUtil.info(Name + " 执行排队中的 " + param.LogName + "失败,重新加入等待队列");
AddWaitMoveParam(param);
}
}
}
}
}
catch (Exception ex)
{
LogUtil.error("处理出入库排队列表出错:" + ex.ToString());
}
}
private DateTime checkAlarmTime = DateTime.Now; private DateTime checkAlarmTime = DateTime.Now;
private bool CheckAxisAlarm() private bool CheckAxisAlarm()
...@@ -892,34 +677,34 @@ namespace OnlineStore.DeviceLibrary ...@@ -892,34 +677,34 @@ namespace OnlineStore.DeviceLibrary
{ {
if (NeedCheckSafetyLight.Equals(1)) if (NeedCheckSafetyLight.Equals(1))
{ {
if (MoveInfo.MoveType.Equals(MoveType.OutStore) && MoveInfo.IsStep(StoreMoveStep.SO_13_InoutToP2)) //if (MoveInfo.MoveType.Equals(MoveType.OutStore) && MoveInfo.IsStep(StoreMoveStep.SO_13_InoutToP2))
{ //{
NeedCheckSafetyLight = 2; // NeedCheckSafetyLight = 2;
LogUtil.info("出库 " + MoveInfo.MoveStep + " 运动中,光栅被遮挡,停止进出轴运动"); // LogUtil.info("出库 " + MoveInfo.MoveStep + " 运动中,光栅被遮挡,停止进出轴运动");
ACServerManager.SuddenStop(Config.InOut_Axis.DeviceName, Config.InOut_Axis.GetAxisValue()); // ACServerManager.SuddenStop(Config.InOut_Axis.DeviceName, Config.InOut_Axis.GetAxisValue());
} //}
else if (MoveInfo.MoveType.Equals(MoveType.InStore) && MoveInfo.IsStep(StoreMoveStep.SI_05_InoutToP2)) //else if (MoveInfo.MoveType.Equals(MoveType.InStore) && MoveInfo.IsStep(StoreMoveStep.SI_05_InoutToP2))
{ //{
NeedCheckSafetyLight = 2; // NeedCheckSafetyLight = 2;
LogUtil.info("入库 "+ MoveInfo.MoveStep + " 运动中,光栅被遮挡,停止进出轴运动"); // LogUtil.info("入库 "+ MoveInfo.MoveStep + " 运动中,光栅被遮挡,停止进出轴运动");
ACServerManager.SuddenStop(Config.InOut_Axis.DeviceName, Config.InOut_Axis.GetAxisValue()); // ACServerManager.SuddenStop(Config.InOut_Axis.DeviceName, Config.InOut_Axis.GetAxisValue());
} //}
} }
} }
else else
{ {
if (NeedCheckSafetyLight.Equals(2)) if (NeedCheckSafetyLight.Equals(2))
{ {
if (MoveInfo.MoveType.Equals(MoveType.OutStore) && MoveInfo.IsStep(StoreMoveStep.SO_13_InoutToP2)) //if (MoveInfo.MoveType.Equals(MoveType.OutStore) && MoveInfo.IsStep(StoreMoveStep.SO_13_InoutToP2))
{ //{
LogUtil.info("出库 " + MoveInfo.MoveStep + " 运动中,光栅已恢复,继续进出轴运动"); // LogUtil.info("出库 " + MoveInfo.MoveStep + " 运动中,光栅已恢复,继续进出轴运动");
SO_13_InoutToP2(); // SO_13_InoutToP2();
} //}
else if (MoveInfo.MoveType.Equals(MoveType.InStore) && MoveInfo.IsStep(StoreMoveStep.SI_05_InoutToP2)) //else if (MoveInfo.MoveType.Equals(MoveType.InStore) && MoveInfo.IsStep(StoreMoveStep.SI_05_InoutToP2))
{ //{
LogUtil.info("入库 " + MoveInfo.MoveStep + " 运动中,光栅已恢复,继续进出轴运动"); // LogUtil.info("入库 " + MoveInfo.MoveStep + " 运动中,光栅已恢复,继续进出轴运动");
SI_05_InoutToP2(); // SI_05_InoutToP2();
} //}
} }
} }
} }
...@@ -974,159 +759,6 @@ namespace OnlineStore.DeviceLibrary ...@@ -974,159 +759,6 @@ namespace OnlineStore.DeviceLibrary
} }
#region 扫码 代码
private DateTime StartWaitScanTime = DateTime.Now;
private bool IsNotScanCode = false;
private bool IsScanCode = false;
private void onCodeReceived(string message)
{
try
{
message = ScanCodeManager.ReplaceCode(message);
if (message.Equals("") || string.IsNullOrEmpty(message))
{
IsNotScanCode = true;
IsScanCode = false;
CodeMsg = "没有收到二维码信息,请重新放入料盘";
LogUtil.info( Name + "没有收到二维码信息,请重新放入料盘");
return;
}
IsNotScanCode = false;
if (runStatus.Equals(StoreRunStatus.Wait))
{
LogUtil.info( Name + "收到二维码【 " + message + "】,设备未启动,不需要发送服务器");
IsScanCode = false;
return;
}
// CodeMsg = "收到二维码【 " + message + "】,发送给服务器获取入库PosID";
LogUtil.info( Name + "收到二维码【 " + message + "】,发送给服务器获取入库PosID");
//发送扫码内容到服务器进行入库操作
Operation operation = getLineBoxStatus();
operation.op = 1;
operation.data = new Dictionary<string, string>() { { "code", message }, { "boxId", StoreID.ToString() } };
string server = ConfigAppSettings.GetValue(Setting_Init.http_server);
Operation resultOperation = HttpHelper.Post(StoreManager.GetPostApi(server), operation, false);
if (resultOperation == null)
{
// CodeMsg = "二维码【" + message + "】没有收到服务器反馈";
LogUtil.info( Name + "二维码【" + message + "】没有收到服务器反馈!");
IsScanCode = false;
return;
}
else if (!string.IsNullOrEmpty(resultOperation.msg))
{
//如果有提示消息,直接显示提示
LogUtil.info( Name + "服务器反馈 二维码【" + message + "】 :" + resultOperation.msg);
IsScanCode = false;
return;
}
IsScanCode = false;
if (resultOperation.op.Equals(1))
{
ReviceInStoreProcess(message, resultOperation);
}
else if (resultOperation.op.Equals(2))
{
ReviceOutStoreProcess(resultOperation);
}
else if (resultOperation.op.Equals(5))
{
ProcessHumidityCMD(resultOperation);
}
else
{
LogUtil.error("收到服务器命令:op=" + resultOperation.op + ",未找到对应处理");
}
}
catch (Exception ex)
{
IsScanCode = false;
LogUtil.error(Name + ex.StackTrace);
}
}
#endregion
#region 扫码
private string CodeMsg = "";
private string spiltStr = "##";
private DateTime LastScanTime = DateTime.Now;
public void StartScan(int wareType = 0,double weight=0)
{
if (IsInScan())
{
LogUtil.info("上次扫码还未执行完毕,请稍后!");
return;
}
IsScanCode = true;
Task.Factory.StartNew(delegate
{
LastScanTime = DateTime.Now;
IOManager.IOMove(IO_Type.Camera_Led, IO_VALUE.HIGH);
string message = "";
List<CodeInfo> codeList = CodeManager.CameraScan();
foreach (CodeInfo obj in codeList)
{
string codeR = "";
string ncode = obj.CodeStr;
//判断左右,默认左侧条码X<1500
if (wareType.Equals(1) && codeList.Count >= 2 && obj.X > 1500)
{
LogUtil.info(Name + "左侧锡膏,弃用条码:" + obj.X + "x" + obj.Y + "=" + obj.CodeStr);
continue;
}
if (wareType.Equals(2) && codeList.Count >= 2 && obj.X < 1500)
{
LogUtil.info(Name + "右侧锡膏,弃用条码:" + obj.X + "x" + obj.Y + "=" + obj.CodeStr);
continue;
}
//根据二维码开头获取固定尺寸
string codeSize = Config.GetCodeSize(ref ncode);
if (String.IsNullOrEmpty(codeSize))
{
codeSize = Config.Tin_Width + "x" + Config.Tin_Height;
if (wareType.Equals(0))
{
codeSize = Config.Fixture_Width + "x" + Config.Fixture_Height;
}
}
if (!String.IsNullOrEmpty(ncode))
{
codeR = "=1+"+obj.X+"x"+obj.Y+"-" + codeSize + "=" + ncode;
message = message + codeR + spiltStr;
}
}
IOManager.IOMove(IO_Type.Camera_Led, IO_VALUE.LOW);
onCodeReceived(message);
});
}
private bool IsInScan()
{
if (!IsScanCode)
{
return false;
}
TimeSpan span = DateTime.Now - LastScanTime;
if (span.TotalSeconds > 60)
{
//大于60秒表示超时了,可以重新开始扫码
return false;
}
return true;
}
#endregion
#region 与服务器通信定时器 #region 与服务器通信定时器
private float Max_Humidity = 0; private float Max_Humidity = 0;
...@@ -1173,8 +805,6 @@ namespace OnlineStore.DeviceLibrary ...@@ -1173,8 +805,6 @@ namespace OnlineStore.DeviceLibrary
LogUtil.error("定时给服务器发送消息出错:" + ex.ToString()); LogUtil.error("定时给服务器发送消息出错:" + ex.ToString());
} }
} }
HumitureController.QueryColdData(Config.Humiture_Colding_Port);
HumitureController.QueryWarmData(Config.Humiture_Warming_Port);
HumidityProcess(); HumidityProcess();
LedProcess(); LedProcess();
isInProcess = false; isInProcess = false;
...@@ -1210,21 +840,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -1210,21 +840,7 @@ namespace OnlineStore.DeviceLibrary
boxStatus.msg = WarnMsg; boxStatus.msg = WarnMsg;
lineOperation.msg = WarnMsg; lineOperation.msg = WarnMsg;
if (WarnMsg.Equals(""))
{
boxStatus.msg = CodeMsg;
lineOperation.msg = CodeMsg;
}
if (CodeMsg.Equals(""))
{
if (runStatus.Equals(StoreRunStatus.Runing) && IOManager.IOValue(IO_Type.TinCheck_Fixture).Equals(IO_VALUE.HIGH))
{
boxStatus.msg = "叉子料盘检测有料,请检查";
lineOperation.msg = "叉子料盘检测有料,请检查";
}
}
CodeMsg = "";
//WarnMsg = "";
//状态 //状态
boxStatus.status = (int)storeStatus; boxStatus.status = (int)storeStatus;
if (IsDebug) if (IsDebug)
...@@ -1360,7 +976,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -1360,7 +976,7 @@ namespace OnlineStore.DeviceLibrary
int storeId = int.Parse(posArray[0]); int storeId = int.Parse(posArray[0]);
//根据发送的posId获取位置列表 //根据发送的posId获取位置列表
VerticalStorePosition position = CSVPositionReader<VerticalStorePosition>.GetPositon(posId); VerticalPosition position = CSVPositionReader<VerticalPosition>.GetPositon(posId);
if (position == null) if (position == null)
{ {
//出入库没有找到服务器发送的库位,需要打印日志方便查询原因 //出入库没有找到服务器发送的库位,需要打印日志方便查询原因
...@@ -1371,20 +987,20 @@ namespace OnlineStore.DeviceLibrary ...@@ -1371,20 +987,20 @@ namespace OnlineStore.DeviceLibrary
else else
{ {
InOutParam currInOutFixture = new InOutParam(MoveType.OutStore, posId, "", plateW, plateH); InOutParam currInOutFixture = new InOutParam(MoveType.OutStore, posId, "", plateW, plateH);
if (CanStarInOut()) //if (CanStarInOut())
{ //{
bool result = StartOutStore(currInOutFixture); // bool result = StartOutStore(currInOutFixture);
if (!result) // if (!result)
{ // {
LogUtil.info(Name + " 执行出库【" + currInOutFixture.ToStr() + "】失败,加入等待队列"); // LogUtil.info(Name + " 执行出库【" + currInOutFixture.ToStr() + "】失败,加入等待队列");
AddWaitMoveParam(currInOutFixture); // AddWaitMoveParam(currInOutFixture);
} // }
} //}
else //else
{ //{
LogUtil.error("执行出库【" + currInOutFixture.ToStr() + "】失败,当前在忙碌中,加入等待队列"); // LogUtil.error("执行出库【" + currInOutFixture.ToStr() + "】失败,当前在忙碌中,加入等待队列");
AddWaitMoveParam(currInOutFixture); // AddWaitMoveParam(currInOutFixture);
} //}
} }
} }
...@@ -1416,7 +1032,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -1416,7 +1032,7 @@ namespace OnlineStore.DeviceLibrary
int storeId = int.Parse(posArray[0]); int storeId = int.Parse(posArray[0]);
//根据发送的posId获取位置列表 //根据发送的posId获取位置列表
VerticalStorePosition position = CSVPositionReader<VerticalStorePosition>.GetPositon(posId); VerticalPosition position = CSVPositionReader<VerticalPosition>.GetPositon(posId);
if (position == null) if (position == null)
{ {
//出入库没有找到服务器发送的库位,需要打印日志方便查询原因 //出入库没有找到服务器发送的库位,需要打印日志方便查询原因
...@@ -1427,7 +1043,6 @@ namespace OnlineStore.DeviceLibrary ...@@ -1427,7 +1043,6 @@ namespace OnlineStore.DeviceLibrary
//TODO:判断BOX是否处于可以入库状态,如果调试或急停中,需要返回给服务器; //TODO:判断BOX是否处于可以入库状态,如果调试或急停中,需要返回给服务器;
if (CanStarInOut()) if (CanStarInOut())
{ {
IsScanCode = false;
InOutParam param = new InOutParam(MoveType.InStore, posId, message, plateH, plateW); InOutParam param = new InOutParam(MoveType.InStore, posId, message, plateH, plateW);
StartInStore(param); StartInStore(param);
...@@ -1437,7 +1052,6 @@ namespace OnlineStore.DeviceLibrary ...@@ -1437,7 +1052,6 @@ namespace OnlineStore.DeviceLibrary
else else
{ {
LogUtil.info(Name + " 收到服务器入库命令:库位号【" + posId + "】二维码【" + message + "】 正在忙碌中,无法入库!"); LogUtil.info(Name + " 收到服务器入库命令:库位号【" + posId + "】二维码【" + message + "】 正在忙碌中,无法入库!");
IsScanCode = false;
} }
} }
......
...@@ -140,11 +140,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -140,11 +140,7 @@ namespace OnlineStore.DeviceLibrary
LogUtil.error(Name + " 启动 " + param.LogName + "失败,找不到库位信息"); LogUtil.error(Name + " 启动 " + param.LogName + "失败,找不到库位信息");
return false; return false;
} }
if (IOManager.IOValue(IO_Type.TinCheck_Fixture).Equals(IO_VALUE.HIGH))
{
LogUtil.error(Name + " 启动 " + param.LogName + "失败,叉子料盘检测有料");
return false;
}
LogUtil.info(Name + " 启动 " + param.LogName ); LogUtil.info(Name + " 启动 " + param.LogName );
moveWatch.Restart(); moveWatch.Restart();
runStatus = StoreRunStatus.Busy; runStatus = StoreRunStatus.Busy;
...@@ -170,211 +166,201 @@ namespace OnlineStore.DeviceLibrary ...@@ -170,211 +166,201 @@ namespace OnlineStore.DeviceLibrary
protected override void InStoreProcess() protected override void InStoreProcess()
{ {
StoreMoveP moveP = MoveInfo.MoveParam.MoveP; //StoreMoveP moveP = MoveInfo.MoveParam.MoveP;
if (MoveInfo.IsInWait) //if (MoveInfo.IsInWait)
{ //{
CheckWait(); // CheckWait();
} //}
if (MoveInfo.IsInWait) //if (MoveInfo.IsInWait)
{ //{
return; // return;
} //}
if (MoveInfo.IsStep(StoreMoveStep.SI_01_TrayCheck)) //if (MoveInfo.IsStep(StoreMoveStep.SI_01_TrayCheck))
{ //{
SI_02_InOutToP1(moveP); // SI_02_InOutToP1(moveP);
} //}
else if (MoveInfo.IsStep(StoreMoveStep.SI_02_InOutToP1)) //else if (MoveInfo.IsStep(StoreMoveStep.SI_02_InOutToP1))
{ //{
MoveInfo.NextMoveStep(StoreMoveStep.SI_03_Clamping_Relax); // MoveInfo.NextMoveStep(StoreMoveStep.SI_03_Clamping_Relax);
InStoreLog(" 夹爪放松"); // InStoreLog(" 夹爪放松");
CylinderMove(MoveInfo, IO_Type.Clamping_Tighten, IO_Type.Clamping_Relax); // CylinderMove(MoveInfo, IO_Type.Clamping_Tighten, IO_Type.Clamping_Relax);
} //}
else if (MoveInfo.IsStep(StoreMoveStep.SI_03_Clamping_Relax)) //else if (MoveInfo.IsStep(StoreMoveStep.SI_03_Clamping_Relax))
{ //{
MoveInfo.NextMoveStep(StoreMoveStep.SI_04_AxisToP1); // MoveInfo.NextMoveStep(StoreMoveStep.SI_04_AxisToP1);
InStoreLog(" 轴2、轴1 动作到P1 "); // InStoreLog(" 轴2、轴1 动作到P1 ");
ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P1, Config.UpDownAxis_P1_Speed); // ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P1, Config.UpDownAxis_P1_Speed);
ACAxisMove(Config.Middle_Axis, moveP.Middle_P1, Config.MiddleAxis_P1_Speed); // ACAxisMove(Config.Middle_Axis, moveP.Middle_P1, Config.MiddleAxis_P1_Speed);
} //}
else if (MoveInfo.IsStep(StoreMoveStep.SI_04_AxisToP1)) //else if (MoveInfo.IsStep(StoreMoveStep.SI_04_AxisToP1))
{ //{
SI_05_InoutToP2(); // SI_05_InoutToP2();
} //}
else if (MoveInfo.IsStep(StoreMoveStep.SI_05_InoutToP2)) //else if (MoveInfo.IsStep(StoreMoveStep.SI_05_InoutToP2))
{ //{
NeedCheckSafetyLight = 0; // NeedCheckSafetyLight = 0;
MoveInfo.NextMoveStep(StoreMoveStep.SI_06_Clamping_Work); // MoveInfo.NextMoveStep(StoreMoveStep.SI_06_Clamping_Work);
InStoreLog("夹爪夹紧 "); // InStoreLog("夹爪夹紧 ");
CylinderMove(MoveInfo, IO_Type.Clamping_Relax, IO_Type.Clamping_Tighten); // CylinderMove(MoveInfo, IO_Type.Clamping_Relax, IO_Type.Clamping_Tighten);
} //}
else if (MoveInfo.IsStep(StoreMoveStep.SI_06_Clamping_Work)) //else if (MoveInfo.IsStep(StoreMoveStep.SI_06_Clamping_Work))
{ //{
MoveInfo.NextMoveStep(StoreMoveStep.SI_07_UpdownToP7); // MoveInfo.NextMoveStep(StoreMoveStep.SI_07_UpdownToP7);
InStoreLog("升降轴到P7 "); // InStoreLog("升降轴到P7 ");
ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P7, Config.UpDownAxis_P7_Speed); // ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P7, Config.UpDownAxis_P7_Speed);
} //}
else if (MoveInfo.IsStep(StoreMoveStep.SI_07_UpdownToP7)) //else if (MoveInfo.IsStep(StoreMoveStep.SI_07_UpdownToP7))
{ //{
MoveInfo.NextMoveStep(StoreMoveStep.SI_08_InOutToP1); // MoveInfo.NextMoveStep(StoreMoveStep.SI_08_InOutToP1);
InOutBackToP1(moveP.InOut_P1); // InOutBackToP1(moveP.InOut_P1);
ConfigMoveAxis axis = GetPosTAxis(); // ConfigMoveAxis axis = GetPosTAxis();
InStoreLog("进出轴返回待机点P1, " + axis.ProName + "停止匀速运动 "); // InStoreLog("进出轴返回待机点P1, " + axis.ProName + "停止匀速运动 ");
AxisSuddenStop(axis); // AxisSuddenStop(axis);
} //}
else if (MoveInfo.IsStep(StoreMoveStep.SI_08_InOutToP1)) //else if (MoveInfo.IsStep(StoreMoveStep.SI_08_InOutToP1))
{ //{
ConfigMoveAxis axis = GetPosTAxis(); // ConfigMoveAxis axis = GetPosTAxis();
MoveInfo.NextMoveStep(StoreMoveStep.SI_09_MoveToBag); // MoveInfo.NextMoveStep(StoreMoveStep.SI_09_MoveToBag);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000)); // MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
InStoreLog("移动到库位点,旋转轴 至P2( 库位点)升降轴至P3(库位入库前点)关闭仓门 " + axis.ProName + "开始原点返回"); // InStoreLog("移动到库位点,旋转轴 至P2( 库位点)升降轴至P3(库位入库前点)关闭仓门 " + axis.ProName + "开始原点返回");
ACAxisMove(Config.Middle_Axis, moveP.Middle_P2, Config.MiddleAxis_P2_Speed); // ACAxisMove(Config.Middle_Axis, moveP.Middle_P2, Config.MiddleAxis_P2_Speed);
ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P3, Config.UpDownAxis_P3_Speed); // ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P3, Config.UpDownAxis_P3_Speed);
CylinderMove(null, IO_Type.Door_Up, IO_Type.Door_Down); // CylinderMove(null, IO_Type.Door_Up, IO_Type.Door_Down);
ACAxisHomeMove(axis); // ACAxisHomeMove(axis);
} //}
else if (MoveInfo.IsStep(StoreMoveStep.SI_09_MoveToBag)) //else if (MoveInfo.IsStep(StoreMoveStep.SI_09_MoveToBag))
{ //{
MoveInfo.NextMoveStep(StoreMoveStep.SI_10_TargetAxisToP2); // MoveInfo.NextMoveStep(StoreMoveStep.SI_10_TargetAxisToP2);
if (MoveInfo.MoveParam.Position.PosType.Equals(1)) // if (MoveInfo.MoveParam.Position.PosType.Equals(1))
{ // {
InStoreLog("冷藏旋转轴到P2 "); // InStoreLog("冷藏旋转轴到P2 ");
ACAxisMove(Config.Colding_Axis, moveP.Cold_P2, Config.ColdingAxis_P2_Speed); // ACAxisMove(Config.Colding_Axis, moveP.Cold_P2, Config.ColdingAxis_P2_Speed);
} // }
else // else
{ // {
InStoreLog("回温旋转轴到P2 "); // InStoreLog("回温旋转轴到P2 ");
ACAxisMove(Config.Warming_Axis, moveP.Warm_P2, Config.WarmingAxis_P2_Speed); // ACAxisMove(Config.Warming_Axis, moveP.Warm_P2, Config.WarmingAxis_P2_Speed);
} // }
} //}
else if (MoveInfo.IsStep(StoreMoveStep.SI_10_TargetAxisToP2)) //else if (MoveInfo.IsStep(StoreMoveStep.SI_10_TargetAxisToP2))
{ //{
if (MoveInfo.MoveParam.Position.PosType.Equals(1)) // if (MoveInfo.MoveParam.Position.PosType.Equals(1))
{ // {
MoveInfo.NextMoveStep(StoreMoveStep.SI_11_OpenColddoor); // MoveInfo.NextMoveStep(StoreMoveStep.SI_11_OpenColddoor);
InStoreLog("打开冷藏门,关闭仓门 "); // InStoreLog("打开冷藏门,关闭仓门 ");
CylinderMove(MoveInfo, IO_Type.Door_Up, IO_Type.Door_Down); // CylinderMove(MoveInfo, IO_Type.Door_Up, IO_Type.Door_Down);
CylinderMove(MoveInfo, IO_Type.ColdDoor_Close, IO_Type.ColdDoor_Open); // CylinderMove(MoveInfo, IO_Type.ColdDoor_Close, IO_Type.ColdDoor_Open);
} // }
else // else
{ // {
MoveInfo.NextMoveStep(StoreMoveStep.SI_12_InoutToP3); // MoveInfo.NextMoveStep(StoreMoveStep.SI_12_InoutToP3);
InStoreLog("进出轴到P3 "); // InStoreLog("进出轴到P3 ");
ACAxisMove(Config.InOut_Axis, moveP.InOut_P3, Config.InOutAxis_P3_Speed); // ACAxisMove(Config.InOut_Axis, moveP.InOut_P3, Config.InOutAxis_P3_Speed);
} // }
} //}
else if (MoveInfo.IsStep(StoreMoveStep.SI_11_OpenColddoor)) //else if (MoveInfo.IsStep(StoreMoveStep.SI_11_OpenColddoor))
{ //{
MoveInfo.NextMoveStep(StoreMoveStep.SI_12_InoutToP3); // MoveInfo.NextMoveStep(StoreMoveStep.SI_12_InoutToP3);
InStoreLog("进出轴到P3 "); // InStoreLog("进出轴到P3 ");
ACAxisMove(Config.InOut_Axis, moveP.InOut_P3, Config.InOutAxis_P3_Speed); // ACAxisMove(Config.InOut_Axis, moveP.InOut_P3, Config.InOutAxis_P3_Speed);
} //}
else if (MoveInfo.IsStep(StoreMoveStep.SI_12_InoutToP3)) //else if (MoveInfo.IsStep(StoreMoveStep.SI_12_InoutToP3))
{ //{
MoveInfo.NextMoveStep(StoreMoveStep.SI_13_UpdownToP4); // MoveInfo.NextMoveStep(StoreMoveStep.SI_13_UpdownToP4);
InStoreLog("升降轴到入料缓冲点P4 "); // InStoreLog("升降轴到入料缓冲点P4 ");
ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P4, Config.UpDownAxis_P4_Speed); // ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P4, Config.UpDownAxis_P4_Speed);
} //}
else if (MoveInfo.IsStep(StoreMoveStep.SI_13_UpdownToP4)) //else if (MoveInfo.IsStep(StoreMoveStep.SI_13_UpdownToP4))
{ //{
MoveInfo.NextMoveStep(StoreMoveStep.SI_14_Clamping_Relax); // MoveInfo.NextMoveStep(StoreMoveStep.SI_14_Clamping_Relax);
InStoreLog(" 夹爪放松"); // InStoreLog(" 夹爪放松");
CylinderMove(MoveInfo, IO_Type.Clamping_Tighten, IO_Type.Clamping_Relax); // CylinderMove(MoveInfo, IO_Type.Clamping_Tighten, IO_Type.Clamping_Relax);
} //}
else if (MoveInfo.IsStep(StoreMoveStep.SI_14_Clamping_Relax)) //else if (MoveInfo.IsStep(StoreMoveStep.SI_14_Clamping_Relax))
{ //{
// 5= 入仓位完成(料仓Box把料盘放入对应的库位中,装置还未恢复原始状态) // // 5= 入仓位完成(料仓Box把料盘放入对应的库位中,装置还未恢复原始状态)
UpdateLastStatus(StoreStatus.InStoreEnd); // UpdateLastStatus(StoreStatus.InStoreEnd);
MoveInfo.NextMoveStep(StoreMoveStep.SI_15_InOutToP1); // MoveInfo.NextMoveStep(StoreMoveStep.SI_15_InOutToP1);
InStoreLog(" 进出轴返回待机点P1"); // InStoreLog(" 进出轴返回待机点P1");
InOutBackToP1(moveP.InOut_P1); // InOutBackToP1(moveP.InOut_P1);
} //}
else if (MoveInfo.IsStep(StoreMoveStep.SI_15_InOutToP1)) //else if (MoveInfo.IsStep(StoreMoveStep.SI_15_InOutToP1))
{ //{
if (MoveInfo.MoveParam.Position.PosType.Equals(1)) // if (MoveInfo.MoveParam.Position.PosType.Equals(1))
{ // {
MoveInfo.NextMoveStep(StoreMoveStep.SI_16_CloseColddoor); // MoveInfo.NextMoveStep(StoreMoveStep.SI_16_CloseColddoor);
InStoreLog(" 关闭冷藏区门"); // InStoreLog(" 关闭冷藏区门");
CylinderMove(MoveInfo, IO_Type.ColdDoor_Open, IO_Type.ColdDoor_Close); // CylinderMove(MoveInfo, IO_Type.ColdDoor_Open, IO_Type.ColdDoor_Close);
} // }
else // else
{ // {
SI_17_GoBack(); // SI_17_GoBack();
} // }
} //}
else if (MoveInfo.IsStep(StoreMoveStep.SI_16_CloseColddoor)) //else if (MoveInfo.IsStep(StoreMoveStep.SI_16_CloseColddoor))
{ //{
SI_17_GoBack(); // SI_17_GoBack();
} //}
else if (MoveInfo.IsStep(StoreMoveStep.SI_17_GoBack)) //else if (MoveInfo.IsStep(StoreMoveStep.SI_17_GoBack))
{ //{
TimeSpan span = moveWatch.Elapsed; // TimeSpan span = moveWatch.Elapsed;
moveWatch.Stop(); // moveWatch.Stop();
LogUtil.info(Name + " 【" + MoveInfo.MoveParam.LogName + "】 结束,开始旋转,耗时【" + FormUtil.GetSpanStr(span) + "】!"); // LogUtil.info(Name + " 【" + MoveInfo.MoveParam.LogName + "】 结束,开始旋转,耗时【" + FormUtil.GetSpanStr(span) + "】!");
MoveInfo.EndMove(); // MoveInfo.EndMove();
runStatus = StoreRunStatus.Runing; // runStatus = StoreRunStatus.Runing;
//设备连接,入库后,BOX恢复原始状态 // //设备连接,入库后,BOX恢复原始状态
storeStatus = StoreStatus.StoreOnline; // storeStatus = StoreStatus.StoreOnline;
InOutEndProcess(MoveType.InStore); // InOutEndProcess(MoveType.InStore);
} //}
else //else
{ //{
LogUtil.info(Name + " 入库,moveStatus=" + MoveInfo.MoveStep + ",没有对应的处理!"); // LogUtil.info(Name + " 入库,moveStatus=" + MoveInfo.MoveStep + ",没有对应的处理!");
} //}
} }
private void SI_02_InOutToP1(StoreMoveP moveP) private void SI_02_InOutToP1(StoreMoveP moveP)
{ {
MoveInfo.NextMoveStep(StoreMoveStep.SI_02_InOutToP1); //MoveInfo.NextMoveStep(StoreMoveStep.SI_02_InOutToP1);
InStoreLog(" 进出轴到P1,打开舱门"); //InStoreLog(" 进出轴到P1,打开舱门");
CylinderMove(MoveInfo, IO_Type.Door_Down, IO_Type.Door_Up); //CylinderMove(MoveInfo, IO_Type.Door_Down, IO_Type.Door_Up);
InOutBackToP1(moveP.InOut_P1); //InOutBackToP1(moveP.InOut_P1);
} }
private void SI_05_InoutToP2() private void SI_05_InoutToP2()
{ {
MoveInfo.NextMoveStep(StoreMoveStep.SI_05_InoutToP2); //MoveInfo.NextMoveStep(StoreMoveStep.SI_05_InoutToP2);
InStoreLog("进出轴到P2"); //InStoreLog("进出轴到P2");
ACAxisMove(Config.InOut_Axis, MoveInfo.MoveParam.MoveP.InOut_P2, Config.InOutAxis_P2_Speed); //ACAxisMove(Config.InOut_Axis, MoveInfo.MoveParam.MoveP.InOut_P2, Config.InOutAxis_P2_Speed);
NeedCheckSafetyLight = 1; //NeedCheckSafetyLight = 1;
}
private ConfigMoveAxis GetPosTAxis()
{
if (MoveInfo.MoveParam.Position.PosType.Equals(1))
{
return Config.Colding_Axis;
}
else
{
return Config.Warming_Axis;
}
} }
private void SI_17_GoBack() private void SI_17_GoBack()
{ {
MoveInfo.NextMoveStep(StoreMoveStep.SI_17_GoBack); //MoveInfo.NextMoveStep(StoreMoveStep.SI_17_GoBack);
ConfigMoveAxis axis = GetPosTAxis(); //ConfigMoveAxis axis = GetPosTAxis();
InStoreLog(" 升降轴,旋转轴返回P1," + axis.ProName + "开始匀速运转"); //InStoreLog(" 升降轴,旋转轴返回P1," + axis.ProName + "开始匀速运转");
ACAxisMove(Config.Middle_Axis, MoveInfo.MoveParam.MoveP.Middle_P1, Config.MiddleAxis_P1_Speed); //ACAxisMove(Config.Middle_Axis, MoveInfo.MoveParam.MoveP.Middle_P1, Config.MiddleAxis_P1_Speed);
ACAxisMove(Config.UpDown_Axis, MoveInfo.MoveParam.MoveP.UpDown_P1, Config.UpDownAxis_P1_Speed); //ACAxisMove(Config.UpDown_Axis, MoveInfo.MoveParam.MoveP.UpDown_P1, Config.UpDownAxis_P1_Speed);
StartWork(MoveInfo.MoveParam.Position.PosType); //StartWork(MoveInfo.MoveParam.Position.PosType);
} }
private void InOutBackToP1(int InOut_P1) private void InOutBackToP1(int InOut_P1)
{ {
//判断是否在P1,如果是,不需要运行 ////判断是否在P1,如果是,不需要运行
int outCount = ACServerManager.GetActualtPosition(Config.InOut_Axis.DeviceName, Config.InOut_Axis.GetAxisValue()); //int outCount = ACServerManager.GetActualtPosition(Config.InOut_Axis.DeviceName, Config.InOut_Axis.GetAxisValue());
int errorCount = Math.Abs(outCount - InOut_P1); //int errorCount = Math.Abs(outCount - InOut_P1);
if (errorCount <= Config.InOut_Axis.CanErrorCountMin) //if (errorCount <= Config.InOut_Axis.CanErrorCountMin)
{ //{
LogUtil.info("进出轴当前位置:" + outCount + ",已经在P1,不需要再回P1"); // LogUtil.info("进出轴当前位置:" + outCount + ",已经在P1,不需要再回P1");
} //}
else //else
{ //{
ACAxisMove(Config.InOut_Axis, InOut_P1, Config.InOutAxis_P1_Speed); // ACAxisMove(Config.InOut_Axis, InOut_P1, Config.InOutAxis_P1_Speed);
} //}
//StoreMove.WaitList.Add(WaitResultInfo.WaitAxisOrg(Config.InOut_Axis,IO_VALUE.HIGH)); //StoreMove.WaitList.Add(WaitResultInfo.WaitAxisOrg(Config.InOut_Axis,IO_VALUE.HIGH));
} }
#endregion #endregion
...@@ -384,38 +370,38 @@ namespace OnlineStore.DeviceLibrary ...@@ -384,38 +370,38 @@ namespace OnlineStore.DeviceLibrary
public override bool StartOutStore(InOutParam param) public override bool StartOutStore(InOutParam param)
{ {
param.paramType = MoveType.OutStore; //param.paramType = MoveType.OutStore;
if (runStatus.Equals(StoreRunStatus.Runing) && MoveInfo.MoveType.Equals(MoveType.None)) //if (runStatus.Equals(StoreRunStatus.Runing) && MoveInfo.MoveType.Equals(MoveType.None))
{ //{
if (!param.LoadParam(Config)) // if (!param.LoadParam(Config))
{ // {
LogUtil.error(Name + " 启动 " + param.LogName + "失败,找不到库位"); // LogUtil.error(Name + " 启动 " + param.LogName + "失败,找不到库位");
// return false;
// }
// if (IOManager.IOValue(IO_Type.TinCheck_Fixture).Equals(IO_VALUE.HIGH))
// {
// LogUtil.error(Name + " 启动 " + param.LogName + "失败,叉子料盘检测有料");
// return false;
// }
// moveWatch.Restart();
// LogUtil.info(Name + "启动 " + param.LogName + " ");
// runStatus = StoreRunStatus.Busy;
// storeStatus = StoreStatus.OutStoreExecute;
// MoveInfo.NewMove(MoveType.OutStore, param);
// MoveInfo.NextMoveStep(StoreMoveStep.SO_01_InoutToP1);
// ConfigMoveAxis axis = GetPosTAxis();
// OutStoreLog(" 叉子先运动到P1 ," + axis.ProName + "停止匀速运动");
// InOutBackToP1(MoveInfo.MoveParam.MoveP.InOut_P1);
// AxisSuddenStop(axis);
// return true;
//}
//else
//{
// LogUtil.error(Name + " 启动 " + param.LogName + "出错,当前状态:[" + runStatus + "],[" + MoveInfo.MoveType + "]");
return false; return false;
} //}
if (IOManager.IOValue(IO_Type.TinCheck_Fixture).Equals(IO_VALUE.HIGH))
{
LogUtil.error(Name + " 启动 " + param.LogName + "失败,叉子料盘检测有料");
return false;
}
moveWatch.Restart();
LogUtil.info(Name + "启动 " + param.LogName + " ");
runStatus = StoreRunStatus.Busy;
storeStatus = StoreStatus.OutStoreExecute;
MoveInfo.NewMove(MoveType.OutStore, param);
MoveInfo.NextMoveStep(StoreMoveStep.SO_01_InoutToP1);
ConfigMoveAxis axis = GetPosTAxis();
OutStoreLog(" 叉子先运动到P1 ," + axis.ProName + "停止匀速运动");
InOutBackToP1(MoveInfo.MoveParam.MoveP.InOut_P1);
AxisSuddenStop(axis);
return true;
}
else
{
LogUtil.error(Name + " 启动 " + param.LogName + "出错,当前状态:[" + runStatus + "],[" + MoveInfo.MoveType + "]");
return false;
}
} }
protected override void OutStoreProcess() protected override void OutStoreProcess()
...@@ -429,189 +415,189 @@ namespace OnlineStore.DeviceLibrary ...@@ -429,189 +415,189 @@ namespace OnlineStore.DeviceLibrary
{ {
return; return;
} }
if (MoveInfo.MoveStep .Equals( StoreMoveStep.SO_01_InoutToP1)) //if (MoveInfo.MoveStep .Equals( StoreMoveStep.SO_01_InoutToP1))
{ //{
MoveInfo.NextMoveStep(StoreMoveStep.SO_02_AxisHome); // MoveInfo.NextMoveStep(StoreMoveStep.SO_02_AxisHome);
ConfigMoveAxis axis = GetPosTAxis(); // ConfigMoveAxis axis = GetPosTAxis();
OutStoreLog(" " + axis.ProName + "开始原点返回"); // OutStoreLog(" " + axis.ProName + "开始原点返回");
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000)); // MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
ACAxisHomeMove(axis); // ACAxisHomeMove(axis);
} //}
else if (MoveInfo.IsStep(StoreMoveStep.SO_02_AxisHome)) //else if (MoveInfo.IsStep(StoreMoveStep.SO_02_AxisHome))
{ //{
MoveInfo.NextMoveStep(StoreMoveStep.SO_03_ToBag); // MoveInfo.NextMoveStep(StoreMoveStep.SO_03_ToBag);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000)); // MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
ConfigMoveAxis axis = GetPosTAxis(); // ConfigMoveAxis axis = GetPosTAxis();
OutStoreLog(" 旋转轴至P2(库位点),升降轴至P5(库位出库前点)," + axis.ProName + "到P2"); // OutStoreLog(" 旋转轴至P2(库位点),升降轴至P5(库位出库前点)," + axis.ProName + "到P2");
ACAxisMove(Config.Middle_Axis, MoveInfo.MoveParam.MoveP.Middle_P2, Config.MiddleAxis_P2_Speed); // ACAxisMove(Config.Middle_Axis, MoveInfo.MoveParam.MoveP.Middle_P2, Config.MiddleAxis_P2_Speed);
ACAxisMove(Config.UpDown_Axis, MoveInfo.MoveParam.MoveP.UpDown_P5, Config.UpDownAxis_P5_Speed); // ACAxisMove(Config.UpDown_Axis, MoveInfo.MoveParam.MoveP.UpDown_P5, Config.UpDownAxis_P5_Speed);
if (MoveInfo.MoveParam.Position.PosType.Equals(1)) // if (MoveInfo.MoveParam.Position.PosType.Equals(1))
{ // {
ACAxisMove(Config.Colding_Axis, moveP.Cold_P2, Config.ColdingAxis_P2_Speed); // ACAxisMove(Config.Colding_Axis, moveP.Cold_P2, Config.ColdingAxis_P2_Speed);
} // }
else // else
{ // {
ACAxisMove(Config.Warming_Axis, moveP.Warm_P2, Config.WarmingAxis_P2_Speed); // ACAxisMove(Config.Warming_Axis, moveP.Warm_P2, Config.WarmingAxis_P2_Speed);
} // }
} //}
else if (MoveInfo.IsStep(StoreMoveStep.SO_03_ToBag)) //else if (MoveInfo.IsStep(StoreMoveStep.SO_03_ToBag))
{ //{
if (MoveInfo.MoveParam.Position.PosType.Equals(1)) // if (MoveInfo.MoveParam.Position.PosType.Equals(1))
{ // {
MoveInfo.NextMoveStep(StoreMoveStep.SO_04_OpenCold); // MoveInfo.NextMoveStep(StoreMoveStep.SO_04_OpenCold);
OutStoreLog("打开冷藏区门 "); // OutStoreLog("打开冷藏区门 ");
CylinderMove(MoveInfo, IO_Type.ColdDoor_Close, IO_Type.ColdDoor_Open); // CylinderMove(MoveInfo, IO_Type.ColdDoor_Close, IO_Type.ColdDoor_Open);
} // }
else // else
{ // {
MoveInfo.NextMoveStep(StoreMoveStep.SO_05_InoutToP3); // MoveInfo.NextMoveStep(StoreMoveStep.SO_05_InoutToP3);
OutStoreLog(" 进出轴至P3(库位取放料点) "); // OutStoreLog(" 进出轴至P3(库位取放料点) ");
ACAxisMove(Config.InOut_Axis, moveP.InOut_P3, Config.InOutAxis_P3_Speed); // ACAxisMove(Config.InOut_Axis, moveP.InOut_P3, Config.InOutAxis_P3_Speed);
} // }
} //}
else if (MoveInfo.IsStep(StoreMoveStep.SO_04_OpenCold)) //else if (MoveInfo.IsStep(StoreMoveStep.SO_04_OpenCold))
{ //{
MoveInfo.NextMoveStep(StoreMoveStep.SO_05_InoutToP3); // MoveInfo.NextMoveStep(StoreMoveStep.SO_05_InoutToP3);
OutStoreLog(" 进出轴至P3(库位取放料点) "); // OutStoreLog(" 进出轴至P3(库位取放料点) ");
ACAxisMove(Config.InOut_Axis, moveP.InOut_P3, Config.InOutAxis_P3_Speed); // ACAxisMove(Config.InOut_Axis, moveP.InOut_P3, Config.InOutAxis_P3_Speed);
} //}
else if (MoveInfo.IsStep(StoreMoveStep.SO_05_InoutToP3)) //else if (MoveInfo.IsStep(StoreMoveStep.SO_05_InoutToP3))
{ //{
MoveInfo.NextMoveStep(StoreMoveStep.SO_06_Clamping_Work); // MoveInfo.NextMoveStep(StoreMoveStep.SO_06_Clamping_Work);
OutStoreLog("夹爪夹紧 "); // OutStoreLog("夹爪夹紧 ");
CylinderMove(MoveInfo, IO_Type.Clamping_Relax, IO_Type.Clamping_Tighten); // CylinderMove(MoveInfo, IO_Type.Clamping_Relax, IO_Type.Clamping_Tighten);
} //}
else if (MoveInfo.IsStep(StoreMoveStep.SO_06_Clamping_Work)) //else if (MoveInfo.IsStep(StoreMoveStep.SO_06_Clamping_Work))
{ //{
MoveInfo.NextMoveStep(StoreMoveStep.SO_07_UpdownToP6); // MoveInfo.NextMoveStep(StoreMoveStep.SO_07_UpdownToP6);
OutStoreLog(" 升降轴至P6(库位出料缓冲点) "); // OutStoreLog(" 升降轴至P6(库位出料缓冲点) ");
ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P6, Config.UpDownAxis_P6_Speed); // ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P6, Config.UpDownAxis_P6_Speed);
} //}
else if (MoveInfo.IsStep(StoreMoveStep.SO_07_UpdownToP6)) //else if (MoveInfo.IsStep(StoreMoveStep.SO_07_UpdownToP6))
{ //{
MoveInfo.NextMoveStep(StoreMoveStep.SO_08_InoutToP1); // MoveInfo.NextMoveStep(StoreMoveStep.SO_08_InoutToP1);
OutStoreLog(" 进出轴至P1(待机点) "); // OutStoreLog(" 进出轴至P1(待机点) ");
InOutBackToP1(moveP.InOut_P1); // InOutBackToP1(moveP.InOut_P1);
//把库位的物品放到取到叉子上之后是出仓完成 // //把库位的物品放到取到叉子上之后是出仓完成
UpdateLastStatus(StoreStatus.OutStoreBoxEnd); // UpdateLastStatus(StoreStatus.OutStoreBoxEnd);
} //}
else if (MoveInfo.IsStep(StoreMoveStep.SO_08_InoutToP1)) //else if (MoveInfo.IsStep(StoreMoveStep.SO_08_InoutToP1))
{ //{
if (IOManager.IOValue(IO_Type.TinCheck_Fixture).Equals(IO_VALUE.LOW)) // if (IOManager.IOValue(IO_Type.TinCheck_Fixture).Equals(IO_VALUE.LOW))
{ // {
CodeMsg = MoveInfo.MoveParam.LogName + " 叉子从库位退出后,未检测到料盘有料"; // CodeMsg = MoveInfo.MoveParam.LogName + " 叉子从库位退出后,未检测到料盘有料";
LogUtil.error(CodeMsg); // LogUtil.error(CodeMsg);
} // }
if (MoveInfo.MoveParam.Position.PosType.Equals(1)) // if (MoveInfo.MoveParam.Position.PosType.Equals(1))
{ // {
MoveInfo.NextMoveStep(StoreMoveStep.SO_09_CloseCold); // MoveInfo.NextMoveStep(StoreMoveStep.SO_09_CloseCold);
OutStoreLog("关闭冷藏区门 "); // OutStoreLog("关闭冷藏区门 ");
CylinderMove(MoveInfo, IO_Type.ColdDoor_Open, IO_Type.ColdDoor_Close); // CylinderMove(MoveInfo, IO_Type.ColdDoor_Open, IO_Type.ColdDoor_Close);
} // }
else // else
{ // {
MoveInfo.NextMoveStep(StoreMoveStep.SO_10_ToDoorPosition); // MoveInfo.NextMoveStep(StoreMoveStep.SO_10_ToDoorPosition);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000)); // MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
OutStoreLog("旋转轴至P1(待机点)升降轴至P2(进料口出料前点),"); // OutStoreLog("旋转轴至P1(待机点)升降轴至P2(进料口出料前点),");
ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P2, Config.UpDownAxis_P2_Speed); // ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P2, Config.UpDownAxis_P2_Speed);
ACAxisMove(Config.Middle_Axis, moveP.Middle_P1, Config.MiddleAxis_P1_Speed); // ACAxisMove(Config.Middle_Axis, moveP.Middle_P1, Config.MiddleAxis_P1_Speed);
} // }
} //}
else if (MoveInfo.IsStep(StoreMoveStep.SO_09_CloseCold)) //else if (MoveInfo.IsStep(StoreMoveStep.SO_09_CloseCold))
{ //{
MoveInfo.NextMoveStep(StoreMoveStep.SO_10_ToDoorPosition); // MoveInfo.NextMoveStep(StoreMoveStep.SO_10_ToDoorPosition);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000)); // MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
OutStoreLog("旋转轴至P1(待机点)升降轴至P2(进料口出料前点),"); // OutStoreLog("旋转轴至P1(待机点)升降轴至P2(进料口出料前点),");
ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P2, Config.UpDownAxis_P2_Speed); // ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P2, Config.UpDownAxis_P2_Speed);
ACAxisMove(Config.Middle_Axis, moveP.Middle_P1, Config.MiddleAxis_P1_Speed); // ACAxisMove(Config.Middle_Axis, moveP.Middle_P1, Config.MiddleAxis_P1_Speed);
} //}
else if (MoveInfo.IsStep(StoreMoveStep.SO_10_ToDoorPosition)) //else if (MoveInfo.IsStep(StoreMoveStep.SO_10_ToDoorPosition))
{ //{
MoveInfo.NextMoveStep(StoreMoveStep.SO_11_OpenDoor); // MoveInfo.NextMoveStep(StoreMoveStep.SO_11_OpenDoor);
ConfigMoveAxis axis = GetPosTAxis(); // ConfigMoveAxis axis = GetPosTAxis();
OutStoreLog("打开仓门 ," + axis.ProName + "开始匀速运转"); // OutStoreLog("打开仓门 ," + axis.ProName + "开始匀速运转");
CylinderMove(MoveInfo, IO_Type.Door_Down, IO_Type.Door_Up); // CylinderMove(MoveInfo, IO_Type.Door_Down, IO_Type.Door_Up);
StartWork(MoveInfo.MoveParam.Position.PosType); // StartWork(MoveInfo.MoveParam.Position.PosType);
} //}
else if (MoveInfo.IsStep(StoreMoveStep.SO_11_OpenDoor)) //else if (MoveInfo.IsStep(StoreMoveStep.SO_11_OpenDoor))
{ //{
MoveInfo.NextMoveStep(StoreMoveStep.SO_12_WaitNoTray); // MoveInfo.NextMoveStep(StoreMoveStep.SO_12_WaitNoTray);
OutStoreLog("等待仓门口无料盘 "); // OutStoreLog("等待仓门口无料盘 ");
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(MoveInfo.MoveParam.GetDoorTinCheck(), IO_VALUE.LOW)); // MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(MoveInfo.MoveParam.GetDoorTinCheck(), IO_VALUE.LOW));
} //}
else if (MoveInfo.IsStep(StoreMoveStep.SO_12_WaitNoTray)) //else if (MoveInfo.IsStep(StoreMoveStep.SO_12_WaitNoTray))
{ //{
SO_13_InoutToP2(); // SO_13_InoutToP2();
} //}
else if (MoveInfo.IsStep(StoreMoveStep.SO_13_InoutToP2)) //else if (MoveInfo.IsStep(StoreMoveStep.SO_13_InoutToP2))
{ //{
MoveInfo.NextMoveStep(StoreMoveStep.SO_14_UpdownToP8); // MoveInfo.NextMoveStep(StoreMoveStep.SO_14_UpdownToP8);
OutStoreLog("进出轴到出料缓冲点P8 "); // OutStoreLog("进出轴到出料缓冲点P8 ");
ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P8, Config.UpDownAxis_P8_Speed); // ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P8, Config.UpDownAxis_P8_Speed);
} //}
//此处需要等待移栽没有工作,才能把盘放入出料口 ////此处需要等待移栽没有工作,才能把盘放入出料口
else if (MoveInfo.IsStep(StoreMoveStep.SO_14_UpdownToP8)) //else if (MoveInfo.IsStep(StoreMoveStep.SO_14_UpdownToP8))
{ //{
NeedCheckSafetyLight = 0; // NeedCheckSafetyLight = 0;
MoveInfo.NextMoveStep(StoreMoveStep.SO_15_Clamping_Relax); // MoveInfo.NextMoveStep(StoreMoveStep.SO_15_Clamping_Relax);
OutStoreLog("夹爪放松 "); // OutStoreLog("夹爪放松 ");
CylinderMove(MoveInfo, IO_Type.Clamping_Tighten, IO_Type.Clamping_Relax); // CylinderMove(MoveInfo, IO_Type.Clamping_Tighten, IO_Type.Clamping_Relax);
} //}
else if (MoveInfo.IsStep(StoreMoveStep.SO_15_Clamping_Relax)) //else if (MoveInfo.IsStep(StoreMoveStep.SO_15_Clamping_Relax))
{ //{
MoveInfo.NextMoveStep(StoreMoveStep.SO_16_InoutToP1); // MoveInfo.NextMoveStep(StoreMoveStep.SO_16_InoutToP1);
OutStoreLog("进出轴动作至P1(待机点) "); // OutStoreLog("进出轴动作至P1(待机点) ");
InOutBackToP1(moveP.InOut_P1); // InOutBackToP1(moveP.InOut_P1);
} //}
else if (MoveInfo.IsStep(StoreMoveStep.SO_16_InoutToP1)) //else if (MoveInfo.IsStep(StoreMoveStep.SO_16_InoutToP1))
{ //{
MoveInfo.NextMoveStep(StoreMoveStep.SO_17_CloseDoor); // MoveInfo.NextMoveStep(StoreMoveStep.SO_17_CloseDoor);
OutStoreLog("关闭仓门 "); // OutStoreLog("关闭仓门 ");
CylinderMove(MoveInfo, IO_Type.Door_Up, IO_Type.Door_Down); // CylinderMove(MoveInfo, IO_Type.Door_Up, IO_Type.Door_Down);
} //}
else if (MoveInfo.IsStep(StoreMoveStep.SO_17_CloseDoor)) //else if (MoveInfo.IsStep(StoreMoveStep.SO_17_CloseDoor))
{ //{
MoveInfo.NextMoveStep(StoreMoveStep.SO_18_WaitTake); // MoveInfo.NextMoveStep(StoreMoveStep.SO_18_WaitTake);
int OutStoreWaitSeconds = ConfigAppSettings.GetIntValue(Setting_Init.OutStoreWaitSeconds); // int OutStoreWaitSeconds = ConfigAppSettings.GetIntValue(Setting_Init.OutStoreWaitSeconds);
if (OutStoreWaitSeconds <= 0) // if (OutStoreWaitSeconds <= 0)
{ // {
OutStoreWaitSeconds = 600; // OutStoreWaitSeconds = 600;
} // }
int ms = OutStoreWaitSeconds * 1000; // int ms = OutStoreWaitSeconds * 1000;
OutStoreLog(" 等待拿走物品,最多等待" + OutStoreWaitSeconds + "秒"); // OutStoreLog(" 等待拿走物品,最多等待" + OutStoreWaitSeconds + "秒");
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(ms)); // MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(ms));
MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(MoveInfo.MoveParam.GetDoorTinCheck(), IO_VALUE.LOW)); // MoveInfo.WaitList.Add(WaitResultInfo.WaitIO(MoveInfo.MoveParam.GetDoorTinCheck(), IO_VALUE.LOW));
MoveInfo.OneWaitCanEndStep = true; // MoveInfo.OneWaitCanEndStep = true;
} //}
else if (MoveInfo.IsStep(StoreMoveStep.SO_18_WaitTake)) //else if (MoveInfo.IsStep(StoreMoveStep.SO_18_WaitTake))
{ //{
TimeSpan span = moveWatch.Elapsed; // TimeSpan span = moveWatch.Elapsed;
moveWatch.Stop(); // moveWatch.Stop();
storeStatus = StoreStatus.StoreOnline; // storeStatus = StoreStatus.StoreOnline;
LogUtil.info(Name + " 【" + MoveInfo.MoveParam.LogName + "】 结束,耗时【" + FormUtil.GetSpanStr(span) + "】!"); // LogUtil.info(Name + " 【" + MoveInfo.MoveParam.LogName + "】 结束,耗时【" + FormUtil.GetSpanStr(span) + "】!");
MoveInfo.EndMove(); // MoveInfo.EndMove();
runStatus = StoreRunStatus.Runing; // runStatus = StoreRunStatus.Runing;
InOutEndProcess(MoveType.OutStore); // InOutEndProcess(MoveType.OutStore);
} //}
else //else
{ //{
LogUtil.error(Name + " 出库处理,moveStatus=" + MoveInfo.MoveStep + ",没有对应的处理!"); // LogUtil.error(Name + " 出库处理,moveStatus=" + MoveInfo.MoveStep + ",没有对应的处理!");
} //}
} }
private void SO_13_InoutToP2() private void SO_13_InoutToP2()
{ {
StoreMoveP moveP = MoveInfo.MoveParam.MoveP; //StoreMoveP moveP = MoveInfo.MoveParam.MoveP;
MoveInfo.NextMoveStep(StoreMoveStep.SO_13_InoutToP2); //MoveInfo.NextMoveStep(StoreMoveStep.SO_13_InoutToP2);
OutStoreLog(" 进出轴至P2(进料口取料点) "); //OutStoreLog(" 进出轴至P2(进料口取料点) ");
ACAxisMove(Config.InOut_Axis, moveP.InOut_P2, Config.InOutAxis_P2_Speed); //ACAxisMove(Config.InOut_Axis, moveP.InOut_P2, Config.InOutAxis_P2_Speed);
NeedCheckSafetyLight = 1; //NeedCheckSafetyLight = 1;
} }
public bool InOutAxisCanMove() public bool InOutAxisCanMove()
{ {
...@@ -663,21 +649,11 @@ namespace OnlineStore.DeviceLibrary ...@@ -663,21 +649,11 @@ namespace OnlineStore.DeviceLibrary
autoPositionIndex = newIndex; autoPositionIndex = newIndex;
string posid = PositionNumList[autoPositionIndex]; string posid = PositionNumList[autoPositionIndex];
InOutParam newParam = new InOutParam(MoveType.OutStore, posid); InOutParam newParam = new InOutParam(MoveType.OutStore, posid);
//判断是否需要重置
if (CurrInOutACount >= Config.Box_ResetACount)
{
LogUtil.info(Name + "自动进入下一个出库:posid=" + posid + ",当时已经出入库" + CurrInOutACount + "次,需要重置BOX,先把出库信息存入排队列表中");
Reset(false);
autoMsg = "自动出库:" + posid;
AddWaitMoveParam(newParam);
}
else
{
LogUtil.info(Name + "自动进入下一个出库:posid=" + posid); LogUtil.info(Name + "自动进入下一个出库:posid=" + posid);
autoMsg = "自动出库:" + posid; autoMsg = "自动出库:" + posid;
StartOutStore(newParam); StartOutStore(newParam);
}
} }
} }
else if (storeMoveType.Equals(MoveType.OutStore)) else if (storeMoveType.Equals(MoveType.OutStore))
...@@ -701,21 +677,11 @@ namespace OnlineStore.DeviceLibrary ...@@ -701,21 +677,11 @@ namespace OnlineStore.DeviceLibrary
{ {
string posid = PositionNumList[newIndex]; string posid = PositionNumList[newIndex];
InOutParam newParam = new InOutParam(MoveType.InStore, posid, "AAAAA"); InOutParam newParam = new InOutParam(MoveType.InStore, posid, "AAAAA");
//判断是否需要重置
if (CurrInOutACount >= Config.Box_ResetACount)
{
LogUtil.info(Name + "自动进入下一个入库:posid=" + posid + ",当时已经出入库" + CurrInOutACount + "次,需要重置BOX,先把入库信息存入排队列表中");
Reset(false);
autoMsg = "自动入库:" + posid;
AddWaitMoveParam(newParam);
}
else
{
LogUtil.info(Name + "自动进入下一个入库:posid=" + posid); LogUtil.info(Name + "自动进入下一个入库:posid=" + posid);
autoMsg = "自动入库:" + posid; autoMsg = "自动入库:" + posid;
StartInStore(newParam); StartInStore(newParam);
}
} }
} }
} }
...@@ -725,6 +691,11 @@ namespace OnlineStore.DeviceLibrary ...@@ -725,6 +691,11 @@ namespace OnlineStore.DeviceLibrary
} }
} }
private void AddWaitMoveParam(InOutParam newParam)
{
throw new NotImplementedException();
}
private void InStoreLog(string msg) private void InStoreLog(string msg)
{ {
string LogName = MoveInfo.MoveParam != null ? MoveInfo.MoveParam.LogName : ""; string LogName = MoveInfo.MoveParam != null ? MoveInfo.MoveParam.LogName : "";
......
using OnlineStore.Common;
using OnlineStore.LoadCSVLibrary;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections.Concurrent;
using DeviceLib;
namespace OnlineStore.DeviceLibrary
{
partial class VerticalStoreBean
{
public StirInfo CurrStirInfo = null;
public ConcurrentQueue<InOutParam> WaitMoveParamList = new ConcurrentQueue<InOutParam>();
public void AddWaitMoveParam(InOutParam code)
{
WaitMoveParamList.Enqueue(code);
}
#region 回温移库
public bool StartMovement(InOutParam param)
{
if (runStatus == StoreRunStatus.Runing && MoveInfo.MoveType.Equals(MoveType.None))
{
if (!param.LoadParam(Config))
{
LogUtil.error(Name + " 启动 " + param.LogName + "失败,找不到库位 " + param.PosId + "");
return false;
}
if (IOManager.IOValue(IO_Type.TinCheck_Fixture).Equals(IO_VALUE.HIGH))
{
LogUtil.error(Name + " 启动 " + param.LogName + "失败,叉子料盘检测有料");
return false;
}
if (param.TarPosition == null)
{
LogUtil.error(Name + " 启动 " + param.LogName + "失败,未找到目标位置" + param.TarPosId + "");
return false;
}
if (param.Position.PosType.Equals(1) && param.Position.PosType.Equals(2))
{
moveWatch.Restart();
LogUtil.info(Name + "启动 " + param.LogName + " ");
runStatus = StoreRunStatus.Busy;
storeStatus = StoreStatus.MovementExecute;
MoveInfo.NewMove(MoveType.MovePos, param);
MoveInfo.NextMoveStep(StoreMoveStep.MG_01_InoutToP1);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
ConfigMoveAxis axis = GetPosTAxis();
MovePosLog(" 移库:进出轴到P1," + axis.ProName + "停止匀速旋转");
InOutBackToP1(MoveInfo.MoveParam.MoveP.InOut_P1);
ACServerManager.SuddenStop(axis.DeviceName,axis.GetAxisValue());
return true;
}
else
{
LogUtil.error(Name + " 启动 " + param.LogName + "失败,库位不匹配,需要 冷藏区->回温区");
return false;
}
}
else
{
LogUtil.error(Name + " 启动 " + param.LogName + "出错,当前状态:[" + runStatus + "],[" + MoveInfo.MoveType + "]");
return false;
}
}
protected override void MovementProcess()
{
StoreMoveP moveP = MoveInfo.MoveParam.MoveP;
if (MoveInfo.IsInWait)
{
CheckWait();
}
if (MoveInfo.IsInWait)
{
return;
}
if (MoveInfo.IsStep(StoreMoveStep.MG_01_InoutToP1))
{
MoveInfo.NextMoveStep(StoreMoveStep.MG_02_AxisHome);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
ConfigMoveAxis axis = GetPosTAxis();
MovePosLog("移库:" + axis.ProName + "回原点");
ACAxisHomeMove(axis);
}
else if (MoveInfo.IsStep(StoreMoveStep.MG_02_AxisHome))
{
MoveInfo.NextMoveStep(StoreMoveStep.MG_03_ToBag);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
MovePosLog("移库:旋转轴至P2( 库位点),升降轴至P5(库位出库前点) ,冷藏轴到P2");
ACAxisMove(Config.Middle_Axis, moveP.Middle_P2, Config.MiddleAxis_P2_Speed);
ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P5, Config.UpDownAxis_P5_Speed);
ACAxisMove(Config.Colding_Axis, moveP.Cold_P2, Config.ColdingAxis_P2_Speed);
}
else if (MoveInfo.IsStep(StoreMoveStep.MG_03_ToBag))
{
MoveInfo.NextMoveStep(StoreMoveStep.MG_04_OpenCold);
MovePosLog("移库:开冷藏门");
CylinderMove(MoveInfo, IO_Type.ColdDoor_Close, IO_Type.ColdDoor_Open);
}
else if (MoveInfo.IsStep(StoreMoveStep.MG_04_OpenCold))
{
MoveInfo.NextMoveStep(StoreMoveStep.MG_05_InoutToP3);
MovePosLog("移库:进出轴 至P3(库位取放料点)");
ACAxisMove(Config.InOut_Axis, moveP.InOut_P3, Config.InOutAxis_P3_Speed);
}
else if (MoveInfo.IsStep(StoreMoveStep.MG_05_InoutToP3))
{
MoveInfo.NextMoveStep(StoreMoveStep.MG_06_Clamping_Work);
MovePosLog("移库: 夹爪夹紧");
CylinderMove(MoveInfo, IO_Type.Clamping_Relax, IO_Type.Clamping_Tighten);
}
else if (MoveInfo.IsStep(StoreMoveStep.MG_06_Clamping_Work))
{
MoveInfo.NextMoveStep(StoreMoveStep.MG_07_UpdownToP6);
MovePosLog("移库:升降轴到缓冲点P6");
ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P6, Config.UpDownAxis_P6_Speed);
}
else if (MoveInfo.IsStep(StoreMoveStep.MG_07_UpdownToP6))
{
MoveInfo.NextMoveStep(StoreMoveStep.MG_08_InoutToP1);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
MovePosLog("移库:进出轴返回P1,停止回温轴匀速运动");
InOutBackToP1(moveP.InOut_P1);
AxisSuddenStop(Config.Warming_Axis);
}
else if (MoveInfo.IsStep(StoreMoveStep.MG_08_InoutToP1))
{
MoveInfo.NextMoveStep(StoreMoveStep.MG_09_CloseCold);
MovePosLog("移库:关闭冷藏区门 ");
CylinderMove(MoveInfo, IO_Type.ColdDoor_Open, IO_Type.ColdDoor_Close);
}
else if (MoveInfo.IsStep(StoreMoveStep.MG_09_CloseCold))
{
MoveInfo.NextMoveStep(StoreMoveStep.MP_11_MoveToTBag);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
MovePosLog("移库:移动到库位点,旋转轴 至P2( 库位点)升降轴至P3(库位入库前点),回温区旋转轴回原点");
ACAxisMove(Config.Middle_Axis, moveP.Middle_P2, Config.MiddleAxis_P2_Speed);
ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P3, Config.UpDownAxis_P3_Speed);
ACAxisHomeMove(Config.Warming_Axis);
}
else if (MoveInfo.IsStep(StoreMoveStep.MP_11_MoveToTBag))
{
MoveInfo.NextMoveStep(StoreMoveStep.MP_12_TargetAxisToP2);
MovePosLog("移库:回温轴到P2点");
ACAxisMove(Config.Warming_Axis, moveP.Warm_P2, Config.WarmingAxis_P2_Speed);
}
else if (MoveInfo.IsStep(StoreMoveStep.MP_12_TargetAxisToP2))
{
MoveInfo.NextMoveStep(StoreMoveStep.MP_14_InoutToP3);
MovePosLog("移库:叉子进入库位中,进出轴至P3(库位取放料点)");
ACAxisMove(Config.InOut_Axis, moveP.InOut_P3, Config.InOutAxis_P3_Speed);
}
else if (MoveInfo.IsStep(StoreMoveStep.MP_14_InoutToP3))
{
MoveInfo.NextMoveStep(StoreMoveStep.MP_15_UpdownToP4);
MovePosLog("移库:放下物品,升降轴至P4( 库位入料缓冲点)");
ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P4, Config.UpDownAxis_P4_Speed);
}
else if (MoveInfo.IsStep(StoreMoveStep.MP_15_UpdownToP4))
{
MoveInfo.NextMoveStep(StoreMoveStep.MP_16_Clamping_Relax);
MovePosLog("移库:夹爪放松");
CylinderMove(MoveInfo, IO_Type.Clamping_Tighten, IO_Type.Clamping_Relax);
UpdateLastStatus(StoreStatus.MovementEnd);
}
else if (MoveInfo.IsStep(StoreMoveStep.MP_16_Clamping_Relax))
{
MoveInfo.NextMoveStep(StoreMoveStep.MP_17_InOutToP1);
MovePosLog("入库。。叉子从库位中返回,进出轴动作至P1");
InOutBackToP1(moveP.InOut_P1);
}
else if (MoveInfo.IsStep(StoreMoveStep.MP_17_InOutToP1))
{
MoveInfo.NextMoveStep(StoreMoveStep.MP_19_GoBack);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
MovePosLog("移库:返回待机点,轴2/轴1动作至P1, 回温轴冷藏轴开始匀速旋转,");
ACAxisMove(Config.Middle_Axis, MoveInfo.MoveParam.MoveP.Middle_P1, Config.MiddleAxis_P1_Speed);
ACAxisMove(Config.UpDown_Axis, MoveInfo.MoveParam.MoveP.UpDown_P1, Config.UpDownAxis_P1_Speed);
StartWork();
}
else if (MoveInfo.IsStep(StoreMoveStep.MP_19_GoBack))
{
TimeSpan span = moveWatch.Elapsed;
moveWatch.Stop();
LogUtil.info(Name + " " + MoveInfo.MoveParam.LogName + " 结束,耗时【" + FormUtil.GetSpanStr(span) + "】!");
MoveInfo.EndMove();
runStatus = StoreRunStatus.Runing;
storeStatus = StoreStatus.StoreOnline;
}
}
#endregion
#region 搅拌数据加载
private void LoadCurrStirInfo()
{
string jsonData = ConfigAppSettings.GetValue(Setting_Init.CurrStirInfo);
CurrStirInfo = JsonHelper.DeserializeJsonToObject<StirInfo>(jsonData);
if (CurrStirInfo == null)
{
LogUtil.info(Name + "读取搅拌区信息【" + jsonData + "】为空,重新初始化搅拌信息");
CurrStirInfo = new StirInfo();
jsonData = JsonHelper.SerializeObject(CurrStirInfo);
ConfigAppSettings.SaveValue(Setting_Init.CurrStirInfo, jsonData);
}
}
public bool UpdateCurrStirInfo(bool isStir, InOutParam param)
{
LogUtil.info(Name + "更新搅拌区信息:【" + isStir + "】 【" + param.LogName + "】");
if (CurrStirInfo == null)
{
CurrStirInfo = new StirInfo();
}
CurrStirInfo.InStirWork = isStir;
CurrStirInfo.StartTime = DateTime.Now;
CurrStirInfo.StirParam = param;
CurrStirInfo.MoveStatus = 0;
string jsonData = JsonHelper.SerializeObject(CurrStirInfo);
ConfigAppSettings.SaveValue(Setting_Init.CurrStirInfo, jsonData);
return true;
}
/// <summary>
/// 更新搅拌区状态,1=物料1已放入,2=物料2已放入,3=搅拌中,4=搅拌完成,等待取出物料,5=物料1已取出,6=物料2已取出,7=全部完成
/// </summary>
/// <param name="state">搅拌区状态:1=物料1已放入,2=物料2已放入,3=搅拌中,4=搅拌完成,等待取出物料,5=物料1已取出,6=物料2已取出,7=全部完成</param>
/// <returns></returns>
private bool UpdateCurrStirState(int state,int stirSeconds=0)
{
if (CurrStirInfo == null || CurrStirInfo.StirParam == null)
{
return false;
}
LogUtil.info(Name + "更新搅拌区【" + CurrStirInfo.StirParam.LogName + "】状态=【" + state + "】 ");
CurrStirInfo.MoveStatus = state;
CurrStirInfo.StartTime = DateTime.Now;
CurrStirInfo.StopTime = DateTime.Now.AddSeconds(stirSeconds);
string jsonData = JsonHelper.SerializeObject(CurrStirInfo);
ConfigAppSettings.SaveValue(Setting_Init.CurrStirInfo, jsonData);
return true;
}
#endregion
#region 搅拌
public bool StartStirring(InOutParam param)
{
if (runStatus == StoreRunStatus.Runing && MoveInfo.MoveType.Equals(MoveType.None))
{
if (CurrStirInfo != null && CurrStirInfo.InStirWork)
{
LogUtil.error(Name + " 启动 " + param.LogName + "失败,搅拌区已被占用: " + CurrStirInfo.StirParam.LogName + "");
return false;
}
if (!param.LoadParam(Config))
{
LogUtil.error(Name + " 启动 " + param.LogName + "失败,找不到库位 " + param.PosId + "");
return false;
}
if (IOManager.IOValue(IO_Type.TinCheck_Fixture).Equals(IO_VALUE.HIGH))
{
LogUtil.error(Name + " 启动 " + param.LogName + "失败,叉子料盘检测有料");
return false;
}
if (!param.Position.PosType.Equals(2))
{
LogUtil.error(Name + " 启动 " + param.LogName + "失败,[" + param.PosId + "]不是回温区库位");
return false;
}
//判断是否需要使用砝码
if (param.TarPosId.Equals(""))
{
VerticalStorePosition wPostion = GetStriWeightPos(param.Weight);
if (wPostion == null)
{
LogUtil.error(Name + " 启动 " + param.LogName + "失败,未找到匹配的砝码");
return false;
}
param.TarPosCode = "weight-" + wPostion.PosType + "G";
param.TarPosId = wPostion.PositionNum;
param.TarWeight = wPostion.PosType;
LogUtil.info(Name + " " + param.LogName + "搅拌前,找到匹配砝码:[" + param.TarPosId + "][" + param.TarWeight + "]G");
}
moveWatch.Restart();
LogUtil.info(Name + "启动 " + param.LogName + ",保存搅拌区参数 ");
UpdateCurrStirInfo(true, param);
runStatus = StoreRunStatus.Busy;
storeStatus = StoreStatus.StirringExecute;
MoveInfo.NewMove(MoveType.Stirring, param);
MoveInfo.NextMoveStep(StoreMoveStep.ST_01_InoutToP1);
ConfigMoveAxis axis = GetPosTAxis();
OutStoreLog(" 送料1搅拌:进出轴到P1," + axis.ProName + "停止匀速旋转");
InOutBackToP1(MoveInfo.MoveParam.MoveP.InOut_P1);
AxisSuddenStop(axis);
return true;
}
else
{
LogUtil.error(Name + " 启动 " + param.LogName + "出错,当前状态:[" + runStatus + "],[" + MoveInfo.MoveType + "]");
return false;
}
}
private VerticalStorePosition GetStriWeightPos(int weight)
{
//根据重量获取砝码库位
List<VerticalStorePosition> allList = new List<VerticalStorePosition>(CSVPositionReader<VerticalStorePosition>.allPositionMap.Values);
List<VerticalStorePosition> weightList = (from m in allList where m.PosType >= 100 orderby m.PosType descending select m).ToList<VerticalStorePosition>();
foreach (VerticalStorePosition p in weightList)
{
if (weight >= p.PosType)
{
return p;
}
int cha = weight - p.PosType;
if ((Math.Abs(cha) < 50))
{
return p;
}
}
if (weightList != null)
{
return weightList[weightList.Count - 1];
}
return null;
}
protected override void StirringProcess()
{
StoreMoveP moveP = MoveInfo.MoveParam.MoveP;
VerticalStorePosition tPosition = MoveInfo.MoveParam.TarPosition;
if (MoveInfo.IsInWait)
{
CheckWait();
}
if (MoveInfo.IsInWait)
{
return;
}
#region 送料1去搅拌位1
if (MoveInfo.IsStep(StoreMoveStep.Wait))
{
MoveInfo.NextMoveStep(StoreMoveStep.ST_01_InoutToP1);
ConfigMoveAxis axis = GetPosTAxis();
OutStoreLog(" 送料1搅拌:进出轴到P1," + axis.ProName + "停止匀速旋转");
InOutBackToP1(MoveInfo.MoveParam.MoveP.InOut_P1);
AxisSuddenStop(axis);
}
else if (MoveInfo.IsStep(StoreMoveStep.ST_01_InoutToP1))
{
MoveInfo.NextMoveStep(StoreMoveStep.ST_02_AxisHome);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
OutStoreLog(" 送料1搅拌:,回温轴回原点");
ACAxisHomeMove(Config.Warming_Axis);
}
else if (MoveInfo.IsStep(StoreMoveStep.ST_02_AxisHome))
{
MoveInfo.NextMoveStep(StoreMoveStep.ST_03_ToBag);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
OutStoreLog(" 送料1搅拌: 旋转轴至P2( 库位点),升降轴至P5(库位出库前点), 回温轴到P2");
ACAxisMove(Config.Middle_Axis, moveP.Middle_P2, Config.MiddleAxis_P2_Speed);
ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P5, Config.UpDownAxis_P5_Speed);
ACAxisMove(Config.Warming_Axis, moveP.Warm_P2, Config.WarmingAxis_P2_Speed);
}
else if (MoveInfo.IsStep(StoreMoveStep.ST_03_ToBag))
{
MoveInfo.NextMoveStep(StoreMoveStep.ST_05_InoutToP3);
OutStoreLog(" 送料1搅拌:进出轴 至P3(库位取放料点)");
ACAxisMove(Config.InOut_Axis, moveP.InOut_P3, Config.InOutAxis_P3_Speed);
}
else if (MoveInfo.IsStep(StoreMoveStep.ST_05_InoutToP3))
{
MoveInfo.NextMoveStep(StoreMoveStep.ST_06_Clamping_Work);
OutStoreLog(" 送料1搅拌: 夹爪夹紧");
CylinderMove(MoveInfo, IO_Type.Clamping_Relax, IO_Type.Clamping_Tighten);
}
else if (MoveInfo.IsStep(StoreMoveStep.ST_06_Clamping_Work))
{
MoveInfo.NextMoveStep(StoreMoveStep.ST_07_UpdownToP6);
OutStoreLog(" 送料1搅拌:升降轴到缓冲点P6");
ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P6, Config.UpDownAxis_P6_Speed);
}
else if (MoveInfo.IsStep(StoreMoveStep.ST_07_UpdownToP6))
{
MoveInfo.NextMoveStep(StoreMoveStep.ST_08_InoutToP1);
OutStoreLog(" 送料1搅拌:进出轴返回P1,搅拌气缸上升");
InOutBackToP1(moveP.InOut_P1);
CylinderMove(MoveInfo, IO_Type.StirLocation_Down, IO_Type.StirLocation_Up);
}
else if (MoveInfo.IsStep(StoreMoveStep.ST_08_InoutToP1))
{
MoveInfo.NextMoveStep(StoreMoveStep.ST_09_MoveToStir);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
OutStoreLog(" 送料1搅拌:移动到搅拌位置,升降轴到搅拌区高点P101,旋转轴到P101, 搅拌轴到P1");
ACAxisMove(Config.UpDown_Axis, Config.UpDownAxis_StirH_P101, Config.UpDownAxis_P101_Speed);
ACAxisMove(Config.Middle_Axis, moveP.Middle_P2, Config.MiddleAxis_P2_Speed);
ACAxisMove(Config.Stir_Axis, Config.Stir_Axis_P1, Config.StirAxis_P1_Speed);
}
else if (MoveInfo.IsStep(StoreMoveStep.ST_09_MoveToStir))
{
MoveInfo.NextMoveStep(StoreMoveStep.ST_10_LocationDown);
OutStoreLog(" 送料1搅拌:搅拌气缸下降");
CylinderMove(MoveInfo, IO_Type.StirLocation_Up, IO_Type.StirLocation_Down);
}
else if (MoveInfo.IsStep(StoreMoveStep.ST_10_LocationDown))
{
MoveInfo.NextMoveStep(StoreMoveStep.ST_11_InoutToP101);
OutStoreLog(" 送料1搅拌:进出轴移动到搅拌区取放料点P101");
ACAxisMove(Config.InOut_Axis, Config.InOutAxis_Stir_P101, Config.InOutAxis_P101_Speed);
}
else if (MoveInfo.IsStep(StoreMoveStep.ST_11_InoutToP101))
{
MoveInfo.NextMoveStep(StoreMoveStep.ST_12_UpdownToP102);
OutStoreLog(" 送料1搅拌:升降轴下降到P102,更新搅拌区信息");
ACAxisMove(Config.UpDown_Axis, Config.UpDownAxis_StirL_P102, Config.UpDownAxis_P102_Speed);
}
else if (MoveInfo.IsStep(StoreMoveStep.ST_12_UpdownToP102))
{
MoveInfo.NextMoveStep(StoreMoveStep.ST_13_Clamping_Relax);
OutStoreLog(" 送料1搅拌:夹爪放松,更新搅拌状态:物料1已放入搅拌区");
CylinderMove(MoveInfo, IO_Type.Clamping_Tighten, IO_Type.Clamping_Relax);
UpdateCurrStirState(1);
}
else if (MoveInfo.IsStep(StoreMoveStep.ST_13_Clamping_Relax))
{
MoveInfo.NextMoveStep(StoreMoveStep.ST_14_InoutToP1);
OutStoreLog(" 送料1搅拌:进出轴后退到P1");
InOutBackToP1(Config.InOutAxis_P1);
}
#endregion
#region 送料2去搅拌位2
else if (MoveInfo.IsStep(StoreMoveStep.ST_14_InoutToP1))
{
MoveInfo.NextMoveStep(StoreMoveStep.ST_23_ToBag);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
OutStoreLog(" 送料2搅拌: 旋转轴至P2( 库位点),升降轴至P5(库位出库前点) ,回温轴到P2");
ACAxisMove(Config.Middle_Axis, tPosition.MiddleAxis_P2, Config.MiddleAxis_P2_Speed);
ACAxisMove(Config.UpDown_Axis, tPosition.UpDownAxis_OH_P5, Config.UpDownAxis_P5_Speed);
ACAxisMove(Config.Warming_Axis, tPosition.WarmAxis_P2, Config.WarmingAxis_P2_Speed);
}
else if (MoveInfo.IsStep(StoreMoveStep.ST_23_ToBag))
{
MoveInfo.NextMoveStep(StoreMoveStep.ST_25_InoutToP3);
OutStoreLog(" 送料2搅拌:进出轴 至P3(库位取放料点)");
ACAxisMove(Config.InOut_Axis, tPosition.InOutAxis_P3, Config.InOutAxis_P3_Speed);
}
else if (MoveInfo.IsStep(StoreMoveStep.ST_25_InoutToP3))
{
MoveInfo.NextMoveStep(StoreMoveStep.ST_26_Clamping_Work);
OutStoreLog(" 送料2搅拌: 夹爪夹紧");
CylinderMove(MoveInfo, IO_Type.Clamping_Relax, IO_Type.Clamping_Tighten);
}
else if (MoveInfo.IsStep(StoreMoveStep.ST_26_Clamping_Work))
{
MoveInfo.NextMoveStep(StoreMoveStep.ST_27_UpdownToP6);
OutStoreLog(" 送料2搅拌:升降轴到缓冲点P6");
ACAxisMove(Config.UpDown_Axis, tPosition.UpDownAxis_OL_P6, Config.UpDownAxis_P6_Speed);
}
else if (MoveInfo.IsStep(StoreMoveStep.ST_27_UpdownToP6))
{
MoveInfo.NextMoveStep(StoreMoveStep.ST_28_InoutToP1);
OutStoreLog(" 送料2搅拌:进出轴返回P1,搅拌气缸上升");
InOutBackToP1(Config.InOutAxis_P1);
CylinderMove(MoveInfo, IO_Type.StirLocation_Down, IO_Type.StirLocation_Up);
}
else if (MoveInfo.IsStep(StoreMoveStep.ST_28_InoutToP1))
{
MoveInfo.NextMoveStep(StoreMoveStep.ST_29_MoveToStir);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
OutStoreLog(" 送料2搅拌:移动到搅拌位置,升降轴到搅拌区高点P101,旋转轴到P101, 搅拌轴到P2");
ACAxisMove(Config.Middle_Axis, Config.MiddleAxis_Stir_P101, Config.MiddleAxis_P101_Speed);
ACAxisMove(Config.UpDown_Axis, Config.UpDownAxis_StirH_P101, Config.UpDownAxis_P101_Speed);
ACAxisMove(Config.Stir_Axis, Config.Stir_Axis_P2, Config.StirAxis_P2_Speed);
}
else if (MoveInfo.IsStep(StoreMoveStep.ST_29_MoveToStir))
{
MoveInfo.NextMoveStep(StoreMoveStep.ST_30_LocationDown);
OutStoreLog(" 送料2搅拌:搅拌气缸下降");
CylinderMove(MoveInfo, IO_Type.StirLocation_Up, IO_Type.StirLocation_Down);
}
else if (MoveInfo.IsStep(StoreMoveStep.ST_30_LocationDown))
{
MoveInfo.NextMoveStep(StoreMoveStep.ST_31_InoutToP101);
OutStoreLog(" 送料2搅拌:进出轴移动到搅拌区取放料点P101");
ACAxisMove(Config.InOut_Axis, Config.InOutAxis_Stir_P101, Config.InOutAxis_P101_Speed);
}
else if (MoveInfo.IsStep(StoreMoveStep.ST_31_InoutToP101))
{
MoveInfo.NextMoveStep(StoreMoveStep.ST_32_UpdownToP102);
OutStoreLog(" 送料2搅拌:升降轴下降到P102");
ACAxisMove(Config.UpDown_Axis, Config.UpDownAxis_StirL_P102, Config.UpDownAxis_P102_Speed);
}
else if (MoveInfo.IsStep(StoreMoveStep.ST_32_UpdownToP102))
{
MoveInfo.NextMoveStep(StoreMoveStep.ST_33_Clamping_Relax);
OutStoreLog(" 送料2搅拌:夹爪放松,更新搅拌状态:物料2已放入搅拌区");
CylinderMove(MoveInfo, IO_Type.Clamping_Tighten, IO_Type.Clamping_Relax);
UpdateCurrStirState(2);
}
else if (MoveInfo.IsStep(StoreMoveStep.ST_33_Clamping_Relax))
{
MoveInfo.NextMoveStep(StoreMoveStep.ST_34_InoutToP1);
OutStoreLog(" 送料2搅拌:进出轴后退到P1");
InOutBackToP1(Config.InOutAxis_P1);
}
else if (MoveInfo.IsStep(StoreMoveStep.ST_34_InoutToP1))
{
MoveInfo.NextMoveStep(StoreMoveStep.ST_35_LocationUp);
OutStoreLog(" 送料2搅拌:搅拌气缸上升");
CylinderMove(MoveInfo, IO_Type.StirLocation_Down, IO_Type.StirLocation_Up);
}
else if (MoveInfo.IsStep(StoreMoveStep.ST_35_LocationUp))
{
MoveInfo.NextMoveStep(StoreMoveStep.ST_41_StartStir);
OutStoreLog(" 搅拌:开始搅拌,回温轴,搅拌轴,开始匀速旋转");
StartWork(2);
UpdateCurrStirState(3,MoveInfo.MoveParam.StirSecsond );
}
else if (MoveInfo.IsStep(StoreMoveStep.ST_41_StartStir))
{
TimeSpan span = moveWatch.Elapsed;
moveWatch.Stop();
LogUtil.info(Name + " " + MoveInfo.MoveParam.LogName + " 送料去搅拌结束,耗时【" + FormUtil.GetSpanStr(span) + "】!");
MoveInfo.EndMove();
runStatus = StoreRunStatus.Runing;
storeStatus = StoreStatus.StoreOnline;
}
#endregion
#region 搅拌完成:搅拌位1物料回库位
else if (MoveInfo.IsStep(StoreMoveStep.SR_51_InoutBack))
{
MoveInfo.NextMoveStep(StoreMoveStep.SR_52_MoveToStir);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
OutStoreLog(" 搅拌1回库:移动到搅拌位置,升降轴到搅拌区低点P102,旋转轴到P101, 搅拌轴到P1");
ACAxisMove(Config.UpDown_Axis, Config.UpDownAxis_StirL_P102, Config.UpDownAxis_P102_Speed);
ACAxisMove(Config.Middle_Axis, Config.MiddleAxis_Stir_P101, Config.MiddleAxis_P101_Speed);
ACAxisMove(Config.Stir_Axis, Config.Stir_Axis_P1, Config.StirAxis_P1_Speed);
}
else if (MoveInfo.IsStep(StoreMoveStep.SR_52_MoveToStir))
{
MoveInfo.NextMoveStep(StoreMoveStep.SR_53_LocationDown);
OutStoreLog(" 搅拌1回库:搅拌气缸下降");
CylinderMove(MoveInfo, IO_Type.StirLocation_Up, IO_Type.StirLocation_Down);
}
else if (MoveInfo.IsStep(StoreMoveStep.SR_53_LocationDown))
{
MoveInfo.NextMoveStep(StoreMoveStep.SR_54_InoutToP101);
OutStoreLog(" 搅拌1回库:进出轴到P101");
ACAxisMove(Config.InOut_Axis, Config.InOutAxis_Stir_P101, Config.InOutAxis_P101_Speed);
}
else if (MoveInfo.IsStep(StoreMoveStep.SR_54_InoutToP101))
{
MoveInfo.NextMoveStep(StoreMoveStep.SR_55_Clamping_Work);
OutStoreLog(" 搅拌1回库:夹爪气缸夹紧");
CylinderMove(MoveInfo, IO_Type.Clamping_Relax, IO_Type.Clamping_Tighten);
}
else if (MoveInfo.IsStep(StoreMoveStep.SR_55_Clamping_Work))
{
MoveInfo.NextMoveStep(StoreMoveStep.SR_56_UpdownToP101);
OutStoreLog(" 搅拌1回库:升降轴上升到高点P101");
ACAxisMove(Config.UpDown_Axis, Config.UpDownAxis_StirH_P101, Config.UpDownAxis_P101_Speed);
}
else if (MoveInfo.IsStep(StoreMoveStep.SR_56_UpdownToP101))
{
MoveInfo.NextMoveStep(StoreMoveStep.SR_57_InoutToP1);
OutStoreLog(" 搅拌1回库:进出轴返回P1,更新搅拌状态为物料1已取出");
InOutBackToP1(Config.InOutAxis_P1);
UpdateCurrStirState(5);
}
else if (MoveInfo.IsStep(StoreMoveStep.SR_57_InoutToP1))
{
MoveInfo.NextMoveStep(StoreMoveStep.SR_58_MoveToBag);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
OutStoreLog(" 搅拌1回库:移动到库位点,旋转轴 至P2( 库位点)升降轴至P3(库位入库前点),回温轴回原点");
ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P3, Config.UpDownAxis_P3_Speed);
ACAxisMove(Config.Middle_Axis, moveP.Middle_P2, Config.MiddleAxis_P2_Speed);
ACAxisHomeMove(Config.Warming_Axis);
}
else if (MoveInfo.IsStep(StoreMoveStep.SR_58_MoveToBag))
{
MoveInfo.NextMoveStep(StoreMoveStep.SR_59_TargetAxisToP2);
OutStoreLog(" 搅拌1回库:回温轴到P2点");
ACAxisMove(Config.Warming_Axis, moveP.Warm_P2, Config.WarmingAxis_P2_Speed);
}
else if (MoveInfo.IsStep(StoreMoveStep.SR_59_TargetAxisToP2))
{
MoveInfo.NextMoveStep(StoreMoveStep.SR_61_InoutToP3);
OutStoreLog(" 搅拌1回库:叉子进入库位中,进出轴至P3(库位取放料点)");
ACAxisMove(Config.InOut_Axis, moveP.InOut_P3, Config.InOutAxis_P3_Speed);
}
else if (MoveInfo.IsStep(StoreMoveStep.SR_61_InoutToP3))
{
MoveInfo.NextMoveStep(StoreMoveStep.SR_62_UpdownToP4);
OutStoreLog(" 搅拌1回库:放下物品,升降轴至P4( 库位入料缓冲点)");
ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P4, Config.UpDownAxis_P4_Speed);
}
else if (MoveInfo.IsStep(StoreMoveStep.SR_62_UpdownToP4))
{
MoveInfo.NextMoveStep(StoreMoveStep.SR_63_Clamping_Relax);
OutStoreLog(" 搅拌1回库:夹爪放松");
CylinderMove(MoveInfo, IO_Type.Clamping_Tighten, IO_Type.Clamping_Relax);
}
else if (MoveInfo.IsStep(StoreMoveStep.SR_63_Clamping_Relax))
{
MoveInfo.NextMoveStep(StoreMoveStep.SR_64_InOutToP1);
OutStoreLog(" 搅拌1回库:叉子从库位中返回,进出轴动作至P1");
InOutBackToP1(moveP.InOut_P1);
}
else if (MoveInfo.IsStep(StoreMoveStep.SR_64_InOutToP1))
{
MoveInfo.NextMoveStep(StoreMoveStep.SR_71_LocationUp);
OutStoreLog(" 搅拌2回库:进出轴返回,定位气缸上升,");
CylinderMove(MoveInfo, IO_Type.StirLocation_Down, IO_Type.StirLocation_Up);
}
#endregion
#region 搅拌完成:搅拌位2物料回库位
else if (MoveInfo.IsStep(StoreMoveStep.SR_71_LocationUp))
{
MoveInfo.NextMoveStep(StoreMoveStep.SR_72_MoveToStir);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
OutStoreLog(" 搅拌2回库:移动到搅拌位置,升降轴到搅拌区低点P102,旋转轴到P101, 搅拌轴到P2");
ACAxisMove(Config.UpDown_Axis, Config.UpDownAxis_StirL_P102, Config.UpDownAxis_P102_Speed);
ACAxisMove(Config.Middle_Axis, Config.MiddleAxis_Stir_P101, Config.MiddleAxis_P101_Speed);
ACAxisMove(Config.Stir_Axis, Config.Stir_Axis_P2, Config.StirAxis_P2_Speed);
}
else if (MoveInfo.IsStep(StoreMoveStep.SR_72_MoveToStir))
{
MoveInfo.NextMoveStep(StoreMoveStep.SR_73_LocationDown);
OutStoreLog(" 搅拌2回库:搅拌气缸下降");
CylinderMove(MoveInfo, IO_Type.StirLocation_Up, IO_Type.StirLocation_Down);
}
else if (MoveInfo.IsStep(StoreMoveStep.SR_73_LocationDown))
{
MoveInfo.NextMoveStep(StoreMoveStep.SR_74_InoutToP101);
OutStoreLog(" 搅拌2回库:进出轴到P101");
ACAxisMove(Config.InOut_Axis, Config.InOutAxis_Stir_P101, Config.InOutAxis_P101_Speed);
}
else if (MoveInfo.IsStep(StoreMoveStep.SR_74_InoutToP101))
{
MoveInfo.NextMoveStep(StoreMoveStep.SR_75_Clamping_Work);
OutStoreLog(" 搅拌2回库:夹爪气缸夹紧");
CylinderMove(MoveInfo, IO_Type.Clamping_Relax, IO_Type.Clamping_Tighten);
}
else if (MoveInfo.IsStep(StoreMoveStep.SR_75_Clamping_Work))
{
MoveInfo.NextMoveStep(StoreMoveStep.SR_76_UpdownToP101);
OutStoreLog(" 搅拌2回库:升降轴上升到高点P101");
ACAxisMove(Config.UpDown_Axis, Config.UpDownAxis_StirH_P101, Config.UpDownAxis_P101_Speed);
}
else if (MoveInfo.IsStep(StoreMoveStep.SR_76_UpdownToP101))
{
MoveInfo.NextMoveStep(StoreMoveStep.SR_77_InoutToP1);
OutStoreLog(" 搅拌2回库:进出轴返回P1,更改搅拌状态为物料2已取出 ");
InOutBackToP1(Config.InOutAxis_P1);
UpdateCurrStirState(6);
}
else if (MoveInfo.IsStep(StoreMoveStep.SR_77_InoutToP1))
{
MoveInfo.NextMoveStep(StoreMoveStep.SR_78_MoveToBag);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1000));
OutStoreLog(" 搅拌2回库:移动到库位点,旋转轴 至P2( 库位点)升降轴至P3(库位入库前点),回温轴到P2点");
ACAxisMove(Config.Middle_Axis, MoveInfo.MoveParam.TarPosition.MiddleAxis_P2, Config.MiddleAxis_P2_Speed);
ACAxisMove(Config.UpDown_Axis, MoveInfo.MoveParam.TarPosition.UpDownAxis_IH_P3, Config.UpDownAxis_P3_Speed);
ACAxisMove(Config.Warming_Axis, MoveInfo.MoveParam.TarPosition.WarmAxis_P2, Config.WarmingAxis_P2_Speed);
}
else if (MoveInfo.IsStep(StoreMoveStep.SR_78_MoveToBag))
{
// MoveInfo.NextMoveStep(StoreMoveStep.SR_79_TargetAxisToP2);
// OutStoreLog(" 搅拌2回库:冷藏轴或回温轴到P2点");
//}
//else if (MoveInfo.IsStep(StoreMoveStep.SR_79_TargetAxisToP2))
//{
MoveInfo.NextMoveStep(StoreMoveStep.SR_81_InoutToP3);
OutStoreLog(" 搅拌2回库:叉子进入库位中,进出轴至P3(库位取放料点)");
ACAxisMove(Config.InOut_Axis, MoveInfo.MoveParam.TarPosition.InOutAxis_P3, Config.InOutAxis_P3_Speed);
}
else if (MoveInfo.IsStep(StoreMoveStep.SR_81_InoutToP3))
{
MoveInfo.NextMoveStep(StoreMoveStep.SR_82_UpdownToP4);
OutStoreLog(" 搅拌2回库:放下物品,升降轴至P4( 库位入料缓冲点) ");
ACAxisMove(Config.UpDown_Axis, MoveInfo.MoveParam.TarPosition.UpDownAxis_IL_P4, Config.UpDownAxis_P4_Speed);
}
else if (MoveInfo.IsStep(StoreMoveStep.SR_82_UpdownToP4))
{
MoveInfo.NextMoveStep(StoreMoveStep.SR_83_Clamping_Relax);
OutStoreLog(" 搅拌2回库:夹爪放松");
CylinderMove(MoveInfo, IO_Type.Clamping_Tighten, IO_Type.Clamping_Relax);
}
else if (MoveInfo.IsStep(StoreMoveStep.SR_83_Clamping_Relax))
{
MoveInfo.NextMoveStep(StoreMoveStep.SR_84_InOutToP1);
OutStoreLog(" 搅拌2回库:叉子从库位中返回,进出轴动作至P1,更新搅拌状态为全部完成");
InOutBackToP1(Config.InOutAxis_P1);
UpdateCurrStirState(7);
}
else if (MoveInfo.IsStep(StoreMoveStep.SR_84_InOutToP1))
{
TimeSpan span = moveWatch.Elapsed;
moveWatch.Stop();
LogUtil.info(Name + " " + MoveInfo.MoveParam.LogName + " 搅拌物料回库完成,耗时【" + FormUtil.GetSpanStr(span) + "】!");
MoveInfo.EndMove();
runStatus = StoreRunStatus.Runing;
storeStatus = StoreStatus.StoreOnline;
UpdateCurrStirInfo(false, new InOutParam(MoveType.None, ""));
}
#endregion
}
private bool StartStirBackPos(InOutParam param)
{
if (runStatus == StoreRunStatus.Runing && MoveInfo.MoveType.Equals(MoveType.None))
{
if (!param.LoadParam(Config))
{
LogUtil.error(Name + " 启动 " + param.LogName + "失败,找不到库位 " + param.PosId + "");
return false;
}
if (IOManager.IOValue(IO_Type.TinCheck_Fixture).Equals(IO_VALUE.HIGH))
{
LogUtil.error(Name + " 启动 " + param.LogName + "失败,叉子料盘检测有料");
return false;
}
if (!param.Position.PosType.Equals(2))
{
LogUtil.error(Name + " 启动 " + param.LogName + "失败,[" + param.PosId + "]不是回温区库位");
return false;
}
if (param.TarPosition==null)
{
LogUtil.error(Name + " 启动 " + param.LogName + "失败,找不到库位 [" + param.TarPosition + "]");
return false;
}
moveWatch.Restart();
LogUtil.info(Name + "启动 " + param.LogName + ",回库操作 ");
runStatus = StoreRunStatus.Busy;
storeStatus = StoreStatus.StirringExecute;
MoveInfo.NewMove(MoveType.Stirring, param);
MoveInfo.NextMoveStep(StoreMoveStep.SR_51_InoutBack);
MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1500));
OutStoreLog(" 搅拌1回库:进出轴到P1,搅拌轴停止转动,回温区停止匀速运动,搅拌气缸上升");
InOutBackToP1(MoveInfo.MoveParam.MoveP.InOut_P1);
AxisSuddenStop(Config.Warming_Axis );
AxisSuddenStop(Config.Stir_Axis);
CylinderMove(MoveInfo, IO_Type.StirLocation_Down, IO_Type.StirLocation_Up);
return true;
}
else
{
LogUtil.error(Name + " 启动 " + param.LogName + "出错,当前状态:[" + runStatus + "],[" + MoveInfo.MoveType + "]");
return false;
}
}
#endregion
public bool StirAxisCanMove()
{
if(IOManager.IOValue(IO_Type.StirLocation_Up).Equals(IO_VALUE.HIGH)
&&IOManager.IOValue(IO_Type.StirLocation_Down).Equals(IO_VALUE.LOW)
)
{
return true;
}return false;
}
}
}
...@@ -15,8 +15,6 @@ namespace OnlineStore.DeviceLibrary ...@@ -15,8 +15,6 @@ namespace OnlineStore.DeviceLibrary
{ {
public class AIOBOXManager : IOManager public class AIOBOXManager : IOManager
{ {
//public static uint DefaultDICount = 16;
//public static uint DefaultDOCount = 16;
public readonly ILog LOGGER = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); public readonly ILog LOGGER = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public Dictionary<string, AIOBOX> AIOMap = new Dictionary<string, AIOBOX>(); public Dictionary<string, AIOBOX> AIOMap = new Dictionary<string, AIOBOX>();
......
using OnlineStore.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace OnlineStore.DeviceLibrary
{
public class ACCMDManager
{
/// <summary>
/// 0132h 原点接近传感器输入 (HOME) 状态 ReadOnly 0: 输入 OFF 1: 输入 ON
/// </summary>
public static string Home_Single = "0132";
/// <summary>
/// 0022h 负方向驱动禁止输入(NOT) ReadOnly 0: 输入 OFF、 1: 输入 ON
/// </summary>
public static string Limit_Negative_Single = "0022";
/// <summary>
/// 0023h 正方向驱动禁止输入(POT) ReadOnly 0: 输入 OFF、 1: 输入 ON
/// </summary>
public static string Limit_Positive_Single = "0023";
/// <summary>
///速度 4601
/// </summary>
public static string Speed_Addr = "4601";
/// <summary>
/// 0060h 伺服 On 输入 (SRV-ON) 操作 R/W 0000h:输入 OFF、FF00h:输入 ON
/// </summary>
public static string ServerOn_Addr = "0060";
/// <summary>
/// 0120h 选通输入 (STB) 操作 R/W 0000h:输入 OFF、FF00h:输入 ON
/// </summary>
public static string STB_Addr = "0120";
/// <summary>
/// 0124h 减速停止输入 (S-STOP) 操作 R/W 0000h:输入 OFF、FF00h:输入 ON
/// </summary>
public static string Stop_Addr = "0124";
/// <summary>
/// 0123h 紧急停止输入 (H-STOP) 操作 R/W 0000h:输入 OFF、FF00h:输入 ON
/// </summary>
public static string SDStop_Addr = "0123";
/// <summary>
/// 0061h 报警清除输入 (A-CLR) 操作 R/W 0000h:输入 OFF、FF00h:输入 ON
/// </summary>
public static string Clear_Alarm_Addr = "0061";
/// <summary>
/// 1020h Save all parameters - 0 - 4294967295 2 R/W 参数写入 EEPROM 写入“6173h”后,实行 EEPROM 写入
/// </summary>
public static string EEPROM_Param_Addr = "1020";
/// <summary>
/// 目标位置=600B
/// </summary>
public static string TargetPostion = "600B";
/// <summary>
/// 实际位置=600F
/// </summary>
public static string ActualPosition = "600F";
/// <summary>
/// BUSY状态=0140,0140h 动作执行状态 (BUSY) ReadOnly 0:未执行 1:执行中
public static string BUSYStatus = "0140";
/// <summary>
/// HOME-CMP=0141,0141h 回原点完成状态 (HOME-CMP) ReadOnly 0:未完成 1:完成
/// </summary>
public static string HOME_CMP_Status = "0141";
/// <summary>
/// 私服Ready状态,00A0h 伺服 Ready 状态 (S-RDY) ReadOnly 0:Ready OFF 1:Ready ON
/// </summary>
public static string ServerOn_Status = "00A0";
/// <summary>
/// 报警状态=00A1,00A1h 报警状态 (ALM) ReadOnly 0:报警未发生 1:报警发生
/// </summary>
public static string Alarm_Status = "00A1";
/// <summary>
/// 指定BlockNo=4414
/// </summary>
public static string BlockNo = "4414";
/// <summary>
/// 读线圈01
/// </summary>
public static byte CMD_ReadCoil= 0x01;
/// <summary>
/// 写线圈 05
/// </summary>
public static byte CMD_WriteCoil = 0x05;
/// <summary>
/// 读寄存器03
/// </summary>
public static byte CMD_ReadRegisters = 0x03;
/// <summary>
/// 写寄存器06
/// </summary>
public static byte CMD_WriteRegisters = 0x06;
/// <summary>
/// 写多个线圈 0f
/// </summary>
public static byte CMD_WriteMCoil = 0x0F;
/// <summary>
/// 写多个寄存器10
/// </summary>
public static byte CMD_WriteMRegisters = 0x10;
/// <summary>
/// block0=原点返回,正方向
/// </summary>
public static string Block_HomeMove0 = "0";
/// <summary>
/// block1=原点返回,反方向
/// </summary>
public static string Block_HomeMove1 = "1";
/// <summary>
/// block2=绝对位置运动
/// </summary>
public static string Block_AbsMove = "2";
/// <summary>
/// block3=相对位置运动
/// </summary>
public static string Block_RelMove = "3";
/// <summary>
/// block4=正方向匀速运动
/// </summary>
public static string Block_VolMove0 = "4";
/// <summary>
/// block5=反方向匀速运动
/// </summary>
public static string Block_VolMove1 = "5";
/// <summary>
/// block6=减速停止
/// </summary>
public static string Block_DelSpeedStop = "6";
/// <summary>
/// block7=紧急停止
/// </summary>
public static string Block_SuddenStop = "7";
public static byte[] buildCheckData(byte[] sendData, int length)
{
ushort pChecksum = 0;
AcSerialBean.CalculateCRC(sendData, length, out pChecksum);
string checkStr = Convert.ToString(pChecksum, 16);
byte[] checkByte = AcSerialBean.StringToByte(checkStr);
if (checkByte.Length == 1)
{
sendData[length] = checkByte[0];
sendData[length + 1] = 0x00;
}
else
{
sendData[length + 1] = checkByte[0];
sendData[length] = checkByte[1];
}
return sendData;
}
public static byte[] GetWriteData(int slvAddr, byte cmd, string addr, string dataValue, int length)
{
// ( 2) 读取寄存器( 03h)
if (cmd.Equals(CMD_ReadRegisters))
{
return Get03WriteData(slvAddr, addr,length);
}
else if (cmd.Equals(CMD_WriteRegisters))
{
// ( 4) 写入寄存器( 06h)
return Get06WriteData(slvAddr, addr, dataValue);
}
else if (cmd.Equals(CMD_WriteCoil))
{
return Get05WriteData(slvAddr, addr, dataValue);
}
else if (cmd.Equals(CMD_ReadCoil))
{
return Get01WriteData(slvAddr, addr, length);
}
return null;
}
private static byte[] Get05WriteData(int slvAddr, string addr, string dataValue)
{
byte[] sendData = new byte[8];
sendData[0] = (byte)slvAddr;
sendData[1] = CMD_WriteCoil;
byte[] addrByte = AcSerialBean.StringToByte(addr.ToString());
if (addrByte.Length == 1)
{
sendData[2] = 0x00;
sendData[3] = addrByte[0];
}
else if (addrByte.Length == 2)
{
sendData[3] = addrByte[1];
sendData[2] = addrByte[0];
}
byte[] dataByte = AcSerialBean.StringToByte(dataValue);
if (dataByte.Length == 1)
{
sendData[4] = 0x00;
sendData[5] = dataByte[0];
}
else if (dataByte.Length == 2)
{
sendData[5] = dataByte[1];
sendData[4] = dataByte[0];
}
sendData = buildCheckData(sendData, sendData.Length - 2);
return sendData;
}
private static byte[] Get01WriteData(int slvAddr, string addr, int length)
{
byte[] sendData = new byte[8];
sendData[0] = (byte)slvAddr;
sendData[1] = CMD_ReadCoil;
byte[] addrByte = AcSerialBean.StringToByte(addr.ToString());
if (addrByte.Length == 1)
{
sendData[2] = 0x00;
sendData[3] = addrByte[0];
}
else if (addrByte.Length == 2)
{
sendData[3] = addrByte[1];
sendData[2] = addrByte[0];
}
byte[] dataByte = AcSerialBean.StringToByte(length.ToString());
if (dataByte.Length == 1)
{
sendData[4] = 0x00;
sendData[5] = dataByte[0];
}
else if (dataByte.Length == 2)
{
sendData[4] = dataByte[1];
sendData[5] = dataByte[0];
}
sendData = buildCheckData(sendData, sendData.Length - 2);
return sendData;
}
private static byte[] Get03WriteData(int slvAddr, string addr, int length)
{
// ( 2) 读取寄存器( 03h)
//发送
//从站地址
//03h
//寄存器起始地址 高位
//低位
//寄存器数(N) 高位
//低位
//CRC 低位
//高位
byte[] sendData = new byte[8 ];
sendData[0] = (byte)slvAddr;
sendData[1] = CMD_ReadRegisters;
byte[] addrByte = AcSerialBean.StringToByte(addr.ToString());
if (addrByte.Length == 1)
{
sendData[2] = 0x00;
sendData[3] = addrByte[0];
}
else if (addrByte.Length == 2)
{
sendData[3] = addrByte[1];
sendData[2] = addrByte[0];
}
byte[] dataByte = AcSerialBean.StringToByte(length.ToString());
if (dataByte.Length == 1)
{
sendData[4] = 0x00;
sendData[5] = dataByte[0];
}
else if (dataByte.Length == 2)
{
sendData[4] = dataByte[1];
sendData[5] = dataByte[0];
}
sendData = buildCheckData(sendData, sendData.Length-2);
return sendData;
}
private static byte[] Get06WriteData(int slvAddr, string addr, string dataValue)
{
// ( 4) 写入寄存器( 06h)
//从站地址
//06h
//地址 高位
//低位
//変更数据 高位
//低位
//CRC 低位
//高位
byte[] sendData = new byte[8];
sendData[0] = (byte)slvAddr;
sendData[1] = CMD_WriteRegisters;
byte[] addrByte = AcSerialBean.StringToByte(addr.ToString());
if (addrByte.Length == 1)
{
sendData[2] = 0x00;
sendData[3] = addrByte[0];
}
else if (addrByte.Length == 2)
{
sendData[3] = addrByte[1];
sendData[2] = addrByte[0];
}
byte[] dataByte = AcSerialBean.StringToByte(dataValue);
if (dataByte.Length == 1)
{
sendData[4] = 0x00;
sendData[5] = dataByte[0];
}
else if (dataByte.Length == 2)
{
sendData[4] = dataByte[0];
sendData[5] = dataByte[1];
//sendData[4] = dataByte[1];
//sendData[5] = dataByte[0];
}
sendData = buildCheckData(sendData, sendData.Length - 2);
return sendData;
}
}
}
using OnlineStore.Common;
using OnlineStore.LoadCSVLibrary;
using System;
using System.Collections.Generic;
using System.IO.Ports;
using System.Linq;
using System.Text;
using System.Threading;
namespace OnlineStore.DeviceLibrary
{
/// <summary>
/// 外部调用的接口放在此文件中
/// </summary>
public partial class ACServerManager
{
public static bool IsShowMsg = false ;
private static int SleepMSendons = 20;
private static int ReviceOutTimeMS = 100;
private static Dictionary<string, Dictionary<string, int>> ComAddrValue = new Dictionary<string, Dictionary<string, int>>();
private static string mapObj = "";
private static int GetAddrValue(string portName, int slvAddr, string addr)
{
int value = -1;
try
{
string name = portName + "_" + slvAddr;
Dictionary<string, int> map = null;
ComAddrValue.TryGetValue(name, out map);
if (map == null)
{
return -1;
}
if (map.ContainsKey(addr))
{
return map[addr];
}
}
catch (Exception ex)
{
LogUtil.error("UpdateAddrValue出错:" + ex.ToString());
}
return value;
}
private static void UpdateAddrValue(string portName, int slvAddr, string addr, int value)
{
try
{
lock (mapObj)
{
string name = portName + "_" + slvAddr;
Dictionary<string, int> map = null;
ComAddrValue.TryGetValue(name, out map);
if (map == null)
{
map = new Dictionary<string, int>();
ComAddrValue.Add(name, map);
}
if (map.ContainsKey(addr))
{
ComAddrValue[name][addr] = value;
}
else
{
ComAddrValue[name].Add(addr, value);
}
}
}
catch (Exception ex)
{
LogUtil.error("UpdateAddrValue出错:" + ex.ToString());
}
}
public static void ClearSpeed()
{
LogUtil.info("清理之前设置保存的速度列表");
ComAddrValue = new Dictionary<string, Dictionary<string, int>>();
}
public static bool OpenPort(string portName)
{
if (serialBeanMap.ContainsKey(portName))
{
return true;
}
int ACBaudRate = ConfigAppSettings.GetIntValue(Setting_Init.ACBaudRate);
if (ACBaudRate <= 0)
{
ACBaudRate = 9600;
}
AcSerialBean bean = new AcSerialBean(portName, ACBaudRate, Parity.Even, 8, StopBits.One);
bool result = bean.openPort();
if (!result)
{
LogUtil.info("打开串口【" + portName + "】【" + ACBaudRate + "】失败");
return false;
}
LogUtil.info("打开串口【" + portName + "】【" + ACBaudRate + "】成功");
//bean.DataReceived += DataReceived;
if (serialBeanMap.ContainsKey(portName))
{
serialBeanMap.Remove(portName);
}
serialBeanMap.Add(portName, bean);
return true;
}
public static void ColsePort(string portName)
{
AcSerialBean bean = GetSerialBean(portName);
if (bean == null)
{
LogUtil.info("串口【" + portName + "】未打开,不需要关闭");
return;
}
//清理缓存
bean.clearInBuffer();
bean.clearOutBuffer();
bean.closePort();
if (serialBeanMap.ContainsKey(portName))
{
serialBeanMap.Remove(portName);
}
LogUtil.info("ACServerManager 关闭串口【" + portName + "】 ");
}
public static void CloseAllPort()
{
List<string> kes = new List<string>(serialBeanMap.Keys);
foreach (string key in kes)
{
ColsePort(key);
}
}
/// <summary>
/// 是否成功打开伺服
/// </summary>
public static bool ServerOnStatus(string portName, int slvAddr)
{
if (!serialBeanMap.ContainsKey(portName))
{
return false ;
}
PreReadCoilAddr = ACCMDManager.ServerOn_Addr;
byte[] dataArray = ACCMDManager.GetWriteData(slvAddr, ACCMDManager.CMD_ReadCoil, PreReadCoilAddr, "0000", 1);
//SendData(portName,dataArray);
byte[] reviceData = SendCommand(portName, dataArray, ReviceOutTimeMS, 6);
int result= GetCoilData(portName, reviceData, PreReadCoilAddr);
//TODO
return result>=1;
}
/// <summary>
/// 是否原点返回完成
/// </summary>
public static bool IsHomeMoveEnd(string portName, int slvAddr)
{
int status = GetHomeEndStatus(portName, slvAddr);
if (status >= 1)
{
return true;
} return false;
}
public static void InitSlvAddr(string portName, int slvAddr)
{
InitSlvAddr(portName, slvAddr, 100, 30, 30 );
//InitSlvAddr(portName, slvAddr, 100, 30, 30, 100, 50, 30);
}
//把数字转换为四位的字符串
public static string SpeedToStr(int speed,int length)
{
string str = String.Format("{0:X}", speed);
return str.PadLeft(length, '0');
}
public static void InitSlvAddr(string portName, int slvAddr,int targetSpeed,int addSpeed,int delSpeed )
//public static void InitSlvAddr(string portName, int slvAddr,int targetSpeed,int addSpeed,int delSpeed,int homeHighSpeed,int homeLowSpeed,int homeAddSpeed)
{
LogUtil.info("开始初始化伺服【" + portName + "】【" + slvAddr + "】");
//写入block
int sleep = 20;
string slvAddrStr = string.Format(strFromat, slvAddr);
//block0=原点返回,正方向
string str0 = slvAddrStr + "104800 000408 00000420 00000000 ffff";
SendStrAndSleep(portName, str0, sleep);
//block1=原点返回,反方向
string str1 = slvAddrStr + "104804 000408 04000420 00000000 ffff";
SendStrAndSleep(portName, str1, sleep);
//block2=绝对位置运动
string str2 = slvAddrStr + "104808 000408 10000211EC78FFFF ffff";
SendStrAndSleep(portName, str2, sleep);
//block3=相对位置运动
string str3 = slvAddrStr + "10480C 000408 10000111EC78FFFF ffff";
SendStrAndSleep(portName, str3, sleep);
//block4=正方向匀速运动
string str4 = slvAddrStr + "104810 000408 10000311 00000000 ffff";
SendStrAndSleep(portName, str4, sleep);
//block5=反方向匀速运动
string str5 = slvAddrStr + "104814 000408 14000311 00000000 ffff";
SendStrAndSleep(portName, str5, sleep);
//block6=减速停止
string str6 = slvAddrStr + "104818 000408 00000500 00000000 ffff";
SendStrAndSleep(portName, str6, sleep);
//block7=紧急停止
string str7 = slvAddrStr + "10481c 000408 00000510 00000000 ffff";
SendStrAndSleep(portName, str7, sleep);
//0106460001009D12
//速度 V1 =100
string v1 = slvAddrStr + "064601 " + SpeedToStr(targetSpeed, 4) + " ffff";
SendStrAndSleep(portName, v1, sleep);
//加速度 A1 =30
string a1 = slvAddrStr + "064611 " + SpeedToStr(addSpeed, 4) + " ffff";
SendStrAndSleep(portName, a1, sleep);
//减速度 D1=30
string d1 = slvAddrStr + "064621 " + SpeedToStr(delSpeed, 4) + " ffff";
SendStrAndSleep(portName, d1, sleep);
////原点返回高速 homeHighSpeed=100
//SendStrAndSleep(portName, slvAddrStr + "06 4637 " + SpeedToStr(homeHighSpeed, 4) + " ffff", sleep);
////原点返回抵速 homeLowSpeed=50
//SendStrAndSleep(portName, slvAddrStr + "06 4638 " + SpeedToStr(homeLowSpeed, 4) + " ffff", sleep);
////原点返回加速度=30
//SendStrAndSleep(portName, slvAddrStr + "06 4639 " + SpeedToStr(homeAddSpeed, 4) + " ffff", sleep);
//UpdateEEPROM(portName, slvAddr);
}
public static void UpdateEEPROM(string portName, int slvAddr)
{
string addr = ACCMDManager.EEPROM_Param_Addr;
string data = "6173";
int length = 2;
byte[] dataArray = ACCMDManager.GetWriteData(slvAddr, ACCMDManager.CMD_WriteRegisters, addr, data, length);
SendData(portName, dataArray, 5);
}
public static void ServoOn(string portName, int slvAddr)
{
string addr = ACCMDManager.ServerOn_Addr;
string data = "FF00";
//byte cmd = 0x05;
int length = 2;
byte[] dataArray = ACCMDManager.GetWriteData(slvAddr, ACCMDManager.CMD_WriteCoil, addr, data, length);
SendData(portName, dataArray);
}
public static void ServoOff(string portName, int slvAddr)
{
string addr = ACCMDManager.ServerOn_Addr;
string data = "0000";
//byte cmd = 0x05;
int length = 2;
byte[] dataArray = ACCMDManager.GetWriteData(slvAddr, ACCMDManager.CMD_WriteCoil, addr, data, length);
SendData(portName, dataArray);
}
public static void RelMove(string portName, int slvAddr, int position,int targetSpeed)
{
//先更新速度
string slvAddrStr = string.Format(strFromat, slvAddr);
string v1 = slvAddrStr + "064601 " + SpeedToStr(targetSpeed, 4) + " ffff";
SendStrAndSleep(portName, v1,SleepMSendons);
RelMove(portName, slvAddr, position);
}
public static void RelMove(string portName, int slvAddr, int position)
{
//int position = Convert.ToInt32(txtPosition.Text);
byte[] positionData = AcSerialBean.StringToByte(position.ToString("X8"));
byte[] data = AcSerialBean.StringToByte("0110480C 000408 10000111EC78FFFF ffff");
data[0] = (byte)slvAddr;
data[data.Length - 1] = 0x00;
data[data.Length - 2] = 0x00;
if (positionData.Length == 4)
{
data[11] = positionData[2];
data[12] = positionData[3];
data[13] = positionData[0];
data[14] = positionData[1];
}
else if (positionData.Length == 3)
{
data[11] = positionData[1];
data[12] = positionData[2];
data[13] = 0x00;
data[14] = positionData[0];
}
else if (positionData.Length == 2)
{
data[11] = positionData[0];
data[12] = positionData[1];
data[13] = 0x00;
data[14] = 0x00;
}
else if (positionData.Length == 1)
{
data[11] = 0x00;
data[12] = positionData[0];
data[13] = 0x00;
data[14] = 0x00;
}
data = ACCMDManager.buildCheckData(data, data.Length - 2);
SendData(portName, data);
System.Threading.Thread.Sleep(SleepMSendons);
UpdateBlock(portName, slvAddr, ACCMDManager.Block_RelMove);
OpenAndCloseSTB(portName, slvAddr);
}
public static void HomeMove(string portName, int slvAddr, int speed)
{
try
{
//先判断是否在原点,如果已经在原点,先向正方向走2000
int homeSingle = GetHomeSingle(portName, slvAddr);
if (homeSingle.Equals(1))
{
int isHomeEnd = GetHomeEndStatus(portName, slvAddr);
if (isHomeEnd.Equals(1))
{
int value = 2000;
LogUtil.info("轴【" + portName +"_"+slvAddr +"】原点返回时发现原点已亮且回过原点,需要先相对走" + value);
RelMove(portName, slvAddr, value);
bool isStop = false;
for (int i = 0; i <= 10; i++)
{
Thread.Sleep(200);
if (GetBusyStatus(portName, slvAddr).Equals(0))
{
isStop = true;
LogUtil.info("轴【" + portName + "_" + slvAddr + "】 相对走" + value + "已结束");
break;
}
}
if (!isStop)
{
LogUtil.info("轴【" + portName + "_" + slvAddr + "】 相对走" + value + "已等待2分钟,直接停止");
SuddenStop(portName, slvAddr);
}
}
else
{
int volSpeed =Math.Abs( speed / 5);
int time = 1500;
LogUtil.info("轴【" + portName + "_" + slvAddr + "】原点返回时发现原点已亮但未回过原点,先匀速向上走"+time+",速度["+ volSpeed + "]" );
//需要匀速向上走
ACServerManager.SpeedMove(portName, slvAddr, volSpeed);
Thread.Sleep(time);
LogUtil.info("轴【" + portName + "_" + slvAddr + "】匀速 已等待" + time + ",直接停止");
SuddenStop(portName, slvAddr);
Thread.Sleep(100);
}
}
}catch(Exception ex)
{
LogUtil.error("轴【" + portName + "_" + slvAddr + "】原点返回前验证是否在原点出错:" + ex.StackTrace);
}
//默认负方向原点返回
UpdateBlock(portName, slvAddr, ACCMDManager.Block_HomeMove1);
Thread.Sleep(SleepMSendons);
OpenAndCloseSTB(portName, slvAddr);
}
public static void SetSpeed(string portName, int slvAddr, int speed)
{
int preSpeed = GetAddrValue(portName, slvAddr, ACCMDManager.Speed_Addr);
if ((preSpeed.Equals(-1)) || (!preSpeed.Equals(Math.Abs(speed))))
{
string v1 = slvAddr + "064601 " + ACServerManager.SpeedToStr(speed, 4) + " ffff";
LogUtil.debug("轴【" + portName + "_" + slvAddr + "】更新速度为【" + speed + "】,发送数据【" + v1 + "】");
Thread.Sleep(SleepMSendons);
for (int i = 1; i <= 3; i++)
{
bool result = SendStrAndSleep(portName, v1, SleepMSendons);
if (result)
{
break;
}
else
{
LogUtil.error("轴【" + portName + "_" + slvAddr + "】更新速度为【" + speed + "】,发送数据【" + v1 + "】,第【" + i + "】次失败");
Thread.Sleep(SleepMSendons);
}
}
UpdateAddrValue(portName, slvAddr, ACCMDManager.Speed_Addr, Math.Abs(speed));
Thread.Sleep(SleepMSendons);
}
}
public static void SpeedMove(string portName, int slvAddr, int speed)
{
SetSpeed(portName, slvAddr, speed);
if (speed > 0)
{
UpdateBlock(portName, slvAddr, ACCMDManager.Block_VolMove0);
}
else
{
UpdateBlock(portName, slvAddr, ACCMDManager.Block_VolMove1);
}
//Thread.Sleep(SleepMSendons);
OpenAndCloseSTB(portName, slvAddr);
}
public static bool isInPosition(ConfigMoveAxis Axis, int PPosition)
{
int outCount = ACServerManager.GetActualtPosition(Axis.DeviceName, Axis.GetAxisValue());
int errorCount = Math.Abs(outCount - PPosition);
if (errorCount <= Axis.CanErrorCountMin)
{
return true;
}
else
{
return false;
}
}
public static void AbsMove(string portName, int slvAddr, int targetPosition, int targetSpeed)
{
//先更新速度
string slvAddrStr = string.Format(strFromat, slvAddr);
int preSpeed = GetAddrValue(portName,slvAddr, ACCMDManager.Speed_Addr);
if ((preSpeed.Equals(-1)) || (!preSpeed.Equals(targetSpeed)))
{
//速度 V1 =100
string v1 = slvAddrStr + "064601 " + SpeedToStr(targetSpeed, 4) + " ffff";
SendStrAndSleep(portName, v1, SleepMSendons);
UpdateAddrValue(portName,slvAddr, ACCMDManager.Speed_Addr, targetSpeed);
}
//绝对运动
AbsMove(portName, slvAddr, targetPosition);
}
public static void AbsMove(string portName, int slvAddr, int position)
{
//int position = Convert.ToInt32(txtPosition.Text, 10);
byte[] positionData = AcSerialBean.StringToByte(position.ToString("X8"));
byte[] data = AcSerialBean.StringToByte("01104808 000408 10000211 EC78FFFF ffff");
data[0] = (byte)slvAddr;
data[data.Length - 1] = 0x00;
data[data.Length - 2] = 0x00;
if (positionData.Length == 4)
{
data[11] = positionData[2];
data[12] = positionData[3];
data[13] = positionData[0];
data[14] = positionData[1];
}
else if (positionData.Length == 3)
{
data[11] = positionData[1];
data[12] = positionData[2];
data[13] = 0x00;
data[14] = positionData[0];
}
else if (positionData.Length == 2)
{
data[11] = positionData[0];
data[12] = positionData[1];
data[13] = 0x00;
data[14] = 0x00;
}
else if (positionData.Length == 1)
{
data[11] = 0x00;
data[12] = positionData[0];
data[13] = 0x00;
data[14] = 0x00;
}
data = ACCMDManager.buildCheckData(data, data.Length - 2);
SendData(portName, data);
Thread.Sleep(SleepMSendons);
UpdateBlock(portName, slvAddr, ACCMDManager.Block_AbsMove);
//data = ACCMDManager.GetWriteData(slvAddr, ACCMDManager.CMD_WriteRegisters, ACCMDManager.BlockNo, ACCMDManager.Block_AbsMove, 2);
//SendData(portName, data);
//Thread.Sleep(SleepMSendons);
OpenAndCloseSTB(portName, slvAddr);
}
}
}
using OnlineStore.Common;
using OnlineStore.LoadCSVLibrary;
using System;
using System.Collections.Generic;
using System.IO.Ports;
using System.Linq;
using System.Text;
using System.Threading;
namespace OnlineStore.DeviceLibrary
{
partial class ACServerManager
{
private static Dictionary<int, Dictionary<string, RegisterInfo>> LastDataMap = new Dictionary<int, Dictionary<string, RegisterInfo>>();
//private static SerialBean bean = null;
private static string strFromat = "{0:X2}";
private static Dictionary<string, AcSerialBean> serialBeanMap = new Dictionary<string, AcSerialBean>();
private static AcSerialBean GetSerialBean(string portName)
{
if (serialBeanMap.ContainsKey(portName))
{
return serialBeanMap[portName];
}
return null;
}
public static bool SendStrAndSleep(string portName, string str, int sleepS)
{
byte[] data = AcSerialBean.StringToByte(str);
data[data.Length - 1] = 0x00;
data[data.Length - 2] = 0x00;
data = ACCMDManager.buildCheckData(data, data.Length - 2);
bool result = SendData(portName, data);
System.Threading.Thread.Sleep(sleepS);
return result;
}
public static void SaveData(string portName, byte slvAddr, string regAddr, int value)
{
if (LastDataMap.ContainsKey(slvAddr))
{
if (LastDataMap[slvAddr].ContainsKey(regAddr))
{
LastDataMap[slvAddr][regAddr] = new RegisterInfo(slvAddr, regAddr, value);
}
else
{
LastDataMap[slvAddr].Add(regAddr, new RegisterInfo(slvAddr, regAddr, value));
}
}
else
{
Dictionary<string, RegisterInfo> map = new Dictionary<string, RegisterInfo>();
map.Add(regAddr, new RegisterInfo(slvAddr, regAddr, value));
LastDataMap.Add(slvAddr, map);
}
}
public static RegisterInfo GetData(string portName, byte slvAddr, string regAddr)
{
if (LastDataMap.ContainsKey(slvAddr))
{
if (LastDataMap[slvAddr].ContainsKey(regAddr))
{
return LastDataMap[slvAddr][regAddr];
}
}
return null;
}
public static void SendData(string portName, byte[] data, int reviceLength)
{
if (data == null)
{
return;
}
byte[] returnData = SendCommand(portName, data, ReviceOutTimeMS, reviceLength);
string strSend = "";
for (int i = 0; i < returnData.Length; i++)
{
strSend += string.Format("{0:X2} ", returnData[i]);
}
if (IsShowMsg)
{
LogUtil.info( "串口" + portName + " 收到数据:" + strSend + "");
}
}
public static bool SendData(string portName, byte[] data)
{
if (data == null)
{
return false;
}
bool result = false;
byte[] returnData = SendCommand(portName, data, ReviceOutTimeMS, 8, out result);
if (returnData != null)
{
string strSend = "";
for (int i = 0; i < returnData.Length; i++)
{
strSend += string.Format("{0:X2} ", returnData[i]);
}
if (IsShowMsg)
{
LogUtil.info("串口" + portName + " 收到数据:" + strSend + "");
}
}
return result;
}
/// <summary>
/// 发送数据并获取返回值
/// </summary>
/// <param name="data">发送的数据</param>
/// <param name="outTime">超时时间</param>
/// <returns>返回值的长度</returns>
public static byte[] SendCommand(string portName, byte[] data, int outTime, int reviceLength)
{
if (outTime <100)
{
outTime = 100;
}
byte[] returnData = null;
try
{
if (data == null)
{
return returnData;
}
string strSend = "";
for (int i = 0; i < data.Length; i++)
{
strSend += string.Format("{0:X2} ", data[i]);
}
if (strSend.Equals(""))
{
return returnData;
}
if (IsShowMsg)
{
LogUtil.info( "串口" + portName + " 写入数据:" + strSend + "");
}
AcSerialBean bean = GetSerialBean(portName);
if (bean == null)
{
LogUtil.debug("ACServerManager SendCommand 试图向未打开串口【" + portName + "】写入数据:" + strSend + "。");
}
else
{
int ret= bean.SendCommand(data, ref returnData, outTime, reviceLength);
if (!ret.Equals(reviceLength))
{
LogUtil.error("串口" + portName + " 写入数据:" + strSend + ",预计返回字节数【"+reviceLength+"】实际返回【"+ret+"】");
}
System.Threading.Thread.Sleep(2);
}
}
catch (Exception ex)
{
LogUtil.info(ex.ToString());
}
return returnData;
}
/// <summary>
/// 发送数据并获取返回值
/// </summary>
/// <param name="data">发送的数据</param>
/// <param name="outTime">超时时间</param>
/// <param name="result">返回结果,是否发送成功</param>
/// <returns>返回值的长度</returns>
public static byte[] SendCommand(string portName, byte[] data, int outTime, int reviceLength,out bool result)
{
if (outTime < 100)
{
outTime = 100;
}
byte[] returnData = null;
result = false;
try
{
if (data == null)
{
return returnData;
}
string strSend = "";
for (int i = 0; i < data.Length; i++)
{
strSend += string.Format("{0:X2} ", data[i]);
}
if (strSend.Equals(""))
{
return returnData;
}
if (IsShowMsg)
{
LogUtil.info("串口" + portName + " 写入数据:" + strSend + "");
}
AcSerialBean bean = GetSerialBean(portName);
if (bean == null)
{
LogUtil.debug("ACServerManager SendCommand 试图向未打开串口【" + portName + "】写入数据:" + strSend + "。");
}
else
{
int ret = bean.SendCommand(data, ref returnData, outTime, reviceLength);
if (!ret.Equals(reviceLength))
{
LogUtil.error("串口" + portName + " 写入数据:" + strSend + ",预计返回字节数【" + reviceLength + "】实际返回【" + ret + "】");
}else
{
result = true ;
}
System.Threading.Thread.Sleep(2);
}
}
catch (Exception ex)
{
LogUtil.info(ex.ToString());
}
return returnData;
}
public static void WriteData(string portName, int slvAddr, string addr, string data, byte cmd, int length)
{
byte[] dataArray = ACCMDManager.GetWriteData(slvAddr, cmd, addr, data, length);
SendData(portName, dataArray);
}
public static void SendStr(string portName, int slvAddr, string str)
{
//string str = txtSendStr.Text;
byte[] data = AcSerialBean.StringToByte(str);
data[data.Length - 1] = 0x00;
data[data.Length - 2] = 0x00;
data = ACCMDManager.buildCheckData(data, data.Length - 2);
SendData(portName, data);
}
public static void Stop(string portName, int slvAddr)
{
//RunBlock(6);
string addr = ACCMDManager.Stop_Addr;
string data = "FF00";
//byte cmd = 0x05;
int length = 2;
byte[] dataArray = ACCMDManager.GetWriteData(slvAddr, ACCMDManager.CMD_WriteCoil, addr, data, length);
SendData(portName, dataArray);
System.Threading.Thread.Sleep(1000);
data = "0000";
dataArray = ACCMDManager.GetWriteData(slvAddr, ACCMDManager.CMD_WriteCoil, addr, data, length);
SendData(portName, dataArray);
}
public static void SuddenStop(ConfigMoveAxis axis)
{
if (GetBusyStatus(axis.DeviceName, axis.GetAxisValue()).Equals(1))
{
SuddenStop(axis.DeviceName, axis.GetAxisValue());
}
}
public static void SuddenStop(string portName, int slvAddr)
{
// RunBlock(7);
string addr = ACCMDManager.SDStop_Addr;
string data = "FF00";
//byte cmd = 0x05;
int length = 2;
byte[] dataArray = ACCMDManager.GetWriteData(slvAddr, ACCMDManager.CMD_WriteCoil, addr, data, length);
SendData(portName, dataArray);
System.Threading.Thread.Sleep(500);
data = "0000";
dataArray = ACCMDManager.GetWriteData(slvAddr, ACCMDManager.CMD_WriteCoil, addr, data, length);
SendData(portName, dataArray);
}
public static void OpenAndCloseSTB(string portName, int slvAddr)
{
OnlyOpenSTB(portName, slvAddr);
System.Threading.Thread.Sleep(200);
CloseSTB(portName, slvAddr);
System.Threading.Thread.Sleep(SleepMSendons);
}
public static void OnlyOpenSTB(string portName, int slvAddr)
{
string addr = ACCMDManager.STB_Addr;
string data = "FF00";
int length = 2;
byte[] dataArray = ACCMDManager.GetWriteData(slvAddr, ACCMDManager.CMD_WriteCoil, addr, data, length);
SendData(portName, dataArray);
}
public static void CloseSTB(string portName, int slvAddr)
{
string addr = ACCMDManager.STB_Addr;
string data = "0000";
int length = 2;
byte[] dataArray = ACCMDManager.GetWriteData(slvAddr, ACCMDManager.CMD_WriteCoil, addr, data, length);
SendData(portName, dataArray);
}
public static void UpdateBlock(string portName, int slvAddr, string blockNum)
{
int preNum = GetAddrValue(portName,slvAddr, ACCMDManager.BlockNo);
if (preNum.Equals(-1) || (!preNum.ToString().Equals(blockNum)))
{
byte[] data = ACCMDManager.GetWriteData(slvAddr, ACCMDManager.CMD_WriteRegisters, ACCMDManager.BlockNo, blockNum , 2);
SendData(portName, data);
int value = Convert.ToInt16(blockNum);
UpdateAddrValue(portName,slvAddr, ACCMDManager.BlockNo, value);
Thread.Sleep(SleepMSendons);
}
}
public static void AlarmClear(string portName, int slvAddr)
{
string addr = ACCMDManager.Clear_Alarm_Addr;
string data = "FF00";
//byte cmd = 0x05;
int length = 2;
byte[] dataArray = ACCMDManager.GetWriteData(slvAddr, ACCMDManager.CMD_WriteCoil, addr, data, length);
SendData(portName, dataArray);
System.Threading.Thread.Sleep(200);
data = "0000";
dataArray = ACCMDManager.GetWriteData(slvAddr, ACCMDManager.CMD_WriteCoil, addr, data, length);
SendData(portName, dataArray);
}
public static void CloseAlarmClear(string portName, int slvAddr)
{
string addr = ACCMDManager.Clear_Alarm_Addr;
string data = "0000";
//byte cmd = 0x05;
int length = 2;
byte[] dataArray = ACCMDManager.GetWriteData(slvAddr, ACCMDManager.CMD_WriteCoil, addr, data, length);
SendData(portName, dataArray);
}
private static string PreReadAddr = "";
private static string PreReadCoilAddr = "";
public static int GetRegisterData(string portName, byte[] reviceData, string Address)
{
if (reviceData != null && reviceData.Length > 0)
{
string strSend = "";
for (int i = 0; i < reviceData.Length; i++)
{
strSend += string.Format("{0:X2} ", reviceData[i]);
}
if (IsShowMsg)
{
LogUtil.info( "串口" + portName + " 收到数据:" + strSend + "");
}
string strFromat = "{0:X2}";
byte slvAddrR = reviceData[0];
int lenth = reviceData[2];
byte cmd = reviceData[1];
if (cmd.Equals(ACCMDManager.CMD_ReadRegisters) && reviceData.Length > 6 && lenth == 4)
{
string str = string.Format(strFromat, reviceData[5]) + string.Format(strFromat, reviceData[6]) + string.Format(strFromat, reviceData[3]) + string.Format(strFromat, reviceData[4]);
int value = Convert.ToInt32(str.Trim().Replace(" ", ""), 16);
SaveData(portName, slvAddrR, Address, value);
return value;
}
}
return -1;
}
public static int GetTargetPosition(string portName, int slvAddr)
{
PreReadAddr = ACCMDManager.TargetPostion;
byte[] dataArray = ACCMDManager.GetWriteData(slvAddr, ACCMDManager.CMD_ReadRegisters, ACCMDManager.TargetPostion, "0000", 2);
// SendData(portName,dataArray);
byte[] reviceData = SendCommand(portName, dataArray, ReviceOutTimeMS, 9);
return GetRegisterData(portName, reviceData, ACCMDManager.TargetPostion);
}
public static int GetActualtPosition(ConfigMoveAxis axis)
{
return GetActualtPosition(axis.DeviceName, axis.GetAxisValue());
}
public static int GetActualtPosition(string portName, int slvAddr)
{
PreReadAddr = ACCMDManager.ActualPosition;
byte[] dataArray = ACCMDManager.GetWriteData(slvAddr, ACCMDManager.CMD_ReadRegisters, ACCMDManager.ActualPosition, "0000", 2);
// SendData(portName,dataArray);
byte[] reviceData = SendCommand(portName, dataArray, ReviceOutTimeMS, 9);
int result = -1;
for (int i = 1; i <= 3; i++)
{
result = GetRegisterData(portName, reviceData, ACCMDManager.ActualPosition);
if (!result.Equals(-1))
{
break;
}
else
{
LogUtil.error("第" + i + "次获取" + portName + "_" + slvAddr + "的实时位置" + result);
}
}
return result;
}
public static int GetCoilData(string portName, byte[] reviceData, string Address)
{
if (reviceData != null && reviceData.Length > 0)
{
string strSend = "";
for (int i = 0; i < reviceData.Length; i++)
{
strSend += string.Format("{0:X2} ", reviceData[i]);
}
if (IsShowMsg)
{
LogUtil.info( "串口" + portName + " 收到数据:" + strSend + "");
}
string strFromat = "{0:X2}";
byte slvAddrR = reviceData[0];
int lenth = reviceData[2];
byte cmd = reviceData[1];
if (cmd.Equals(ACCMDManager.CMD_ReadCoil) && reviceData.Length >= 6 && lenth == 1)
{
string str = string.Format(strFromat, reviceData[3]);
int value = Convert.ToInt32(str.Trim().Replace(" ", ""), 16);
SaveData(portName, slvAddrR, Address, value);
return value;
}
}
return -1;
}
public static int GetAlarmStatus(string portName, int slvAddr)
{
PreReadCoilAddr = ACCMDManager.Alarm_Status;
byte[] dataArray = ACCMDManager.GetWriteData(slvAddr, ACCMDManager.CMD_ReadCoil, PreReadCoilAddr, "0000", 1);
//SendData(portName,dataArray);
byte[] reviceData = SendCommand(portName, dataArray, ReviceOutTimeMS, 6);
return GetCoilData(portName, reviceData, PreReadCoilAddr);
}
public static int GetBusyStatus(string portName, int slvAddr)
{
PreReadCoilAddr = ACCMDManager.BUSYStatus;
byte[] dataArray = ACCMDManager.GetWriteData(slvAddr, ACCMDManager.CMD_ReadCoil, ACCMDManager.BUSYStatus, "0000", 1);
//SendData(portName,dataArray);
byte[] reviceData = SendCommand(portName, dataArray, ReviceOutTimeMS, 6);
return GetCoilData(portName, reviceData, ACCMDManager.BUSYStatus);
}
public static int GetHomeEndStatus(string portName, int slvAddr)
{
PreReadCoilAddr = ACCMDManager.HOME_CMP_Status;
byte[] dataArray = ACCMDManager.GetWriteData(slvAddr, ACCMDManager.CMD_ReadCoil, ACCMDManager.HOME_CMP_Status, "0000", 1);
//SendData(portName,dataArray);
byte[] reviceData = SendCommand(portName, dataArray, ReviceOutTimeMS, 6);
return GetCoilData(portName, reviceData, ACCMDManager.HOME_CMP_Status);
}
public static int GetHomeSingle(string portName, int slvAddr)
{
PreReadCoilAddr = ACCMDManager.Home_Single;
byte[] dataArray = ACCMDManager.GetWriteData(slvAddr, ACCMDManager.CMD_ReadCoil, ACCMDManager.Home_Single, "0000", 1);
byte[] reviceData = SendCommand(portName, dataArray, ReviceOutTimeMS, 6);
return GetCoilData(portName, reviceData, ACCMDManager.Home_Single);
}
/// <summary>
/// 负极限
/// </summary>
public static int GetLimitNegativeSingle(string portName, int slvAddr)
{
PreReadCoilAddr = ACCMDManager.Home_Single;
byte[] dataArray = ACCMDManager.GetWriteData(slvAddr, ACCMDManager.CMD_ReadCoil, ACCMDManager.Limit_Negative_Single, "0000", 1);
byte[] reviceData = SendCommand(portName, dataArray, ReviceOutTimeMS, 6);
return GetCoilData(portName, reviceData, ACCMDManager.Home_Single);
}
/// <summary>
/// 负极限
/// </summary>
public static int GetLimitNegativeSingle(ConfigMoveAxis axis)
{
return GetLimitNegativeSingle(axis.DeviceName, axis.GetAxisValue());
}
/// <summary>
/// 正极限
/// </summary>
public static int GetLimitPositiveSingle(ConfigMoveAxis axis)
{
return GetLimitPositiveSingle(axis.DeviceName, axis.GetAxisValue());
}
/// <summary>
/// 正极限
/// </summary>
public static int GetLimitPositiveSingle(string portName, int slvAddr)
{
PreReadCoilAddr = ACCMDManager.Home_Single;
byte[] dataArray = ACCMDManager.GetWriteData(slvAddr, ACCMDManager.CMD_ReadCoil, ACCMDManager.Limit_Positive_Single, "0000", 1);
byte[] reviceData = SendCommand(portName, dataArray, ReviceOutTimeMS, 6);
return GetCoilData(portName, reviceData, ACCMDManager.Home_Single);
}
}
/// <summary>
/// 记录最后一次获得的寄存器的值
/// </summary>
public class RegisterInfo
{
public RegisterInfo(int slv, string addr, int data)
{
this.SlvAddr = slv;
this.RegisterAddr = addr;
this.LastData = data;
this.LastTime = new DateTime();
}
public int SlvAddr { get; set; }
public string RegisterAddr { get; set; }
public int LastData { get; set; }
public DateTime LastTime { get; set; }
}
}

using OnlineStore.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
namespace OnlineStore.DeviceLibrary
{
public class LEDManager
{
public static Dictionary<string, LEDBaseModule> deviceMap = new Dictionary<string, LEDBaseModule>();
public static byte DefaultLight = 100;
public static int DeviceLedType = ConfigAppSettings.GetIntValue(Setting_Init.DeviceLedType);
public static string ColorRule = ConfigAppSettings.GetValue(Setting_Init.ColorRuleConfig).ToUpper();
public static string DefaultIP = ConfigAppSettings.GetValue(Setting_Init.DefaultDeviceIP);
public static LEDBaseModule GetLedModule(string ip)
{
LEDBaseModule led = null;
if (deviceMap.ContainsKey(ip))
{
led = deviceMap[ip];
}
else
{
led = LEDBaseModule.GetModule(ip);
deviceMap.Add(ip, led);
}
return led;
}
public static void Init()
{
ColorRule = ConfigAppSettings.GetValue(Setting_Init.ColorRuleConfig).ToUpper();
if (ColorRule.Length == 3 && ColorRule.Contains("R") && ColorRule.Contains("G") && ColorRule.Contains("B"))
{
}
else
{
LEDManager.ColorRule = "RGB";
ConfigAppSettings.SaveValue(Setting_Init.ColorRuleConfig, LEDManager.ColorRule);
}
LoadStatusDMX();
}
public static void LoadStatusDMX()
{
StatusLedDmx = new List<int>();
string str = ConfigAppSettings.GetValue(Setting_Init.StatusLedDmx);
if (String.IsNullOrEmpty(str))
{
str = "0";
ConfigAppSettings.SaveValue(Setting_Init.StatusLedDmx, str);
}
string[] array = str.Split(';');
foreach (string s in array)
{
try
{
int a = Convert.ToInt32(s);
StatusLedDmx.Add(a);
}
catch (Exception ex)
{
}
}
}
/// <summary>
/// 1=绿灯,2=黄灯
/// </summary>
public static int CurrLedStatus = -1;
private static List<int> StatusLedDmx = new List<int>();
/// <summary>
/// 打开状态灯
/// </summary>
public static void OpenStatusLights(string color = "green")
{
CloseStatusLights("");
foreach (LEDBaseModule module in deviceMap.Values)
{
List<Light> sLed = new List<Light>();
foreach (int dmx in StatusLedDmx)
{
for (int index = 0; index < module.Max_Light; index++)
{
if ("green".Equals(color))
{
CurrLedStatus = 1;
sLed.Add(Light.GreenLight(dmx, index));
}
else if ("yellow".Equals(color))
{
CurrLedStatus = 2;
sLed.Add(Light.BlueLight(dmx, index));
}
}
}
module.LightOn(sLed.ToArray());
}
}
/// <summary>
/// 关闭状态灯
/// </summary>
/// <param name="color"></param>
public static void CloseStatusLights(string color = "")
{
CurrLedStatus = 0;
foreach (LEDBaseModule module in deviceMap.Values)
{
foreach (int dmx in StatusLedDmx)
{
module.AllLightOff(dmx);
}
}
}
}
public abstract class LEDBaseModule
{
protected ushort Max_DMX = 16;
public int Max_Light = 170;
public string ModuleIP = "";
public static LEDBaseModule GetModule(string ip)
{
//if (LEDManager.DeviceLedType.Equals(1))
//{
// LEDColorModule module = new LEDColorModule(ip);
// return module;
//}
//else if (LEDManager.DeviceLedType.Equals(2))
//{
LEDColorArtNet module = new LEDColorArtNet(ip);
return module;
//}
//else
//{
// LEDSingleModule module = new LEDSingleModule(ip);
// return module;
//}
}
internal LEDBaseModule(string ip)
{
ModuleIP = ip;
}
public abstract void AllLightOff(int dmx = -1);
public abstract void AllLightOn(int dmx = -1);
public abstract void AllLightOn(Light light);
public abstract void OnlyLightOn(params Light[] lights);
public abstract void LightOn(params Light[] lights);
public abstract void LightOff(int dmx, params int[] lightIndexs);
public abstract void LightOff(params Light[] lights);
/// <summary>
/// 打包方法,可以将十六制字符串转成byte[] ,字符串没有空格
/// </summary>
/// <param name="s"></param>
/// <returns></returns>
protected byte[] StringToByte(string s)
{
string temps = s.Replace(" ", "").Replace(":", "");
if (temps.Length % 2 != 0)
{
temps = "0" + temps;
}
byte[] tempb = new byte[temps.Length / 2];
int j = 0;
for (int i = 0; i < temps.Length; i = i + 2, j++)
{
tempb[j] = Convert.ToByte(temps.Substring(i, 2), 16);
}
byte[] send = new byte[j];
Array.Copy(tempb, send, j);
return send;
}
}
public class Light
{
public static string defaultColor = "green";
public static byte defaultR = 0;
public static byte defaultG = 50;
public static byte defaultB = 0;
public static Light DefaultLight(int dmxId, int index)
{
return new Light(dmxId, index, defaultR, defaultG, defaultB, 200);
}
public static Light GetLight(int dmxId, int index, string color = "green")
{
return GetLight(dmxId, index, color, 50);
}
public static Light[] GetLights(int dmxId, string color, params int[] indexes)
{
List<Light> lights = new List<Light>();
foreach (int index in indexes)
{
lights.Add(GetLight(dmxId, index, color));
}
return lights.ToArray();
}
public static Light GetLight(int dmxId, int index, string color, byte bright)
{
color = color.ToLower();
switch (color)
{
case "green":
return GreenLight(dmxId, index, bright);
case "red":
return RedLight(dmxId, index, bright);
case "yellow":
return YellowLight(dmxId, index, bright);
case "blue":
return BlueLight(dmxId, index, bright);
}
return DefaultLight(dmxId, index);
}
public static Light RedLight(int dmxId, int index, byte bright = 50)
{
return new Light(dmxId, index, bright, 0, 0);
}
public static Light YellowLight(int dmxId, int index, byte bright = 50)
{
return new Light(dmxId, index, bright, bright, 0);
}
public static Light BlueLight(int dmxId, int index, byte bright = 50)
{
return new Light(dmxId, index, 0, 0, bright);
}
public static Light GreenLight(int dmxId, int index, byte bright = 50)
{
return new Light(dmxId, index, 0, bright, 0);
}
public static Light CyanLight(int dmxId, int index)
{
return new Light(dmxId, index, 0, 255, 255);
}
public static Light ChocolateLight(int dmxId, int index)
{
return new Light(dmxId, index, 210, 105, 30);
}
public Light(int dmxId, int index, byte Red, byte Green, byte Blue, byte lightValue = 200)
{
this.dmx = dmxId;
this.index = index;
this.Red = Red;
this.Green = Green;
this.Blue = Blue;
this.lightValue = lightValue;
}
public int index { get; set; }
public byte Red { get; set; }
public byte Green { get; set; }
public byte Blue { get; set; }
/// <summary>
/// 单色灯
/// </summary>
public static Light[] GetLights(int dmx, List<int> leds, byte light = 200)
{
Light[] lights = new Light[leds.Count];
int i = 0;
foreach (int led in leds)
{
lights[i] = new Light(dmx, led, light);
i++;
}
return lights;
}
/// <summary>
/// 单色灯
/// </summary>
/// <param name="dmx">区域ID</param>
/// <param name="index">索引号</param>
/// <param name="lightValue">亮度</param>
public Light(int dmx, int index, byte lightValue)
{
this.index = index;
this.dmx = dmx;
this.lightValue = lightValue;
}
public int dmx = -1;
public byte lightValue = LEDManager.DefaultLight;
}
}
using OnlineStore.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;
namespace OnlineStore.DeviceLibrary
{
/// <summary>
/// 三色灯ArtNet协议,RGB,红蓝绿
/// </summary>
public class LEDColorArtNet : LEDBaseModule
{
//private const ushort Max_DMX = 16;
//private int Max_Light = 170;
private int datalength = 512;
private List<byte[]> dmxDatas = null;
private string phyIP = "";
private string phyAddr = "00";
private IPEndPoint iep = null;
internal LEDColorArtNet(string ip) : base(ip)
{
this.phyIP = ip;
if (!String.IsNullOrEmpty(LEDManager.DefaultIP))
{
try
{
string[] array = phyIP.Split('.');
if (array.Length == 4)
{
int addr = Convert.ToInt32(array[3]);
phyAddr = ((byte)addr).ToString("X2");
}
}
catch (Exception ex)
{
LogUtil.error("IP【" + ip + "】解析phyAddr出错:" + ex.ToString());
}
iep = new IPEndPoint(IPAddress.Parse(LEDManager.DefaultIP), 6454);
}
else
{
phyAddr = "00";
iep = new IPEndPoint(IPAddress.Parse(ip), 6454);
}
Max_Light = 170;
Max_DMX = 16;
datalength = 512;
Max_Light = datalength / 3;
dmxDatas = new List<byte[]>(Max_DMX);
AllLightOff();
}
private void InitDatas()
{
dmxDatas = new List<byte[]>(Max_DMX);
for (int i = 0; i < Max_DMX; i++)
{
dmxDatas.Add(new byte[datalength]);
}
}
private void UpdateLightData(int dmx, int index, byte red = 0, byte green = 0, byte blue = 0)
{
int ldmx = dmx;
int lIndex = index;
if (index >= Max_Light)
{
ldmx = index / Max_Light;
lIndex = index % Max_Light;
}
if (ldmx >= dmxDatas.Count)
{
LogUtil.error(" UpdateLightData error: dmx [" + ldmx + "] MAX_UNI[" + Max_DMX + "]");
return;
}
byte[] data = dmxDatas[ldmx];
int redIndex = LEDManager.ColorRule.IndexOf('R');
int greedIndex = LEDManager.ColorRule.IndexOf('G');
int blueIndex = LEDManager.ColorRule.IndexOf('B');
//SPI第二通道为蓝色,DMX第二通道为绿色
data[lIndex * 3+redIndex] = red;
data[lIndex * 3 + greedIndex] = green;
data[lIndex * 3 + blueIndex] = blue;
////SPI第二通道为蓝色,DMX第二通道为绿色
//data[lIndex * 3] = red;
//data[lIndex * 3 + 1] = green;
//data[lIndex * 3 + 2] = blue;
}
public override void AllLightOff(int dmx = -1)
{
InitDatas();
PushToDevice();
}
public override void AllLightOn(int dmx = -1)
{
AllLightOn(Light.DefaultLight(dmx, 1));
}
public override void AllLightOn(Light light)
{
for (int i = 0; i < Max_DMX; i++)
{
byte[] data = dmxDatas[i];
for (int index = 0; index < Max_Light; index++)
{
UpdateLightData(i, index, light.Red, light.Green, light.Blue);
}
}
PushToDevice();
}
/// <summary>
/// 只有某些灯亮,其他灯灭掉
/// </summary>
/// <param name="lights"></param>
public override void OnlyLightOn(params Light[] lights)
{
AllLightOff();
LightOn(lights);
}
/// <summary>
/// 在之前的状态之上点亮某些灯
/// </summary>
/// <param name="lights"></param>
public override void LightOn(params Light[] lights)
{
foreach (Light light in lights)
{
UpdateLightData(light.dmx, light.index, light.Red, light.Green, light.Blue);
}
PushToDevice();
}
public override void LightOff(int dmx, params int[] lightIndexs)
{
foreach (int lightId in lightIndexs)
{
UpdateLightData(dmx, lightId, 0, 0, 0);
}
PushToDevice();
}
public override void LightOff(params Light[] lights)
{
foreach (Light light in lights)
{
UpdateLightData(light.dmx, light.index, 0, 0, 0);
}
PushToDevice();
}
private void PushToDevice()
{
//闲置的时候会有不起作用的情况,这里多发几遍
for (int time = 0; time < 2; time++)
{
UdpClient myUdpClient = new UdpClient();
try
{
for (int i = 0; i < dmxDatas.Count; i++)
{
byte[] toSend = ToSPIData(i, dmxDatas[i]);
myUdpClient.Send(toSend, toSend.Length, iep);
}
}
catch (Exception err)
{
Console.WriteLine("发送失败");
}
finally
{
myUdpClient.Close();
}
}
}
/// <summary>
/// 46:51:35:31:32:4e:65:74: 数据包头[16]
//0b:00: OpCode
//40:
//06: 序列号
//00:
//01: 更新标准:0=写到缓存,未输出到dmxData;1=无缓存,立即输出到dmxData
//03: 0=没有广播,只控制指定域;1=对设备的所有端口广播;2=对某个子网内的所有域广播;3,对网络下的所有子网广播;0xff=对所有网络设备的所有口广播
//34: 字节的高4位为子网,字节的低4位为dmxData域,;子网:0~15,DMX域:0~15;
//02: IP灯光网络地址:0~127
//02:00: 通道数512
//00:00:00: 第0个灯RBG
//00:00:00: 第1个灯RBG
//...: 第n个灯RBG
/// </summary>
/// <returns></returns>
private byte[] ToSPIData(int dmxIndex, byte[] dmxData)
{
string ID = "41:72:74:2D:4E:65:74:00:";// 8字节数据包头: "FQ512Net"
//string head = "46:51:35:31:32:4e:65:74:";// 8字节数据包头: "FQ512Net"
string OpCode = "00:50:"; //指令2字节
string ProVer = "000e";
string seq = "00";
string phy = "00";
phy = phyAddr;
string SubUni = "00";
SubUni = String.Format("{0:X}", dmxIndex).PadLeft(2, '0');
string Net = "00";
int len = dmxData.Length;
string str = String.Format("{0:X}", dmxData.Length).PadLeft(4, '0');
string length = "0200";
length = str;
//string Broadcast = "0";//0=没有广播,只控制指定域;1=对设备的所有端口广播;2=对某个子网内的所有域广播;3,对网络下的所有子网广播;0xff=对所有网络设备的所有口广播
//string SubUni = "00";// IP灯光子网地址:0~255;子网又可分,字节的高4位为子网,字节的低4位为dmxData域,;子网:0~15,DMX域:0~15;
//string net = "" + dmxIndex + "00"; //IP灯光网络地址:0~127
string preStr = ID + OpCode + ProVer + seq + phy + SubUni + Net + length;
// preStr = "4172742d4e657400:0050:";
byte[] preBytes = StringToByte(preStr);
byte[] toSend = new byte[preBytes.Length + dmxData.Length];
Array.Copy(preBytes, 0, toSend, 0, preBytes.Length);
Array.Copy(dmxData, 0, toSend, preBytes.Length, dmxData.Length);
return toSend;
}
//41 72 74 2D 4E 65 74 00 00 20 00 0E 00 00
// Artnet 地址
//Artnet 协议中,设备的设置一般为 X:Y,其中 X 为 subnet, Y 为 universe,均为 16
//进制,共可以容纳 256 个 Universe。此时对应的控台端,当设置对应的 Universe
//的时候应注意 16 进制到 10 进制的转换。比如 Artnet 协议设备端(Arkaos)设
//置为 2:1,则控台端应设备为 16*2+1 = 33.
//控台的 IP 地址应设置为:2.B.C.D ,其中 BCD 为 0-255
//41 72 74 2D 4E 65 74 00 00 50 00 0E 00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OnlineStore.DeviceLibrary
{
public class OKLE
{
private byte[] buffer;
private bool receive;
private System.IO.Ports.SerialPort port;
public OKLE()
{
port = new System.IO.Ports.SerialPort
{
BaudRate = 9600, //设备支持4800,9600,19200,38400,57600,115200
DataBits = 8,
StopBits = System.IO.Ports.StopBits.One,
Parity = System.IO.Ports.Parity.None
};
port.DataReceived += Port_DataReceived;
}
/// <summary>
/// 打开或关闭状态
/// </summary>
public bool IsOpen { get { return port.IsOpen; } }
/// <summary>
/// 打开串口
/// </summary>
/// <param name="comName">串口名</param>
public void Open(string comName)
{
port.PortName = comName;
try
{
port.Open();
}
catch (Exception ex)
{
}
}
/// <summary>
/// 关闭串口
/// </summary>
public void Close()
{
port.Close();
}
/// <summary>
/// 读取数据
/// </summary>
/// <param name="addr">起始地址</param>
/// <returns></returns>
public int Read(short addr)
{
if (!IsOpen) return 0;
byte[] cmd = ReadCmd(addr, 1);
receive = false;
port.Write(cmd, 0, cmd.Length);
bool rtn = WaitReceive();
if (rtn) rtn = SameReturn(cmd);
if (rtn)
{
int num = buffer[3] * 256 + buffer[4];
return num;
}
else
{
return 0;
}
}
/// <summary>
/// 读取数据
/// </summary>
/// <param name="addr">起始地址</param>
/// <param name="count">寄存器数量</param>
/// <returns></returns>
public int[] Read(short addr, short count)
{
if (!IsOpen) return null;
byte[] cmd = ReadCmd(addr, count);
receive = false;
port.Write(cmd, 0, cmd.Length);
bool rtn = WaitReceive();
if (rtn) rtn = SameReturn(cmd);
if (rtn)
{
int len = buffer[2]; //字节数
int[] num = new int[len / 2];
for (int i = 0; i < num.Length; i++)
{
int idx = 3 + i * 2;
num[i] = buffer[idx] * 256 + buffer[idx + 1];
}
return num;
}
else
{
return null;
}
}
/// <summary>
/// 等待数据接收
/// </summary>
/// <returns></returns>
private bool WaitReceive()
{
int sum = 0;
while (true)
{
System.Threading.Thread.Sleep(50);
sum += 50;
if (receive) return true;
if (!IsOpen) return false;
if (sum >= 3000) return false;
}
}
/// <summary>
/// 串口数据接收
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Port_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
System.Threading.Thread.Sleep(50);
byte[] buff = new byte[port.ReadBufferSize];
int len = port.Read(buff, 0, buff.Length);
Array.Copy(buff, buffer, len);
receive = true;
}
/// <summary>
/// CRC16冗余校验
/// </summary>
/// <param name="buff"></param>
/// <param name="count"></param>
/// <param name="high"></param>
/// <param name="low"></param>
private void CRC16(byte[] buff, int count, out byte high, out byte low)
{
int crc = 0xFFFF;
int bit;
for (int i = 0; i < count; i++)
{
crc ^= buff[i];
for (int j = 0; j < 8; j++)
{
bit = crc & 1;
crc >>= 1;
if (bit == 0)
{
//crc >>= 1;
}
else
crc ^= 0xA001;
}
}
low = Convert.ToByte(crc & 255);
high = Convert.ToByte((crc >> 8) & 255);
}
/// <summary>
/// 读取命令,功能码03
/// </summary>
/// <param name="addr"></param>
/// <param name="count"></param>
/// <returns></returns>
private byte[] ReadCmd(short addr, short count)
{
byte[] addrArr = BitConverter.GetBytes(addr);
byte[] countArr = BitConverter.GetBytes(count);
byte[] cmd = new byte[8];
cmd[0] = 0x01; //模块地址
cmd[1] = 0x03; //功能码
cmd[2] = addrArr[1]; //高8位
cmd[3] = addrArr[0]; //低8位
cmd[4] = countArr[1]; //高8位
cmd[5] = countArr[0]; //低8位
//CRC16校验
CRC16(cmd, 6, out byte high, out byte low);
cmd[6] = low;
cmd[7] = high;
return cmd;
}
/// <summary>
/// 判断是同一条命令的返回值
/// </summary>
/// <param name="cmd"></param>
/// <returns></returns>
private bool SameReturn(byte[] cmd)
{
//同一个功能码应答
if (cmd[0] == buffer[0] && cmd[1] == buffer[1])
{
//CRC校验是否相同
int len = cmd.Length - 2;
CRC16(cmd, len, out byte high, out byte low);
return cmd[len] == low && cmd[len + 1] == high;
}
else
{
return false;
}
}
}
}
using OnlineStore.Common;
using System;
using System.Collections.Generic;
using System.IO.Ports;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OnlineStore.DeviceLibrary
{
public class OKLEController
{
private static int bautRate = 9600;//波特率
private static Parity parity = Parity.None;//校验位
private static int dataBits = 8;//数据位
private static StopBits stopBits = StopBits.One; //停止位
private static Dictionary<string, AcSerialBean> SerialMap = new Dictionary<string, AcSerialBean>();
private static string LogName = "";
private static AcSerialBean GetSerialBean(string port)
{
if (SerialMap.ContainsKey(port))
{
return SerialMap[port];
}
return null;
}
public static void OpenAll(string[] ports)
{
foreach (string port in ports)
{
Init(port);
}
}
public static bool Init(string port)
{
if (SerialMap.ContainsKey(port))
{
return true;
}
LogName = "[OKLE_" + port + "]";
AcSerialBean sb = new AcSerialBean(port, bautRate, parity, dataBits, stopBits);
try
{
if (sb.openPort())
{
if (SerialMap.ContainsKey(port))
{
SerialMap.Remove(port);
}
SerialMap.Add(port, sb);
return true;
}
else
{
LogUtil.error(LogName + "串口打开失败!");
return false;
}
}
catch (Exception ex)
{
LogUtil.error(LogName + "打开出错:" + ex.ToString());
}
return true;
}
public static bool IsRun(string port)
{
if (GetSerialBean(port) != null)
{
return true;
}
return false;
}
/// <summary>
/// 释放资源
/// </summary>
public static void Release(params string[] ports)
{
if (ports.Length <= 0)
{
ports = (new List<string>(SerialMap.Keys)).ToArray();
}
foreach (string port in ports)
{
try
{
AcSerialBean sb = GetSerialBean(port);
if (sb != null)
{
sb.closePort();
}
//IsRun = false;
SerialMap.Remove(port);
}
catch (Exception ex)
{
LogUtil.error("Release OKLE port [" + port + "] error :" + ex.ToString());
}
}
}
public static bool Reset(string port)
{
AcSerialBean sb = GetSerialBean(port);
if (sb == null)
{
return false;
}
LogName = "[OKLE_" + port + "]";
//12.1.4执行手动置零
//指令格式:01 10 00 5E 00 01 02 00 01 6A EE
byte[] sendData = new byte[11];
sendData[0] = 0x01;
sendData[1] = 0x10;
sendData[2] = 0x00;
sendData[3] = 0x5E;
sendData[4] = 0x00;
sendData[5] = 0x01;
sendData[6] = 0x02;
sendData[7] = 0x00;
sendData[8] = 0x01;
sendData[9] = 0x00;
sendData[10] = 0x00;
sendData = buildCheckData(sendData, sendData.Length - 2);
string str = AcSerialBean.byteToHexStr(sendData);
LogUtil.debug(LogName + "发送数据:" + str);
byte[] reviceData = new byte[9];
bool isOk = false;
sb.SendCommand(sendData, ref reviceData, 100, out isOk);
return isOk;
}
public static double queryData(string port)
{
double weight = 0d;
AcSerialBean sb = GetSerialBean(port);
if (sb == null)
{
return weight;
}
LogName = "[OKLE_" + port + "]";
//12..1.2读取力值(毛重)指令,指令格式:01 03 00 50 00 02 C4 1A
byte[] sendData = new byte[8];
sendData[0] = 0x01;
sendData[1] = 0x03;
sendData[2] = 0x00;
sendData[3] = 0x50;
sendData[4] = 0x00;
sendData[5] = 0x02;
sendData[6] = 0x00;
sendData[7] = 0x00;
sendData = buildCheckData(sendData, sendData.Length - 2);
string str = AcSerialBean.byteToHexStr(sendData);
LogUtil.debug(LogName + "发送数据:" + str);
byte[] reviceData = new byte[9];
bool isOk = false;
sb.SendCommand(sendData, ref reviceData, 100, out isOk);
return getReviceData(reviceData);
}
private static double getReviceData(byte[] dataArray)
{
double value = 0d;
try
{
if (dataArray.Length >= 9)
{
//返回格式:01 03 04 FF FF C1 F0 AB C3(数据根据实际情况变化)
//地址 功能码 字节数 第一组寄存器数据 第二组寄存器数据 CRC16校验
//01 03 04 FF FF C1 F0 AB C3
string highV = String.Format("{0:X2}", dataArray[3]) + String.Format("{0:X2}", dataArray[4]);
string lowV = String.Format("{0:X2}", dataArray[5]) + String.Format("{0:X2}", dataArray[6]);
value = (double)Convert.ToInt32(highV + lowV, 16) / 10000;
}
}
catch (Exception ex)
{
LogUtil.info(LogName + "转换出错:" + ex.ToString());
}
return value;
}
private static byte[] buildCheckData(byte[] sendData, int length)
{
ushort pChecksum = 0;
AcSerialBean.CalculateCRC(sendData, length, out pChecksum);
string checkStr = Convert.ToString(pChecksum, 16);
byte[] checkByte = AcSerialBean.StringToByte(checkStr);
if (checkByte.Length == 1)
{
sendData[length] = checkByte[0];
sendData[length + 1] = 0x00;
}
else
{
sendData[length + 1] = checkByte[0];
sendData[length] = checkByte[1];
}
return sendData;
}
}
}
...@@ -9,8 +9,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -9,8 +9,7 @@ namespace OnlineStore.DeviceLibrary
public class InOutParam public class InOutParam
{ {
public MoveType paramType = MoveType.None; public MoveType paramType = MoveType.None;
public InOutParam(MoveType type, string posId, string code = "", int plateH = 0, int plateW = 0,int weight=0, public InOutParam(MoveType type, string posId, string code = "", int plateH = 0, int plateW = 0)
string targetPosId="",string targetCode="",int targetWeight=0,int stirSeconds=0)
{ {
position = null; position = null;
PosCode = code; PosCode = code;
...@@ -19,10 +18,6 @@ namespace OnlineStore.DeviceLibrary ...@@ -19,10 +18,6 @@ namespace OnlineStore.DeviceLibrary
this.PlateW = plateW; this.PlateW = plateW;
this.PlateH = plateH; this.PlateH = plateH;
this.paramType = type; this.paramType = type;
this.TarPosId = targetPosId;
this.TarPosCode = targetCode;
this.TarWeight = targetWeight;
this.StirSecsond = stirSeconds;
} }
public InOutParam(MoveType paramType, string posId, StoreMoveP linePosition, string wareNo = "") public InOutParam(MoveType paramType, string posId, StoreMoveP linePosition, string wareNo = "")
...@@ -33,58 +28,29 @@ namespace OnlineStore.DeviceLibrary ...@@ -33,58 +28,29 @@ namespace OnlineStore.DeviceLibrary
MoveP = linePosition; MoveP = linePosition;
this.paramType = paramType; this.paramType = paramType;
} }
public static InOutParam NewMovePosParam(string posId,string code,int weight, string targetPosId,string tcode,int tweight)
{
InOutParam p = new InOutParam(MoveType.MovePos, posId,code,0,0,weight,targetPosId, tcode, tweight);
return p;
}
public static InOutParam NewStirParam(string posId1, string code1, int weight1, string targetPosId2, string tcode2, int tweight2,int stirSeconds)
{
InOutParam p = new InOutParam(MoveType.MovePos, posId1,code1,0,0,weight1,targetPosId2,tcode2,tweight2, stirSeconds);
return p;
}
public string ToStr() public string ToStr()
{ {
string doorT = "中间夹具"; if (paramType.Equals(MoveType.InStore))
if (DoorPosType.Equals(1))
{
doorT = "左侧锡膏";
}
else if (DoorPosType.Equals(1))
{ {
doorT = "右侧锡膏"; return "【入库:" + PosId + " ,[" + PosCode + "][" + PlateW + "X" + PlateH + "]】";
}
if (paramType.Equals(MoveType.MovePos))
{
return "【回温移库:" + PosId + " -> " + TarPosId + ",[" + PosCode + "][" + PlateW + "X" + PlateH + "]】";
}
else if (paramType.Equals(MoveType.Stirring))
{
return "【搅拌:" + PosId + "([" + Weight + "][" + PosCode + "]) -> " + TarPosId + "([" + TarWeight + "][" + TarPosCode + "]) 】";
}
else if (paramType.Equals(MoveType.InStore))
{
return "【入库:" + doorT + " -> " + PosId + ",[" + PosCode + "][" + PlateW + "X" + PlateH + "]】";
} }
else if (paramType.Equals(MoveType.OutStore)) else if (paramType.Equals(MoveType.OutStore))
{ {
return "【出库:" + PosId + " -> " + doorT + ",[" + PosCode + "][" + PlateW + "X" + PlateH + "]】"; return "【出库:" + PosId + ",[" + PosCode + "][" + PlateW + "X" + PlateH + "]】";
} }
return "[" + PosId + "][" + PosCode + "][" + PlateW + "X" + PlateH + "]"; return "[" + PosId + "][" + PosCode + "][" + PlateW + "X" + PlateH + "]";
} }
private VerticalStorePosition position = null; private VerticalPosition position = null;
public VerticalStorePosition Position public VerticalPosition Position
{ {
get get
{ {
if (position == null) if (position == null)
{ {
position = CSVPositionReader<VerticalStorePosition>.GetPositon(PosId); position = CSVPositionReader<VerticalPosition>.GetPositon(PosId);
} }
return position; return position;
} }
...@@ -98,10 +64,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -98,10 +64,7 @@ namespace OnlineStore.DeviceLibrary
/// 位置坐标名(对应配置表的位置) /// 位置坐标名(对应配置表的位置)
/// </summary> /// </summary>
public string PosId = ""; public string PosId = "";
/// <summary>
/// 门类型,0=中间夹具,1=左侧锡膏,2=右侧锡膏
/// </summary>
public int DoorPosType = 0;
public StoreMoveP MoveP { get; set; } public StoreMoveP MoveP { get; set; }
/// <summary> /// <summary>
...@@ -113,47 +76,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -113,47 +76,7 @@ namespace OnlineStore.DeviceLibrary
/// </summary> /// </summary>
public int PlateW = 0; public int PlateW = 0;
/// <summary>
/// 重量 单位 g
/// </summary>
public int Weight = 0;
/// <summary>
/// 搅拌时间,秒
/// </summary>
public int StirSecsond = 600;
/// <summary>
/// 目标库位号,回温移库时表示回温区库位
/// </summary>
public string TarPosId = "";
public string TarPosCode = "";
public int TarWeight = 0;
private VerticalStorePosition tarPosition = null;
public VerticalStorePosition TarPosition
{
get
{
if (tarPosition == null)
{
tarPosition = CSVPositionReader<VerticalStorePosition>.GetPositon(TarPosId);
}
return tarPosition;
}
}
public string GetDoorTinCheck()
{
if (DoorPosType.Equals(1))
{
return IO_Type.TinCheck_DoorLeft;
}
else
{
return IO_Type.TinCheck_DoorRight;
}
}
internal bool LoadParam(VerticalStoreConfig Config) internal bool LoadParam(VerticalStoreConfig Config)
{ {
...@@ -162,50 +85,14 @@ namespace OnlineStore.DeviceLibrary ...@@ -162,50 +85,14 @@ namespace OnlineStore.DeviceLibrary
if (MoveP == null) if (MoveP == null)
{ {
StoreMoveP p = new StoreMoveP(); StoreMoveP p = new StoreMoveP();
VerticalStorePosition position = Position; VerticalPosition position = Position;
if (position == null) if (position == null)
{ {
LogUtil.error("出入库时发现param中取到的Position=null,没有库位不能执行出入库"); LogUtil.error("出入库时发现param中取到的Position=null,没有库位不能执行出入库");
return false; return false;
} }
p.InOut_P1 = Config.InOutAxis_P1;
p.Middle_P1 = Config.MiddleAxis_P1;
p.InOut_P2 = Config.InOutAxis_P20;
p.UpDown_P1 = Config.UpDownAxis_OL_P1;
p.UpDown_P8 = Config.UpDownAxis_IL_P8;
p.UpDown_P2 = Config.UpDownAxis_IH_P2;
p.UpDown_P7 = Config.UpDownAxis_OH_P7;
if (this.DoorPosType.Equals(1) || this.DoorPosType.Equals(2))
{
p.UpDown_P1 = Config.UpDownAxis_OL_P11;
p.UpDown_P8 = Config.UpDownAxis_IL_P81;
p.UpDown_P2 = Config.UpDownAxis_IH_P21;
p.UpDown_P7 = Config.UpDownAxis_OH_P71;
}
if (this.DoorPosType.Equals(1))
{
p.Middle_P1 = Config.MiddleAxis_P11;
p.InOut_P2 = Config.InOutAxis_P21;
}
else if (this.DoorPosType.Equals(2))
{
p.Middle_P1 = Config.MiddleAxis_P12;
p.InOut_P2 = Config.InOutAxis_P22;
}
p.Warm_P2 = position.WarmAxis_P2;
p.Cold_P2 = position.ColdAxis_P2;
p.InOut_P3 = position.InOutAxis_P3;
p.Middle_P2 = position.MiddleAxis_P2; p.Middle_P2 = position.MiddleAxis_P2;
p.UpDown_P3 = position.UpDownAxis_IH_P3;
p.UpDown_P4 = position.UpDownAxis_IL_P4;
p.UpDown_P5 = position.UpDownAxis_OH_P5;
p.UpDown_P6 = position.UpDownAxis_OL_P6;
this.MoveP = p; this.MoveP = p;
return true; return true;
} }
...@@ -216,31 +103,14 @@ namespace OnlineStore.DeviceLibrary ...@@ -216,31 +103,14 @@ namespace OnlineStore.DeviceLibrary
{ {
get get
{ {
string doorT = "中间夹具";
if (DoorPosType.Equals(1))
{
doorT = "左侧锡膏";
}
else if (DoorPosType.Equals(1))
{
doorT = "右侧锡膏";
}
if (paramType.Equals(MoveType.MovePos)) if (paramType.Equals(MoveType.InStore))
{
return "【回温移库:" + PosId + " -> " + TarPosId + "】";
}
else if (paramType.Equals(MoveType.Stirring))
{
return "【搅拌:" + PosId + " -> " + TarPosId + "】";
}
else if (paramType.Equals(MoveType.InStore))
{ {
return "【入库:" + doorT + " -> " + PosId + "】"; return "【入库:" + PosId + "】";
} }
else if (paramType.Equals(MoveType.OutStore)) else if (paramType.Equals(MoveType.OutStore))
{ {
return "【出库:" + PosId + " -> " + doorT + "】"; return "【出库:" + PosId + "】";
} }
else else
{ {
......
...@@ -128,15 +128,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -128,15 +128,7 @@ namespace OnlineStore.DeviceLibrary
isInPro = false; isInPro = false;
break; break;
case MoveType.MovePos:
MovementProcess();
isInPro = false;
break;
case MoveType.Stirring:
StirringProcess();
isInPro = false;
break;
default: break; default: break;
} }
} }
...@@ -215,8 +207,6 @@ namespace OnlineStore.DeviceLibrary ...@@ -215,8 +207,6 @@ namespace OnlineStore.DeviceLibrary
/// </summary> /// </summary>
protected abstract void ResetProcess(); protected abstract void ResetProcess();
protected abstract void StirringProcess();
protected abstract void MovementProcess();
/// <summary> /// <summary>
/// 松下伺服轴原点返回运动,等待收到反馈后才会返回 /// 松下伺服轴原点返回运动,等待收到反馈后才会返回
/// </summary> /// </summary>
......
...@@ -9,120 +9,9 @@ namespace OnlineStore.DeviceLibrary ...@@ -9,120 +9,9 @@ namespace OnlineStore.DeviceLibrary
public class StoreMoveP public class StoreMoveP
{ {
/// <summary> /// <summary>
/// 轴3进出轴 待机原位点P1
/// </summary>
public int InOut_P1 = 0;
#region 仓门口位置
/// <summary>
/// 轴2( 升降轴) 进料口取料点 P1
/// </summary>
public int UpDown_P1 = 0;
/// <summary>
/// 轴2( 升降轴) 进料口出料前点P2
/// </summary>
public int UpDown_P2 = 0;
/// <summary>
/// 轴2( 升降轴) 进料口取料缓冲点P7
/// </summary>
public int UpDown_P7 = 0;
/// <summary>
/// 轴2( 升降轴) 进料口出料缓冲点P8
/// </summary>
public int UpDown_P8 = 0;
/// <summary>
/// 轴1旋转轴 待机原位点 P1
/// </summary>
public int Middle_P1 = 0;
/// <summary>
/// 轴3进出轴 进料口取料点P2
/// </summary>
public int InOut_P2 = 0;
#endregion
#region 库位点
/// <summary>
/// 轴2( 升降轴) 库位入料前点P3
/// </summary>
public int UpDown_P3 = 0;
/// <summary>
/// 轴2( 升降轴) 库位入料缓冲点P4
/// </summary>
public int UpDown_P4 = 0;
/// <summary>
/// 轴2( 升降轴) 库位出料前点P5
/// </summary>
public int UpDown_P5 = 0;
/// <summary>
/// 轴2( 升降轴) 库位出料缓冲点P6
/// </summary>
public int UpDown_P6 = 0;
/// <summary>
/// 轴1旋转轴 库位点 P2 /// 轴1旋转轴 库位点 P2
/// </summary> /// </summary>
public int Middle_P2 = 0; public int Middle_P2 = 0;
/// <summary>
/// 轴3进出轴 库位点取料点P3
/// </summary>
public int InOut_P3 = 0;
#endregion
#region 目标库位点
/// <summary>
/// 轴2( 升降轴) 库位入料前点P3
/// </summary>
public int T_UpDown_P3 = 0;
/// <summary>
/// 轴2( 升降轴) 库位入料缓冲点P4
/// </summary>
public int T_UpDown_P4 = 0;
/// <summary>
/// 轴2( 升降轴) 库位出料前点P5
/// </summary>
public int T_UpDown_P5 = 0;
/// <summary>
/// 轴2( 升降轴) 库位出料缓冲点P6
/// </summary>
public int T_UpDown_P6 = 0;
/// <summary>
/// 轴1旋转轴 库位点 P2
/// </summary>
public int T_Middle_P2 = 0;
/// <summary>
/// 轴3进出轴 库位点取料点P3
/// </summary>
public int T_InOut_P3 = 0;
#endregion
/// <summary>
/// (轴四)回温区旋转轴库位点P2
/// </summary>
public int Warm_P2 = 0;
/// <summary>
///(轴五)冷藏区旋转轴库位点P2
/// </summary>
public int Cold_P2 = 0;
/// <summary>
///(轴六)搅拌旋转轴 搅拌点
/// </summary>
public int StirAxis_P = 0;
} }
} }
...@@ -340,13 +340,6 @@ namespace OnlineStore.DeviceLibrary ...@@ -340,13 +340,6 @@ namespace OnlineStore.DeviceLibrary
/// 出库 /// 出库
/// </summary> /// </summary>
OutStore = 6, OutStore = 6,
/// <summary>
/// 回温移库
/// </summary>
MovePos = 7,
/// <summary>
/// 搅拌
/// </summary>
Stirring = 8,
} }
} }
...@@ -47,7 +47,7 @@ ...@@ -47,7 +47,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="CSVExection.cs" /> <Compile Include="CSVExection.cs" />
<Compile Include="position\VerticalStorePosition.cs" /> <Compile Include="position\VerticalPosition.cs" />
<Compile Include="storeConfig\ConfigItemBase.cs" /> <Compile Include="storeConfig\ConfigItemBase.cs" />
<Compile Include="storeConfig\ConfigProAttribute.cs" /> <Compile Include="storeConfig\ConfigProAttribute.cs" />
<Compile Include="storeConfig\config\VerticalStoreConfig.cs" /> <Compile Include="storeConfig\config\VerticalStoreConfig.cs" />
......
...@@ -21,12 +21,12 @@ namespace OnlineStore.LoadCSVLibrary ...@@ -21,12 +21,12 @@ namespace OnlineStore.LoadCSVLibrary
/// <summary> /// <summary>
/// 高 /// 高
/// </summary> /// </summary>
[CSVAttribute("高度")] [CSVAttribute("料盒高度")]
public int BagHigh { get; set; } public int BagHigh { get; set; }
/// <summary> /// <summary>
/// 宽 /// 宽
/// </summary> /// </summary>
[CSVAttribute("宽度")] [CSVAttribute("料盒宽度")]
public int BagWidth { get; set; } public int BagWidth { get; set; }
} }
} }
using OnlineStore.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace OnlineStore.LoadCSVLibrary
{
/// <summary>
/// 松下伺服485控制,单台料仓
/// </summary>
public class VerticalPosition : PostionBase
{
/// <summary>
/// 对应的料仓ID(流水线料仓需要用此字段区分哪个BOX)
/// </summary>
[CSVAttribute("料仓ID")]
public int StoreId { get; set; }
/// <summary>
/// 库位类型 ,1=小料盒,2=大料盒
/// </summary>
[CSVAttribute("库位类型")]
public int PosType { get; set; }
/// <summary>
/// 料斗旋转轴位置P2
/// </summary>
[CSVAttribute("料斗旋转轴位置P2")]
public int MiddleAxis_P2 { get; set; }
/// <summary>
/// 亮灯索引
/// </summary>
[CSVAttribute("亮灯索引")]
public string Led_Index { get; set; }
public static bool CheckPosition(VerticalPosition position, VerticalStoreConfig Config)
{
try
{
if (Config.Middle_Axis.PositionIsHasLimit())
{
int mMin = Config.Middle_Axis.PositionMin;
int mMax = Config.Middle_Axis.PositionMax;
if (mMin > position.MiddleAxis_P2 || mMax < position.MiddleAxis_P2)
{
LogUtil.error(position.PositionNum + " MiddleAxis_Position_P2位置超出" + Config.Middle_Axis.Explain + "上下限(" + mMin + "-" + mMax + ")");
return false;
}
}
}
catch (Exception ex)
{
LogUtil.error("验证" + position.PositionNum + "的位置范围出错:" + ex.ToString());
}
return true;
}
public string PosTypeStr()
{
if (PosType.Equals(1))
{
return "小料盒";
}
else
{
return "大料盒";
}
}
}
}
using OnlineStore.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace OnlineStore.LoadCSVLibrary
{
/// <summary>
/// 松下伺服485控制,单台料仓
/// </summary>
public class VerticalStorePosition : PostionBase
{
/// <summary>
/// 对应的料仓ID(流水线料仓需要用此字段区分哪个BOX)
/// </summary>
[CSVAttribute("料仓ID")]
public int StoreId { get; set; }
/// <summary>
/// 库位类型 (1=冷藏区库位,2=回温区库位,>=100的为砝码区)
/// </summary>
[CSVAttribute("库位类型")]
public int PosType { get; set; }
/// <summary>
/// 中轴位置(旋转轴库位点)P2
/// </summary>
[CSVAttribute("旋转轴位置P2")]
public int MiddleAxis_P2 { get; set; }
/// <summary>
/// 升降轴(库位出料前点)P5
/// </summary>
[CSVAttribute("升降轴库位出料前点P5")]
public int UpDownAxis_OH_P5 { get; set; }
/// <summary>
/// 升降轴(库位出料缓冲点)P6
/// </summary>
[CSVAttribute("升降轴库位出料缓冲点P6")]
public int UpDownAxis_OL_P6 { get; set; }
/// <summary>
/// 升降轴(库位入料前点)P3
/// </summary>
[CSVAttribute("升降轴库位入料前点P3")]
public int UpDownAxis_IH_P3 { get; set; }
/// <summary>
/// 升降轴(库位入料缓冲点)P4
/// </summary>
[CSVAttribute("升降轴库位入料缓冲点P4")]
public int UpDownAxis_IL_P4 { get; set; }
/// <summary>
/// 进出轴(库位点取料点)P3
/// </summary>
[CSVAttribute("进出轴库位点取料点P3")]
public int InOutAxis_P3 { get; set; }
/// <summary>
/// 回温区旋转轴库位点P2
/// </summary>
[CSVAttribute("回温区旋转轴库位点P2")]
public int WarmAxis_P2 { get; set; }
/// <summary>
/// 冷藏区旋转轴P2
/// </summary>
[CSVAttribute("冷藏区旋转轴库位点P2")]
public int ColdAxis_P2 { get; set; }
public static bool CheckPosition(VerticalStorePosition position, VerticalStoreConfig Config)
{
try
{
if (Config.Middle_Axis.PositionIsHasLimit())
{
int mMin = Config.Middle_Axis.PositionMin;
int mMax = Config.Middle_Axis.PositionMax;
if (mMin > position.MiddleAxis_P2 || mMax < position.MiddleAxis_P2)
{
LogUtil.error(position.PositionNum + " MiddleAxis_Position_P2位置超出" + Config.Middle_Axis.Explain + "上下限(" + mMin + "-" + mMax + ")");
return false;
}
}
if (Config.InOut_Axis.PositionIsHasLimit())
{
int iMin = Config.InOut_Axis.PositionMin;
int iMax = Config.InOut_Axis.PositionMax;
//if (iMin > position.InOutAxis_DoorPosition_P2 || iMax < position.InOutAxis_DoorPosition_P2)
//{
// LogUtil.error(position.PositionNum + " InOutAxis_DoorPosition_P2位置超出" + Config.InOut_Axis.Explain + "上下限(" + iMin + "-" + iMax + ")");
// return false;
//}
if (iMin > position.InOutAxis_P3 || iMax < position.InOutAxis_P3)
{
LogUtil.error(position.PositionNum + " InOutAxis_P3 位置超出" + Config.InOut_Axis.Explain + "上下限(" + iMin + "-" + iMax + ")");
return false;
}
}
if (Config.UpDown_Axis.PositionIsHasLimit())
{
int uMin = Config.UpDown_Axis.PositionMin;
int uMax = Config.UpDown_Axis.PositionMax;
if (uMin > position.UpDownAxis_IH_P3 || uMax < position.UpDownAxis_IH_P3)
{
LogUtil.error(position.PositionNum + " UpDownAxis_IH_P3 位置超出" + Config.UpDown_Axis.Explain + "上下限(" + uMin + "-" + uMax + ")");
return false;
}
if (uMin > position.UpDownAxis_IL_P4 || uMax < position.UpDownAxis_IL_P4)
{
LogUtil.error(position.PositionNum + " UpDownAxis_IL_P4 位置超出" + Config.UpDown_Axis.Explain + "上下限(" + uMin + "-" + uMax + ")");
return false;
}
if (uMin > position.UpDownAxis_OH_P5 || uMax < position.UpDownAxis_OH_P5)
{
LogUtil.error(position.PositionNum + " UpDownAxis_OH_P5 位置超出" + Config.UpDown_Axis.Explain + "上下限(" + uMin + "-" + uMax + ")");
return false;
}
if (uMin > position.UpDownAxis_OL_P6 || uMax < position.UpDownAxis_OL_P6)
{
LogUtil.error(position.PositionNum + " UpDownAxis_OL_P6 位置超出" + Config.UpDown_Axis.Explain + "上下限(" + uMin + "-" + uMax + ")");
return false;
}
}
}
catch (Exception ex)
{
LogUtil.error("验证" + position.PositionNum + "的位置范围出错:" + ex.ToString());
}
return true;
}
public string PosTypeStr()
{
if (PosType.Equals(1))
{
return "冷藏区库位";
}
else if (PosType.Equals(2))
{
return "回温区库位";
}
else
{
return "砝码" + PosType + "g库位";
}
}
/// <summary>
/// 是否是锡膏库位
/// </summary>
/// <returns></returns>
public bool IsTieBag()
{
if (BagWidth.Equals(50) && BagHigh.Equals(50))
{
return true;
}
return false;
}
}
}
...@@ -26,130 +26,68 @@ namespace OnlineStore.LoadCSVLibrary ...@@ -26,130 +26,68 @@ namespace OnlineStore.LoadCSVLibrary
return TypeList; return TypeList;
} }
/// <summary> /// <summary>
/// DI,急停,SuddenStop_BTN,0,192.168.200.21,0,急停,X01,X01,0, /// DI,急停,SuddenStop_BTN,0,192.168.200.21,急停,X01,X01,,,,,,,,,,
/// </summary> /// </summary>
public static string SuddenStop_BTN = "SuddenStop_BTN"; public static string SuddenStop_BTN = "SuddenStop_BTN";
/// <summary> /// <summary>
/// DI,复位,Reset_BTN,1,192.168.200.21,0,复位,X02,X02,0, /// DI,复位,Reset_BTN,1,192.168.200.21,复位,X02,X02,,,,,,,,,,
/// </summary> /// </summary>
public static string Reset_BTN = "Reset_BTN"; public static string Reset_BTN = "Reset_BTN";
/// <summary> /// <summary>
/// DI,自动启动,AutoRun_Signal,2,192.168.200.21,0,自动启动,X03,X03,0, /// DI,安全光栅,SafetyLightCurtains,2,192.168.200.21,安全光栅,X03,X03,,,,,,,,,,
/// </summary>
public static string AutoRun_Signal = "AutoRun_Signal";
/// <summary>
/// DI,气压检测,Airpressure_Check,3,192.168.200.21,0,气压检测,X04,X04,0,
/// </summary>
public static string Airpressure_Check = "Airpressure_Check";
/// <summary>
/// DI,安全光栅,SafetyLightCurtains,4,192.168.200.21,0,安全光栅,X05,X05,0,
/// </summary> /// </summary>
public static string SafetyLightCurtains = "SafetyLightCurtains"; public static string SafetyLightCurtains = "SafetyLightCurtains";
/// <summary> /// <summary>
/// DI,左侧门禁信号,Door_LeftLimit,5,192.168.200.21,0,左侧门禁信号,X06,X06,0, /// DI,升降门上升端,Door_Up,3,192.168.200.21,升降门上升端,X04,X04,,,,,,,,,,
/// </summary>
public static string Door_LeftLimit = "Door_LeftLimit";
/// <summary>
/// DI,右侧门禁信号,Door_RightLimit,6,192.168.200.21,0,右侧门禁信号,X07,X07,0,
/// </summary>
public static string Door_RightLimit = "Door_RightLimit";
/// <summary>
/// DI,左侧锡膏检测,TinCheck_DoorLeft,7,192.168.200.21,0,左侧锡膏检测,X08,X08,0,
/// </summary>
public static string TinCheck_DoorLeft = "TinCheck_DoorLeft";
/// <summary>
/// DI,右侧锡膏检测,TinCheck_DoorRight,8,192.168.200.21,0,右侧锡膏检测,X09,X09,0,
/// </summary>
public static string TinCheck_DoorRight = "TinCheck_DoorRight";
/// <summary>
/// DI,夹具检测,TinCheck_Fixture,9,192.168.200.21,0,夹具检测,X10,X10,0,
/// </summary>
public static string TinCheck_Fixture = "TinCheck_Fixture";
/// <summary>
/// DI,搅拌区锡膏检测,TinCheck_Stir,10,192.168.200.21,0,搅拌区锡膏检测,X11,X11,0,
/// </summary>
public static string TinCheck_Stir = "TinCheck_Stir";
/// <summary>
/// DI,进料口门上升端,Door_Up,11,192.168.200.21,0,进料口门上升端,X12,X12,0,
/// </summary> /// </summary>
public static string Door_Up = "Door_Up"; public static string Door_Up = "Door_Up";
/// <summary> /// <summary>
/// DI,进料口门下降端,Door_Down,12,192.168.200.21,0,进料口门下降端,X13,X13,0, /// DI,升降门下降端,Door_Down,4,192.168.200.21,升降门下降端,X05,X05,,,,,,,,,,
/// </summary> /// </summary>
public static string Door_Down = "Door_Down"; public static string Door_Down = "Door_Down";
/// <summary> /// <summary>
/// DI,夹爪气缸夹紧端,Clamping_Tighten,13,192.168.200.21,0,夹爪气缸夹紧端,X14,X14,0, /// DO,自动指示灯,AutoRun_HddLed,0,192.168.200.21,自动指示灯,Y01,Y01,,,,,,,,,,
/// </summary>
public static string Clamping_Tighten = "Clamping_Tighten";
/// <summary>
/// DI,夹爪气缸放松端,Clamping_Relax,14,192.168.200.21,0,夹爪气缸放松端,X15,X15,0,
/// </summary>
public static string Clamping_Relax = "Clamping_Relax";
/// <summary>
/// DI,夹爪锡膏检测,TinCheck_Clamping,15,192.168.200.21,0,夹爪锡膏检测,X16,X16,0,
/// </summary>
public static string TinCheck_Clamping = "TinCheck_Clamping";
/// <summary>
/// DO,自动指示灯,AutoRun_HddLed,0,192.168.200.21,0,自动指示灯,Y01,Y01,0,
/// </summary> /// </summary>
public static string AutoRun_HddLed = "AutoRun_HddLed"; public static string AutoRun_HddLed = "AutoRun_HddLed";
/// <summary> /// <summary>
/// DO,故障指示灯,Alarm_HddLed,1,192.168.200.21,0,故障指示灯,Y02,Y02,0, /// DO,故障指示灯,Alarm_HddLed,1,192.168.200.21,故障指示灯,Y02,Y02,,,,,,,,,,
/// </summary> /// </summary>
public static string Alarm_HddLed = "Alarm_HddLed"; public static string Alarm_HddLed = "Alarm_HddLed";
/// <summary> /// <summary>
/// DO,待机指示灯,RunSign_HddLed,2,192.168.200.21,0,待机指示灯,Y03,Y03,0, /// DO,待机指示灯,RunSign_HddLed,2,192.168.200.21,待机指示灯,Y03,Y03,,,,,,,,,,
/// </summary> /// </summary>
public static string RunSign_HddLed = "RunSign_HddLed"; public static string RunSign_HddLed = "RunSign_HddLed";
/// <summary> /// <summary>
/// DO,报警蜂鸣器,Alarm_Buzzer,3,192.168.200.21,0,报警蜂鸣器,Y04,Y04,0, /// DO,报警蜂鸣器,Alarm_Buzzer,3,192.168.200.21,报警蜂鸣器,Y04,Y04,,,,,,,,,,
/// </summary> /// </summary>
public static string Alarm_Buzzer = "Alarm_Buzzer"; public static string Alarm_Buzzer = "Alarm_Buzzer";
/// <summary> /// <summary>
/// DO,料仓运转ON,Run_Signal,4,192.168.200.21,0,料仓运转ON,Y05,Y05,0, /// DO,设备运转ON,Run_Signal,4,192.168.200.21,设备运转ON,Y05,Y05,,,,,,,,,,
/// </summary> /// </summary>
public static string Run_Signal = "Run_Signal"; public static string Run_Signal = "Run_Signal";
/// <summary> /// <summary>
/// DO,取料机构刹车电源ON,Axis_Brake,5,192.168.200.21,0,取料机构刹车电源ON,Y06,Y06,0, /// DO,料斗伺服刹车ON,Axis_Brake,5,192.168.200.21,料斗伺服刹车ON,Y06,Y06,,,,,,,,,,
/// </summary> /// </summary>
public static string Axis_Brake = "Axis_Brake"; public static string Axis_Brake = "Axis_Brake";
/// <summary> /// <summary>
/// DO,相机照明开,Camera_Led,6,192.168.200.21,0,相机照明开,Y07,Y07,0, /// DO,升降门刹车ON,Camera_Led,6,192.168.200.21,升降门刹车ON,Y07,Y07,,,,,,,,,,
/// </summary> /// </summary>
public static string Camera_Led = "Camera_Led"; public static string Camera_Led = "Camera_Led";
/// <summary> ///// <summary>
/// DO,门禁功能屏蔽,Door_Limit,7,192.168.200.21,0,门禁功能屏蔽,Y08,Y08,0, ///// DO,升降门电机上升,Door_Up,7,192.168.200.21,升降门电机上升,Y08,Y08,,,,,,,,,,
/// </summary> ///// </summary>
public static string Door_Limit = "Door_Limit"; //public static string Door_Up = "Door_Up";
/// <summary> ///// <summary>
/// DO,冷气机启动,Colding_Start,8,192.168.200.21,0,冷气机启动,Y09,Y09,0, ///// DO,升降门电机下降,Door_Down,8,192.168.200.21,升降门电机下降,Y09,Y09,,,,,,,,,,
/// </summary> ///// </summary>
public static string Colding_Start = "Colding_Start"; //public static string Door_Down = "Door_Down";
/// <summary> /// <summary>
/// DO,回温区风机启动,Warming_Start,9,192.168.200.21,0,回温区风机启动,Y10,Y10,0, /// DO,设备照明ON,Device_Led,9,192.168.200.21,设备照明ON,Y10,Y10,,,,,,,,,,
/// </summary> /// </summary>
public static string Warming_Start = "Warming_Start"; public static string Device_Led = "Device_Led";
/// <summary>
/// DO,搅拌定位气缸上升SOL,StirLocation_Up,14,192.168.200.21,0,搅拌定位气缸上升SOL,Y15,Y15,0,
/// </summary>
public static string StirLocation_Up = "StirLocation_Up";
/// <summary>
/// DO,搅拌定位气缸下降SOL,StirLocation_Down,15,192.168.200.21,0,搅拌定位气缸下降SOL,Y16,Y16,0,
/// </summary>
public static string StirLocation_Down = "StirLocation_Down";
/// <summary>
/// DI,冷藏区门关闭端,ColdDoor_Close,2,192.168.200.22,,冷藏区门关闭端,X23,X23,,
/// </summary>
public static string ColdDoor_Close = "ColdDoor_Close";
/// <summary>
/// DI,冷藏区门打开端,ColdDoor_Open,3,192.168.200.22,,冷藏区门打开端,X24,X24,,
/// </summary>
public static string ColdDoor_Open = "ColdDoor_Open";
// public static string StartOrStopBlow = "StartOrStopBlow";
} }
public enum IO_VALUE public enum IO_VALUE
......
...@@ -161,7 +161,7 @@ namespace OnlineStore.LoadCSVLibrary ...@@ -161,7 +161,7 @@ namespace OnlineStore.LoadCSVLibrary
} }
if (String.IsNullOrEmpty(builder.ToString()).Equals(false) && builder.ToString().Equals("\r\n").Equals(false)) if (String.IsNullOrEmpty(builder.ToString()).Equals(false) && builder.ToString().Equals("\r\n").Equals(false))
{ {
// LOGGER.Error(builder.ToString()); LOGGER.Error(builder.ToString());
} }
if (checkProList.Count >= 0) if (checkProList.Count >= 0)
{ {
......
...@@ -17,420 +17,65 @@ namespace OnlineStore.LoadCSVLibrary ...@@ -17,420 +17,65 @@ namespace OnlineStore.LoadCSVLibrary
{ {
} }
/// <summary> /// <summary>
/// PRO,IO模块对应的DI数量,IO_DILength,192.168.200.21#16;192.168.200.22#8,,,,,,, /// AXIS,(轴一)料斗旋转轴,Middle_Axis,1,COM1,,,,250,80,80,80,60,50,10,1000,0,0
/// </summary>
[ConfigProAttribute("IO_DILength")]
public string IO_DILength { get; set; }
/// <summary>
/// PRO,模块对应的DO数量,IO_DOLength,192.168.200.21#16;192.168.200.22#8,,,,,,,
/// </summary>
[ConfigProAttribute("IO_DOLength")]
public string IO_DOLength { get; set; }
/// <summary>
/// AXIS,(轴一)取料旋转轴,Middle_Axis,1,COM1,0,,,,,
/// </summary> /// </summary>
[ConfigProAttribute("Middle_Axis")] [ConfigProAttribute("Middle_Axis")]
public ConfigMoveAxis Middle_Axis { get; set; } public ConfigMoveAxis Middle_Axis { get; set; }
/// <summary> /// <summary>
/// AXIS,(轴二)取料上下轴,UpDown_Axis,2,COM1,0,,,,, /// PRO,IO模块对应的DI数量,IO_DILength,192.168.200.21#16,,,,,,,,,,,,,,
/// </summary>
[ConfigProAttribute("UpDown_Axis")]
public ConfigMoveAxis UpDown_Axis { get; set; }
/// <summary>
/// AXIS,(轴三)取料进出轴,InOut_Axis,3,COM1,0,,,,,
/// </summary>
[ConfigProAttribute("InOut_Axis")]
public ConfigMoveAxis InOut_Axis { get; set; }
/// <summary>
/// AXIS,(轴四)回温区旋转轴,Warming_Axis,4,COM1,0,,,,,
/// </summary>
[ConfigProAttribute("Warming_Axis")]
public ConfigMoveAxis Warming_Axis { get; set; }
/// <summary>
/// AXIS,(轴五)冷藏区旋转轴,Colding_Axis,5,COM1,0,,,,,
/// </summary>
[ConfigProAttribute("Colding_Axis")]
public ConfigMoveAxis Colding_Axis { get; set; }
/// <summary>
/// AXIS,(轴六)搅拌旋转轴,Stir_Axis,6,COM1,0,,,,,
/// </summary>
[ConfigProAttribute("Stir_Axis")]
public ConfigMoveAxis Stir_Axis { get; set; }
/// <summary>
/// PRO,升降轴 进料口取料点 P1(夹具),UpDownAxis_OL_P1,403000,,,,,,,
/// </summary>
[ConfigProAttribute("UpDownAxis_OL_P1")]
public int UpDownAxis_OL_P1 { get; set; }
/// <summary>
/// PRO,升降轴 进料口出料前点 P2(夹具),UpDownAxis_IH_P2,415000,,,,,,,
/// </summary>
[ConfigProAttribute("UpDownAxis_IH_P2")]
public int UpDownAxis_IH_P2 { get; set; }
/// <summary>
/// PRO,升降轴 进料口取料缓冲点 P7(夹具),UpDownAxis_OH_P7,415000,,,,,,,
/// </summary>
[ConfigProAttribute("UpDownAxis_OH_P7")]
public int UpDownAxis_OH_P7 { get; set; }
/// <summary>
/// PRO,升降轴 进料口出料缓冲点 P8(夹具),UpDownAxis_IL_P8,403000,,,,,,,
/// </summary> /// </summary>
[ConfigProAttribute("UpDownAxis_IL_P8")] [ConfigProAttribute("IO_DILength")]
public int UpDownAxis_IL_P8 { get; set; } public string IO_DILength { get; set; }
/// <summary>
/// PRO,升降轴 进料口取料点 P11(锡膏),UpDownAxis_OL_P11,403099,,,,,,,
/// </summary>
[ConfigProAttribute("UpDownAxis_OL_P11")]
public int UpDownAxis_OL_P11 { get; set; }
/// <summary>
/// PRO,升降轴 进料口出料前点 P21(锡膏),UpDownAxis_IH_P21,415099,,,,,,,
/// </summary>
[ConfigProAttribute("UpDownAxis_IH_P21")]
public int UpDownAxis_IH_P21 { get; set; }
/// <summary>
/// PRO,升降轴 进料口取料缓冲点 P71(锡膏),UpDownAxis_OH_P71,415099,,,,,,,
/// </summary>
[ConfigProAttribute("UpDownAxis_OH_P71")]
public int UpDownAxis_OH_P71 { get; set; }
/// <summary>
/// PRO,升降轴 进料口出料缓冲点 P81(锡膏),UpDownAxis_IL_P81,403099,,,,,,,
/// </summary>
[ConfigProAttribute("UpDownAxis_IL_P81")]
public int UpDownAxis_IL_P81 { get; set; }
/// <summary>
/// PRO,升降轴 搅拌位置高点P101(搅拌区),UpDownAxis_StirH_P101,415099,,,,,,,
/// </summary>
[ConfigProAttribute("UpDownAxis_StirH_P101")]
public int UpDownAxis_StirH_P101 { get; set; }
/// <summary> /// <summary>
/// PRO,升降轴 搅拌位置低点P102(搅拌区),UpDownAxis_StirL_P102,403099,,,,,,, /// PRO,模块对应的DO数量,IO_DOLength,192.168.200.21#16,,,,,,,,,,,,,,
/// </summary> /// </summary>
[ConfigProAttribute("UpDownAxis_StirL_P102")] [ConfigProAttribute("IO_DOLength")]
public int UpDownAxis_StirL_P102 { get; set; } public string IO_DOLength { get; set; }
/// <summary> /// <summary>
/// PRO,旋转轴 P1待机原位点(夹具取料点),MiddleAxis_P1,268000,,,,,,, /// PRO,旋转轴 P1待机原位点 ,MiddleAxis_P1,268000,,,,,,,,,,,,,,
/// </summary> /// </summary>
[ConfigProAttribute("MiddleAxis_P1")] [ConfigProAttribute("MiddleAxis_P1")]
public int MiddleAxis_P1 { get; set; } public int MiddleAxis_P1 { get; set; }
/// <summary> /// <summary>
/// PRO,旋转轴 P11左侧取放料点(左侧锡膏),MiddleAxis_P11,260000,,,,,,, /// PRO,设备是否处于调试状态(1=调试,0=正常),IsInDebug,0,,,,,,,,,,,,,,
/// </summary>
[ConfigProAttribute("MiddleAxis_P11")]
public int MiddleAxis_P11 { get; set; }
/// <summary>
/// PRO,旋转轴 P12右侧取放料点(右侧锡膏),MiddleAxis_P12,280000,,,,,,,
/// </summary>
[ConfigProAttribute("MiddleAxis_P12")]
public int MiddleAxis_P12 { get; set; }
/// <summary>
/// PRO,旋转轴 P101搅拌取放料点(搅拌区),MiddleAxis_Stir_P101,280000,,,,,,,
/// </summary>
[ConfigProAttribute("MiddleAxis_Stir_P101")]
public int MiddleAxis_Stir_P101 { get; set; }
/// <summary>
/// PRO,进出轴 P1待机原位点,InOutAxis_P1,1000,,,,,,,
/// </summary>
[ConfigProAttribute("InOutAxis_P1")]
public int InOutAxis_P1 { get; set; }
/// <summary>
/// PRO,进出轴 P20(夹具取料点),InOutAxis_P20,2000,,,,,,,
/// </summary>
[ConfigProAttribute("InOutAxis_P20")]
public int InOutAxis_P20 { get; set; }
/// <summary>
/// PRO,进出轴 P21(左侧锡膏取料点),InOutAxis_P21,2800,,,,,,,
/// </summary>
[ConfigProAttribute("InOutAxis_P21")]
public int InOutAxis_P21 { get; set; }
/// <summary>
/// PRO,进出轴 P22(右侧锡膏取料点),InOutAxis_P22,2900,,,,,,,
/// </summary>
[ConfigProAttribute("InOutAxis_P22")]
public int InOutAxis_P22 { get; set; }
/// <summary>
/// PRO,进出轴 P101(搅拌区取放料点),InOutAxis_Stir_P101,2900,,,,,,,
/// </summary>
[ConfigProAttribute("InOutAxis_Stir_P101")]
public int InOutAxis_Stir_P101 { get; set; }
/// <summary>
/// PRO,(轴四)回温区旋转轴 P1待机原位点,Warming_Axis_P1,2000,,,,,,,
/// </summary>
[ConfigProAttribute("Warming_Axis_P1")]
public int Warming_Axis_P1 { get; set; }
/// <summary>
/// PRO,(轴五)冷藏区旋转轴 P1待机原位点,Colding_Axis_P1,2000,,,,,,,
/// </summary>
[ConfigProAttribute("Colding_Axis_P1")]
public int Colding_Axis_P1 { get; set; }
/// <summary>
/// PRO,(轴六)搅拌旋转轴 P1搅拌点1,Stir_Axis_P1,2000,,,,,,,
/// </summary>
[ConfigProAttribute("Stir_Axis_P1")]
public int Stir_Axis_P1 { get; set; }
/// <summary>
/// PRO,(轴六)搅拌旋转轴 P2搅拌点2,Stir_Axis_P2,8000,,,,,,,
/// </summary>
[ConfigProAttribute("Stir_Axis_P2")]
public int Stir_Axis_P2 { get; set; }
/// <summary>
/// PRO,是否有左右侧门,IsHasDoorLimit,1,,,,,,,
/// </summary>
[ConfigProAttribute("IsHasDoorLimit")]
public int IsHasDoorLimit { get; set; }
/// <summary>
/// PRO,设备是否处于调试状态(1=调试,0=正常),IsInDebug,0,,,,,,,
/// </summary> /// </summary>
[ConfigProAttribute("IsInDebug")] [ConfigProAttribute("IsInDebug")]
public int IsInDebug { get; set; } public int IsInDebug { get; set; }
/// <summary> /// <summary>
/// PRO,气压检测IO关闭需要持续的时间,AirCheckSeconds,3,,,,,,, /// PRO,IO信号超时时间(毫秒),IOSingle_TimerOut,10000,,,,,,,,,,,,,,
/// </summary>
[ConfigProAttribute("AirCheckSeconds")]
public int AirCheckSeconds { get; set; }
/// <summary>
/// PRO,出入库多少次,会自动重置所有轴操作,Box_ResetACount,100,,,,,,,
/// </summary>
[ConfigProAttribute("Box_ResetACount")]
public int Box_ResetACount { get; set; }
/// <summary>
/// PRO,IO信号超时时间(毫秒),IOSingle_TimerOut,10000,,,,,,,
/// </summary> /// </summary>
[ConfigProAttribute("IOSingle_TimerOut")] [ConfigProAttribute("IOSingle_TimerOut")]
public int IOSingle_TimerOut { get; set; } public int IOSingle_TimerOut { get; set; }
/// <summary> /// <summary>
/// PRO,是否使用料盘检测信号,IsUse_Tray_Check,0,,,,,,, /// PRO,旋转轴(轴1)P1速度,MiddleAxis_P1_Speed,120,,,,,,,,,,,,,,
/// </summary>
[ConfigProAttribute("IsUse_Tray_Check")]
public int IsUse_Tray_Check { get; set; }
/// <summary>
/// PRO,升降轴(轴2)P1速度,UpDownAxis_P1_Speed,250,,,,,,,
/// </summary>
[ConfigProAttribute("UpDownAxis_P1_Speed")]
public int UpDownAxis_P1_Speed { get; set; }
/// <summary>
/// PRO,升降轴(轴2)P2速度,UpDownAxis_P2_Speed,250,,,,,,,
/// </summary>
[ConfigProAttribute("UpDownAxis_P2_Speed")]
public int UpDownAxis_P2_Speed { get; set; }
/// <summary>
/// PRO,升降轴(轴2)P3速度,UpDownAxis_P3_Speed,250,,,,,,,
/// </summary>
[ConfigProAttribute("UpDownAxis_P3_Speed")]
public int UpDownAxis_P3_Speed { get; set; }
/// <summary>
/// PRO,升降轴(轴2)P4速度,UpDownAxis_P4_Speed,150,,,,,, ,
/// </summary>
[ConfigProAttribute("UpDownAxis_P4_Speed")]
public int UpDownAxis_P4_Speed { get; set; }
/// <summary>
/// PRO,升降轴(轴2)P5速度,UpDownAxis_P5_Speed,250,,,,,,,
/// </summary>
[ConfigProAttribute("UpDownAxis_P5_Speed")]
public int UpDownAxis_P5_Speed { get; set; }
/// <summary>
/// PRO,升降轴(轴2)P6速度,UpDownAxis_P6_Speed,100,,,,,,,
/// </summary>
[ConfigProAttribute("UpDownAxis_P6_Speed")]
public int UpDownAxis_P6_Speed { get; set; }
/// <summary>
/// PRO,升降轴(轴2)P7速度,UpDownAxis_P7_Speed,100,,,,,,,
/// </summary>
[ConfigProAttribute("UpDownAxis_P7_Speed")]
public int UpDownAxis_P7_Speed { get; set; }
/// <summary>
/// PRO,升降轴(轴2)P8速度,UpDownAxis_P8_Speed,100,,,,,,,
/// </summary>
[ConfigProAttribute("UpDownAxis_P8_Speed")]
public int UpDownAxis_P8_Speed { get; set; }
/// <summary>
/// PRO,升降轴(轴2)P101速度,UpDownAxis_P101_Speed,100,,,,,,,,,,,,,,
/// </summary>
[ConfigProAttribute("UpDownAxis_P101_Speed")]
public int UpDownAxis_P101_Speed { get; set; }
/// <summary>
/// PRO,升降轴(轴2)P102速度,UpDownAxis_P102_Speed,100,,,,,,,,,,,,,,
/// </summary>
[ConfigProAttribute("UpDownAxis_P102_Speed")]
public int UpDownAxis_P102_Speed { get; set; }
/// <summary>
/// PRO,旋转轴(轴1)P1速度,MiddleAxis_P1_Speed,120,,,,,,,
/// </summary> /// </summary>
[ConfigProAttribute("MiddleAxis_P1_Speed")] [ConfigProAttribute("MiddleAxis_P1_Speed")]
public int MiddleAxis_P1_Speed { get; set; } public int MiddleAxis_P1_Speed { get; set; }
/// <summary> /// <summary>
/// PRO,旋转轴(轴1)P2速度,MiddleAxis_P2_Speed,120,,,,,,, /// PRO,旋转轴(轴1)P2速度,MiddleAxis_P2_Speed,120,,,,,,,,,,,,,,
/// </summary> /// </summary>
[ConfigProAttribute("MiddleAxis_P2_Speed")] [ConfigProAttribute("MiddleAxis_P2_Speed")]
public int MiddleAxis_P2_Speed { get; set; } public int MiddleAxis_P2_Speed { get; set; }
/// <summary> /// <summary>
/// PRO,旋转轴(轴1)P101速度,MiddleAxis_P101_Speed,120,,,,,,,,,,,,,, /// PRO,伺服停止时可误差的脉冲数的最小值,Axis_ErrorCountMin,10,,,,,,,,,,,,,,
/// </summary>
[ConfigProAttribute("MiddleAxis_P101_Speed")]
public int MiddleAxis_P101_Speed { get; set; }
/// <summary>
/// PRO,进出轴(轴3)P1速度,InOutAxis_P1_Speed,100,,,,,,,
/// </summary>
[ConfigProAttribute("InOutAxis_P1_Speed")]
public int InOutAxis_P1_Speed { get; set; }
/// <summary>
/// PRO,进出轴(轴3)P2速度,InOutAxis_P2_Speed,100,,,,,,,
/// </summary>
[ConfigProAttribute("InOutAxis_P2_Speed")]
public int InOutAxis_P2_Speed { get; set; }
/// <summary>
/// PRO,进出轴(轴3)P3速度,InOutAxis_P3_Speed,1000,,,,,,,
/// </summary>
[ConfigProAttribute("InOutAxis_P3_Speed")]
public int InOutAxis_P3_Speed { get; set; }
/// <summary>
/// PRO,进出轴(轴3)P101速度,InOutAxis_P101_Speed,100,,,,,,,,,,,,,,
/// </summary>
[ConfigProAttribute("InOutAxis_P101_Speed")]
public int InOutAxis_P101_Speed { get; set; }
/// <summary>
/// PRO,回温区旋转轴(轴4)P1速度,WarmingAxis_P1_Speed,120,,,,,,,
/// </summary>
[ConfigProAttribute("WarmingAxis_P1_Speed")]
public int WarmingAxis_P1_Speed { get; set; }
/// <summary>
/// PRO,回温区旋转轴(轴4)P2速度,WarmingAxis_P2_Speed,120,,,,,,,
/// </summary>
[ConfigProAttribute("WarmingAxis_P2_Speed")]
public int WarmingAxis_P2_Speed { get; set; }
/// <summary>
/// PRO,冷藏区旋转轴(轴5)P1速度,ColdingAxis_P1_Speed,120,,,,,,,
/// </summary>
[ConfigProAttribute("ColdingAxis_P1_Speed")]
public int ColdingAxis_P1_Speed { get; set; }
/// <summary>
/// PRO,冷藏区旋转轴(轴5)P2速度,ColdingAxis_P2_Speed,120,,,,,,,
/// </summary>
[ConfigProAttribute("ColdingAxis_P2_Speed")]
public int ColdingAxis_P2_Speed { get; set; }
/// <summary>
/// PRO,搅拌区旋转轴(轴6)P1速度,StirAxis_P1_Speed,120,,,,,,,
/// </summary>
[ConfigProAttribute("StirAxis_P1_Speed")]
public int StirAxis_P1_Speed { get; set; }
/// <summary>
/// PRO,搅拌区旋转轴(轴6)P2速度,StirAxis_P2_Speed,120,,,,,,,
/// </summary>
[ConfigProAttribute("StirAxis_P2_Speed")]
public int StirAxis_P2_Speed { get; set; }
/// <summary>
/// PRO,伺服停止时可误差的脉冲数的最小值,Axis_ErrorCountMin,10,,,,,,,
/// </summary> /// </summary>
[ConfigProAttribute("Axis_ErrorCountMin")] [ConfigProAttribute("Axis_ErrorCountMin")]
public int Axis_ErrorCountMin { get; set; } public int Axis_ErrorCountMin { get; set; }
/// <summary> /// <summary>
/// PRO,伺服停止时可误差的脉冲数的最大值,Axis_ErrorCountMax,1000,,,,,,, /// PRO,伺服停止时可误差的脉冲数的最大值,Axis_ErrorCountMax,1000,,,,,,,,,,,,,,
/// </summary> /// </summary>
[ConfigProAttribute("Axis_ErrorCountMax")] [ConfigProAttribute("Axis_ErrorCountMax")]
public int Axis_ErrorCountMax { get; set; } public int Axis_ErrorCountMax { get; set; }
/// <summary> /// <summary>
/// PRO,(轴一)旋转轴最小限位,MiddleAxis_PositionMin,0,,,,,,, /// PRO,(轴一)旋转轴最小限位,MiddleAxis_PositionMin,0,,,,,,,,,,,,,,
/// </summary> /// </summary>
[ConfigProAttribute("MiddleAxis_PositionMin")] [ConfigProAttribute("MiddleAxis_PositionMin")]
public int MiddleAxis_PositionMin { get; set; } public int MiddleAxis_PositionMin { get; set; }
/// <summary> /// <summary>
/// PRO,(轴二)升降轴最小限位,UpdownAxis_PositionMin,0,,,,,,, /// PRO,(轴一)旋转轴最大限位,MiddleAxis_PositionMax,0,,,,,,,,,,,,,,
/// </summary>
[ConfigProAttribute("UpdownAxis_PositionMin")]
public int UpdownAxis_PositionMin { get; set; }
/// <summary>
/// PRO,(轴三)进出轴最小限位,InoutAxis_PositionMin,0,,,,,,,
/// </summary>
[ConfigProAttribute("InoutAxis_PositionMin")]
public int InoutAxis_PositionMin { get; set; }
/// <summary>
/// PRO,(轴一)旋转轴最大限位,MiddleAxis_PositionMax,0,,,,,,,
/// </summary> /// </summary>
[ConfigProAttribute("MiddleAxis_PositionMax")] [ConfigProAttribute("MiddleAxis_PositionMax")]
public int MiddleAxis_PositionMax { get; set; } public int MiddleAxis_PositionMax { get; set; }
/// <summary>
/// PRO,(轴二)升降轴最大限位,UpdownAxis_PositionMax,0,,,,,,,
/// </summary>
[ConfigProAttribute("UpdownAxis_PositionMax")]
public int UpdownAxis_PositionMax { get; set; }
/// <summary>
/// PRO,(轴三)进出轴最大限位,InoutAxis_PositionMax,0,,,,,,,
/// </summary>
[ConfigProAttribute("InoutAxis_PositionMax")]
public int InoutAxis_PositionMax { get; set; }
/// <summary>
/// PRO,每次吹气的时间(分钟),BlowAir_Time,10,,,,,,,
/// </summary>
[ConfigProAttribute("BlowAir_Time")]
public int BlowAir_Time { get; set; }
/// <summary>
/// PRO,两次吹气间隔(分钟),BlowAir_Interval,10,,,,,,,
/// </summary>
[ConfigProAttribute("BlowAir_Interval")]
public int BlowAir_Interval { get; set; }
/// <summary>
/// PRO,冷藏区温湿度端口号,Humiture_Colding_Port,COM3,,,,,,,
/// </summary>
[ConfigProAttribute("Humiture_Colding_Port")]
public string Humiture_Colding_Port { get; set; }
/// <summary>
/// PRO,回温区温湿度端口号,Humiture_Warming_Port,COM4,,,,,,,
/// </summary>
[ConfigProAttribute("Humiture_Warming_Port")]
public string Humiture_Warming_Port { get; set; }
/// <summary>
/// PRO,左侧测重控制器,Weight_Left_Port,COM5,,,,,,,
/// </summary>
[ConfigProAttribute("Weight_Left_Port")]
public string Weight_Left_Port { get; set; }
/// <summary>
/// PRO,右侧测重控制器,Weight_Right_Port,COM6,,,,,,,
/// </summary>
[ConfigProAttribute("Weight_Right_Port")]
public string Weight_Right_Port { get; set; }
/// <summary>
/// PRO,锡膏宽度,Tin_Width,100,,,,,,,
/// </summary>
[ConfigProAttribute("Tin_Width")]
public int Tin_Width { get; set; }
/// <summary>
/// PRO,锡膏高度,Tin_Height,50,,,,,,,
/// </summary>
[ConfigProAttribute("Tin_Height")]
public int Tin_Height { get; set; }
/// <summary>
/// PRO,夹具宽度,Fixture_Width,185,,,,,,,
/// </summary>
[ConfigProAttribute("Fixture_Width")]
public int Fixture_Width { get; set; }
/// <summary>
/// PRO,夹具高度,Fixture_Height,60,,,,,,,
/// </summary>
[ConfigProAttribute("Fixture_Height")]
public int Fixture_Height { get; set; }
/// <summary>
/// PRO,左侧测重空夹具重量,LeftDefWeight,30,,,,,,,,,,,,,,
/// </summary>
[ConfigProAttribute("LeftDefWeight")]
public double LeftDefWeight { get; set; }
/// <summary>
/// PRO,右侧测重空夹具重量,RightDefWeight,45,,,,,,,,,,,,,,
/// </summary>
[ConfigProAttribute("RightDefWeight")]
public double RightDefWeight { get; set; }
/// <summary>
/// PRO,特殊二维码尺寸配置,CodeSizeConfig,XA=13x48#XB=13x32#FA=7x32,,,,,,,
/// </summary>
[ConfigProAttribute("CodeSizeConfig", false)]
public string CodeSizeConfig { get; set; }
protected override void initMustHavePro() protected override void initMustHavePro()
{ {
...@@ -438,19 +83,11 @@ namespace OnlineStore.LoadCSVLibrary ...@@ -438,19 +83,11 @@ namespace OnlineStore.LoadCSVLibrary
MustHaveDOList = new List<string>(); MustHaveDOList = new List<string>();
// MustHaveDIList.Add(IO_Type.SuddenStop_BTN); // MustHaveDIList.Add(IO_Type.SuddenStop_BTN);
MustHaveDIList.Add(IO_Type.Reset_BTN); MustHaveDIList.Add(IO_Type.Reset_BTN);
MustHaveDIList.Add(IO_Type.AutoRun_Signal);
MustHaveDIList.Add(IO_Type.Airpressure_Check);
// MustHaveDIList.Add(IO_Type.TrayCheck_Door);
// MustHaveDIList.Add(IO_Type.TrayCheck_Fixture);
MustHaveDIList.Add(IO_Type.Door_Up); MustHaveDIList.Add(IO_Type.Door_Up);
MustHaveDIList.Add(IO_Type.Door_Down); MustHaveDIList.Add(IO_Type.Door_Down);
MustHaveDIList.Add(IO_Type.SafetyLightCurtains); MustHaveDIList.Add(IO_Type.SafetyLightCurtains);
MustHaveDIList.Add(IO_Type.SafetyLightCurtains); MustHaveDIList.Add(IO_Type.SafetyLightCurtains);
MustHaveDIList.Add(IO_Type.Door_Limit);
MustHaveDIList.Add(IO_Type.Door_LeftLimit);
MustHaveDIList.Add(IO_Type.Door_RightLimit);
MustHaveDOList.Add(IO_Type.AutoRun_HddLed); MustHaveDOList.Add(IO_Type.AutoRun_HddLed);
MustHaveDOList.Add(IO_Type.Alarm_HddLed); MustHaveDOList.Add(IO_Type.Alarm_HddLed);
...@@ -465,39 +102,11 @@ namespace OnlineStore.LoadCSVLibrary ...@@ -465,39 +102,11 @@ namespace OnlineStore.LoadCSVLibrary
} }
public static void ConfigAxis(VerticalStoreConfig con) public static void ConfigAxis(VerticalStoreConfig con)
{ {
con.Middle_Axis.CanErrorCountMin = con.Axis_ErrorCountMin; con.Middle_Axis.CanErrorCountMin = con.Axis_ErrorCountMin;
con.InOut_Axis.CanErrorCountMin = con.Axis_ErrorCountMin;
con.UpDown_Axis.CanErrorCountMin = con.Axis_ErrorCountMin;
con.Warming_Axis.CanErrorCountMin = con.Axis_ErrorCountMin;
con.Colding_Axis.CanErrorCountMin = con.Axis_ErrorCountMin;
con.Stir_Axis.CanErrorCountMin = con.Axis_ErrorCountMin;
con.Middle_Axis.CanErrorCountMax = con.Axis_ErrorCountMax; con.Middle_Axis.CanErrorCountMax = con.Axis_ErrorCountMax;
con.InOut_Axis.CanErrorCountMax = con.Axis_ErrorCountMax;
con.UpDown_Axis.CanErrorCountMax = con.Axis_ErrorCountMax;
con.Warming_Axis.CanErrorCountMax = con.Axis_ErrorCountMax;
con.Colding_Axis.CanErrorCountMax = con.Axis_ErrorCountMax;
con.Stir_Axis.CanErrorCountMax = con.Axis_ErrorCountMax;
con.Middle_Axis.PositionMin = con.MiddleAxis_PositionMin; con.Middle_Axis.PositionMin = con.MiddleAxis_PositionMin;
con.Middle_Axis.PositionMax = con.MiddleAxis_PositionMax; con.Middle_Axis.PositionMax = con.MiddleAxis_PositionMax;
con.InOut_Axis.PositionMin = con.InoutAxis_PositionMin;
con.InOut_Axis.PositionMax = con.InoutAxis_PositionMax;
con.UpDown_Axis.PositionMin = con.UpdownAxis_PositionMin;
con.UpDown_Axis.PositionMax = con.UpdownAxis_PositionMax;
//Config.InOut_Axis.ResolveSpeed = Config.InoutAxis_ResolveSpeed;
//Config.UpDown_Axis.ResolveSpeed = Config.UpdownAxis_ResolveSpeed;
//Config.Middle_Axis.ResolveSpeed = Config.MiddleAxis_ResolveSpeed;
con.Middle_Axis.DefaultPosition = con.MiddleAxis_P1; con.Middle_Axis.DefaultPosition = con.MiddleAxis_P1;
con.InOut_Axis.DefaultPosition = con.InOutAxis_P1;
con.UpDown_Axis.DefaultPosition = con.UpDownAxis_OL_P1;
con.Warming_Axis.DefaultPosition = con.Warming_Axis_P1;
con.Colding_Axis.DefaultPosition = con.Colding_Axis_P1;
con.Stir_Axis.DefaultPosition = con.Stir_Axis_P1;
} }
private Dictionary<string, ushort> DILengthMap = null; private Dictionary<string, ushort> DILengthMap = null;
private Dictionary<string, ushort> DOLengthMap = null; private Dictionary<string, ushort> DOLengthMap = null;
...@@ -562,57 +171,57 @@ namespace OnlineStore.LoadCSVLibrary ...@@ -562,57 +171,57 @@ namespace OnlineStore.LoadCSVLibrary
return 16; return 16;
} }
private Dictionary<string, string> CodeSizeMap = null; //private Dictionary<string, string> CodeSizeMap = null;
private static char codeSpilt = '#'; //private static char codeSpilt = '#';
public string GetCodeSize(ref string code) //public string GetCodeSize(ref string code)
{ //{
try // try
{ // {
if (CodeSizeMap == null) // if (CodeSizeMap == null)
{ // {
CodeSizeMap = new Dictionary<string, string>(); // CodeSizeMap = new Dictionary<string, string>();
string[] array = CodeSizeConfig.Split(codeSpilt); // string[] array = CodeSizeConfig.Split(codeSpilt);
if (array.Length > 0) // if (array.Length > 0)
{ // {
foreach (string str in array) // foreach (string str in array)
{ // {
string[] codeStr = str.Split('='); // string[] codeStr = str.Split('=');
if (codeStr.Length == 2) // if (codeStr.Length == 2)
{ // {
string key = codeStr[0].Trim(); // string key = codeStr[0].Trim();
string value = codeStr[1].Trim(); // string value = codeStr[1].Trim();
CodeSizeMap.Add(key, value); // CodeSizeMap.Add(key, value);
} // }
} // }
} // }
} // }
foreach (string key in CodeSizeMap.Keys) // foreach (string key in CodeSizeMap.Keys)
{ // {
string[] array = key.Split(';'); // string[] array = key.Split(';');
if (array.Length == 1 && code.Trim().StartsWith(key)) // if (array.Length == 1 && code.Trim().StartsWith(key))
{ // {
return CodeSizeMap[key]; // return CodeSizeMap[key];
} // }
else if (array.Length >= 2) // else if (array.Length >= 2)
{ // {
if (code.Trim().StartsWith(array[0])) // if (code.Trim().StartsWith(array[0]))
{ // {
int leng = array[0].Length; // int leng = array[0].Length;
code = code.Trim() + key.Substring(leng, key.Length - leng); // code = code.Trim() + key.Substring(leng, key.Length - leng);
return CodeSizeMap[key]; // return CodeSizeMap[key];
} // }
} // }
} // }
} // }
catch (Exception ex) // catch (Exception ex)
{ // {
LOGGER.Error("获取二维码【" + code + "】的固定尺寸出错:" + ex.ToString()); // LOGGER.Error("获取二维码【" + code + "】的固定尺寸出错:" + ex.ToString());
} // }
return ""; // return "";
} //}
} }
} }
...@@ -67,54 +67,27 @@ namespace OnlineStore.TinPasteStore ...@@ -67,54 +67,27 @@ namespace OnlineStore.TinPasteStore
return returnList; return returnList;
} }
//private static FrmAxisDebug debug = null;
//public static void ShowAxisDebug(VerticalStoreBean store)
//public static FrmAxisMoveConfig FrmAxisConfig = null;
//public static void ShowAxisConfig(AC_SA_BoxBean boxBean)
//{ //{
// if (FormManager.FrmAxisConfig == null) // if (debug == null)
// { // {
// FormManager.FrmAxisConfig = new FrmAxisMoveConfig(boxBean); // debug = new FrmAxisDebug(store);
// FormManager.FrmAxisConfig.Show(); // debug.Show();
// } // }
// else // else
// { // {
// if (debug.IsDisposed)
// //FormManager.FrmAxisConfig.ShowDialog();
// if (FormManager.FrmAxisConfig.IsDisposed)
// { // {
// FormManager.FrmAxisConfig = new FrmAxisMoveConfig(boxBean); // debug = new FrmAxisDebug(store);
// FormManager.FrmAxisConfig.Show(); // debug.Show();
// } // }
// else // else
// { // {
// FormManager.FrmAxisConfig.Activate(); // debug.Activate();
// } // }
// } // }
//} //}
private static FrmAxisDebug debug = null;
public static void ShowAxisDebug(VerticalStoreBean store)
{
if (debug == null)
{
debug = new FrmAxisDebug(store);
debug.Show();
}
else
{
if (debug.IsDisposed)
{
debug = new FrmAxisDebug(store);
debug.Show();
}
else
{
debug.Activate();
}
}
}
private static FrmIOStatus frmIo = null; private static FrmIOStatus frmIo = null;
public static void ShowIOShow(VerticalStoreBean store) public static void ShowIOShow(VerticalStoreBean store)
{ {
......
...@@ -44,7 +44,7 @@ namespace OnlineStore.TinPasteStore ...@@ -44,7 +44,7 @@ namespace OnlineStore.TinPasteStore
} }
return str; return str;
} }
internal static string GetCodeNum(string codeName = "TinPasteStore") internal static string GetCodeNum(string codeName = "VerticalStoreClient")
{ {
byte[] byteArray = System.Text.Encoding.ASCII.GetBytes(codeName); byte[] byteArray = System.Text.Encoding.ASCII.GetBytes(codeName);
string result = ""; string result = "";
......
...@@ -18,20 +18,8 @@ ...@@ -18,20 +18,8 @@
this.components = new System.ComponentModel.Container(); this.components = new System.ComponentModel.Container();
this.timer1 = new System.Windows.Forms.Timer(this.components); this.timer1 = new System.Windows.Forms.Timer(this.components);
this.groupBox2 = new System.Windows.Forms.GroupBox(); this.groupBox2 = new System.Windows.Forms.GroupBox();
this.btn_Warming_Stop = new System.Windows.Forms.Button();
this.btn_Warming_Start = new System.Windows.Forms.Button();
this.btn_Colding_Stop = new System.Windows.Forms.Button();
this.btn_Colding_Start = new System.Windows.Forms.Button();
this.btn_ColdDoor_Close = new System.Windows.Forms.Button();
this.btn_ColdDoor_Open = new System.Windows.Forms.Button();
this.btn_StirLocation_Up = new System.Windows.Forms.Button();
this.btn_StirLocation_Down = new System.Windows.Forms.Button();
this.btn_Clamping_Tighten = new System.Windows.Forms.Button();
this.btn_Clamping_Relax = new System.Windows.Forms.Button();
this.btnCloseLed = new System.Windows.Forms.Button(); this.btnCloseLed = new System.Windows.Forms.Button();
this.btn_Door_Up = new System.Windows.Forms.Button();
this.btnOpenLed = new System.Windows.Forms.Button(); this.btnOpenLed = new System.Windows.Forms.Button();
this.btn_Door_Down = new System.Windows.Forms.Button();
this.btnCloseAxisBreak = new System.Windows.Forms.Button(); this.btnCloseAxisBreak = new System.Windows.Forms.Button();
this.btnOpenAxisBreak = new System.Windows.Forms.Button(); this.btnOpenAxisBreak = new System.Windows.Forms.Button();
this.button1 = new System.Windows.Forms.Button(); this.button1 = new System.Windows.Forms.Button();
...@@ -66,149 +54,17 @@ ...@@ -66,149 +54,17 @@
this.groupBox2.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) this.groupBox2.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right))); | System.Windows.Forms.AnchorStyles.Right)));
this.groupBox2.Controls.Add(this.btn_Warming_Stop);
this.groupBox2.Controls.Add(this.btn_Warming_Start);
this.groupBox2.Controls.Add(this.btn_Colding_Stop);
this.groupBox2.Controls.Add(this.btn_Colding_Start);
this.groupBox2.Controls.Add(this.btn_ColdDoor_Close);
this.groupBox2.Controls.Add(this.btn_ColdDoor_Open);
this.groupBox2.Controls.Add(this.btn_StirLocation_Up);
this.groupBox2.Controls.Add(this.btn_StirLocation_Down);
this.groupBox2.Controls.Add(this.btn_Clamping_Tighten);
this.groupBox2.Controls.Add(this.btn_Clamping_Relax);
this.groupBox2.Controls.Add(this.btnCloseLed); this.groupBox2.Controls.Add(this.btnCloseLed);
this.groupBox2.Controls.Add(this.btn_Door_Up);
this.groupBox2.Controls.Add(this.btnOpenLed); this.groupBox2.Controls.Add(this.btnOpenLed);
this.groupBox2.Controls.Add(this.btn_Door_Down);
this.groupBox2.Controls.Add(this.btnCloseAxisBreak); this.groupBox2.Controls.Add(this.btnCloseAxisBreak);
this.groupBox2.Controls.Add(this.btnOpenAxisBreak); this.groupBox2.Controls.Add(this.btnOpenAxisBreak);
this.groupBox2.Location = new System.Drawing.Point(482, 163); this.groupBox2.Location = new System.Drawing.Point(482, 163);
this.groupBox2.Name = "groupBox2"; this.groupBox2.Name = "groupBox2";
this.groupBox2.Size = new System.Drawing.Size(335, 417); this.groupBox2.Size = new System.Drawing.Size(335, 296);
this.groupBox2.TabIndex = 255; this.groupBox2.TabIndex = 255;
this.groupBox2.TabStop = false; this.groupBox2.TabStop = false;
this.groupBox2.Text = "操作测试"; this.groupBox2.Text = "操作测试";
// //
// btn_Warming_Stop
//
this.btn_Warming_Stop.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btn_Warming_Stop.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btn_Warming_Stop.Location = new System.Drawing.Point(176, 164);
this.btn_Warming_Stop.Name = "btn_Warming_Stop";
this.btn_Warming_Stop.Size = new System.Drawing.Size(120, 34);
this.btn_Warming_Stop.TabIndex = 266;
this.btn_Warming_Stop.Text = "回温区风机停止";
this.btn_Warming_Stop.UseVisualStyleBackColor = true;
this.btn_Warming_Stop.Click += new System.EventHandler(this.btn_Warming_Stop_Click);
//
// btn_Warming_Start
//
this.btn_Warming_Start.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btn_Warming_Start.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btn_Warming_Start.Location = new System.Drawing.Point(176, 127);
this.btn_Warming_Start.Name = "btn_Warming_Start";
this.btn_Warming_Start.Size = new System.Drawing.Size(120, 34);
this.btn_Warming_Start.TabIndex = 265;
this.btn_Warming_Start.Text = "回温区风机启动";
this.btn_Warming_Start.UseVisualStyleBackColor = true;
this.btn_Warming_Start.Click += new System.EventHandler(this.btn_Warming_Start_Click);
//
// btn_Colding_Stop
//
this.btn_Colding_Stop.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btn_Colding_Stop.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btn_Colding_Stop.Location = new System.Drawing.Point(37, 164);
this.btn_Colding_Stop.Name = "btn_Colding_Stop";
this.btn_Colding_Stop.Size = new System.Drawing.Size(120, 34);
this.btn_Colding_Stop.TabIndex = 264;
this.btn_Colding_Stop.Text = "冷气机停止";
this.btn_Colding_Stop.UseVisualStyleBackColor = true;
this.btn_Colding_Stop.Click += new System.EventHandler(this.btn_Colding_Stop_Click);
//
// btn_Colding_Start
//
this.btn_Colding_Start.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btn_Colding_Start.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btn_Colding_Start.Location = new System.Drawing.Point(37, 127);
this.btn_Colding_Start.Name = "btn_Colding_Start";
this.btn_Colding_Start.Size = new System.Drawing.Size(120, 34);
this.btn_Colding_Start.TabIndex = 263;
this.btn_Colding_Start.Text = "冷气机启动";
this.btn_Colding_Start.UseVisualStyleBackColor = true;
this.btn_Colding_Start.Click += new System.EventHandler(this.btn_Colding_Start_Click);
//
// btn_ColdDoor_Close
//
this.btn_ColdDoor_Close.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btn_ColdDoor_Close.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btn_ColdDoor_Close.Location = new System.Drawing.Point(176, 310);
this.btn_ColdDoor_Close.Name = "btn_ColdDoor_Close";
this.btn_ColdDoor_Close.Size = new System.Drawing.Size(120, 34);
this.btn_ColdDoor_Close.TabIndex = 261;
this.btn_ColdDoor_Close.Text = "冷藏区门关闭";
this.btn_ColdDoor_Close.UseVisualStyleBackColor = true;
this.btn_ColdDoor_Close.Click += new System.EventHandler(this.btn_ColdDoor_Close_Click);
//
// btn_ColdDoor_Open
//
this.btn_ColdDoor_Open.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btn_ColdDoor_Open.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btn_ColdDoor_Open.Location = new System.Drawing.Point(176, 347);
this.btn_ColdDoor_Open.Name = "btn_ColdDoor_Open";
this.btn_ColdDoor_Open.Size = new System.Drawing.Size(120, 34);
this.btn_ColdDoor_Open.TabIndex = 262;
this.btn_ColdDoor_Open.Text = "冷藏区门打开";
this.btn_ColdDoor_Open.UseVisualStyleBackColor = true;
this.btn_ColdDoor_Open.Click += new System.EventHandler(this.btn_ColdDoor_Open_Click);
//
// btn_StirLocation_Up
//
this.btn_StirLocation_Up.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btn_StirLocation_Up.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btn_StirLocation_Up.Location = new System.Drawing.Point(37, 310);
this.btn_StirLocation_Up.Name = "btn_StirLocation_Up";
this.btn_StirLocation_Up.Size = new System.Drawing.Size(120, 34);
this.btn_StirLocation_Up.TabIndex = 259;
this.btn_StirLocation_Up.Text = "搅拌气缸上升";
this.btn_StirLocation_Up.UseVisualStyleBackColor = true;
this.btn_StirLocation_Up.Click += new System.EventHandler(this.btn_StirLocation_Up_Click);
//
// btn_StirLocation_Down
//
this.btn_StirLocation_Down.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btn_StirLocation_Down.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btn_StirLocation_Down.Location = new System.Drawing.Point(37, 347);
this.btn_StirLocation_Down.Name = "btn_StirLocation_Down";
this.btn_StirLocation_Down.Size = new System.Drawing.Size(120, 34);
this.btn_StirLocation_Down.TabIndex = 260;
this.btn_StirLocation_Down.Text = "搅拌气缸下降";
this.btn_StirLocation_Down.UseVisualStyleBackColor = true;
this.btn_StirLocation_Down.Click += new System.EventHandler(this.btn_StirLocation_Down_Click);
//
// btn_Clamping_Tighten
//
this.btn_Clamping_Tighten.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btn_Clamping_Tighten.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btn_Clamping_Tighten.Location = new System.Drawing.Point(176, 219);
this.btn_Clamping_Tighten.Name = "btn_Clamping_Tighten";
this.btn_Clamping_Tighten.Size = new System.Drawing.Size(120, 34);
this.btn_Clamping_Tighten.TabIndex = 257;
this.btn_Clamping_Tighten.Text = "夹爪气缸夹紧";
this.btn_Clamping_Tighten.UseVisualStyleBackColor = true;
this.btn_Clamping_Tighten.Click += new System.EventHandler(this.btn_Clamping_Tighten_Click);
//
// btn_Clamping_Relax
//
this.btn_Clamping_Relax.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btn_Clamping_Relax.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btn_Clamping_Relax.Location = new System.Drawing.Point(176, 256);
this.btn_Clamping_Relax.Name = "btn_Clamping_Relax";
this.btn_Clamping_Relax.Size = new System.Drawing.Size(120, 34);
this.btn_Clamping_Relax.TabIndex = 258;
this.btn_Clamping_Relax.Text = "夹爪气缸放松";
this.btn_Clamping_Relax.UseVisualStyleBackColor = true;
this.btn_Clamping_Relax.Click += new System.EventHandler(this.btn_Clamping_Relax_Click);
//
// btnCloseLed // btnCloseLed
// //
this.btnCloseLed.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.btnCloseLed.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
...@@ -221,18 +77,6 @@ ...@@ -221,18 +77,6 @@
this.btnCloseLed.UseVisualStyleBackColor = true; this.btnCloseLed.UseVisualStyleBackColor = true;
this.btnCloseLed.Click += new System.EventHandler(this.btnCloseLed_Click); this.btnCloseLed.Click += new System.EventHandler(this.btnCloseLed_Click);
// //
// btn_Door_Up
//
this.btn_Door_Up.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btn_Door_Up.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btn_Door_Up.Location = new System.Drawing.Point(37, 219);
this.btn_Door_Up.Name = "btn_Door_Up";
this.btn_Door_Up.Size = new System.Drawing.Size(120, 34);
this.btn_Door_Up.TabIndex = 248;
this.btn_Door_Up.Text = "进料口门上升";
this.btn_Door_Up.UseVisualStyleBackColor = true;
this.btn_Door_Up.Click += new System.EventHandler(this.btnOpenDoor_Click);
//
// btnOpenLed // btnOpenLed
// //
this.btnOpenLed.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.btnOpenLed.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
...@@ -245,18 +89,6 @@ ...@@ -245,18 +89,6 @@
this.btnOpenLed.UseVisualStyleBackColor = true; this.btnOpenLed.UseVisualStyleBackColor = true;
this.btnOpenLed.Click += new System.EventHandler(this.btnOpenLed_Click); this.btnOpenLed.Click += new System.EventHandler(this.btnOpenLed_Click);
// //
// btn_Door_Down
//
this.btn_Door_Down.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btn_Door_Down.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btn_Door_Down.Location = new System.Drawing.Point(37, 256);
this.btn_Door_Down.Name = "btn_Door_Down";
this.btn_Door_Down.Size = new System.Drawing.Size(120, 34);
this.btn_Door_Down.TabIndex = 249;
this.btn_Door_Down.Text = "进料口门下降";
this.btn_Door_Down.UseVisualStyleBackColor = true;
this.btn_Door_Down.Click += new System.EventHandler(this.btnCloseDoor_Click);
//
// btnCloseAxisBreak // btnCloseAxisBreak
// //
this.btnCloseAxisBreak.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.btnCloseAxisBreak.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
...@@ -284,7 +116,7 @@ ...@@ -284,7 +116,7 @@
// button1 // button1
// //
this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.button1.Location = new System.Drawing.Point(683, 598); this.button1.Location = new System.Drawing.Point(683, 477);
this.button1.Name = "button1"; this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(126, 37); this.button1.Size = new System.Drawing.Size(126, 37);
this.button1.TabIndex = 254; this.button1.TabIndex = 254;
...@@ -427,7 +259,7 @@ ...@@ -427,7 +259,7 @@
this.groupBox4.Controls.Add(this.tableLayoutPanel2); this.groupBox4.Controls.Add(this.tableLayoutPanel2);
this.groupBox4.Location = new System.Drawing.Point(247, 8); this.groupBox4.Location = new System.Drawing.Point(247, 8);
this.groupBox4.Name = "groupBox4"; this.groupBox4.Name = "groupBox4";
this.groupBox4.Size = new System.Drawing.Size(229, 629); this.groupBox4.Size = new System.Drawing.Size(229, 508);
this.groupBox4.TabIndex = 104; this.groupBox4.TabIndex = 104;
this.groupBox4.TabStop = false; this.groupBox4.TabStop = false;
this.groupBox4.Text = "DO列表"; this.groupBox4.Text = "DO列表";
...@@ -444,7 +276,7 @@ ...@@ -444,7 +276,7 @@
this.tableLayoutPanel2.RowCount = 2; this.tableLayoutPanel2.RowCount = 2;
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 17F)); this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 17F));
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 17F)); this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 17F));
this.tableLayoutPanel2.Size = new System.Drawing.Size(218, 609); this.tableLayoutPanel2.Size = new System.Drawing.Size(218, 488);
this.tableLayoutPanel2.TabIndex = 103; this.tableLayoutPanel2.TabIndex = 103;
// //
// groupBox3 // groupBox3
...@@ -454,7 +286,7 @@ ...@@ -454,7 +286,7 @@
this.groupBox3.Controls.Add(this.tableLayoutPanel1); this.groupBox3.Controls.Add(this.tableLayoutPanel1);
this.groupBox3.Location = new System.Drawing.Point(12, 8); this.groupBox3.Location = new System.Drawing.Point(12, 8);
this.groupBox3.Name = "groupBox3"; this.groupBox3.Name = "groupBox3";
this.groupBox3.Size = new System.Drawing.Size(229, 629); this.groupBox3.Size = new System.Drawing.Size(229, 508);
this.groupBox3.TabIndex = 103; this.groupBox3.TabIndex = 103;
this.groupBox3.TabStop = false; this.groupBox3.TabStop = false;
this.groupBox3.Text = "DI列表"; this.groupBox3.Text = "DI列表";
...@@ -471,7 +303,7 @@ ...@@ -471,7 +303,7 @@
this.tableLayoutPanel1.RowCount = 2; this.tableLayoutPanel1.RowCount = 2;
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 17F)); this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 17F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 17F)); this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 17F));
this.tableLayoutPanel1.Size = new System.Drawing.Size(218, 609); this.tableLayoutPanel1.Size = new System.Drawing.Size(218, 488);
this.tableLayoutPanel1.TabIndex = 102; this.tableLayoutPanel1.TabIndex = 102;
// //
// chbAutoRead // chbAutoRead
...@@ -481,7 +313,7 @@ ...@@ -481,7 +313,7 @@
this.chbAutoRead.Checked = true; this.chbAutoRead.Checked = true;
this.chbAutoRead.CheckState = System.Windows.Forms.CheckState.Checked; this.chbAutoRead.CheckState = System.Windows.Forms.CheckState.Checked;
this.chbAutoRead.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.chbAutoRead.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.chbAutoRead.Location = new System.Drawing.Point(498, 603); this.chbAutoRead.Location = new System.Drawing.Point(498, 482);
this.chbAutoRead.Name = "chbAutoRead"; this.chbAutoRead.Name = "chbAutoRead";
this.chbAutoRead.Size = new System.Drawing.Size(75, 21); this.chbAutoRead.Size = new System.Drawing.Size(75, 21);
this.chbAutoRead.TabIndex = 244; this.chbAutoRead.TabIndex = 244;
...@@ -492,7 +324,7 @@ ...@@ -492,7 +324,7 @@
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F); this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(828, 647); this.ClientSize = new System.Drawing.Size(828, 526);
this.Controls.Add(this.groupBox2); this.Controls.Add(this.groupBox2);
this.Controls.Add(this.button1); this.Controls.Add(this.button1);
this.Controls.Add(this.groupBox1); this.Controls.Add(this.groupBox1);
...@@ -531,8 +363,6 @@ ...@@ -531,8 +363,6 @@
private System.Windows.Forms.ComboBox cmbWriteIO; private System.Windows.Forms.ComboBox cmbWriteIO;
private System.Windows.Forms.CheckBox chbAutoRead; private System.Windows.Forms.CheckBox chbAutoRead;
private System.Windows.Forms.TextBox txtDoName; private System.Windows.Forms.TextBox txtDoName;
private System.Windows.Forms.Button btn_Door_Down;
private System.Windows.Forms.Button btn_Door_Up;
private System.Windows.Forms.Button btnCloseAxisBreak; private System.Windows.Forms.Button btnCloseAxisBreak;
private System.Windows.Forms.Button btnOpenAxisBreak; private System.Windows.Forms.Button btnOpenAxisBreak;
private System.Windows.Forms.Button button1; private System.Windows.Forms.Button button1;
...@@ -542,16 +372,6 @@ ...@@ -542,16 +372,6 @@
private System.Windows.Forms.Button btnOpenDo; private System.Windows.Forms.Button btnOpenDo;
private System.Windows.Forms.Button btnWriteSingleDO; private System.Windows.Forms.Button btnWriteSingleDO;
private System.Windows.Forms.Button btnCloseAll; private System.Windows.Forms.Button btnCloseAll;
private System.Windows.Forms.Button btn_Clamping_Tighten;
private System.Windows.Forms.Button btn_Clamping_Relax;
private System.Windows.Forms.Button btn_Warming_Stop;
private System.Windows.Forms.Button btn_Warming_Start;
private System.Windows.Forms.Button btn_Colding_Stop;
private System.Windows.Forms.Button btn_Colding_Start;
private System.Windows.Forms.Button btn_ColdDoor_Close;
private System.Windows.Forms.Button btn_ColdDoor_Open;
private System.Windows.Forms.Button btn_StirLocation_Up;
private System.Windows.Forms.Button btn_StirLocation_Down;
} }
} }
...@@ -30,14 +30,10 @@ namespace OnlineStore.TinPasteStore ...@@ -30,14 +30,10 @@ namespace OnlineStore.TinPasteStore
Control.CheckForIllegalCrossThreadCalls = false; Control.CheckForIllegalCrossThreadCalls = false;
InitializeComponent(); InitializeComponent();
} }
public FrmIOStatus(VerticalStoreBean store) public void SetStore(VerticalStoreBean store)
{ {
Control.CheckForIllegalCrossThreadCalls = false;
InitializeComponent();
this.boxBean = store; this.boxBean = store;
this.StoreId = store.StoreID; this.StoreId = store.StoreID;
LoadIOList();
} }
Dictionary<string, IOTextControl> DIControlList = new Dictionary<string, IOTextControl>(); Dictionary<string, IOTextControl> DIControlList = new Dictionary<string, IOTextControl>();
...@@ -146,6 +142,7 @@ namespace OnlineStore.TinPasteStore ...@@ -146,6 +142,7 @@ namespace OnlineStore.TinPasteStore
private void FrmStoreIOStatus_Load(object sender, EventArgs e) private void FrmStoreIOStatus_Load(object sender, EventArgs e)
{ {
LoadIOList();
} }
private void cmbWriteIO_DrawItem(object sender, DrawItemEventArgs e) private void cmbWriteIO_DrawItem(object sender, DrawItemEventArgs e)
...@@ -192,18 +189,6 @@ namespace OnlineStore.TinPasteStore ...@@ -192,18 +189,6 @@ namespace OnlineStore.TinPasteStore
} }
} }
private void btnOpenDoor_Click(object sender, EventArgs e)
{
IOManager.IOMove(IO_Type.Door_Up, IO_VALUE.HIGH);
IOManager.IOMove(IO_Type.Door_Down, IO_VALUE.LOW);
}
private void btnCloseDoor_Click(object sender, EventArgs e)
{
IOManager.IOMove(IO_Type.Door_Down, IO_VALUE.HIGH);
IOManager.IOMove(IO_Type.Door_Up, IO_VALUE.LOW);
}
private void FrmIOStatus_Shown(object sender, EventArgs e) private void FrmIOStatus_Shown(object sender, EventArgs e)
{ {
timer1.Start(); timer1.Start();
...@@ -259,57 +244,6 @@ namespace OnlineStore.TinPasteStore ...@@ -259,57 +244,6 @@ namespace OnlineStore.TinPasteStore
WriteDO(IO_VALUE.LOW); WriteDO(IO_VALUE.LOW);
} }
private void btn_Colding_Start_Click(object sender, EventArgs e)
{
IOManager.IOMove(IO_Type.Colding_Start, IO_VALUE.HIGH);
}
private void btn_Colding_Stop_Click(object sender, EventArgs e)
{
IOManager.IOMove(IO_Type.Colding_Start, IO_VALUE.LOW);
}
private void btn_Warming_Start_Click(object sender, EventArgs e)
{
IOManager.IOMove(IO_Type.Warming_Start, IO_VALUE.HIGH);
}
private void btn_Warming_Stop_Click(object sender, EventArgs e)
{
IOManager.IOMove(IO_Type.Warming_Start, IO_VALUE.LOW);
}
private void btn_Clamping_Tighten_Click(object sender, EventArgs e)
{
StoreManager.Store.CylinderMove(null, IO_Type.Clamping_Relax, IO_Type.Clamping_Tighten);
}
private void btn_Clamping_Relax_Click(object sender, EventArgs e)
{
StoreManager.Store.CylinderMove(null, IO_Type.Clamping_Tighten, IO_Type.Clamping_Relax);
}
private void btn_StirLocation_Up_Click(object sender, EventArgs e)
{
StoreManager.Store.CylinderMove(null, IO_Type.StirLocation_Down, IO_Type.StirLocation_Up);
}
private void btn_StirLocation_Down_Click(object sender, EventArgs e)
{
StoreManager.Store.CylinderMove(null, IO_Type.StirLocation_Up, IO_Type.StirLocation_Down);
}
private void btn_ColdDoor_Close_Click(object sender, EventArgs e)
{
StoreManager.Store.CylinderMove(null, IO_Type.ColdDoor_Open, IO_Type.ColdDoor_Close);
}
private void btn_ColdDoor_Open_Click(object sender, EventArgs e)
{
StoreManager.Store.CylinderMove(null, IO_Type.ColdDoor_Close, IO_Type.ColdDoor_Open);
}
} }
} }
...@@ -44,25 +44,14 @@ namespace OnlineStore.TinPasteStore ...@@ -44,25 +44,14 @@ namespace OnlineStore.TinPasteStore
LogUtil.error(LOGGER, "找不到对应的料仓"); LogUtil.error(LOGGER, "找不到对应的料仓");
return; return;
} }
VerticalStorePosition ktkPosition = null; VerticalPosition ktkPosition = null;
if (store.PositionNumList.Count > 0) if (store.PositionNumList.Count > 0)
{ {
cmbPosition.DataSource = store.PositionNumList; cmbPosition.DataSource = store.PositionNumList;
cmbPosition.SelectedIndex = 0; cmbPosition.SelectedIndex = 0;
ktkPosition = CSVPositionReader<VerticalStorePosition>.GetPositon(cmbPosition.Text); ktkPosition = CSVPositionReader<VerticalPosition>.GetPositon(cmbPosition.Text);
//store.PositionNumList = positionNumList;
List<VerticalStorePosition> allList = CSVPositionReader<VerticalStorePosition>.getPositionList();
List<VerticalStorePosition> position = (from m in allList where m.PosType.Equals(2) select m).ToList<VerticalStorePosition>();
cmbTargetPos.DataSource = position;
cmbTargetPos.DisplayMember = "PositionNum";
cmbTargetPos.SelectedIndex = 0;
cmbWeight.SelectedIndex = cmbWeight.Items.Count-1;
} }
ShowDoorPosition();
ShowGPostion();
ShowPosition(ktkPosition);
timer1.Enabled = true; timer1.Enabled = true;
} }
...@@ -122,11 +111,12 @@ namespace OnlineStore.TinPasteStore ...@@ -122,11 +111,12 @@ namespace OnlineStore.TinPasteStore
this.chbBuzzer.Checked = store.UseBuzzer; this.chbBuzzer.Checked = store.UseBuzzer;
axisMoveControl1.LoadData(store, store.moveAxisList.ToArray()); axisMoveControl1.LoadData(store, store.moveAxisList.ToArray());
FrmDeviceDebug frmd = new FrmDeviceDebug(); FrmIOStatus frm = new FrmIOStatus();
AddForm(" 温湿度/称重 ", frmd);
frm.SetStore(store);
AddForm("IO状态查看", frm);
LoadOk = true; LoadOk = true;
HideForm();
this.Opacity = 1; this.Opacity = 1;
} }
...@@ -156,9 +146,7 @@ namespace OnlineStore.TinPasteStore ...@@ -156,9 +146,7 @@ namespace OnlineStore.TinPasteStore
return; return;
} }
lblMoveState.Text = store.GetMoveStr();
lblThisSta.Text = store.GetRunStr() + " "; lblThisSta.Text = store.GetRunStr() + " ";
lblStirInfo.Text = store.CurrStirInfo.toStr();
if (store.MoveInfo.MoveType.Equals(MoveType.None).Equals(false)) if (store.MoveInfo.MoveType.Equals(MoveType.None).Equals(false))
{ {
lblThisSta.Text += store.MoveInfo.MoveParam.ToStr(); lblThisSta.Text += store.MoveInfo.MoveParam.ToStr();
...@@ -200,26 +188,26 @@ namespace OnlineStore.TinPasteStore ...@@ -200,26 +188,26 @@ namespace OnlineStore.TinPasteStore
} }
lblWarnMsg.Text = store.WarnMsg; lblWarnMsg.Text = store.WarnMsg;
if (store.Config.IsHasDoorLimit.Equals(1)) //if (store.Config.IsHasDoorLimit.Equals(1))
{ //{
if (IOManager.IOValue(IO_Type.Door_Limit).Equals(IO_VALUE.LOW)) // if (IOManager.IOValue(IO_Type.Door_Limit).Equals(IO_VALUE.LOW))
{ // {
lblWarnMsg.Text = lblWarnMsg.Text + " 前门未关"; // lblWarnMsg.Text = lblWarnMsg.Text + " 前门未关";
} // }
else if (store.Config.StoreDIList.ContainsKey(IO_Type.Door_LeftLimit) && IOManager.IOValue(IO_Type.Door_LeftLimit).Equals(IO_VALUE.LOW)) // else if (store.Config.StoreDIList.ContainsKey(IO_Type.Door_LeftLimit) && IOManager.IOValue(IO_Type.Door_LeftLimit).Equals(IO_VALUE.LOW))
{ // {
lblWarnMsg.Text = lblWarnMsg.Text + " 左侧门未关"; // lblWarnMsg.Text = lblWarnMsg.Text + " 左侧门未关";
} // }
else if (store.Config.StoreDIList.ContainsKey(IO_Type.Door_RightLimit) && IOManager.IOValue(IO_Type.Door_RightLimit).Equals(IO_VALUE.LOW)) // else if (store.Config.StoreDIList.ContainsKey(IO_Type.Door_RightLimit) && IOManager.IOValue(IO_Type.Door_RightLimit).Equals(IO_VALUE.LOW))
{ // {
lblWarnMsg.Text = lblWarnMsg.Text + " 右侧门未关"; // lblWarnMsg.Text = lblWarnMsg.Text + " 右侧门未关";
} // }
} //}
//如果不在出入库中,且叉子上有信号,需要提示检查叉子 ////如果不在出入库中,且叉子上有信号,需要提示检查叉子
if (store.runStatus.Equals(StoreRunStatus.Runing) && IOManager.IOValue(IO_Type.TinCheck_Fixture).Equals(IO_VALUE.HIGH)) //if (store.runStatus.Equals(StoreRunStatus.Runing) && IOManager.IOValue(IO_Type.TinCheck_Fixture).Equals(IO_VALUE.HIGH))
{ //{
lblWarnMsg.Text = lblWarnMsg.Text + " 叉子料盘检测有料,请检查"; // lblWarnMsg.Text = lblWarnMsg.Text + " 叉子料盘检测有料,请检查";
} //}
if (store.autoNext) if (store.autoNext)
{ {
...@@ -296,170 +284,26 @@ namespace OnlineStore.TinPasteStore ...@@ -296,170 +284,26 @@ namespace OnlineStore.TinPasteStore
} }
} }
private void cmbPosition_SelectedIndexChanged(object sender, EventArgs e) private StoreMoveP GetMoveP()
{
if (cmbPosition.SelectedIndex >= 0)
{
string PosId = cmbPosition.Text;
VerticalStorePosition position = CSVPositionReader<VerticalStorePosition>.GetPositon(PosId);
ShowPosition(position);
if (position.IsTieBag())
{
rdbFixture.Checked = false;
rdbFixture.Enabled = false;
rdbLeft.Enabled = true;
rdbRight.Enabled = true;
rdbLeft.Checked = true;
}
else
{
rdbFixture.Enabled = true;
rdbFixture.Checked = true;
rdbLeft.Enabled = false;
rdbRight.Enabled = false;
}
btnBackwarm.Text = "[" + PosId + "]->回温测试";
btnStirTest.Text = "[" + PosId + "]->搅拌测试";
if (position.PosType.Equals(1))
{
groWarm.Enabled = true;
groStir.Enabled = false;
btnOutStore.Enabled = true;
}
else if (position.PosType.Equals(2))
{
groWarm.Enabled = false;
groStir.Enabled = true;
btnOutStore.Enabled = true;
}
else
{ {
groWarm.Enabled = false; throw new NotImplementedException();
groStir.Enabled = false;
btnOutStore.Enabled = false;
}
} }
}
#region 库位配置
private void ShowGPostion()
{
txtInOutP1.Text = store.Config.InOutAxis_P1.ToString();
txtStirP1.Text = store.Config.Stir_Axis_P1.ToString();
txtStirP2.Text = store.Config.Stir_Axis_P2.ToString();
txtWarmP1.Text = store.Config.Warming_Axis_P1.ToString();
txtColdP1.Text = store.Config.Colding_Axis_P1.ToString();
txtUpdownP101.Text = store.Config.UpDownAxis_StirH_P101.ToString(); private void cmbPosition_SelectedIndexChanged(object sender, EventArgs e)
txtUpdownP102.Text = store.Config.UpDownAxis_StirL_P102.ToString();
txtMiddleP101.Text = store.Config.MiddleAxis_Stir_P101.ToString();
txtInOutP101.Text = store.Config.InOutAxis_Stir_P101.ToString();
}
private void ShowDoorPosition()
{ {
txtUpDownP21.Text = store.Config.UpDownAxis_IH_P21.ToString(); if (cmbPosition.SelectedIndex >= 0)
txtUpDownP71.Text = store.Config.UpDownAxis_OH_P71.ToString();
txtUpDownP81.Text = store.Config.UpDownAxis_IL_P81.ToString();
txtUpDownP11.Text = store.Config.UpDownAxis_OL_P11.ToString();
txtMiddleP11.Text = store.Config.MiddleAxis_P11.ToString();
txtInOutP21.Text = store.Config.InOutAxis_P21.ToString();
txtMiddleP12.Text = store.Config.MiddleAxis_P12.ToString();
txtInOutP22.Text = store.Config.InOutAxis_P22.ToString();
txtInOutP20.Text = store.Config.InOutAxis_P20.ToString();
txtMiddleP1.Text = store.Config.MiddleAxis_P1.ToString();
txtUpDownP1.Text = store.Config.UpDownAxis_OL_P1.ToString();
txtUpDownP2.Text = store.Config.UpDownAxis_IH_P2.ToString();
txtUpDownP7.Text = store.Config.UpDownAxis_OH_P7.ToString();
txtUpDownP8.Text = store.Config.UpDownAxis_IL_P8.ToString();
}
private StoreMoveP GetMoveP()
{ {
StoreMoveP ktk = new StoreMoveP(); string PosId = cmbPosition.Text;
ktk.Warm_P2 = FormUtil.GetIntValue(txtWarmP2); VerticalPosition position = CSVPositionReader<VerticalPosition>.GetPositon(PosId);
ktk.Cold_P2 = FormUtil.GetIntValue(txtColdP2);
// ktk.StirAxis_P = FormUtil.GetIntValue( );
ktk.InOut_P1 = FormUtil.GetIntValue(txtInOutP1);
ktk.InOut_P3 = FormUtil.GetIntValue(txtInOutP3);
ktk.Middle_P2 = FormUtil.GetIntValue(txtMiddleP2);
ktk.UpDown_P3 = FormUtil.GetIntValue(txtUpDownP3);
ktk.UpDown_P4 = FormUtil.GetIntValue(txtUpDownP4);
ktk.UpDown_P5 = FormUtil.GetIntValue(txtUpDownP5);
ktk.UpDown_P6 = FormUtil.GetIntValue(txtUpDownP6);
if (rdbFixture.Checked)
{
ktk.UpDown_P1 = FormUtil.GetIntValue(txtUpDownP1);
ktk.UpDown_P2 = FormUtil.GetIntValue(txtUpDownP2);
ktk.UpDown_P7 = FormUtil.GetIntValue(txtUpDownP7);
ktk.UpDown_P8 = FormUtil.GetIntValue(txtUpDownP8);
ktk.InOut_P2 = FormUtil.GetIntValue(txtInOutP20);
ktk.Middle_P1 = FormUtil.GetIntValue(txtMiddleP1);
} }
else if (rdbLeft.Checked)
{
ktk.UpDown_P1 = FormUtil.GetIntValue(txtUpDownP11);
ktk.UpDown_P2 = FormUtil.GetIntValue(txtUpDownP21);
ktk.UpDown_P7 = FormUtil.GetIntValue(txtUpDownP71);
ktk.UpDown_P8 = FormUtil.GetIntValue(txtUpDownP81);
ktk.InOut_P2 = FormUtil.GetIntValue(txtInOutP21);
ktk.Middle_P2 = FormUtil.GetIntValue(txtMiddleP11);
}
else if (rdbRight.Checked)
{
ktk.UpDown_P1 = FormUtil.GetIntValue(txtUpDownP11);
ktk.UpDown_P2 = FormUtil.GetIntValue(txtUpDownP21);
ktk.UpDown_P7 = FormUtil.GetIntValue(txtUpDownP71);
ktk.UpDown_P8 = FormUtil.GetIntValue(txtUpDownP81);
ktk.InOut_P2 = FormUtil.GetIntValue(txtInOutP22);
ktk.Middle_P2 = FormUtil.GetIntValue(txtMiddleP12);
} }
return ktk;
}
private void ShowPosition(VerticalStorePosition position)
{
if (position != null)
{
txtMiddleP2.Text = position.MiddleAxis_P2.ToString();
txtUpDownP3.Text = position.UpDownAxis_IH_P3.ToString();
txtUpDownP4.Text = position.UpDownAxis_IL_P4.ToString();
txtUpDownP5.Text = position.UpDownAxis_OH_P5.ToString();
txtUpDownP6.Text = position.UpDownAxis_OL_P6.ToString();
txtWarmP2.Text = position.WarmAxis_P2.ToString();
txtColdP2.Text = position.ColdAxis_P2.ToString();
txtInOutP3.Text = position.InOutAxis_P3.ToString();
lblPosType.Text = position.PosTypeStr();
}
}
private VerticalStorePosition GetPosition(VerticalStorePosition position)
{
position.MiddleAxis_P2 = FormUtil.GetIntValue(txtMiddleP2);
position.UpDownAxis_IH_P3 = FormUtil.GetIntValue(txtUpDownP3);
position.UpDownAxis_IL_P4 = FormUtil.GetIntValue(txtUpDownP4);
position.InOutAxis_P3 = FormUtil.GetIntValue(txtInOutP3);
position.ColdAxis_P2 = FormUtil.GetIntValue(txtColdP2);
position.UpDownAxis_OH_P5 = FormUtil.GetIntValue(txtUpDownP5);
position.UpDownAxis_OL_P6 = FormUtil.GetIntValue(txtUpDownP6);
position.WarmAxis_P2 = FormUtil.GetIntValue(txtWarmP2);
return position;
}
private void btnSavePosition_Click(object sender, EventArgs e) private void btnSavePosition_Click(object sender, EventArgs e)
{ {
string selectPositionNum = cmbPosition.Text; string selectPositionNum = cmbPosition.Text;
VerticalStorePosition position = CSVPositionReader<VerticalStorePosition>.GetPositon(selectPositionNum); VerticalPosition position = CSVPositionReader<VerticalPosition>.GetPositon(selectPositionNum);
position = GetPosition(position); position = GetPosition(position);
string appPath = Application.StartupPath; string appPath = Application.StartupPath;
string positionConfigFile = appPath + ConfigAppSettings.GetValue(Setting_Init.Store_Position_Config); string positionConfigFile = appPath + ConfigAppSettings.GetValue(Setting_Init.Store_Position_Config);
...@@ -467,7 +311,7 @@ namespace OnlineStore.TinPasteStore ...@@ -467,7 +311,7 @@ namespace OnlineStore.TinPasteStore
{ {
positionConfigFile = appPath + ConfigAppSettings.GetValue(Setting_Init.Store_Position_Config, "_" + store.StoreID.ToString()); positionConfigFile = appPath + ConfigAppSettings.GetValue(Setting_Init.Store_Position_Config, "_" + store.StoreID.ToString());
} }
bool result = CSVPositionReader<VerticalStorePosition>.SavePostion(positionConfigFile, position); bool result = CSVPositionReader<VerticalPosition>.SavePostion(positionConfigFile, position);
if (!result) if (!result)
{ {
MessageBox.Show("库位[" + selectPositionNum + "]保存失败 "); MessageBox.Show("库位[" + selectPositionNum + "]保存失败 ");
...@@ -478,89 +322,26 @@ namespace OnlineStore.TinPasteStore ...@@ -478,89 +322,26 @@ namespace OnlineStore.TinPasteStore
} }
} }
private VerticalPosition GetPosition(VerticalPosition position)
#endregion
#region 轴运动测试
private bool InOutIsIsP1()
{
int InOutDefaultPosition = ConfigAppSettings.GetIntValue(Setting_Init.InOutDefaultPosition);
int currValue = ACServerManager.GetActualtPosition(store.Config.InOut_Axis.DeviceName, store.Config.InOut_Axis.GetAxisValue());
if (currValue <= InOutDefaultPosition)
{
return true;
}
MessageBox.Show("叉子不在待机位,请先将叉子退回待机位(" + InOutDefaultPosition + ")", "警告(叉子在待机位时,才能移动升降轴和旋转轴) ", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
return false;
}
private void AxisABSMove(ConfigMoveAxis moveAxis, TextBox txt, int targetSpeed)
{
if (store.Config.InOut_Axis.IsSameAxis(moveAxis.DeviceName, moveAxis.GetAxisValue()))
{
if (store.InOutAxisCanMove().Equals(false))
{
MessageBox.Show("定位气缸不在下降端,不能移动进出轴", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
}
else
{
if (!InOutIsIsP1())
{ {
return; throw new NotImplementedException();
}
}
int targetPosition = FormUtil.GetIntValue(txt);
moveAxis.TargetPosition = targetPosition;
ACServerManager.AbsMove(moveAxis.DeviceName, moveAxis.GetAxisValue(), targetPosition, targetSpeed);
} }
private void btnUpDownP1_Click(object sender, EventArgs e)
{
AxisABSMove(store.Config.UpDown_Axis, txtUpDownP1, store.Config.UpDownAxis_P1_Speed);
}
private void btnUpDownP2_Click(object sender, EventArgs e) #region 轴运动测试
{
AxisABSMove(store.Config.UpDown_Axis, txtUpDownP2, store.Config.UpDownAxis_P2_Speed);
}
private void btnUpDownP7_Click(object sender, EventArgs e)
{
AxisABSMove(store.Config.UpDown_Axis, txtUpDownP7, store.Config.UpDownAxis_P7_Speed);
}
private void btnUpDownP8_Click(object sender, EventArgs e)
{
AxisABSMove(store.Config.UpDown_Axis, txtUpDownP8, store.Config.UpDownAxis_P8_Speed);
}
private void btnUpDownP3_Click(object sender, EventArgs e)
{
AxisABSMove(store.Config.UpDown_Axis, txtUpDownP3, store.Config.UpDownAxis_P3_Speed);
}
private void btnUpDownP4_Click(object sender, EventArgs e) private void AxisABSMove(ConfigMoveAxis moveAxis, TextBox txt, int targetSpeed)
{ {
AxisABSMove(store.Config.UpDown_Axis, txtUpDownP4, store.Config.UpDownAxis_P4_Speed);
}
private void btnUpDownP5_Click(object sender, EventArgs e) int targetPosition = FormUtil.GetIntValue(txt);
{ moveAxis.TargetPosition = targetPosition;
AxisABSMove(store.Config.UpDown_Axis, txtUpDownP5, store.Config.UpDownAxis_P5_Speed); ACServerManager.AbsMove(moveAxis.DeviceName, moveAxis.GetAxisValue(), targetPosition, targetSpeed);
} }
private void btnUpDownP6_Click(object sender, EventArgs e)
{
AxisABSMove(store.Config.UpDown_Axis, txtUpDownP6, store.Config.UpDownAxis_P6_Speed);
}
private void btnMiddleP1_Click(object sender, EventArgs e)
{
AxisABSMove(store.Config.Middle_Axis, txtMiddleP1, store.Config.MiddleAxis_P1_Speed);
}
private void btnMiddleP2_Click(object sender, EventArgs e) private void btnMiddleP2_Click(object sender, EventArgs e)
{ {
...@@ -569,108 +350,16 @@ namespace OnlineStore.TinPasteStore ...@@ -569,108 +350,16 @@ namespace OnlineStore.TinPasteStore
private void btnInOutP1_Click(object sender, EventArgs e) private void btnInOutP1_Click(object sender, EventArgs e)
{ {
AxisABSMove(store.Config.InOut_Axis, txtInOutP1, store.Config.InOutAxis_P1_Speed); // AxisABSMove(store.Config.InOut_Axis, txtInOutP1, store.Config.InOutAxis_P1_Speed);
} }
private void btnInOutP3_Click(object sender, EventArgs e) private void btnInOutP3_Click(object sender, EventArgs e)
{ {
AxisABSMove(store.Config.InOut_Axis, txtInOutP3, store.Config.InOutAxis_P3_Speed); // AxisABSMove(store.Config.InOut_Axis, txtMP1, store.Config.InOutAxis_P3_Speed);
} }
private void btnInOutP2_Click(object sender, EventArgs e)
{
AxisABSMove(store.Config.InOut_Axis, txtInOutP20, store.Config.InOutAxis_P2_Speed);
}
private void btnUpDownP11_Click(object sender, EventArgs e)
{
AxisABSMove(store.Config.UpDown_Axis, txtUpDownP11, store.Config.UpDownAxis_P1_Speed);
}
private void btnUpDownP71_Click(object sender, EventArgs e)
{
AxisABSMove(store.Config.UpDown_Axis, txtUpDownP71, store.Config.UpDownAxis_P7_Speed);
}
private void btnUpDownP21_Click(object sender, EventArgs e)
{
AxisABSMove(store.Config.UpDown_Axis, txtUpDownP21, store.Config.UpDownAxis_P2_Speed);
}
private void btnUpDownP81_Click(object sender, EventArgs e)
{
AxisABSMove(store.Config.UpDown_Axis, txtUpDownP81, store.Config.UpDownAxis_P8_Speed);
}
private void btnUpDownP101_Click(object sender, EventArgs e)
{
AxisABSMove(store.Config.UpDown_Axis, txtUpdownP101, store.Config.UpDownAxis_P101_Speed);
}
private void btnUpDownP102_Click(object sender, EventArgs e)
{
AxisABSMove(store.Config.UpDown_Axis, txtUpdownP102, store.Config.UpDownAxis_P102_Speed);
}
private void btnMiddleP11_Click(object sender, EventArgs e)
{
AxisABSMove(store.Config.Middle_Axis, txtMiddleP11, store.Config.MiddleAxis_P1_Speed);
}
private void btnMiddleP12_Click(object sender, EventArgs e)
{
AxisABSMove(store.Config.Middle_Axis, txtMiddleP12, store.Config.MiddleAxis_P1_Speed);
}
private void btnMiddleP101_Click(object sender, EventArgs e)
{
AxisABSMove(store.Config.Middle_Axis, txtMiddleP101, store.Config.MiddleAxis_P101_Speed);
}
private void btnInOutP21_Click(object sender, EventArgs e)
{
AxisABSMove(store.Config.InOut_Axis, txtInOutP21, store.Config.InOutAxis_P2_Speed);
}
private void btnInOutP22_Click(object sender, EventArgs e)
{
AxisABSMove(store.Config.InOut_Axis, txtInOutP22, store.Config.InOutAxis_P2_Speed);
}
private void btnInOutP101_Click(object sender, EventArgs e)
{
AxisABSMove(store.Config.InOut_Axis, txtInOutP101, store.Config.InOutAxis_P101_Speed);
}
private void btnWarmP2_Click(object sender, EventArgs e)
{
AxisABSMove(store.Config.Warming_Axis, txtWarmP2, store.Config.WarmingAxis_P2_Speed);
}
private void btnWarmP1_Click(object sender, EventArgs e)
{
AxisABSMove(store.Config.Warming_Axis, txtWarmP1, store.Config.WarmingAxis_P1_Speed);
}
private void btnColdP2_Click(object sender, EventArgs e)
{
AxisABSMove(store.Config.Colding_Axis, txtColdP2, store.Config.ColdingAxis_P2_Speed);
}
private void btnColdP1_Click(object sender, EventArgs e)
{
AxisABSMove(store.Config.Colding_Axis, txtColdP1, store.Config.ColdingAxis_P1_Speed);
}
private void btnStirP1_Click(object sender, EventArgs e)
{
AxisABSMove(store.Config.Stir_Axis, txtStirP1, store.Config.StirAxis_P1_Speed);
}
private void btnStirP2_Click(object sender, EventArgs e)
{
AxisABSMove(store.Config.Stir_Axis, txtStirP2, store.Config.StirAxis_P2_Speed);
}
#endregion #endregion
...@@ -679,7 +368,7 @@ namespace OnlineStore.TinPasteStore ...@@ -679,7 +368,7 @@ namespace OnlineStore.TinPasteStore
private void button1_Click(object sender, EventArgs e) private void button1_Click(object sender, EventArgs e)
{ {
FormManager.ShowAxisDebug(store); //FormManager.ShowAxisDebug(store);
} }
private void btnStartAuTo_Click(object sender, EventArgs e) private void btnStartAuTo_Click(object sender, EventArgs e)
...@@ -740,27 +429,6 @@ namespace OnlineStore.TinPasteStore ...@@ -740,27 +429,6 @@ namespace OnlineStore.TinPasteStore
this.store.Reset(); this.store.Reset();
} }
private void btnIO_Click(object sender, EventArgs e)
{
FormManager.ShowIOShow(store);
}
private void btnLogDebug_Click(object sender, EventArgs e)
{
if (LogUtil.debug_opened == false)
{
btnLogDebug.Text = "关闭DEBUG";
LogUtil.debug_opened = true;
}
else
{
btnLogDebug.Text = "开启DEBUG";
LogUtil.debug_opened = false;
}
}
private void 料仓运转ONToolStripMenuItem_Click(object sender, EventArgs e) private void 料仓运转ONToolStripMenuItem_Click(object sender, EventArgs e)
{ {
this.Enabled = false; this.Enabled = false;
...@@ -782,11 +450,7 @@ namespace OnlineStore.TinPasteStore ...@@ -782,11 +450,7 @@ namespace OnlineStore.TinPasteStore
IOManager.IOMove(IO_Type.Camera_Led, IO_VALUE.LOW); IOManager.IOMove(IO_Type.Camera_Led, IO_VALUE.LOW);
} }
private void 打开舱门ToolStripMenuItem_Click(object sender, EventArgs e)
{
IOManager.IOMove(IO_Type.Door_Up, IO_VALUE.HIGH);
IOManager.IOMove(IO_Type.Door_Down, IO_VALUE.LOW);
}
private void 料仓运转OFFToolStripMenuItem_Click(object sender, EventArgs e) private void 料仓运转OFFToolStripMenuItem_Click(object sender, EventArgs e)
{ {
...@@ -794,11 +458,7 @@ namespace OnlineStore.TinPasteStore ...@@ -794,11 +458,7 @@ namespace OnlineStore.TinPasteStore
LogUtil.info("料仓运转OFF完成"); LogUtil.info("料仓运转OFF完成");
} }
private void 关闭仓门ToolStripMenuItem_Click(object sender, EventArgs e)
{
IOManager.IOMove(IO_Type.Door_Down, IO_VALUE.HIGH);
IOManager.IOMove(IO_Type.Door_Up, IO_VALUE.LOW);
}
private void 回待机点ToolStripMenuItem_Click(object sender, EventArgs e) private void 回待机点ToolStripMenuItem_Click(object sender, EventArgs e)
{ {
...@@ -819,10 +479,6 @@ namespace OnlineStore.TinPasteStore ...@@ -819,10 +479,6 @@ namespace OnlineStore.TinPasteStore
} }
} }
private void 换肤ToolStripMenuItem_Click(object sender, EventArgs e)
{
FormManager.NextSkin();
}
private void chbAuto_CheckedChanged(object sender, EventArgs e) private void chbAuto_CheckedChanged(object sender, EventArgs e)
{ {
if (!LoadOk) if (!LoadOk)
...@@ -907,23 +563,23 @@ namespace OnlineStore.TinPasteStore ...@@ -907,23 +563,23 @@ namespace OnlineStore.TinPasteStore
} }
} }
private void btnUpdown_Click(object sender, EventArgs e) //private void btnUpdown_Click(object sender, EventArgs e)
{ //{
string PortName = store.Config.UpDown_Axis.DeviceName; // string PortName = store.Config.UpDown_Axis.DeviceName;
int slvAddr = store.Config.UpDown_Axis.GetAxisValue(); // int slvAddr = store.Config.UpDown_Axis.GetAxisValue();
string ioIP = "192.168.200.13"; // string ioIP = "192.168.200.13";
int ioIndex = 0; // int ioIndex = 0;
// if (store.Config.StoreDIList.ContainsKey(IO_Type.UpdownPositionSingal)) // // if (store.Config.StoreDIList.ContainsKey(IO_Type.UpdownPositionSingal))
if (store.Config.StoreDIList.ContainsKey(IO_Type.TinCheck_Fixture)) // if (store.Config.StoreDIList.ContainsKey(IO_Type.TinCheck_Fixture))
{ // {
ioIP = store.Config.StoreDIList[IO_Type.TinCheck_Fixture].IO_IP; // ioIP = store.Config.StoreDIList[IO_Type.TinCheck_Fixture].IO_IP;
ioIndex = store.Config.StoreDIList[IO_Type.TinCheck_Fixture].GetIOAddr(); // ioIndex = store.Config.StoreDIList[IO_Type.TinCheck_Fixture].GetIOAddr();
} // }
FrmPositionTool frm = new FrmPositionTool(PortName, slvAddr, ioIP, ioIndex); // FrmPositionTool frm = new FrmPositionTool(PortName, slvAddr, ioIP, ioIndex);
frm.ShowDialog(); // frm.ShowDialog();
LogUtil.logBox = this.richTextBox1; // LogUtil.logBox = this.richTextBox1;
} //}
#endregion #endregion
...@@ -945,7 +601,6 @@ namespace OnlineStore.TinPasteStore ...@@ -945,7 +601,6 @@ namespace OnlineStore.TinPasteStore
IOManager.instance.CloseAllConnection(); IOManager.instance.CloseAllConnection();
ACServerManager.CloseAllPort(); ACServerManager.CloseAllPort();
HumitureController.Release(); HumitureController.Release();
OKLEController.Release();
System.Environment.Exit(System.Environment.ExitCode); System.Environment.Exit(System.Environment.ExitCode);
} }
...@@ -993,17 +648,7 @@ namespace OnlineStore.TinPasteStore ...@@ -993,17 +648,7 @@ namespace OnlineStore.TinPasteStore
} }
axisMoveControl1.Enabled = status; axisMoveControl1.Enabled = status;
groupInout.Enabled = status; groupInout.Enabled = status;
groupBox1.Enabled = status;
groupBox4.Enabled = status;
if (!status)
{
groWarm.Enabled = status;
groStir.Enabled = status;
}
else
{
cmbPosition_SelectedIndexChanged(null, null);
}
} }
private void rdbLeft_CheckedChanged(object sender, EventArgs e) private void rdbLeft_CheckedChanged(object sender, EventArgs e)
{ {
...@@ -1012,34 +657,7 @@ namespace OnlineStore.TinPasteStore ...@@ -1012,34 +657,7 @@ namespace OnlineStore.TinPasteStore
private void btnDoorPSave_Click(object sender, EventArgs e) private void btnDoorPSave_Click(object sender, EventArgs e)
{ {
store.Config.UpDownAxis_OL_P1 = FormUtil.GetIntValue(txtUpDownP1);
store.Config.UpDownAxis_IH_P2 = FormUtil.GetIntValue(txtUpDownP2);
store.Config.UpDownAxis_OH_P7 = FormUtil.GetIntValue(txtUpDownP7);
store.Config.UpDownAxis_IL_P8 = FormUtil.GetIntValue(txtUpDownP8);
store.Config.UpDownAxis_OL_P11 = FormUtil.GetIntValue(txtUpDownP11);
store.Config.UpDownAxis_IH_P21 = FormUtil.GetIntValue(txtUpDownP21);
store.Config.UpDownAxis_OH_P71 = FormUtil.GetIntValue(txtUpDownP71);
store.Config.UpDownAxis_IL_P81 = FormUtil.GetIntValue(txtUpDownP81);
store.Config.UpDownAxis_StirH_P101 = FormUtil.GetIntValue(txtUpdownP101);
store.Config.UpDownAxis_StirL_P102 = FormUtil.GetIntValue(txtUpdownP102);
store.Config.InOutAxis_P1 = FormUtil.GetIntValue(txtInOutP1);
store.Config.InOutAxis_P20 = FormUtil.GetIntValue(txtInOutP20);
store.Config.InOutAxis_P21 = FormUtil.GetIntValue(txtInOutP21);
store.Config.InOutAxis_P22 = FormUtil.GetIntValue(txtInOutP22);
store.Config.InOutAxis_Stir_P101 = FormUtil.GetIntValue(txtInOutP101);
store.Config.MiddleAxis_P1 = FormUtil.GetIntValue(txtMiddleP1);
store.Config.MiddleAxis_P11 = FormUtil.GetIntValue(txtMiddleP11);
store.Config.MiddleAxis_P12 = FormUtil.GetIntValue(txtMiddleP12);
store.Config.MiddleAxis_Stir_P101 = FormUtil.GetIntValue(txtMiddleP101);
store.Config.Warming_Axis_P1 = FormUtil.GetIntValue(txtWarmP1);
store.Config.Colding_Axis_P1 = FormUtil.GetIntValue(txtColdP1);
store.Config.Stir_Axis_P1 = FormUtil.GetIntValue(txtStirP1);
store.Config.Stir_Axis_P2 = FormUtil.GetIntValue(txtStirP2);
//更新缓存 //更新缓存
bool result = StoreManager.UpdateBoxConfig(store.Config); bool result = StoreManager.UpdateBoxConfig(store.Config);
...@@ -1052,68 +670,23 @@ namespace OnlineStore.TinPasteStore ...@@ -1052,68 +670,23 @@ namespace OnlineStore.TinPasteStore
MessageBox.Show("仓门/搅拌/待机 位置保存成功 "); MessageBox.Show("仓门/搅拌/待机 位置保存成功 ");
} }
} }
private void btnBackwarm_Click(object sender, EventArgs e)
{
string posId = cmbPosition.Text;
string targetPos = cmbTargetPos.Text;
LogUtil.info("点击 回温测试 按钮:【" + posId + "】 【" + targetPos + "】");
InOutParam param = InOutParam.NewMovePosParam(posId, "ABC", 500, targetPos, "XYZ", 500);
VerticalStorePosition pos = CSVPositionReader<VerticalStorePosition>.GetPositon(posId);
VerticalStorePosition tpos = CSVPositionReader<VerticalStorePosition>.GetPositon(targetPos);
if (pos != null && tpos != null && pos.PosType.Equals(1) && tpos.PosType.Equals(2))
{
if (store.MoveInfo.MoveType.Equals(MoveType.None) && store.runStatus.Equals(StoreRunStatus.Runing))
{
bool msg = store.StartMovement(param);
}
}
else
{
MessageBox.Show("请选择正确的库位!");
}
}
private void btnStirTest_Click(object sender, EventArgs e) public int getCount(int[] A)
{ {
int weight = Convert.ToInt32(cmbWeight.Text); int i = 0;
int seconds = (int)numTime.Value; for (int nSize = 0; nSize < A.Length; nSize++)
string posId = cmbPosition.Text;
LogUtil.info("点击 搅拌测试 按钮:【" + posId + "】 【" + weight + "】");
InOutParam param = new InOutParam(MoveType.Stirring, posId, "ABC", 0, 0, weight);
VerticalStorePosition pos = CSVPositionReader<VerticalStorePosition>.GetPositon(posId);
if (pos != null && pos.PosType.Equals(1))
{ {
if (store.MoveInfo.MoveType.Equals(MoveType.None) && store.runStatus.Equals(StoreRunStatus.Runing)) if (A[nSize] != 0)
{ {
bool msg = store.StartStirring(param); int temp = A[0];
} A[0] = A[nSize];
A[nSize] = temp;
i++;
} }
else
{
MessageBox.Show("请选择正确的库位!");
} }
return i;
} }
private void btnClearStir_Click(object sender, EventArgs e)
{
LogUtil.error(store.Name + " 点击:" + btnClearStir.Text);
if (store.CurrStirInfo.InStirWork)
{
DialogResult result = MessageBox.Show("当前搅拌信息:" + store.CurrStirInfo.toStr() + "\n" + "请确保搅拌位置物料已拿走,确定清理搅拌信息?",
"确认提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk);
if (result.Equals(DialogResult.OK))
{
LogUtil.info(store.Name + " 手动清理搅拌信息:" + store.CurrStirInfo.toStr());
store.UpdateCurrStirInfo(false, new InOutParam(MoveType.None,""));
}
}
else
{
MessageBox.Show("暂无搅拌信息");
}
}
} }
} }
...@@ -83,25 +83,12 @@ ...@@ -83,25 +83,12 @@
</Reference> </Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="FormManager.cs" />
<Compile Include="FrmAxisDebug.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="FrmAxisDebug.Designer.cs">
<DependentUpon>FrmAxisDebug.cs</DependentUpon>
</Compile>
<Compile Include="FrmBase.cs"> <Compile Include="FrmBase.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
<Compile Include="FrmBase.Designer.cs"> <Compile Include="FrmBase.Designer.cs">
<DependentUpon>FrmBase.cs</DependentUpon> <DependentUpon>FrmBase.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="FrmDeviceDebug.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="FrmDeviceDebug.Designer.cs">
<DependentUpon>FrmDeviceDebug.cs</DependentUpon>
</Compile>
<Compile Include="FrmIOStatus.cs"> <Compile Include="FrmIOStatus.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
...@@ -147,15 +134,9 @@ ...@@ -147,15 +134,9 @@
<Compile Include="useControl\AxisJogControl.Designer.cs"> <Compile Include="useControl\AxisJogControl.Designer.cs">
<DependentUpon>AxisJogControl.cs</DependentUpon> <DependentUpon>AxisJogControl.cs</DependentUpon>
</Compile> </Compile>
<EmbeddedResource Include="FrmAxisDebug.resx">
<DependentUpon>FrmAxisDebug.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FrmBase.resx"> <EmbeddedResource Include="FrmBase.resx">
<DependentUpon>FrmBase.cs</DependentUpon> <DependentUpon>FrmBase.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="FrmDeviceDebug.resx">
<DependentUpon>FrmDeviceDebug.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FrmIOStatus.resx"> <EmbeddedResource Include="FrmIOStatus.resx">
<DependentUpon>FrmIOStatus.cs</DependentUpon> <DependentUpon>FrmIOStatus.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
......
...@@ -63,20 +63,8 @@ namespace OnlineStore.TinPasteStore.useControl ...@@ -63,20 +63,8 @@ namespace OnlineStore.TinPasteStore.useControl
/// </summary> /// </summary>
private bool InOutIsIsP1() private bool InOutIsIsP1()
{ {
int InOutDefaultPosition = ConfigAppSettings.GetIntValue(Setting_Init.InOutDefaultPosition);
//if (InOutDefaultPosition > 3000 || InOutDefaultPosition.Equals(0))
//{
// InOutDefaultPosition = 3000;
//}
ConfigMoveAxis inout = StoreManager.Store.Config.InOut_Axis;
int currValue = ACServerManager.GetActualtPosition(inout.DeviceName, inout.GetAxisValue());
if (currValue <= InOutDefaultPosition)
{
return true; return true;
} }
MessageBox.Show("进出轴不在待机位,请先将进出轴退回待机位(" + InOutDefaultPosition + ")", "警告(进出轴在待机位时,才能移动其他轴) ", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
return false;
}
private void AxisMove(int speed) private void AxisMove(int speed)
{ {
LogUtil.debug("点动:[" + AxisInfo.DeviceName + "_" + AxisInfo.GetAxisValue() + "],speed=" + speed); LogUtil.debug("点动:[" + AxisInfo.DeviceName + "_" + AxisInfo.GetAxisValue() + "],speed=" + speed);
......
...@@ -29,6 +29,9 @@ ...@@ -29,6 +29,9 @@
private void InitializeComponent() private void InitializeComponent()
{ {
this.groupAxis = new System.Windows.Forms.GroupBox(); this.groupAxis = new System.Windows.Forms.GroupBox();
this.linkLabel1 = new System.Windows.Forms.LinkLabel();
this.btnMovej = new System.Windows.Forms.Button();
this.btnMove = new System.Windows.Forms.Button();
this.label7 = new System.Windows.Forms.Label(); this.label7 = new System.Windows.Forms.Label();
this.txtServoStatue = new System.Windows.Forms.TextBox(); this.txtServoStatue = new System.Windows.Forms.TextBox();
this.label17 = new System.Windows.Forms.Label(); this.label17 = new System.Windows.Forms.Label();
...@@ -65,36 +68,7 @@ ...@@ -65,36 +68,7 @@
this.label46 = new System.Windows.Forms.Label(); this.label46 = new System.Windows.Forms.Label();
this.comboBox1 = new System.Windows.Forms.ComboBox(); this.comboBox1 = new System.Windows.Forms.ComboBox();
this.label49 = new System.Windows.Forms.Label(); this.label49 = new System.Windows.Forms.Label();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.axis_4_Alarm = new UserFromControl.IOStatusControl();
this.txt4Target = new System.Windows.Forms.TextBox();
this.lblTargetP4 = new System.Windows.Forms.TextBox();
this.lblActual4 = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label();
this.axis_1_Alarm = new UserFromControl.IOStatusControl();
this.axis_3_Alarm = new UserFromControl.IOStatusControl();
this.axis_2_Alarm = new UserFromControl.IOStatusControl();
this.label38 = new System.Windows.Forms.Label();
this.txtMiddleTarget = new System.Windows.Forms.TextBox();
this.txtInoutTarget = new System.Windows.Forms.TextBox();
this.txtUpdownTarget = new System.Windows.Forms.TextBox();
this.label12 = new System.Windows.Forms.Label();
this.lblTargetP1 = new System.Windows.Forms.TextBox();
this.lblActual1 = new System.Windows.Forms.TextBox();
this.lblTargetP3 = new System.Windows.Forms.TextBox();
this.lblActual3 = new System.Windows.Forms.TextBox();
this.lblTargetP2 = new System.Windows.Forms.TextBox();
this.lblActual2 = new System.Windows.Forms.TextBox();
this.label4 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.label5 = new System.Windows.Forms.Label();
this.label43 = new System.Windows.Forms.Label();
this.label42 = new System.Windows.Forms.Label();
this.btnMovej = new System.Windows.Forms.Button();
this.btnMove = new System.Windows.Forms.Button();
this.linkLabel1 = new System.Windows.Forms.LinkLabel();
this.groupAxis.SuspendLayout(); this.groupAxis.SuspendLayout();
this.groupBox1.SuspendLayout();
this.SuspendLayout(); this.SuspendLayout();
// //
// groupAxis // groupAxis
...@@ -143,12 +117,51 @@ ...@@ -143,12 +117,51 @@
this.groupAxis.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); this.groupAxis.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.groupAxis.Location = new System.Drawing.Point(9, 6); this.groupAxis.Location = new System.Drawing.Point(9, 6);
this.groupAxis.Name = "groupAxis"; this.groupAxis.Name = "groupAxis";
this.groupAxis.Size = new System.Drawing.Size(541, 399); this.groupAxis.Size = new System.Drawing.Size(541, 383);
this.groupAxis.TabIndex = 217; this.groupAxis.TabIndex = 217;
this.groupAxis.TabStop = false; this.groupAxis.TabStop = false;
this.groupAxis.Text = "伺服运动"; this.groupAxis.Text = "伺服运动";
this.groupAxis.Enter += new System.EventHandler(this.groupAxis_Enter); this.groupAxis.Enter += new System.EventHandler(this.groupAxis_Enter);
// //
// linkLabel1
//
this.linkLabel1.AutoSize = true;
this.linkLabel1.Location = new System.Drawing.Point(313, 172);
this.linkLabel1.Name = "linkLabel1";
this.linkLabel1.Size = new System.Drawing.Size(56, 17);
this.linkLabel1.TabIndex = 331;
this.linkLabel1.TabStop = true;
this.linkLabel1.Text = "复制位置";
this.linkLabel1.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel1_LinkClicked);
//
// btnMovej
//
this.btnMovej.BackColor = System.Drawing.SystemColors.Control;
this.btnMovej.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnMovej.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnMovej.Location = new System.Drawing.Point(260, 326);
this.btnMovej.Name = "btnMovej";
this.btnMovej.Size = new System.Drawing.Size(140, 45);
this.btnMovej.TabIndex = 330;
this.btnMovej.Text = " 轴点动- ";
this.btnMovej.UseVisualStyleBackColor = false;
this.btnMovej.MouseDown += new System.Windows.Forms.MouseEventHandler(this.btnMovej_MouseDown);
this.btnMovej.MouseUp += new System.Windows.Forms.MouseEventHandler(this.btnMovej_MouseUp);
//
// btnMove
//
this.btnMove.BackColor = System.Drawing.SystemColors.Control;
this.btnMove.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnMove.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnMove.Location = new System.Drawing.Point(114, 326);
this.btnMove.Name = "btnMove";
this.btnMove.Size = new System.Drawing.Size(140, 45);
this.btnMove.TabIndex = 329;
this.btnMove.Text = "轴点动+ ";
this.btnMove.UseVisualStyleBackColor = false;
this.btnMove.MouseDown += new System.Windows.Forms.MouseEventHandler(this.btnMove_MouseDown);
this.btnMove.MouseUp += new System.Windows.Forms.MouseEventHandler(this.btnMove_MouseUp);
//
// label7 // label7
// //
this.label7.AutoSize = true; this.label7.AutoSize = true;
...@@ -567,309 +580,14 @@ ...@@ -567,309 +580,14 @@
this.label49.Text = "AC伺服:"; this.label49.Text = "AC伺服:";
this.label49.TextAlign = System.Drawing.ContentAlignment.MiddleRight; this.label49.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
// //
// groupBox1
//
this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.groupBox1.Controls.Add(this.axis_4_Alarm);
this.groupBox1.Controls.Add(this.txt4Target);
this.groupBox1.Controls.Add(this.lblTargetP4);
this.groupBox1.Controls.Add(this.lblActual4);
this.groupBox1.Controls.Add(this.label1);
this.groupBox1.Controls.Add(this.axis_1_Alarm);
this.groupBox1.Controls.Add(this.axis_3_Alarm);
this.groupBox1.Controls.Add(this.axis_2_Alarm);
this.groupBox1.Controls.Add(this.label38);
this.groupBox1.Controls.Add(this.txtMiddleTarget);
this.groupBox1.Controls.Add(this.txtInoutTarget);
this.groupBox1.Controls.Add(this.txtUpdownTarget);
this.groupBox1.Controls.Add(this.label12);
this.groupBox1.Controls.Add(this.lblTargetP1);
this.groupBox1.Controls.Add(this.lblActual1);
this.groupBox1.Controls.Add(this.lblTargetP3);
this.groupBox1.Controls.Add(this.lblActual3);
this.groupBox1.Controls.Add(this.lblTargetP2);
this.groupBox1.Controls.Add(this.lblActual2);
this.groupBox1.Controls.Add(this.label4);
this.groupBox1.Controls.Add(this.label3);
this.groupBox1.Controls.Add(this.label5);
this.groupBox1.Controls.Add(this.label43);
this.groupBox1.Controls.Add(this.label42);
this.groupBox1.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.groupBox1.Location = new System.Drawing.Point(9, 332);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(538, 182);
this.groupBox1.TabIndex = 218;
this.groupBox1.TabStop = false;
this.groupBox1.Text = "伺服状态";
this.groupBox1.Visible = false;
//
// axis_4_Alarm
//
this.axis_4_Alarm.IOName = "";
this.axis_4_Alarm.IOValue = 0;
this.axis_4_Alarm.isCanClick = false;
this.axis_4_Alarm.Location = new System.Drawing.Point(432, 39);
this.axis_4_Alarm.Name = "axis_4_Alarm";
this.axis_4_Alarm.Size = new System.Drawing.Size(43, 39);
this.axis_4_Alarm.TabIndex = 271;
//
// txt4Target
//
this.txt4Target.Location = new System.Drawing.Point(409, 143);
this.txt4Target.Name = "txt4Target";
this.txt4Target.ReadOnly = true;
this.txt4Target.Size = new System.Drawing.Size(87, 23);
this.txt4Target.TabIndex = 270;
//
// lblTargetP4
//
this.lblTargetP4.Location = new System.Drawing.Point(409, 115);
this.lblTargetP4.Name = "lblTargetP4";
this.lblTargetP4.ReadOnly = true;
this.lblTargetP4.Size = new System.Drawing.Size(87, 23);
this.lblTargetP4.TabIndex = 269;
//
// lblActual4
//
this.lblActual4.Location = new System.Drawing.Point(409, 87);
this.lblActual4.Name = "lblActual4";
this.lblActual4.ReadOnly = true;
this.lblActual4.Size = new System.Drawing.Size(87, 23);
this.lblActual4.TabIndex = 268;
//
// label1
//
this.label1.AutoSize = true;
this.label1.ImageAlign = System.Drawing.ContentAlignment.MiddleRight;
this.label1.Location = new System.Drawing.Point(406, 14);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(71, 17);
this.label1.TabIndex = 267;
this.label1.Text = "轴四:压紧轴";
//
// axis_1_Alarm
//
this.axis_1_Alarm.IOName = "";
this.axis_1_Alarm.IOValue = 0;
this.axis_1_Alarm.isCanClick = false;
this.axis_1_Alarm.Location = new System.Drawing.Point(127, 40);
this.axis_1_Alarm.Name = "axis_1_Alarm";
this.axis_1_Alarm.Size = new System.Drawing.Size(43, 39);
this.axis_1_Alarm.TabIndex = 264;
//
// axis_3_Alarm
//
this.axis_3_Alarm.IOName = "";
this.axis_3_Alarm.IOValue = 0;
this.axis_3_Alarm.isCanClick = false;
this.axis_3_Alarm.Location = new System.Drawing.Point(329, 40);
this.axis_3_Alarm.Name = "axis_3_Alarm";
this.axis_3_Alarm.Size = new System.Drawing.Size(43, 39);
this.axis_3_Alarm.TabIndex = 266;
//
// axis_2_Alarm
//
this.axis_2_Alarm.IOName = "";
this.axis_2_Alarm.IOValue = 0;
this.axis_2_Alarm.isCanClick = false;
this.axis_2_Alarm.Location = new System.Drawing.Point(224, 40);
this.axis_2_Alarm.Name = "axis_2_Alarm";
this.axis_2_Alarm.Size = new System.Drawing.Size(43, 39);
this.axis_2_Alarm.TabIndex = 265;
//
// label38
//
this.label38.AutoSize = true;
this.label38.ImageAlign = System.Drawing.ContentAlignment.MiddleRight;
this.label38.Location = new System.Drawing.Point(49, 40);
this.label38.Name = "label38";
this.label38.Size = new System.Drawing.Size(37, 17);
this.label38.TabIndex = 263;
this.label38.Text = "ALM:";
//
// txtMiddleTarget
//
this.txtMiddleTarget.Location = new System.Drawing.Point(105, 144);
this.txtMiddleTarget.Name = "txtMiddleTarget";
this.txtMiddleTarget.ReadOnly = true;
this.txtMiddleTarget.Size = new System.Drawing.Size(87, 23);
this.txtMiddleTarget.TabIndex = 262;
//
// txtInoutTarget
//
this.txtInoutTarget.Location = new System.Drawing.Point(306, 144);
this.txtInoutTarget.Name = "txtInoutTarget";
this.txtInoutTarget.ReadOnly = true;
this.txtInoutTarget.Size = new System.Drawing.Size(87, 23);
this.txtInoutTarget.TabIndex = 260;
//
// txtUpdownTarget
//
this.txtUpdownTarget.Location = new System.Drawing.Point(206, 144);
this.txtUpdownTarget.Name = "txtUpdownTarget";
this.txtUpdownTarget.ReadOnly = true;
this.txtUpdownTarget.Size = new System.Drawing.Size(87, 23);
this.txtUpdownTarget.TabIndex = 259;
//
// label12
//
this.label12.AutoSize = true;
this.label12.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label12.Location = new System.Drawing.Point(7, 147);
this.label12.Name = "label12";
this.label12.Size = new System.Drawing.Size(83, 17);
this.label12.TabIndex = 258;
this.label12.Text = "出入库目标值:";
//
// lblTargetP1
//
this.lblTargetP1.Location = new System.Drawing.Point(105, 116);
this.lblTargetP1.Name = "lblTargetP1";
this.lblTargetP1.ReadOnly = true;
this.lblTargetP1.Size = new System.Drawing.Size(87, 23);
this.lblTargetP1.TabIndex = 257;
//
// lblActual1
//
this.lblActual1.Location = new System.Drawing.Point(105, 88);
this.lblActual1.Name = "lblActual1";
this.lblActual1.ReadOnly = true;
this.lblActual1.Size = new System.Drawing.Size(87, 23);
this.lblActual1.TabIndex = 256;
//
// lblTargetP3
//
this.lblTargetP3.Location = new System.Drawing.Point(306, 116);
this.lblTargetP3.Name = "lblTargetP3";
this.lblTargetP3.ReadOnly = true;
this.lblTargetP3.Size = new System.Drawing.Size(87, 23);
this.lblTargetP3.TabIndex = 178;
//
// lblActual3
//
this.lblActual3.Location = new System.Drawing.Point(306, 88);
this.lblActual3.Name = "lblActual3";
this.lblActual3.ReadOnly = true;
this.lblActual3.Size = new System.Drawing.Size(87, 23);
this.lblActual3.TabIndex = 177;
//
// lblTargetP2
//
this.lblTargetP2.Location = new System.Drawing.Point(207, 116);
this.lblTargetP2.Name = "lblTargetP2";
this.lblTargetP2.ReadOnly = true;
this.lblTargetP2.Size = new System.Drawing.Size(87, 23);
this.lblTargetP2.TabIndex = 176;
//
// lblActual2
//
this.lblActual2.Location = new System.Drawing.Point(206, 88);
this.lblActual2.Name = "lblActual2";
this.lblActual2.ReadOnly = true;
this.lblActual2.Size = new System.Drawing.Size(87, 23);
this.lblActual2.TabIndex = 175;
//
// label4
//
this.label4.AutoSize = true;
this.label4.ImageAlign = System.Drawing.ContentAlignment.MiddleRight;
this.label4.Location = new System.Drawing.Point(303, 15);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(71, 17);
this.label4.TabIndex = 100;
this.label4.Text = "轴三:进出轴";
//
// label3
//
this.label3.AutoSize = true;
this.label3.ImageAlign = System.Drawing.ContentAlignment.MiddleRight;
this.label3.Location = new System.Drawing.Point(204, 15);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(71, 17);
this.label3.TabIndex = 99;
this.label3.Text = "轴二:上下轴";
//
// label5
//
this.label5.AutoSize = true;
this.label5.ImageAlign = System.Drawing.ContentAlignment.MiddleRight;
this.label5.Location = new System.Drawing.Point(106, 15);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(71, 17);
this.label5.TabIndex = 97;
this.label5.Text = "轴一:旋转轴";
//
// label43
//
this.label43.AutoSize = true;
this.label43.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label43.Location = new System.Drawing.Point(15, 90);
this.label43.Name = "label43";
this.label43.Size = new System.Drawing.Size(71, 17);
this.label43.TabIndex = 23;
this.label43.Text = "输出脉冲值:";
//
// label42
//
this.label42.AutoSize = true;
this.label42.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label42.Location = new System.Drawing.Point(15, 117);
this.label42.Name = "label42";
this.label42.Size = new System.Drawing.Size(71, 17);
this.label42.TabIndex = 24;
this.label42.Text = "编码器计数:";
//
// btnMovej
//
this.btnMovej.BackColor = System.Drawing.SystemColors.Control;
this.btnMovej.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnMovej.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnMovej.Location = new System.Drawing.Point(260, 326);
this.btnMovej.Name = "btnMovej";
this.btnMovej.Size = new System.Drawing.Size(140, 45);
this.btnMovej.TabIndex = 330;
this.btnMovej.Text = " 轴点动- ";
this.btnMovej.UseVisualStyleBackColor = false;
this.btnMovej.MouseDown += new System.Windows.Forms.MouseEventHandler(this.btnMovej_MouseDown);
this.btnMovej.MouseUp += new System.Windows.Forms.MouseEventHandler(this.btnMovej_MouseUp);
//
// btnMove
//
this.btnMove.BackColor = System.Drawing.SystemColors.Control;
this.btnMove.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnMove.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnMove.Location = new System.Drawing.Point(114, 326);
this.btnMove.Name = "btnMove";
this.btnMove.Size = new System.Drawing.Size(140, 45);
this.btnMove.TabIndex = 329;
this.btnMove.Text = "轴点动+ ";
this.btnMove.UseVisualStyleBackColor = false;
this.btnMove.MouseDown += new System.Windows.Forms.MouseEventHandler(this.btnMove_MouseDown);
this.btnMove.MouseUp += new System.Windows.Forms.MouseEventHandler(this.btnMove_MouseUp);
//
// linkLabel1
//
this.linkLabel1.AutoSize = true;
this.linkLabel1.Location = new System.Drawing.Point(313, 172);
this.linkLabel1.Name = "linkLabel1";
this.linkLabel1.Size = new System.Drawing.Size(56, 17);
this.linkLabel1.TabIndex = 331;
this.linkLabel1.TabStop = true;
this.linkLabel1.Text = "复制位置";
this.linkLabel1.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel1_LinkClicked);
//
// AxisMoveControl // AxisMoveControl
// //
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.Controls.Add(this.groupAxis); this.Controls.Add(this.groupAxis);
this.Controls.Add(this.groupBox1);
this.Name = "AxisMoveControl"; this.Name = "AxisMoveControl";
this.Size = new System.Drawing.Size(556, 414); this.Size = new System.Drawing.Size(556, 396);
this.groupAxis.ResumeLayout(false); this.groupAxis.ResumeLayout(false);
this.groupAxis.PerformLayout(); this.groupAxis.PerformLayout();
this.groupBox1.ResumeLayout(false);
this.groupBox1.PerformLayout();
this.ResumeLayout(false); this.ResumeLayout(false);
} }
...@@ -913,31 +631,6 @@ ...@@ -913,31 +631,6 @@
private System.Windows.Forms.Label label46; private System.Windows.Forms.Label label46;
private System.Windows.Forms.ComboBox comboBox1; private System.Windows.Forms.ComboBox comboBox1;
private System.Windows.Forms.Label label49; private System.Windows.Forms.Label label49;
private System.Windows.Forms.GroupBox groupBox1;
private UserFromControl.IOStatusControl axis_4_Alarm;
private System.Windows.Forms.TextBox txt4Target;
private System.Windows.Forms.TextBox lblTargetP4;
private System.Windows.Forms.TextBox lblActual4;
private System.Windows.Forms.Label label1;
private UserFromControl.IOStatusControl axis_1_Alarm;
private UserFromControl.IOStatusControl axis_3_Alarm;
private UserFromControl.IOStatusControl axis_2_Alarm;
private System.Windows.Forms.Label label38;
private System.Windows.Forms.TextBox txtMiddleTarget;
private System.Windows.Forms.TextBox txtInoutTarget;
private System.Windows.Forms.TextBox txtUpdownTarget;
private System.Windows.Forms.Label label12;
private System.Windows.Forms.TextBox lblTargetP1;
private System.Windows.Forms.TextBox lblActual1;
private System.Windows.Forms.TextBox lblTargetP3;
private System.Windows.Forms.TextBox lblActual3;
private System.Windows.Forms.TextBox lblTargetP2;
private System.Windows.Forms.TextBox lblActual2;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.Label label43;
private System.Windows.Forms.Label label42;
private System.Windows.Forms.Button btnMovej; private System.Windows.Forms.Button btnMovej;
private System.Windows.Forms.Button btnMove; private System.Windows.Forms.Button btnMove;
private System.Windows.Forms.LinkLabel linkLabel1; private System.Windows.Forms.LinkLabel linkLabel1;
......
...@@ -65,25 +65,18 @@ namespace OnlineStore.ACPackingStore ...@@ -65,25 +65,18 @@ namespace OnlineStore.ACPackingStore
private bool AxisCanMove() private bool AxisCanMove()
{ {
if (BoxBean.Config.Middle_Axis.IsSameAxis(PortName, SlvAddr) || BoxBean.Config.UpDown_Axis.IsSameAxis(PortName, SlvAddr)) //if (BoxBean.Config.Middle_Axis.IsSameAxis(PortName, SlvAddr) || BoxBean.Config.UpDown_Axis.IsSameAxis(PortName, SlvAddr))
{ //{
int InOutDefaultPosition = ConfigAppSettings.GetIntValue(Setting_Init.InOutDefaultPosition); // int InOutDefaultPosition = ConfigAppSettings.GetIntValue(Setting_Init.InOutDefaultPosition);
int currValue = ACServerManager.GetActualtPosition(BoxBean.Config.InOut_Axis.DeviceName, BoxBean.Config.InOut_Axis.GetAxisValue()); // int currValue = ACServerManager.GetActualtPosition(BoxBean.Config.InOut_Axis.DeviceName, BoxBean.Config.InOut_Axis.GetAxisValue());
//旋转轴和升降轴运动时,叉子必须在待机位 // //旋转轴和升降轴运动时,叉子必须在待机位
if (currValue > InOutDefaultPosition) // if (currValue > InOutDefaultPosition)
{ // {
MessageBox.Show("叉子不在待机位,请先将叉子退回待机位(" + InOutDefaultPosition + ")", "警告(叉子在待机位时,才能移动升降轴和旋转轴) ", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); // MessageBox.Show("叉子不在待机位,请先将叉子退回待机位(" + InOutDefaultPosition + ")", "警告(叉子在待机位时,才能移动升降轴和旋转轴) ", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
return false; // return false;
} // }
} //}
if (BoxBean.Config.Stir_Axis.IsSameAxis(PortName, SlvAddr))
{
if (!StoreManager.Store.StirAxisCanMove())
{
MessageBox.Show("搅拌气缸不在上升端,清先上升搅拌气缸", "警告(搅拌气缸上升时,搅拌轴才能动作) ", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
return false;
}
}
return true; return true;
} }
private void btnAxisAMove_Click(object sender, EventArgs e) private void btnAxisAMove_Click(object sender, EventArgs e)
...@@ -217,26 +210,7 @@ namespace OnlineStore.ACPackingStore ...@@ -217,26 +210,7 @@ namespace OnlineStore.ACPackingStore
{ {
color = Color.Red; color = Color.Red;
} }
else if (BoxBean.Config.UpDown_Axis.IsSameAxis(axis.DeviceName, axis.GetAxisValue()))
{
color = Color.Blue;
}
else if (BoxBean.Config.InOut_Axis.IsSameAxis(axis.DeviceName, axis.GetAxisValue()))
{
color = Color.Green;
}
else if (BoxBean.Config.Warming_Axis.IsSameAxis(axis.DeviceName, axis.GetAxisValue()))
{
color = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(192))))); ;
}
else if (BoxBean.Config.Colding_Axis.IsSameAxis(axis.DeviceName, axis.GetAxisValue()))
{
color = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(0)))));
}
else if (BoxBean.Config.Stir_Axis.IsSameAxis(axis.DeviceName, axis.GetAxisValue()))
{
color = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
}
btnOpenAxis.ForeColor = color; btnOpenAxis.ForeColor = color;
btnCloseAxis.ForeColor = color; btnCloseAxis.ForeColor = color;
btnAxisAMove.ForeColor = color; btnAxisAMove.ForeColor = color;
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!