Commit 8def8f29 刘韬

出库过程不检测料叉,以门口信号为准, 无论是否有盘都提交出库, 没有检测到盘则警告提示

1 个父辈 404f41fe
......@@ -59,6 +59,7 @@ namespace OnlineStore.ACSingleStore
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.btnHul = new System.Windows.Forms.Button();
this.groupBox3 = new System.Windows.Forms.GroupBox();
this.chbTH = new System.Windows.Forms.CheckBox();
this.lblWarnMsg = new System.Windows.Forms.Label();
this.lblThisSta = new System.Windows.Forms.Label();
this.btnOpenDoor = new System.Windows.Forms.Button();
......@@ -149,7 +150,6 @@ namespace OnlineStore.ACSingleStore
this.开启DEBUGToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator12 = new System.Windows.Forms.ToolStripSeparator();
this.清理日志ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.chbTH = new System.Windows.Forms.CheckBox();
this.contextMenuStrip1.SuspendLayout();
this.tabControl2.SuspendLayout();
this.tabPage4.SuspendLayout();
......@@ -214,7 +214,7 @@ namespace OnlineStore.ACSingleStore
this.tabControl2.Controls.Add(this.tabPage4);
this.tabControl2.Controls.Add(this.tabPage5);
this.tabControl2.Controls.Add(this.tabPage6);
this.tabControl2.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.tabControl2.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.tabControl2.Location = new System.Drawing.Point(6, 4);
this.tabControl2.Name = "tabControl2";
this.tabControl2.SelectedIndex = 0;
......@@ -228,10 +228,10 @@ namespace OnlineStore.ACSingleStore
this.tabPage4.Controls.Add(this.btnSotreReset);
this.tabPage4.Controls.Add(this.btnStoreStop);
this.tabPage4.Controls.Add(this.btnStoreStart);
this.tabPage4.Location = new System.Drawing.Point(4, 29);
this.tabPage4.Location = new System.Drawing.Point(4, 30);
this.tabPage4.Name = "tabPage4";
this.tabPage4.Padding = new System.Windows.Forms.Padding(3);
this.tabPage4.Size = new System.Drawing.Size(946, 47);
this.tabPage4.Size = new System.Drawing.Size(946, 46);
this.tabPage4.TabIndex = 0;
this.tabPage4.Text = " 料仓操作 ";
this.tabPage4.UseVisualStyleBackColor = true;
......@@ -573,6 +573,18 @@ namespace OnlineStore.ACSingleStore
this.groupBox3.TabStop = false;
this.groupBox3.Text = "设备状态";
//
// chbTH
//
this.chbTH.AutoSize = true;
this.chbTH.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.chbTH.Location = new System.Drawing.Point(715, 61);
this.chbTH.Name = "chbTH";
this.chbTH.Size = new System.Drawing.Size(112, 24);
this.chbTH.TabIndex = 270;
this.chbTH.Text = "启用气压报警";
this.chbTH.UseVisualStyleBackColor = true;
this.chbTH.CheckedChanged += new System.EventHandler(this.chbTH_CheckedChanged);
//
// lblWarnMsg
//
this.lblWarnMsg.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
......@@ -1586,18 +1598,6 @@ namespace OnlineStore.ACSingleStore
this.清理日志ToolStripMenuItem.Text = "清理日志";
this.清理日志ToolStripMenuItem.Click += new System.EventHandler(this.清理日志ToolStripMenuItem_Click);
//
// chbTH
//
this.chbTH.AutoSize = true;
this.chbTH.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.chbTH.Location = new System.Drawing.Point(715, 61);
this.chbTH.Name = "chbTH";
this.chbTH.Size = new System.Drawing.Size(112, 24);
this.chbTH.TabIndex = 270;
this.chbTH.Text = "启用气压报警";
this.chbTH.UseVisualStyleBackColor = true;
this.chbTH.CheckedChanged += new System.EventHandler(this.chbTH_CheckedChanged);
//
// FrmStoreBox
//
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
......
......@@ -26,7 +26,7 @@ namespace OnlineStore.ACSingleStore
private AC_SA_BoxBean store;
public static readonly ILog LOGGER = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
HIKCamera camera = new HIKCamera();
HIKCamera camera = HIKCamera.Current;
public FrmStoreBox()
{
Control.CheckForIllegalCrossThreadCalls = false;
......
......@@ -9,7 +9,7 @@ using System.Runtime.InteropServices;
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("SO951-HC-ACSingleStore de14ca3c0b9efddc8beead183e4c06c73936ef8b")]
[assembly: AssemblyProduct("SO951-HC-ACSingleStore 404f41fe38d402c5725ea11cb443fd9d6d99c0c3")]
[assembly: AssemblyCopyright("Copyright ? 2017")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
......
......@@ -226,6 +226,7 @@ OpenAxisFail,打开轴{0}失败,Failed to open axis {0},軸を開けることが
NoAIr,未检测到气压信号,Pressure signal undetected,気圧信号はまだ検出していません。
AutoReset,收到复位信号,自动复位,Receive reset signal& automatical reset,リセット信号を受け、自動初期化に戻す
AxisAlarm,运动轴{0}报警,Motion axis {0} alarm,運転軸がアラームする{0}
CustAlarm,{0},{0},{0}
startFail,启动失败:急停未开,Startup failure: emergency stop not opened,設備が立ち上がらなく、急に止まる
WaitSingleTimeOut,等待信号{0}={1}超时,Wait signal {0}={1} timeout,信号を待つ、タイムオーバーする{0}={1}
startFailAir,启动失败:没有气压信号,Startup failure: no air pressure signal,起動失敗し、気圧信号がない
......
......@@ -30,6 +30,9 @@ namespace OnlineStore.ACSingleStore.useControl
//如果总配置文件存在,保存到总的配置文件
static string appPath = Application.StartupPath;
static string positionConfigFile = appPath + ConfigAppSettings.GetValue(Setting_Init.Store_Position_Config);
static string CheckfilePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData),"ACSingleStore");
static string positionCheckfile = CheckfilePath + ConfigAppSettings.GetValue(Setting_Init.Store_Position_Config);
class PosState {
public int InStoreCheck = 0;
public int OutStoreCheck = 0;
......@@ -134,7 +137,7 @@ namespace OnlineStore.ACSingleStore.useControl
}
void LoadPosCheck() {
var poscheckfile = positionConfigFile + ".check";
var poscheckfile = positionCheckfile + ".check";
if (File.Exists(poscheckfile))
{
try
......@@ -153,6 +156,7 @@ namespace OnlineStore.ACSingleStore.useControl
}
else
{
Directory.CreateDirectory(Path.GetDirectoryName(poscheckfile));
File.WriteAllText(poscheckfile, JsonHelper.SerializeObject(posState));
}
}
......@@ -164,7 +168,9 @@ namespace OnlineStore.ACSingleStore.useControl
posState[posid].InStoreCheck = inStoreCheck;
if (outStoreCheck > 0)
posState[posid].OutStoreCheck = outStoreCheck;
var poscheckfile = positionConfigFile + ".check";
var poscheckfile = positionCheckfile + ".check";
Directory.CreateDirectory(Path.GetDirectoryName(poscheckfile));
File.WriteAllText(poscheckfile, JsonHelper.SerializeObject(posState));
return posState[posid];
}
......
......@@ -123,9 +123,6 @@
<None Include="StoreConfig\AC\linePositions.csv">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="StoreConfig\AC\StoreConfig - 复制.csv">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="StoreConfig\AC\StoreConfig.csv">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
......
......@@ -119,9 +119,9 @@ namespace OnlineStore.DeviceLibrary
}
HCAxis.HomeMove(portName, slvAddr, highVel, lowVel, acc);
}
public static void SpeedMove(string portName, short slvAddr, int speed)
public static void SpeedMove(string portName, short slvAddr, int speed, int acc = 0, int dec = 0)
{
HCAxis.SpeedMove(portName, slvAddr, speed);
HCAxis.SpeedMove(portName, slvAddr, speed,acc,dec);
}
public static bool isInPosition(ConfigMoveAxis Axis, int PPosition)
......
......@@ -129,9 +129,9 @@ namespace OnlineStore.DeviceLibrary
HCBoardManager.ServoOn(slvAddr);
}
public void SpeedMove(string portName, short slvAddr, int speed)
public void SpeedMove(string portName, short slvAddr, int speed,int acc=0,int dec=0)
{
HCBoardManager.SpeedMove(slvAddr, speed);
HCBoardManager.SpeedMove(slvAddr, speed,acc,dec);
}
public void SuddenStop(string portName, short slvAddr)
{
......
......@@ -349,6 +349,7 @@ namespace OnlineStore.DeviceLibrary
/// 运动轴{0}报警
/// </summary>
public static string AxisAlarm = "AxisAlarm";
public static string CustAlarm = "CustAlarm";
/// <summary>
/// 等待信号{0}={1}超时
......
类型,说明,名称,属性值,设备名称,默认值,描述,电器定义,代码定义,SlaveID,
,,,,,,,,,,
PRO,IO模块对应的DI数量,IO_DILength,192.168.200.21#16,,,,,,,
PRO,模块对应的DO数量,IO_DOLength,192.168.200.21#16,,,,,,,
,,,,,,,,,,
DI,急停,SuddenStop_BTN,0,192.168.200.21,0,急停,X01,X01,0,
DI,复位,Reset_BTN,1,192.168.200.21,0,复位,X02,X02,0,
DI,启动,AutoRun_Signal,2,192.168.200.21,0,启动,X03,X03,0,
DI,气压检测,Airpressure_Check,3,192.168.200.21,0,气压检测,X04,X04,0,
DI,料盘检测1(进料口),TrayCheck_Door,4,192.168.200.21,0,料盘检测1(进料口),X05,X05,0,
DI,料盘检测2(料叉),TrayCheck_Fixture,5,192.168.200.21,0,料盘检测2(料叉),X06,X06,0,
DI,进料口门上升端,Door_Up,6,192.168.200.21,0,进料口门上升端,X07,X07,0,
DI,进料口门下降端,Door_Down,7,192.168.200.21,0,进料口门下降端,X08,X08,0,
DI,安全光栅,SafetyLightCurtains,8,192.168.200.21,0,安全光栅,X09,X09,0,
DI,前门限位,Door_Limit,9,192.168.200.21,0,前门限位,X10,X10,0,
DI,左侧门限位,Door_LeftLimit,10,192.168.200.21,0,左侧门限位,X11,X11,0,
DI,右侧门限位,Door_RightLimit,11,192.168.200.21,0,右侧门限位,X12,X12,0,
,,,12,192.168.200.21,0,,X13,X13,0,
,,,13,192.168.200.21,0,,X14,X14,0,
,,,14,192.168.200.21,0,,X15,X15,0,
,,,15,192.168.200.21,0,,X16,X16,0,
DO,自动指示灯,AutoRun_HddLed,0,192.168.200.21,0,自动指示灯,Y01,Y01,0,
DO,故障指示灯,Alarm_HddLed,1,192.168.200.21,0,故障指示灯,Y02,Y02,0,
DO,待机指示灯,RunSign_HddLed,2,192.168.200.21,0,待机指示灯,Y03,Y03,0,
DO,故障蜂鸣器,Alarm_Buzzer,3,192.168.200.21,0,故障蜂鸣器,Y04,Y04,0,
DO,吹气SOL ON,StartOrStopBlow,4,192.168.200.21,0,吹气SOL ON,Y05,Y05,0,
DO,料仓运转ON,Run_Signal,5,192.168.200.21,0,料仓运转ON,Y06,Y06,0,
DO,轴2刹车电源ON,Axis_Brake,6,192.168.200.21,0,轴2刹车电源ON,Y07,Y07,0,
DO,进料口门上升SOL,Door_Up,7,192.168.200.21,0,进料口门上升SOL,Y08,Y08,0,
DO,进料口门下降SOL,Door_Down,8,192.168.200.21,0,进料口门下降SOL,Y09,Y09,0,
DO,相机照明开,Camera_Led,9,192.168.200.21,0,相机照明开,Y10,Y10,0,
DO,设备照明开,Device_Led,10,192.168.200.21,0,设备照明开,Y11,Y11,0,
,,,11,192.168.200.21,0,,Y12,Y12,0,
,,,12,192.168.200.21,0,,Y13,Y13,0,
,,,13,192.168.200.21,0,,Y14,Y14,0,
,,,14,192.168.200.21,0,,Y15,Y15,0,
,,,15,192.168.200.21,0,,Y16,Y16,0,
AXIS,(轴一)旋转轴,Middle_Axis,1,COM2,0,,,,,
AXIS,(轴二)升降轴轴,UpDown_Axis,2,COM2,0,,,,,
AXIS,(轴三)进出轴,InOut_Axis,3,COM2,0,,,,,
AXIS,(轴四)压紧轴,Comp_Axis,4,COM2,0,,,,,
PRO,升降轴 进料口取料点 P1,UpDownAxis_DoorOPosition_P1,380000,,,,,,,
PRO,升降轴 进料口出料前点 P2,UpDownAxis_DoorIPosition_P2,394000,,,,,,,
PRO,升降轴 进料口取料缓冲点 P7,UpDownAxis_DoorOBPosition_P7,394000,,,,,,,
PRO,升降轴 进料口出料缓冲点 P8,UpDownAxis_DoorIBPosition_P8,380000,,,,,,,
PRO,旋转轴(轴1)P1 待机原位点,MiddleAxis_P1_Position,266793,,,,,,,
PRO,进出轴(轴3)P1待机原位点,InOutAxis_P1_Position,0,,,,,,,
PRO,压紧轴(轴4)P1待机原位点,CompressAxis_P1_Position,2000,,,,,,,
PRO,是否使用定位气缸,IsHasLocationCylinder,0,,,,,,,
PRO,是否有左右侧门,IsHasDoorLimit,1,,,,,,,
PRO,是否使用压紧轴(1=使用),IsHasCompress_Axis,1,,,,, ,,
PRO,设备是否处于调试状态(1=调试,0=正常),IsInDebug,1,,,,,,,
PRO,气压检测IO关闭需要持续的时间,AirCheckSeconds,3,,,,,,,
,温湿度传感器地址,TemperateServer_Port,9001,,,,,,,
PRO,预警温度,WarnTemperate,80,,,,,,,
PRO,预警湿度,WarnHumidity,80,,,,,,,
PRO,(轴一)旋转轴目标速度,MiddleAxis_TargetSpeed,250,,,,,,,
PRO,(轴一)旋转轴加速度,MiddleAxis_AddSpeed,2000,,,,,,,
PRO,(轴一)旋转轴减速度,MiddleAxis_DelSpeed,2000,,,,,,,
PRO,(轴一)旋转轴原点低速度,MiddleAxis_HomeLowSpeed,80,,,,,,,
PRO,(轴一)旋转轴原点高速,MiddleAxis_HomeHighSpeed,60,,,,,,,
PRO,(轴一)旋转轴原点加速度,MiddleAxis_HomeAddSpeed,50,,,,,,,
PRO,(轴二)升降轴轴目标速度,UpdownAxis_TargetSpeed,2000,,,,,,,
PRO,(轴二)升降轴轴加速度,UpdownAxis_AddSpeed,400,,,,,,,
PRO,(轴二)升降轴轴减速度,UpdownAxis_DelSpeed,400,,,,,,,
PRO,(轴二)升降轴轴原点低速度,UpdownAxis_HomeLowSpeed,100,,,,,,,
PRO,(轴二)升降轴轴原点高速,UpdownAxis_HomeHighSpeed,200,,,,,,,
PRO,(轴二)升降轴轴原点加速度,UpdownAxis_HomeAddSpeed,200,,,,,,,
PRO,(轴三)进出轴目标速度,InoutAxis_TargetSpeed,100,,,,,,,
PRO,(轴三)进出轴加速度,InoutAxis_AddSpeed,300,,,,,,,
PRO,(轴三)进出轴减速度,InoutAxis_DelSpeed,300,,,,,,,
PRO,(轴三)进出轴原点低速,InoutAxis_HomeLowSpeed,20,,,,,,,
PRO,(轴三)进出轴原点高速,InoutAxis_HomeHighSpeed,60,,,,,,,
PRO,(轴三)进出轴原点加速度,InoutAxis_HomeAddSpeed,200,,,,,,,
PRO,(轴四)压紧轴目标速度,CompAxis_TargetSpeed,100,,,,,,,
PRO,(轴四)压紧轴加速度,CompAxis_AddSpeed,300,,,,,,,
PRO,(轴四)压紧轴减速度,CompAxis_DelSpeed,300,,,,,,,
PRO,(轴四)压紧轴原点低速,CompAxis_HomeLowSpeed,20,,,,,,,
PRO,(轴四)压紧轴原点高速,CompAxis_HomeHighSpeed,60,,,,,,,
PRO,(轴四)压紧轴原点加速度,CompAxis_HomeAddSpeed,200,,,,,,,
,,,,,,,,,,
PRO,升降轴(轴2)P1速度,UpDownAxis_P1_Speed,800,,,,,,,
PRO,升降轴(轴2)P2速度,UpDownAxis_P2_Speed,800,,,,,,,
PRO,升降轴(轴2)P3速度,UpDownAxis_P3_Speed,800,,,,,,,
PRO,升降轴(轴2)P4速度,UpDownAxis_P4_Speed,300,,,,,,,
PRO,升降轴(轴2)P5速度,UpDownAxis_P5_Speed,800,,,,,,,
PRO,升降轴(轴2)P6速度,UpDownAxis_P6_Speed,300,,,,,,,
PRO,升降轴(轴2)P7速度,UpDownAxis_P7_Speed,300,,,,,, ,
PRO,升降轴(轴2)P8速度,UpDownAxis_P8_Speed,300,,,,,,,
PRO,旋转轴(轴1)P1速度,MiddleAxis_P1_Speed,300,,,,,,,
PRO,旋转轴(轴1)P2速度,MiddleAxis_P2_Speed,300,,,,,,,
PRO,进出轴(轴3)P1速度,InOutAxis_P1_Speed,300,,,,,,,
PRO,进出轴(轴3)P2速度,InOutAxis_P2_Speed,300,,,,,,,
PRO,进出轴(轴3)P3速度,InOutAxis_P3_Speed,300,,,,,,,
PRO,压紧轴(轴4)P1速度,CompAxis_P1_Speed,800,,,,,,,
PRO,压紧轴(轴4)P2速度,CompAxis_P2_Speed,800,,,,,,,
PRO,压紧轴(轴4)P3速度,CompAxis_P3_Speed,800,,,,,,,
PRO,(轴一)旋转轴停止时可误差的脉冲数的最小值,MiddleAxis_ErrorCountMin,10,,,,,,,
PRO,(轴二)升降轴轴停止时可误差的脉冲数的最小值,UpdownAxis_ErrorCountMin,10,,,,,, ,
PRO,(轴三)进出轴停止时可误差的脉冲数的最小值,InoutAxis_ErrorCountMin,100,,,,,,,
PRO,(轴一)旋转轴停止时可误差的脉冲数的最大值,MiddleAxis_ErrorCountMax,1000,,,,,,,
PRO,(轴二)升降轴轴停止时可误差的脉冲数的最大值,UpdownAxis_ErrorCountMax,1000,,,,,,,
PRO,(轴三)进出轴停止时可误差的脉冲数的最大值,InoutAxis_ErrorCountMax,1000,,,,,,,
PRO,出入库多少次,会自动重置旋转轴,Box_ResetMCount,1000,,,,,,,
PRO,出入库多少次,会自动重置所有轴操作,Box_ResetACount,1000,,,,,,,
PRO,IO信号超时时间(毫秒),IOSingle_TimerOut,10000,,,,,,,
PRO,是否使用料盘检测信号,IsUse_Tray_Check,0,,,,,, ,
PRO,(轴一)旋转轴最小限位,MiddleAxis_PositionMin,0,,,,,,,
PRO,(轴二)升降轴最小限位,UpdownAxis_PositionMin,0,,,,,,,
PRO,(轴三)进出轴最小限位,InoutAxis_PositionMin,0,,,,,,,
PRO,(轴一)旋转轴最大限位,MiddleAxis_PositionMax,0,,,,,,,
PRO,(轴二)升降轴最大限位,UpdownAxis_PositionMax,0,,,,,,,
PRO,(轴三)进出轴最大限位,InoutAxis_PositionMax,0,,,,,,,
PRO,需要吹气的温度(温度标准),Max_Temperature,0,,,,,,,
PRO,需要吹气的湿度(湿度标准),Max_Humidity,10,,,,,,,
PRO,每次吹气的时间(分钟),BlowAir_Time,10,,,,,,,
PRO,两次吹气间隔(分钟),BlowAir_Interval,10,,,,,,,
PRO,温湿度端口号,Humiture_Port,COM1,,,,,,,
,,,,,,,,, ,
PRO,模拟量IO模块的IP地址,AIDevice_IP,192.168.200.22,,,,,,,
PRO,模拟信号1默认高度,AIDI1_DefaultPosition,18031,,,,,,,
PRO,模拟信号2默认高度,AIDI2_DefaultPosition,18064,,,,,,,
PRO,模拟信号3默认高度,AIDI3_DefaultPosition,2500,,,,,,,
PRO,模拟信号4默认高度,AIDI4_DefaultPosition,2500,,,,,,,
,,,,,,,,, ,
PRO,模拟信号1的地址,AIDI1_Addr,0,,,,,,,
PRO,模拟信号2的地址,AIDI2_Addr,1,,,,,,,
PRO,模拟信号3的地址(13寸高度),AIDI3_Addr,2,,,,,,,
PRO,模拟信号4的地址(15寸高度),AIDI4_Addr,3,,,,,,,
,,,,,,,,, ,
PRO,模拟转换系数,AI_ConvertPosition,150,,,,,,,
,,,,,,,,, ,
PRO,默认的料盘宽度(多种尺寸为0),Default_TrayWidth,0,,,,,,,
PRO,特殊二维码尺寸配置,CodeSizeConfig,XA=13x48#XB=13x32,,,,,,,
,,,,,,,,, ,
PRO,扫码枪IP,Scanner_Ip,192.168.201.21,,,,,,,
PRO,扫码枪端口号,Scanner_Port,51236,,,,,,,
,,,,,,,,, ,
PRO,大盘宽度(13寸或15寸),Big_TrayWidth,13,,,,,,,
类型,说明,名称,属性值,设备名称,默认值,描述,电器定义,代码定义,SlaveID
AXIS,(轴一)旋转轴,Middle_Axis,0,HC,0,,,,
AXIS,(轴二)升降轴,UpDown_Axis,1,HC,0,,,,
AXIS,(轴二)升降轴,UpDown_Axis,1,HC,0,,,,
AXIS,(轴三)进出轴,InOut_Axis,2,HC,0,,,,
AXIS,(轴四)压紧轴,Comp_Axis,3,HC,0,,,,
AXIS,(轴五)出料门,Door_Axis,4,HC,0,,,,
,,,,,,,,,
DI,急停,SuddenStop_BTN,0,HC,0,急停,X00,X00,0
DI,复位,Reset_BTN,1,HC,0,复位,X01,X01,0
......@@ -29,14 +30,14 @@ DO,氮气阀门开启,StartOrStopBlow,6,HC,0,氮气阀门开启,Y06,Y07,0
DO,进料口门运转,Door_Moto_Run,7,HC,0,进料口门运转,Y07,Y08,0
DO,进料口门反转关门,Door_Moto_Rev,8,HC,0,进料口门反转,Y08,Y09,0
,,,,,,,,,
PRO,升降轴 进料口取料点 P1,UpDownAxis_DoorOPosition_P1,700000,,,,,,
PRO,升降轴 进料口出料前点 P2,UpDownAxis_DoorIPosition_P2,718000,,,,,,
PRO,升降轴 进料口取料缓冲点 P7,UpDownAxis_DoorOBPosition_P7,718000,,,,,,
PRO,升降轴 进料口出料缓冲点 P8,UpDownAxis_DoorIBPosition_P8,700000,,,,,,
PRO,旋转轴(轴1)P1 待机原位点,MiddleAxis_P1_Position,151500,,,,,,
PRO,进出轴(轴3)P1待机原位点,InOutAxis_P1_Position,0,,,,,,
PRO,升降轴 进料口取料点 P1,UpDownAxis_DoorOPosition_P1,698000,,,,,,
PRO,升降轴 进料口出料前点 P2,UpDownAxis_DoorIPosition_P2,720000,,,,,,
PRO,升降轴 进料口取料缓冲点 P7,UpDownAxis_DoorOBPosition_P7,720000,,,,,,
PRO,升降轴 进料口出料缓冲点 P8,UpDownAxis_DoorIBPosition_P8,698000,,,,,,
PRO,旋转轴(轴1)P1 待机原位点,MiddleAxis_P1_Position,151300,,,,,,
PRO,进出轴(轴3)P1待机原位点,InOutAxis_P1_Position,-1000,,,,,,
PRO,压紧轴(轴4)P1待机原位点,CompressAxis_P1_Position,2000,,,,,,
PRO,L4_压紧轴_P2压紧点范围对应值,_CompAxis_P2_List,8=49928;12=45455;16=42495;,,,,,,
PRO,L4_压紧轴_P2压紧点范围对应值,CompAxis_P2_List,8=34000;12=32000;32=11400;24=19400;16=28400;,,,,,,
PRO,是否使用定位气缸,IsHasLocationCylinder,0,,,,,,
PRO,是否有左右侧门,IsHasDoorLimit,1,,,,,,
PRO,是否使用压紧轴(1=使用),IsHasCompress_Axis,1,,,,,,
......@@ -47,29 +48,29 @@ PRO,预警温度,WarnTemperate,80,,,,,,
PRO,预警湿度,WarnHumidity,80,,,,,,
,,,,,,,,,
PRO,(轴一)旋转轴目标速度,MiddleAxis_TargetSpeed,60000,,,,,,
PRO,(轴一)旋转轴加速度,MiddleAxis_AddSpeed,150000,,,,,,
PRO,(轴一)旋转轴减速度,MiddleAxis_DelSpeed,150000,,,,,,
PRO,(轴一)旋转轴原点低速度,MiddleAxis_HomeLowSpeed,1000,,,,,,
PRO,(轴一)旋转轴加速度,MiddleAxis_AddSpeed,0,,,,,,
PRO,(轴一)旋转轴减速度,MiddleAxis_DelSpeed,0,,,,,,
PRO,(轴一)旋转轴原点低速度,MiddleAxis_HomeLowSpeed,0,,,,,,
PRO,(轴一)旋转轴原点高速,MiddleAxis_HomeHighSpeed,10000,,,,,,
PRO,(轴一)旋转轴原点加速度,MiddleAxis_HomeAddSpeed,50000,,,,,,
PRO,(轴二)升降轴轴目标速度,UpdownAxis_TargetSpeed,300000,,,,,,
PRO,(轴二)升降轴轴加速度,UpdownAxis_AddSpeed,800000,,,,,,
PRO,(轴二)升降轴轴减速度,UpdownAxis_DelSpeed,800000,,,,,,
PRO,(轴二)升降轴轴原点低速度,UpdownAxis_HomeLowSpeed,3000,,,,,,
PRO,(轴一)旋转轴原点加速度,MiddleAxis_HomeAddSpeed,0,,,,,,
PRO,(轴二)升降轴轴目标速度,UpdownAxis_TargetSpeed,30000,,,,,,
PRO,(轴二)升降轴轴加速度,UpdownAxis_AddSpeed,0,,,,,,
PRO,(轴二)升降轴轴减速度,UpdownAxis_DelSpeed,0,,,,,,
PRO,(轴二)升降轴轴原点低速度,UpdownAxis_HomeLowSpeed,0,,,,,,
PRO,(轴二)升降轴轴原点高速,UpdownAxis_HomeHighSpeed,45000,,,,,,
PRO,(轴二)升降轴轴原点加速度,UpdownAxis_HomeAddSpeed,150000,,,,,,
PRO,(轴二)升降轴轴原点加速度,UpdownAxis_HomeAddSpeed,0,,,,,,
PRO,(轴三)进出轴目标速度,InoutAxis_TargetSpeed,200000,,,,,,
PRO,(轴三)进出轴加速度,InoutAxis_AddSpeed,600000,,,,,,
PRO,(轴三)进出轴减速度,InoutAxis_DelSpeed,600000,,,,,,
PRO,(轴三)进出轴原点低速,InoutAxis_HomeLowSpeed,1000,,,,,,
PRO,(轴三)进出轴加速度,InoutAxis_AddSpeed,0,,,,,,
PRO,(轴三)进出轴减速度,InoutAxis_DelSpeed,0,,,,,,
PRO,(轴三)进出轴原点低速,InoutAxis_HomeLowSpeed,0,,,,,,
PRO,(轴三)进出轴原点高速,InoutAxis_HomeHighSpeed,40000,,,,,,
PRO,(轴三)进出轴原点加速度,InoutAxis_HomeAddSpeed,200000,,,,,,
PRO,(轴三)进出轴原点加速度,InoutAxis_HomeAddSpeed,0,,,,,,
PRO,(轴四)压紧轴目标速度,CompAxis_TargetSpeed,50000,,,,,,
PRO,(轴四)压紧轴加速度,CompAxis_AddSpeed,20000,,,,,,
PRO,(轴四)压紧轴减速度,CompAxis_DelSpeed,20000,,,,,,
PRO,(轴四)压紧轴原点低速,CompAxis_HomeLowSpeed,800,,,,,,
PRO,(轴四)压紧轴加速度,CompAxis_AddSpeed,0,,,,,,
PRO,(轴四)压紧轴减速度,CompAxis_DelSpeed,0,,,,,,
PRO,(轴四)压紧轴原点低速,CompAxis_HomeLowSpeed,0,,,,,,
PRO,(轴四)压紧轴原点高速,CompAxis_HomeHighSpeed,8000,,,,,,
PRO,(轴四)压紧轴原点加速度,CompAxis_HomeAddSpeed,25000,,,,,,
PRO,(轴四)压紧轴原点加速度,CompAxis_HomeAddSpeed,0,,,,,,
,,,,,,,,,
PRO,升降轴(轴2)P1速度,UpDownAxis_P1_Speed,500000,,,,,,
PRO,升降轴(轴2)P2速度,UpDownAxis_P2_Speed,500000,,,,,,
......@@ -87,6 +88,7 @@ PRO,进出轴(轴3)P3速度,InOutAxis_P3_Speed,250000,,,,,,
PRO,压紧轴(轴4)P1速度,CompAxis_P1_Speed,200000,,,,,,
PRO,压紧轴(轴4)P2速度,CompAxis_P2_Speed,200000,,,,,,
PRO,压紧轴(轴4)P3速度,CompAxis_P3_Speed,200000,,,,,,
PRO,出料门(轴5)开关门速度,DoorAxis_Run_Speed,180000,,,,,,
PRO,(轴一)旋转轴停止时可误差的脉冲数的最小值,MiddleAxis_ErrorCountMin,10,,,,,,
PRO,(轴二)升降轴轴停止时可误差的脉冲数的最小值,UpdownAxis_ErrorCountMin,10,,,,,,
PRO,(轴三)进出轴停止时可误差的脉冲数的最小值,InoutAxis_ErrorCountMin,100,,,,,,
......@@ -95,8 +97,8 @@ PRO,(轴二)升降轴轴停止时可误差的脉冲数的最大值,UpdownAxis_ErrorCountMax,1000,,
PRO,(轴三)进出轴停止时可误差的脉冲数的最大值,InoutAxis_ErrorCountMax,1000,,,,,,
PRO,出入库多少次,会自动重置旋转轴,Box_ResetMCount,1000,,,,,,
PRO,出入库多少次,会自动重置所有轴操作,Box_ResetACount,1000,,,,,,
PRO,IO信号超时时间(毫秒),IOSingle_TimerOut,10000,,,,,,
PRO,是否使用料盘检测信号,IsUse_Tray_Check,0,,,,,,
PRO,IO信号超时时间(毫秒),IOSingle_TimerOut,15000,,,,,,
PRO,是否使用料盘检测信号,IsUse_Tray_Check,1,,,,,,
,,,,,,,,,
PRO,(轴一)旋转轴最小限位,MiddleAxis_PositionMin,0,,,,,,
PRO,(轴二)升降轴最小限位,UpdownAxis_PositionMin,0,,,,,,
......@@ -110,10 +112,10 @@ PRO,每次吹气的时间(分钟),BlowAir_Time,10,,,,,,
PRO,两次吹气间隔(分钟),BlowAir_Interval,10,,,,,,
PRO,温湿度端口号,Humiture_Port,COM5,,,,,,
,,,,,,,,,
PRO,模拟信号1默认高度,AIDI1_DefaultPosition,5619,,,,,,
PRO,模拟信号2默认高度,AIDI2_DefaultPosition,5619,,,,,,
PRO,模拟信号3默认高度,AIDI3_DefaultPosition,0,,,,,,
PRO,模拟信号4默认高度,AIDI4_DefaultPosition,0,,,,,,
PRO,模拟信号1默认高度,AIDI1_DefaultPosition,5456,,,,,,
PRO,模拟信号2默认高度,AIDI2_DefaultPosition,5456,,,,,,
PRO,模拟信号3默认高度,AIDI3_DefaultPosition,5650,,,,,,
PRO,模拟信号4默认高度,AIDI4_DefaultPosition,5650,,,,,,
,,,,,,,,,
PRO,模拟信号1的地址,AIDI1_Addr,0,,,,,,
PRO,模拟信号2的地址,AIDI2_Addr,1,,,,,,
......@@ -122,8 +124,8 @@ PRO,模拟信号4的地址(15寸高度),AIDI4_Addr,3,,,,,,
,,,,,,,,,
PRO,模拟转换系数,AI_ConvertPosition,62,,,,,,
,,,,,,,,,
PRO,默认的料盘宽度(多种尺寸为0),Default_TrayWidth,7,,,,,,
PRO,默认的料盘宽度(多种尺寸为0),Default_TrayWidth,0,,,,,,
PRO,特殊二维码尺寸配置,CodeSizeConfig,XA=13x48#XB=13x32,,,,,,
PRO,扫码枪IP,Scanner_Ip,192.168.105.21,,,,,,
PRO,扫码枪IP,Scanner_Ip,0,,,,,,
PRO,扫码枪端口号,Scanner_Port,51236,,,,,,
PRO,旋转轴反转点位补偿,MiddleAxis_Reverse_Offset,0,,,,,,
......@@ -406,13 +406,14 @@ namespace OnlineStore.DeviceLibrary
LogUtil.info(LOGGER, StoreName + "复位中:压紧轴,旋转轴运动到P1,上下轴走到P1,压紧轴到P1!");
ACAxisMove(Config.Middle_Axis, Config.MiddleAxis_P1_Position, Config.MiddleAxis_P1_Speed);
ACAxisMove(Config.UpDown_Axis, Config.UpDownAxis_DoorOPosition_P1, Config.UpDownAxis_P1_Speed);
if (IsHasCompress_Axis)
{
ACAxisHomeMove(Config.Comp_Axis);
}
break;
case StoreMoveStep.BOX_H_OtherAxisBack_wait2:
StoreMove.NextMoveStep(StoreMoveStep.BOX_H_MiddleAxisToP1);
if (IsHasCompress_Axis)
{
ACAxisHomeMove(Config.Comp_Axis);
}
StoreMove.WaitList.Add(WaitResultInfo.WaitTime(500));
break;
case StoreMoveStep.BOX_H_MiddleAxisToP1:
......@@ -427,12 +428,11 @@ namespace OnlineStore.DeviceLibrary
SetWarnMsg();
}
break;
case StoreMoveStep.BOX_M_H_TOP1_InOutToP1:
StoreMove.NextMoveStep(StoreMoveStep.BOX_M_H_TOP1_CompressHome);
LogUtil.info(LOGGER, StoreName + "到待机状态,压紧轴回原点,关闭仓门");
if (IsHasCompress_Axis)
{
{
ACAxisHomeMove(Config.Comp_Axis);
}
//关闭仓门
......@@ -518,10 +518,7 @@ namespace OnlineStore.DeviceLibrary
//复位和回原点要等轴3进出轴ORG亮了以后才能返回其他轴
LogUtil.info(LOGGER, StoreName + "原点返回中 :压紧轴,旋转轴,上下轴开始原点返回");
StoreMove.NextMoveStep(StoreMoveStep.BOX_H_OtherAxisBack_wait);
if (IsHasCompress_Axis)
{
ACAxisHomeMove(Config.Comp_Axis);
}
ACAxisHomeMove(Config.Middle_Axis);
ACAxisHomeMove(Config.UpDown_Axis);
break;
......@@ -530,15 +527,65 @@ namespace OnlineStore.DeviceLibrary
StoreMove.WaitList.Add(WaitResultInfo.WaitTime(500));
break;
case StoreMoveStep.BOX_H_OtherAxisBack:
StoreMove.NextMoveStep(StoreMoveStep.BOX_H_MiddleAxisToP1);
LogUtil.info(LOGGER, StoreName + "回原点:旋转轴运动到P1,上下轴到P1,压紧轴到P1!");
StoreMove.NextMoveStep(StoreMoveStep.BOX_H_OtherAxisBack_01);
LogUtil.info(LOGGER, StoreName + "回原点:旋转轴运动到P1,上下轴到P1");
ACAxisMove(Config.Middle_Axis, Config.MiddleAxis_P1_Position, Config.MiddleAxis_P1_Speed);
ACAxisMove(Config.UpDown_Axis, Config.UpDownAxis_DoorOPosition_P1, Config.UpDownAxis_P1_Speed);
ComMoveToPosition(Config.CompressAxis_P1_Position,Config.CompAxis_P1_Speed);
ACAxisMove(Config.UpDown_Axis, Config.UpDownAxis_DoorOPosition_P1, Config.UpDownAxis_P1_Speed);
break;
case StoreMoveStep.BOX_H_MiddleAxisToP1:
case StoreMoveStep.BOX_H_OtherAxisBack_01:
StoreMove.NextMoveStep(StoreMoveStep.BOX_H_OtherAxisBack_02);
LogUtil.info(LOGGER, StoreName + "回原点:压紧轴回源点!");
if (IsHasCompress_Axis)
{
ACAxisHomeMove(Config.Comp_Axis);
}
break;
case StoreMoveStep.BOX_H_OtherAxisBack_02:
StoreMove.NextMoveStep(StoreMoveStep.BOX_H_OtherAxisBack_03);
HuichuanLibrary.HCBoardManager.SetAxBacklash(Config.Middle_Axis.GetAxisValue(), Config.MiddleAxis_Reverse_Offset, Config.Middle_Axis.HomeLowSpeed, -1);
LogUtil.info(LOGGER, StoreName + "回原点完成,设置旋转轴反向间隙:" + Config.MiddleAxis_Reverse_Offset);
LogUtil.info(LOGGER, StoreName + "回原点:压紧轴到P1!");
ComMoveToPosition(Config.CompressAxis_P1_Position, Config.CompAxis_P1_Speed);
break;
case StoreMoveStep.BOX_H_OtherAxisBack_03:
if (IOManager.IOValue(IO_Type.TrayCheck_Door).Equals(IO_VALUE.LOW))
{
StoreMove.NextMoveStep(StoreMoveStep.BOX_H_OtherAxisBack_04);
LogUtil.info(LOGGER, StoreName + " 舱门口无盘, 执行往舱门口放盘");
}
else
{
StoreMove.NextMoveStep(StoreMoveStep.BOX_H_MiddleAxisToP1);
LogUtil.info(LOGGER, StoreName + " 舱门口有盘, 回原结束");
}
break;
case StoreMoveStep.BOX_H_OtherAxisBack_04:
StoreMove.NextMoveStep(StoreMoveStep.BOX_H_OtherAxisBack_05);
LogUtil.info(LOGGER, StoreName + " 打开舱门, 升降轴到p2");
ACAxisMove(Config.UpDown_Axis, Config.UpDownAxis_DoorIPosition_P2, Config.UpDownAxis_P2_Speed);
OpenDoor();
break;
case StoreMoveStep.BOX_H_OtherAxisBack_05:
StoreMove.NextMoveStep(StoreMoveStep.BOX_H_OtherAxisBack_06);
LogUtil.info(LOGGER, StoreName + " 进出轴到p2");
var InOutAxis_DoorPosition_P2 = CSVPositionReader<ACStorePosition>.allPositionMap.First().Value.InOutAxis_DoorPosition_P2;
ACAxisMove(Config.InOut_Axis, InOutAxis_DoorPosition_P2, Config.InOutAxis_P2_Speed);
break;
case StoreMoveStep.BOX_H_OtherAxisBack_06:
StoreMove.NextMoveStep(StoreMoveStep.BOX_H_OtherAxisBack_07);
LogUtil.info(LOGGER, StoreName + " 上下周到p8");
ACAxisMove(Config.UpDown_Axis, Config.UpDownAxis_DoorIBPosition_P8, Config.UpDownAxis_P8_Speed);
break;
case StoreMoveStep.BOX_H_OtherAxisBack_07:
StoreMove.NextMoveStep(StoreMoveStep.BOX_H_MiddleAxisToP1);
LogUtil.info(LOGGER, StoreName + " 进出轴到p1");
ACAxisMove(Config.InOut_Axis, Config.InOutAxis_P1_Position, Config.InOutAxis_P1_Speed);
break;
case StoreMoveStep.BOX_H_MiddleAxisToP1:
CloseDoor(false);
storeRunStatus = StoreRunStatus.Runing;
StoreMove.EndMove();
storeStatus = StoreStatus.StoreOnline;
......@@ -1356,6 +1403,7 @@ namespace OnlineStore.DeviceLibrary
ACServerManager.SuddenStop(Config.Middle_Axis.DeviceName, Config.Middle_Axis.GetAxisValue());
ACServerManager.SuddenStop(Config.UpDown_Axis.DeviceName, Config.UpDown_Axis.GetAxisValue());
ACServerManager.SuddenStop(Config.InOut_Axis.DeviceName, Config.InOut_Axis.GetAxisValue());
DoorStop();
if (IsHasCompress_Axis)
{
ACServerManager.SuddenStop(Config.Comp_Axis.DeviceName, Config.Comp_Axis.GetAxisValue());
......@@ -1375,8 +1423,7 @@ namespace OnlineStore.DeviceLibrary
CloseAllAxis();
}
LogUtil.info(LOGGER, StoreName + "StopMove");
IOManager.IOMove(IO_Type.Door_Moto_Run, IO_VALUE.LOW);
IOManager.IOMove(IO_Type.Door_Moto_Rev, IO_VALUE.LOW);
isInPro = false;
}
......
......@@ -12,26 +12,35 @@ namespace OnlineStore.DeviceLibrary
partial class AC_SA_BoxBean
{
Thread DoorRunMonitorThread;
int DoorAccSpeed = 0;
void InitDoorRunMonitor() {
DoorRunMonitorThread = new Thread(new ThreadStart(DoorRunMonitor));
DoorRunMonitorThread.Start();
GC.KeepAlive(DoorRunMonitorThread);
LogUtil.info(StoreName + "出料门运行监控开始");
if (Config.Door_Axis != null)
{
DoorAccSpeed = (int)(Config.DoorAxis_Run_Speed * 3);
}
}
bool DoorRunMonitorEnable = false;
public void OpenDoor(bool needwait = true)
{
if (DoorIsOpen())
return;
if (Config.Door_Axis != null)
{
CheckDoorState();
ACServerManager.RelMove(Config.Door_Axis.DeviceName, Config.Door_Axis.GetAxisValue(),500000, Config.DoorAxis_Run_Speed, DoorAccSpeed, DoorAccSpeed);
LogUtil.info(StoreName + "出料门开门,速度: " + Config.DoorAxis_Run_Speed.ToString());
_doorRunState = 1;
}
else
{
IOManager.IOMove(IO_Type.Door_Moto_Rev, IO_VALUE.LOW);
IOManager.IOMove(IO_Type.Door_Moto_Run, IO_VALUE.HIGH);
}
IOManager.IOMove(IO_Type.Door_Moto_Rev, IO_VALUE.LOW);
IOManager.IOMove(IO_Type.Door_Moto_Run, IO_VALUE.HIGH);
//if (IOManager.DOValue(IO_Type.StartOrStopBlow).Equals(IO_VALUE.LOW))
//{
// IOManager.IOMove(IO_Type.StartOrStopBlow, IO_VALUE.HIGH);
// openBlow = true;
//}
DoorRunMonitorEnable = true;
if (needwait)
......@@ -48,13 +57,20 @@ namespace OnlineStore.DeviceLibrary
{
if (DoorIsClose())
return;
IOManager.IOMove(IO_Type.Door_Moto_Rev, IO_VALUE.HIGH);
IOManager.IOMove(IO_Type.Door_Moto_Run, IO_VALUE.HIGH);
if (Config.Door_Axis != null)
{
CheckDoorState();
//ACServerManager.SpeedMove(Config.Door_Axis.DeviceName,Config.Door_Axis.GetAxisValue(),-Config.DoorAxis_Run_Speed, DoorAccSpeed, DoorAccSpeed);
ACServerManager.RelMove(Config.Door_Axis.DeviceName, Config.Door_Axis.GetAxisValue(), -500000, Config.DoorAxis_Run_Speed, DoorAccSpeed, DoorAccSpeed);
LogUtil.info(StoreName + "出料门关门,速度: -"+Config.DoorAxis_Run_Speed.ToString());
_doorRunState = -1;
}
else
{
IOManager.IOMove(IO_Type.Door_Moto_Rev, IO_VALUE.HIGH);
IOManager.IOMove(IO_Type.Door_Moto_Run, IO_VALUE.HIGH);
}
//if (openBlow) {
// IOManager.IOMove(IO_Type.StartOrStopBlow, IO_VALUE.LOW);
// openBlow = false;
//}
DoorRunMonitorEnable = true;
if (needwait)
{
......@@ -62,25 +78,71 @@ namespace OnlineStore.DeviceLibrary
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.Door_Up, IO_VALUE.LOW));
}
}
private bool DoorIsClose()
{
//&& IOManager.IOValue(IO_Type.Door_Up).Equals(IO_VALUE.LOW)
if (IOManager.IOValue(IO_Type.Door_Down).Equals(IO_VALUE.HIGH))
void CheckDoorState() {
if (!ACServerManager.ServerOnStatus(Config.Door_Axis.DeviceName, Config.Door_Axis.GetAxisValue()))
{
//IOManager.IOMove(IO_Type.StartOrStopBlow, IO_VALUE.LOW);
return true;
ACServerManager.AlarmClear(Config.Door_Axis.DeviceName, Config.Door_Axis.GetAxisValue());
Thread.Sleep(100);
ACServerManager.ServoOn(Config.Door_Axis.DeviceName, Config.Door_Axis.GetAxisValue());
}
return false;
var isAlarm = HuichuanLibrary.HCBoardManager.GetAxisSts(Config.Door_Axis.GetAxisValue()).ALM == 1;
if (isAlarm) {
ACServerManager.ServoOff(Config.Door_Axis.DeviceName, Config.Door_Axis.GetAxisValue());
Thread.Sleep(100);
ACServerManager.AlarmClear(Config.Door_Axis.DeviceName, Config.Door_Axis.GetAxisValue());
Thread.Sleep(100);
ACServerManager.ServoOn(Config.Door_Axis.DeviceName, Config.Door_Axis.GetAxisValue());
}
}
private bool DoorIsClose()
{
return IOManager.IOValue(IO_Type.Door_Down).Equals(IO_VALUE.HIGH);
}
private bool DoorIsOpen()
{
//IOManager.IOValue(IO_Type.Door_Down).Equals(IO_VALUE.LOW) &&
if (IOManager.IOValue(IO_Type.Door_Up).Equals(IO_VALUE.HIGH))
return IOManager.IOValue(IO_Type.Door_Up).Equals(IO_VALUE.HIGH);
}
void DoorStop(bool ResetState=true) {
if (Config.Door_Axis != null)
{
return true;
ACServerManager.SuddenStop(Config.Door_Axis);
LogUtil.info(StoreName + "出料门停止");
DoorRunMonitorEnable = false;
if (ResetState)
_doorRunState = 0;
}
else
{
IOManager.IOMove(IO_Type.Door_Moto_Run, IO_VALUE.LOW);
IOManager.IOMove(IO_Type.Door_Moto_Rev, IO_VALUE.LOW);
}
return false;
}
int _doorRunState = 0;
/// <summary>
///
/// </summary>
/// <returns>1:开门,-1:关门,0:不在运动</returns>
int DoorRunState() {
if (Config.Door_Axis != null)
{
return _doorRunState;
var b = HuichuanLibrary.HCBoardManager.GetAxisSts(Config.Door_Axis.GetAxisValue()).BUSY == 0;
if (b)
return 0;
var s=HuichuanLibrary.HCBoardManager.GetAxisPrfVel(Config.Door_Axis.GetAxisValue());
return s > 0 ? 1 : -1;
}
else
{
if (IOManager.DOValue(IO_Type.Door_Moto_Run).Equals(IO_VALUE.LOW))
return 0;
return IOManager.DOValue(IO_Type.Door_Moto_Rev).Equals(IO_VALUE.LOW) ? 1 : -1;
}
}
bool SafetyLightCurtains = false;
void DoorRunMonitor()
{
while (true) {
......@@ -90,32 +152,46 @@ namespace OnlineStore.DeviceLibrary
}
else {
//检测到门在运行立刻开始监控
if (IOManager.DOValue(IO_Type.Door_Moto_Run).Equals(IO_VALUE.HIGH)) {
if (DoorRunState()!=0) {
DoorRunMonitorEnable = true;
continue;
}
Thread.Sleep(200);
continue;
}
if (IOManager.IOValue(IO_Type.Motor_Error).Equals(IO_VALUE.HIGH)) {
SetWarnMsg(ResourceControl.WaitSingleTimeOut);
if (Config.Door_Axis==null && IOManager.IOValue(IO_Type.Motor_Error).Equals(IO_VALUE.HIGH)) {
SetWarnMsg(ResourceControl.WaitSingleTimeOut, "Motor_Error","Low");
continue;
}
if (!!SafetyLightCurtains && IOManager.IOValue(IO_Type.SafetyLightCurtains).Equals(IO_VALUE.LOW))
{
DoorStop(false);
SafetyLightCurtains = true;
}
else if (SafetyLightCurtains && IOManager.IOValue(IO_Type.SafetyLightCurtains).Equals(IO_VALUE.HIGH))
{
SafetyLightCurtains = false;
if (DoorRunState() == 1)
{
OpenDoor();
}
else if (DoorRunState() == -1)
{
CloseDoor();
}
}
//开门检测
if (IOManager.DOValue(IO_Type.Door_Moto_Run).Equals(IO_VALUE.HIGH)
&& IOManager.DOValue(IO_Type.Door_Moto_Rev).Equals(IO_VALUE.LOW)
&& IOManager.IOValue(IO_Type.Door_Up).Equals(IO_VALUE.HIGH))
if (DoorRunState()==1 && IOManager.IOValue(IO_Type.Door_Up).Equals(IO_VALUE.HIGH))
{
IOManager.IOMove(IO_Type.Door_Moto_Run, IO_VALUE.LOW);
DoorStop();
DoorRunMonitorEnable = false;
continue;
}
//关门检测
if (IOManager.DOValue(IO_Type.Door_Moto_Run).Equals(IO_VALUE.HIGH)
&& IOManager.DOValue(IO_Type.Door_Moto_Rev).Equals(IO_VALUE.HIGH)
&& IOManager.IOValue(IO_Type.Door_Down).Equals(IO_VALUE.HIGH))
if (DoorRunState() == -1 && IOManager.IOValue(IO_Type.Door_Down).Equals(IO_VALUE.HIGH))
{
IOManager.IOMove(IO_Type.Door_Moto_Run, IO_VALUE.LOW);
DoorStop();
DoorRunMonitorEnable = false;
continue;
}
......
......@@ -17,7 +17,13 @@ namespace OnlineStore
public class HIKCamera
{
Thread camerathread;
static HIKCamera _camera;
Asa.Camera.VisionLib camera;
public static HIKCamera Current { get {
if (_camera == null)
_camera = new HIKCamera();
return _camera;
} }
public string Name = "";
public event EventHandler<Bitmap> camera_event;
......@@ -95,7 +101,7 @@ namespace OnlineStore
camera.Close();
camera.Dispose();
}
void CameraGrabOne(string filename)
public void CameraGrabOne(string filename)
{
try
{
......@@ -115,7 +121,7 @@ namespace OnlineStore
LogUtil.error(Name + e.ToString());
}
}
string GetFixtureStateFilename(InOutStoreParam inOutParam,StoreMoveType storeMoveType, FixtureState fixtureState)
public string GetFixtureStateFilename(InOutStoreParam inOutParam,StoreMoveType storeMoveType, FixtureState fixtureState)
{
string dir = $"\\image\\Fixture\\{storeMoveType}\\{inOutParam.PositionNum}\\";
Directory.CreateDirectory(dir);
......@@ -126,12 +132,15 @@ namespace OnlineStore
}
return dir + filename;
}
enum FixtureState
{
In,
Up,
Down,
Out
}
}
public enum FixtureState
{
In,
Up,
Down,
Out,
DoorIn,
DoorOut,
}
}
......@@ -142,7 +142,15 @@ namespace OnlineStore.DeviceLibrary
/// 料仓原点返回和重置步骤,,升降轴,旋转轴,压紧轴原点返回
/// </summary>
BOX_H_OtherAxisBack = 014,
BOX_H_OtherAxisBack_wait2 = 015,
BOX_H_OtherAxisBack_01,
BOX_H_OtherAxisBack_02,
BOX_H_OtherAxisBack_03,
BOX_H_OtherAxisBack_04,
BOX_H_OtherAxisBack_05,
BOX_H_OtherAxisBack_06,
BOX_H_OtherAxisBack_07,
BOX_H_OtherAxisBack_wait2,
///// <summary>
///// 清理轴位置
///// </summary>
......@@ -150,35 +158,35 @@ namespace OnlineStore.DeviceLibrary
/// <summary>
/// 旋转轴返回P1
/// </summary>
BOX_H_MiddleAxisToP1 =016,
BOX_H_MiddleAxisToP1,
/// <summary>
/// 叉子先退回P1
/// </summary>
BOX_M_H_InOutToP1=018,
BOX_M_H_InOutToP1,
/// <summary>
/// 旋转轴回原点
/// </summary>
BOX_M_H_MiddleAxisHome = 019,
BOX_M_H_MiddleAxisHome ,
/// <summary>
/// 旋转轴等待清理位置
/// </summary>
BOX_M_H_MiddleWait = 020,
BOX_M_H_MiddleWait ,
/// <summary>
/// 叉子走到P1
/// </summary>
BOX_M_H_TOP1_InOutToP1 = 030,
BOX_M_H_TOP1_InOutToP1 ,
/// <summary>
/// 压紧轴回原点
/// </summary>
BOX_M_H_TOP1_CompressHome = 031,
BOX_M_H_TOP1_CompressHome ,
/// <summary>
/// 关闭门,旋转轴到P1,升降轴到P1
/// </summary>
BOX_M_H_TOP1_OtherAxisToP1 = 032,
BOX_H_InOutBack_wait = 033,
BOX_H_OtherAxisBack_wait = 034,
BOX_M_H_TOP1_OtherAxisToP1 ,
BOX_H_InOutBack_wait ,
BOX_H_OtherAxisBack_wait ,
#endregion
......@@ -260,6 +268,7 @@ namespace OnlineStore.DeviceLibrary
/// 料仓出库。。。等待200毫秒再次验证料盘是否拿走
/// </summary>
SO_16_CheckIsTake=116,
SO_TakeReelFaile,
#endregion
......@@ -267,7 +276,7 @@ namespace OnlineStore.DeviceLibrary
/// <summary>
/// 入库检测
/// </summary>
SI_00_TrayCheck=200,
SI_00_TrayCheck =200,
/// <summary>
/// 入库,。定位气缸下降
/// </summary>
......
......@@ -488,7 +488,7 @@ namespace OnlineStore.LoadCSVLibrary
[ConfigProAttribute("Default_TrayWidth", false)]
public int Default_TrayWidth { get; set; }
/// <summary>
/// 轴3压紧轴
/// 轴4压紧轴
/// </summary>
[ConfigProAttribute("Comp_Axis")]
public ConfigMoveAxis Comp_Axis { get; set; }
......@@ -540,7 +540,11 @@ namespace OnlineStore.LoadCSVLibrary
/// </summary>
[ConfigProAttribute("CompAxis_P3_Speed")]
public int CompAxis_P3_Speed { get; set; }
/// <summary>
///出料门(轴5)开关门速度
/// </summary>
[ConfigProAttribute("DoorAxis_Run_Speed",false)]
public int DoorAxis_Run_Speed { get; set; }
/// <summary>
......@@ -555,6 +559,13 @@ namespace OnlineStore.LoadCSVLibrary
public int MiddleAxis_Reverse_Offset { get; set; }
/// <summary>
/// 轴5出料门
/// </summary>
[ConfigProAttribute("Door_Axis",false)]
public ConfigMoveAxis Door_Axis { get; set; }
private Dictionary<string, string> CodeSizeMap = null;
......@@ -624,8 +635,9 @@ namespace OnlineStore.LoadCSVLibrary
MustHaveDOList.Add(IO_Type.RunSign_HddLed);
MustHaveDOList.Add(IO_Type.Alarm_Buzzer);
MustHaveDOList.Add(IO_Type.StartOrStopBlow);
MustHaveDOList.Add(IO_Type.Door_Moto_Run);
MustHaveDOList.Add(IO_Type.Door_Moto_Rev);
//MustHaveDOList.Add(IO_Type.Door_Moto_Run);
//MustHaveDOList.Add(IO_Type.Door_Moto_Rev);
MustHaveDOList.Add(IO_Type.Camera_Led);
}
public static void ConfigAxis(AC_SA_Config Config)
......
......@@ -175,10 +175,14 @@ namespace OnlineStore.LoadCSVLibrary
{
prop.SetValue(this, Convert.ChangeType(0, prop.PropertyType), null);//赋值****在这里需要考虑类型问题
}
else
else if(prop.PropertyType.Equals(typeof(string)))
{
prop.SetValue(this, Convert.ChangeType("", prop.PropertyType), null);//赋值****在这里需要考虑类型问题
}
else
{
prop.SetValue(this, Convert.ChangeType(null, prop.PropertyType), null);//赋值****在这里需要考虑类型问题
}
}
}
}
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!