Commit 55efe6d1 几米阳光

AIO模块修改

1 个父辈 7871d050
此文件类型无法预览
...@@ -9,15 +9,16 @@ ...@@ -9,15 +9,16 @@
AIOBOX-32 AIOBOX-32
</summary> </summary>
</member> </member>
<member name="T:Asa.AIOBOX.AIOBOX_32.DI_Changed"> <member name="T:Asa.AIOBOX.AIOBOX_32.DIO_Changed">
<summary> <summary>
自动读取DI委托 自动读取DIO委托
</summary> </summary>
<param name="sta">状态</param> <param name="staDI">所有DI状态</param>
<param name="staDO">所有DO状态</param>
</member> </member>
<member name="E:Asa.AIOBOX.AIOBOX_32.DI_Changed_Event"> <member name="E:Asa.AIOBOX.AIOBOX_32.DIO_Changed_Event">
<summary> <summary>
自动读取DI事件触发 自动读取DIO事件触发
</summary> </summary>
</member> </member>
<member name="M:Asa.AIOBOX.AIOBOX_32.#ctor"> <member name="M:Asa.AIOBOX.AIOBOX_32.#ctor">
...@@ -55,6 +56,11 @@ ...@@ -55,6 +56,11 @@
错误信息 错误信息
</summary> </summary>
</member> </member>
<member name="P:Asa.AIOBOX.AIOBOX_32.AutoRead">
<summary>
自动读取DIO状态,触发DIO_Changed_Event
</summary>
</member>
<member name="M:Asa.AIOBOX.AIOBOX_32.Connect"> <member name="M:Asa.AIOBOX.AIOBOX_32.Connect">
<summary> <summary>
连接 连接
...@@ -148,14 +154,14 @@ ...@@ -148,14 +154,14 @@
监听结果线程,把读取到的数据保存到buff 监听结果线程,把读取到的数据保存到buff
</summary> </summary>
</member> </member>
<member name="M:Asa.AIOBOX.AIOBOX_32.Auto_Read_DI"> <member name="M:Asa.AIOBOX.AIOBOX_32.Auto_Read_DIO">
<summary> <summary>
自动读取DI线程 自动读取DIO线程
</summary> </summary>
</member> </member>
<member name="M:Asa.AIOBOX.AIOBOX_32.Trigger_DI"> <member name="M:Asa.AIOBOX.AIOBOX_32.Trigger_DIO">
<summary> <summary>
触发DI改变事件 触发DIO改变事件
</summary> </summary>
</member> </member>
<member name="T:Asa.AIOBOX.Reg"> <member name="T:Asa.AIOBOX.Reg">
......
...@@ -13,24 +13,21 @@ namespace OnlineStore.DeviceLibrary ...@@ -13,24 +13,21 @@ namespace OnlineStore.DeviceLibrary
{ {
public class AIOBOXManager : IOManager public class AIOBOXManager : IOManager
{ {
public static int 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_32> AIOMap = new Dictionary<string, AIOBOX_32>(); public Dictionary<string, AIOBOX_32> AIOMap = new Dictionary<string, AIOBOX_32>();
public string DefaultIP = "";
public Dictionary<string, Dictionary<Addr, Status>> DIValueMap = new Dictionary<string, Dictionary<Addr, Status>>();
public Dictionary<string, Dictionary<Addr, Status>> DOValueMap = new Dictionary<string, Dictionary<Addr, Status>>();
private object DIMapLock = ""; private object DIMapLock = "";
private object DOMapLock = ""; private object DOMapLock = "";
public System.Timers.Timer timer = null; public System.Timers.Timer timer = null;
private object DILock = "";
private object DOLock = "";
public void ConnectionIP(string ioIp ) public void ConnectionIP(string ioIp )
{ {
if (timer == null)
{
timer = new System.Timers.Timer();
timer.Interval = 300;
timer.AutoReset = true;
timer.Elapsed += timer_Elapsed;
timer.Enabled = true;
}
AIOBOX_32 aioBox = null; AIOBOX_32 aioBox = null;
if (AIOMap.ContainsKey(ioIp)) if (AIOMap.ContainsKey(ioIp))
{ {
...@@ -43,51 +40,104 @@ namespace OnlineStore.DeviceLibrary ...@@ -43,51 +40,104 @@ namespace OnlineStore.DeviceLibrary
} }
AIOMap.Remove(ioIp); AIOMap.Remove(ioIp);
} }
if (DIValueMap.ContainsKey(ioIp))
{
DIValueMap.Remove(ioIp);
}
if (DOValueMap.ContainsKey(ioIp))
{
DOValueMap.Remove(ioIp);
}
try try
{ {
// Create new modbus master and add event functions // Create new modbus master and add event functions
aioBox = new AIOBOX_32(); aioBox = new AIOBOX_32();
aioBox.IP = ioIp; aioBox.IP = ioIp;
bool result = aioBox.Connect(); DefaultIP = ioIp;
if (result) aioBox.AutoRead = true;
{ aioBox.DIO_Changed_Event += AioBox_DIO_Changed_Event;
AIOMap.Add(ioIp, aioBox); LogUtil.info("开始连接IO模块【" + ioIp + "】,尝试重连三次");
} for (int i = 1; i <= 3; i++)
else
{ {
LogUtil.error("连接IO模块【"+ioIp+"】失败:"+aioBox.ErrInfo); bool result = aioBox.Connect();
if (result)
{
AIOMap.Add(ioIp, aioBox);
LogUtil.info("第【"+i+"】次连接IO模块【" + ioIp + "】成功:" + aioBox.ErrInfo);
Thread.Sleep(10);
//读取所有的DO
ReadAllDI(ioIp, 0);
break;
}
else
{
LogUtil.error("第【" + i + "】次连接IO模块【" + ioIp + "】失败:" + aioBox.ErrInfo + "");
}
Thread.Sleep(10);
} }
Thread.Sleep(10);
//读取所有的DO
ReadAllDI(ioIp, 0);
} }
catch (Exception error) catch (Exception error)
{ {
LogUtil.error(LOGGER, "连接IO模块[" + ioIp + "]出错:" + error.ToString()); LogUtil.error(LOGGER, "连接IO模块[" + ioIp + "]出错:" + error.ToString());
} }
} }
/// <summary>
/// 判断Io模块是否连接 private void AioBox_DIO_Changed_Event(Status[] staDI, Status[] staDO)
/// </summary>
public bool IsConnection(string ip)
{ {
try try
{ {
if (AIOMap.ContainsKey(ip)) UpdateAllDI(DefaultIP, staDI);
UpdateAllDO(DefaultIP, staDO);
}catch(Exception ex)
{
LogUtil.error("AioBox_DIO_Changed_Event出错:"+ex.ToString());
}
}
private void UpdateAllDI(string ip, Status[] sta)
{
if (sta != null && sta.Length >= DefaultDICount)
{
lock (DIValueMap)
{ {
if (AIOMap[ip].IsConn) Dictionary<Addr, Status> keyValues = new Dictionary<Addr, Status>();
if (DIValueMap.ContainsKey(ip))
{
DIValueMap.Remove(ip);
}
ushort i = 0;
foreach (Status s in sta)
{ {
return true; Addr addr = GetAddr(i);
keyValues.Add(addr, s);
i++;
} }
DIValueMap.Add(ip, keyValues);
} }
} }
catch (Exception ex) }
private void UpdateAllDO(string ip, Status[] sta)
{
if (sta != null && sta.Length >= DefaultDOCount)
{ {
LogUtil.error(LOGGER, "出错啦:" + ex.ToString()); lock (DOLock)
{
Dictionary<Addr, Status> keyValues = new Dictionary<Addr, Status>();
if (DOValueMap.ContainsKey(ip))
{
DOValueMap.Remove(ip);
}
ushort i = (ushort)(DefaultDICount);
foreach (Status s in sta)
{
Addr addr = GetAddr(i);
keyValues.Add(addr, s);
i++;
}
DOValueMap.Add(ip, keyValues);
}
} }
return false;
} }
private void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) private void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{ {
...@@ -204,42 +254,106 @@ namespace OnlineStore.DeviceLibrary ...@@ -204,42 +254,106 @@ namespace OnlineStore.DeviceLibrary
} }
public override void ReadAllDI(string ioIp, byte slaveId) public override void ReadAllDI(string ioIp, byte slaveId)
{ {
try
{
AIOBOX_32 aioBox = getAIO(ioIp);
if (aioBox != null)
{
Status[] allDi;
if (aioBox.ReadDI(Addr.DI_1, DefaultDICount, out allDi))
{
UpdateAllDI(ioIp, allDi);
}
else
{
LogUtil.error("读取所有DI出错:" + aioBox.ErrInfo);
}
}
}
catch (Exception ex)
{
LogUtil.error("ReadAllDI出错:" + ioIp);
}
} }
public override void ReadAllDO(string ioIp, byte slaveId) public override void ReadAllDO(string ioIp, byte slaveId)
{ {
try
{
AIOBOX_32 aioBox = getAIO(ioIp);
if (aioBox != null)
{
Status[] allDO;
if (aioBox.ReadDO(Addr.DO_1, DefaultDOCount, out allDO))
{
UpdateAllDO(ioIp, allDO);
}
else
{
LogUtil.error("读取所有DO出错:" + aioBox.ErrInfo);
}
}
}
catch (Exception ex)
{
LogUtil.error("ReadAllDO出错:" + ioIp);
}
} }
public override IO_VALUE GetDOValue(string ioIP, byte slaveId, ushort StartAddress) public override IO_VALUE GetDOValue(string ioIP, byte slaveId, ushort StartAddress)
{ {
IO_VALUE value = IO_VALUE.LOW; IO_VALUE value = IO_VALUE.LOW;
AIOBOX_32 aioBox = getAIO(ioIP); try
if (aioBox != null)
{ {
Status status = Status.Off; AIOBOX_32 aioBox = getAIO(ioIP);
aioBox.ReadDO(GetAddr(StartAddress), out status); if (aioBox != null)
if (status.Equals(Status.On))
{ {
value = IO_VALUE.HIGH; Status status = Status.Off;
Addr addr = GetAddr(StartAddress);
if (DOValueMap.ContainsKey(ioIP) && DOValueMap[ioIP].TryGetValue(addr, out status))
{
}
else
{ aioBox.ReadDO(addr, out status); }
if (status.Equals(Status.On))
{
value = IO_VALUE.HIGH;
}
} }
} }
catch (Exception ex)
{
LogUtil.error("ReadDI 出错:" + ex.ToString());
}
return value; return value;
} }
public override IO_VALUE GetDIValue(string ioIP, byte slaveId, ushort StartAddress) public override IO_VALUE GetDIValue(string ioIP, byte slaveId, ushort StartAddress)
{ {
IO_VALUE value = IO_VALUE.LOW; IO_VALUE value = IO_VALUE.LOW;
AIOBOX_32 aioBox = getAIO(ioIP); try
if (aioBox != null)
{ {
Status status = Status.Off; AIOBOX_32 aioBox = getAIO(ioIP);
aioBox.ReadDI(GetAddr(StartAddress), out status); if (aioBox != null)
if (status.Equals(Status.On))
{ {
value = IO_VALUE.HIGH; Status status = Status.Off;
Addr addr = GetAddr(StartAddress);
if (DIValueMap.ContainsKey(ioIP) && DIValueMap[ioIP].TryGetValue(addr, out status))
{
}
else
{
aioBox.ReadDI(addr, out status);
}
if (status.Equals(Status.On))
{
value = IO_VALUE.HIGH;
}
} }
} }
catch (Exception ex)
{
LogUtil.error("ReadDI 出错:" + ex.ToString());
}
return value; return value;
} }
public override IO_VALUE GetIOValue(ConfigIO configIO) public override IO_VALUE GetIOValue(ConfigIO configIO)
...@@ -265,7 +379,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -265,7 +379,7 @@ namespace OnlineStore.DeviceLibrary
private Addr GetAddr(ushort StartAddress) private Addr GetAddr(ushort StartAddress)
{ {
return (Addr)(StartAddress - 1); return (Addr)(StartAddress );
} }
private Status GetStatus(IO_VALUE onOff) private Status GetStatus(IO_VALUE onOff)
{ {
......
类型,说明,名称,属性值,设备名称,默认值,描述,电器定义,代码定义,SlaveID 类型,说明,名称,属性值,设备名称,默认值,描述,电器定义,代码定义,SlaveID
DI,急停,SuddenStop_BTN,200,192.168.200.10,0,急停,X01,DI-01,0 DI,急停,SuddenStop_BTN,0,192.168.200.11,0,急停,X01,DI-01,0
DI,复位,Reset_BTN,201,192.168.200.10,0,复位,X02,DI-02,0 DI,复位,Reset_BTN,1,192.168.200.11,0,复位,X02,DI-02,0
DI,自动,AutoRun_Single,202,192.168.200.10,0,自动,X03,DI-03,0 DI,自动,AutoRun_Single,2,192.168.200.11,0,自动,X03,DI-03,0
DI,气压检测,Airpressure_Check,203,192.168.200.10,0,气压检测,X04,DI-04,0 DI,气压检测,Airpressure_Check,3,192.168.200.11,0,气压检测,X04,DI-04,0
DI,料仓门口料盘检测,TrayCheck_Door,204,192.168.200.10,0,料仓门口料盘检测,X05,DI-05,0 DI,料仓门口料盘检测,TrayCheck_Door,4,192.168.200.11,0,料仓门口料盘检测,X05,DI-05,0
DI,叉子料盘检测,TrayCheck_Fixture,205,192.168.200.10,0,叉子料盘检测,X06,DI-06,0 DI,叉子料盘检测,TrayCheck_Fixture,5,192.168.200.11,0,叉子料盘检测,X06,DI-06,0
DI,进料口门上升端,Door_Up,206,192.168.200.10,0,进料口门上升端,X07,DI-07,0 DI,进料口门上升端,Door_Up,6,192.168.200.11,0,进料口门上升端,X07,DI-07,0
DI,进料口门下降端,Door_Down,207,192.168.200.10,0,进料口门下降端,X08,DI-08,0 DI,进料口门下降端,Door_Down,7,192.168.200.11,0,进料口门下降端,X08,DI-08,0
DI,定位气缸1上升端,LocationCylinder_Up,208,192.168.200.10,0,定位气缸1上升端,X09,DI-09,0 DI,定位气缸1上升端,LocationCylinder_Up,8,192.168.200.11,0,定位气缸1上升端,X09,DI-09,0
DI,定位气缸1下降端,LocationCylinder_Down,209,192.168.200.10,0,定位气缸1下降端,X10,DI-10,0 DI,定位气缸1下降端,LocationCylinder_Down,9,192.168.200.11,0,定位气缸1下降端,X10,DI-10,0
DI,前门限位,Door_LimitSingle,210,192.168.200.10,0,前门限位,X11,DI-11,0 DI,前门限位,Door_LimitSingle,10,192.168.200.11,0,前门限位,X11,DI-11,0
,,Right_Door_LimitSingle,211,192.168.200.10,0,右侧门限位,X12,DI-12,0 ,,Right_Door_LimitSingle,11,192.168.200.11,0,右侧门限位,X12,DI-12,0
DI,安全光栅,SafetyLightCurtains,212,192.168.200.10,0,安全光栅,X13,DI-13,0 DI,安全光栅,SafetyLightCurtains,12,192.168.200.11,0,安全光栅,X13,DI-13,0
,,TrayCheck_4,213,192.168.200.10,0,,X14,DI-14,0 ,,TrayCheck_4,13,192.168.200.11,0,,X14,DI-14,0
DI,定位气缸2上升端,LocationCylinder2_Up,214,192.168.200.10,0,定位气缸2上升端,X15,DI-15,0 DI,定位气缸2上升端,LocationCylinder2_Up,14,192.168.200.11,0,定位气缸2上升端,X15,DI-15,0
DI,定位气缸2下降端,LocationCylinder2_Down,215,192.168.200.10,0,定位气缸2下降端,X16,DI-16,0 DI,定位气缸2下降端,LocationCylinder2_Down,15,192.168.200.11,0,定位气缸2下降端,X16,DI-16,0
DO,自动指示灯,AutoRun_HddLed,100,192.168.200.10,0,自动指示灯,Y01,DO-01,0 DO,自动指示灯,AutoRun_HddLed,16,192.168.200.11,0,自动指示灯,Y01,DO-01,0
DO,故障指示灯,Alarm_HddLed,101,192.168.200.10,0,故障指示灯,Y02,DO-02,0 DO,故障指示灯,Alarm_HddLed,17,192.168.200.11,0,故障指示灯,Y02,DO-02,0
DO,待机指示灯,RunSign_HddLed,102,192.168.200.10,0,待机指示灯,Y03,DO-03,0 DO,待机指示灯,RunSign_HddLed,18,192.168.200.11,0,待机指示灯,Y03,DO-03,0
DO,吹气SOL ON,StartOrStopBlow,103,192.168.200.10,0,吹气SOL ON,Y04,DO-04,0 DO,吹气SOL ON,StartOrStopBlow,19,192.168.200.11,0,吹气SOL ON,Y04,DO-04,0
DO,料仓运转ON,Run_Sign,104,192.168.200.10,0,料仓运转ON,Y05,DO-05,0 DO,料仓运转ON,Run_Sign,20,192.168.200.11,0,料仓运转ON,Y05,DO-05,0
DO,轴2刹车电源ON,Axis_Brake,105,192.168.200.10,0,轴2刹车电源ON,Y06,DO-06,0 DO,轴2刹车电源ON,Axis_Brake,21,192.168.200.11,0,轴2刹车电源ON,Y06,DO-06,0
DO,进料口门上升SOL,Door_Up,106,192.168.200.10,0,进料口门上升SOL,Y07,DO-07,0 DO,进料口门上升SOL,Door_Up,22,192.168.200.11,0,进料口门上升SOL,Y07,DO-07,0
DO,进料口门下降SOL,Door_Down,107,192.168.200.10,0,进料口门下降SOL,Y08,DO-08,0 DO,进料口门下降SOL,Door_Down,23,192.168.200.11,0,进料口门下降SOL,Y08,DO-08,0
DO,定位上升SOL,LocationCylinder_Up,108,192.168.200.10,0,定位上升SOL,Y09,DO-09,0 DO,定位上升SOL,LocationCylinder_Up,24,192.168.200.11,0,定位上升SOL,Y09,DO-09,0
DO,定位下降SOL,LocationCylinder_Down,109,192.168.200.10,0,定位下降SOL,Y10,DO-10,0 DO,定位下降SOL,LocationCylinder_Down,25,192.168.200.11,0,定位下降SOL,Y10,DO-10,0
DO,相机照明开,CameraLight_Power,110,192.168.200.10,0,相机照明开,Y11,DO-11,0 DO,相机照明开,CameraLight_Power,26,192.168.200.11,0,相机照明开,Y11,DO-11,0
,,,111,192.168.200.10,0,,Y12,DO-12,0 ,,,27,192.168.200.11,0,,Y12,DO-12,0
,,,112,192.168.200.10,0,,Y13,DO-13,0 ,,,28,192.168.200.11,0,,Y13,DO-13,0
,,,113,192.168.200.10,0,,Y14,DO-14,0 ,,,29,192.168.200.11,0,,Y14,DO-14,0
DO,门禁功能屏蔽,DisableDoorControl,114,192.168.200.10,0,门禁功能屏蔽,Y15,DO-15,0 DO,门禁功能屏蔽,DisableDoorControl,30,192.168.200.11,0,门禁功能屏蔽,Y15,DO-15,0
,,,115,192.168.200.10,0,,Y16,DO-16,0 ,,,31,192.168.200.11,0,,Y16,DO-16,0
AXIS,(轴一)旋转轴,Middle_Axis,1,COM1,0,,,, AXIS,(轴一)旋转轴,Middle_Axis,1,COM1,0,,,,
AXIS,(轴二)升降轴轴,UpDown_Axis,2,COM1,0,,,, AXIS,(轴二)升降轴轴,UpDown_Axis,2,COM1,0,,,,
AXIS,(轴三)进出轴,InOut_Axis,3,COM1,0,,,, AXIS,(轴三)进出轴,InOut_Axis,3,COM1,0,,,,
PRO,温湿度传感器地址,Temperate_ServerAddress,192.168.200.14,,,,,,,, PRO,温湿度传感器地址,Temperate_ServerAddress,192.168.200.14,,,,,,
PRO,扫码枪IP,Scanner_Ip,192.168.200.13,,,,,,,, PRO,扫码枪IP,Scanner_Ip,192.168.200.13,,,,,,
PRO,扫码枪端口号,Scanner_Port,51236,,,,,,,, PRO,扫码枪端口号,Scanner_Port,51236,,,,,,
PRO,升降轴 进料口取料点 P1,UpDownAxis_DoorOPosition_P1,423300,,,,,,,, PRO,升降轴 进料口取料点 P1,UpDownAxis_DoorOPosition_P1,423300,,,,,,
PRO,升降轴 进料口出料前点 P2,UpDownAxis_DoorIPosition_P2,450000,,,,,,,, PRO,升降轴 进料口出料前点 P2,UpDownAxis_DoorIPosition_P2,450000,,,,,,
PRO,升降轴 进料口取料缓冲点 P7,UpDownAxis_DoorOBPosition_P7,450000,,,,,,,, PRO,升降轴 进料口取料缓冲点 P7,UpDownAxis_DoorOBPosition_P7,450000,,,,,,
PRO,升降轴 进料口出料缓冲点 P8,UpDownAxis_DoorIBPosition_P8,423300,,,,,,,, PRO,升降轴 进料口出料缓冲点 P8,UpDownAxis_DoorIBPosition_P8,423300,,,,,,
PRO,旋转轴(轴1)P1 待机原位点,MiddleAxis_P1_Position,-199999,,,,,,,, PRO,旋转轴(轴1)P1 待机原位点,MiddleAxis_P1_Position,-199999,,,,,,
PRO,进出轴(轴3)P1待机原位点,InOutAxis_P1_Position,500,,,,,,,, PRO,进出轴(轴3)P1待机原位点,InOutAxis_P1_Position,500,,,,,,
PRO,押金轴(轴4)P1待机原位点,CompressAxis_P1_Position,0,,,,,,,, PRO,押金轴(轴4)P1待机原位点,CompressAxis_P1_Position,0,,,,,,
PRO,是否使用定位气缸,IsHasLocationCylinder,1,,,,,,,, PRO,是否使用定位气缸,IsHasLocationCylinder,1,,,,,,
PRO,是否有左右侧门,IsHasDoorLimit,0,,,,,,,, PRO,是否有左右侧门,IsHasDoorLimit,0,,,,,,
PRO,是否使用压紧轴(1=使用),IsHasCompress_Axis,0,,,,, ,,, PRO,是否使用压紧轴(1=使用),IsHasCompress_Axis,0,,,,, ,
PRO,设备是否处于调试状态(1=调试,0=正常),IsInDebug,0,,,,,,,, PRO,设备是否处于调试状态(1=调试,0=正常),IsInDebug,0,,,,,,
PRO,气压检测IO关闭需要持续的时间,AirCheckSeconds,3,,,,,,,, PRO,气压检测IO关闭需要持续的时间,AirCheckSeconds,3,,,,,,
PRO,温湿度传感器地址,TemperateServer_Port,9001,,,,,,,, PRO,温湿度传感器地址,TemperateServer_Port,9001,,,,,,
PRO,预警温度,WarnTemperate,80,,,,,,,, PRO,预警温度,WarnTemperate,80,,,,,,
PRO,预警湿度,WarnHumidity,80,,,,,,,, PRO,预警湿度,WarnHumidity,80,,,,,,
PRO,(轴一)旋转轴目标速度,MiddleAxis_TargetSpeed,40,,,,,,,, PRO,(轴一)旋转轴目标速度,MiddleAxis_TargetSpeed,40,,,,,,
PRO,(轴一)旋转轴加速度,MiddleAxis_AddSpeed,2500,,,,,,,, PRO,(轴一)旋转轴加速度,MiddleAxis_AddSpeed,2500,,,,,,
PRO,(轴一)旋转轴减速度,MiddleAxis_DelSpeed,2500,,,,,,,, PRO,(轴一)旋转轴减速度,MiddleAxis_DelSpeed,2500,,,,,,
PRO,(轴一)旋转轴原点低速度,MiddleAxis_HomeLowSpeed,800,,,,,,,, PRO,(轴一)旋转轴原点低速度,MiddleAxis_HomeLowSpeed,800,,,,,,
PRO,(轴一)旋转轴原点高速,MiddleAxis_HomeHighSpeed,60,,,,,,,, PRO,(轴一)旋转轴原点高速,MiddleAxis_HomeHighSpeed,60,,,,,,
PRO,(轴一)旋转轴原点加速度,MiddleAxis_HomeAddSpeed,500,,,,,,,, PRO,(轴一)旋转轴原点加速度,MiddleAxis_HomeAddSpeed,500,,,,,,
PRO,(轴二)升降轴轴目标速度,UpdownAxis_TargetSpeed,40,,,,,,,, PRO,(轴二)升降轴轴目标速度,UpdownAxis_TargetSpeed,40,,,,,,
PRO,(轴二)升降轴轴加速度,UpdownAxis_AddSpeed,1500,,,,,,,, PRO,(轴二)升降轴轴加速度,UpdownAxis_AddSpeed,1500,,,,,,
PRO,(轴二)升降轴轴减速度,UpdownAxis_DelSpeed,1500,,,,,,,, PRO,(轴二)升降轴轴减速度,UpdownAxis_DelSpeed,1500,,,,,,
PRO,(轴二)升降轴轴原点低速度,UpdownAxis_HomeLowSpeed,100,,,,,,,, PRO,(轴二)升降轴轴原点低速度,UpdownAxis_HomeLowSpeed,100,,,,,,
PRO,(轴二)升降轴轴原点高速,UpdownAxis_HomeHighSpeed,200,,,,,,,, PRO,(轴二)升降轴轴原点高速,UpdownAxis_HomeHighSpeed,200,,,,,,
PRO,(轴二)升降轴轴原点加速度,UpdownAxis_HomeAddSpeed,200,,,,,,,, PRO,(轴二)升降轴轴原点加速度,UpdownAxis_HomeAddSpeed,200,,,,,,
PRO,(轴三)进出轴目标速度,InoutAxis_TargetSpeed,40,,,,,,,, PRO,(轴三)进出轴目标速度,InoutAxis_TargetSpeed,40,,,,,,
PRO,(轴三)进出轴加速度,InoutAxis_AddSpeed,2500,,,,,,,, PRO,(轴三)进出轴加速度,InoutAxis_AddSpeed,2500,,,,,,
PRO,(轴三)进出轴减速度,InoutAxis_DelSpeed,2500,,,,,,,, PRO,(轴三)进出轴减速度,InoutAxis_DelSpeed,2500,,,,,,
PRO,(轴三)进出轴原点低速,InoutAxis_HomeLowSpeed,20,,,,,,,, PRO,(轴三)进出轴原点低速,InoutAxis_HomeLowSpeed,20,,,,,,
PRO,(轴三)进出轴原点高速,InoutAxis_HomeHighSpeed,60,,,,,,,, PRO,(轴三)进出轴原点高速,InoutAxis_HomeHighSpeed,60,,,,,,
PRO,(轴三)进出轴原点加速度,InoutAxis_HomeAddSpeed,200,,,,,,,, PRO,(轴三)进出轴原点加速度,InoutAxis_HomeAddSpeed,200,,,,,,
PRO,升降轴(轴2)P1速度,UpDownAxis_P1_Speed,800,,,,,,,, PRO,升降轴(轴2)P1速度,UpDownAxis_P1_Speed,800,,,,,,
PRO,升降轴(轴2)P2速度,UpDownAxis_P2_Speed,800,,,,,,,, PRO,升降轴(轴2)P2速度,UpDownAxis_P2_Speed,800,,,,,,
PRO,升降轴(轴2)P3速度,UpDownAxis_P3_Speed,800,,,,,,,, PRO,升降轴(轴2)P3速度,UpDownAxis_P3_Speed,800,,,,,,
PRO,升降轴(轴2)P4速度,UpDownAxis_P4_Speed,200,,,,,,,, PRO,升降轴(轴2)P4速度,UpDownAxis_P4_Speed,200,,,,,,
PRO,升降轴(轴2)P5速度,UpDownAxis_P5_Speed,800,,,,,,,, PRO,升降轴(轴2)P5速度,UpDownAxis_P5_Speed,800,,,,,,
PRO,升降轴(轴2)P6速度,UpDownAxis_P6_Speed,200,,,,,,,, PRO,升降轴(轴2)P6速度,UpDownAxis_P6_Speed,200,,,,,,
PRO,升降轴(轴2)P7速度,UpDownAxis_P7_Speed,200,,,,,, ,, PRO,升降轴(轴2)P7速度,UpDownAxis_P7_Speed,200,,,,,,
PRO,升降轴(轴2)P8速度,UpDownAxis_P8_Speed,200,,,,,,,, PRO,升降轴(轴2)P8速度,UpDownAxis_P8_Speed,200,,,,,,
PRO,旋转轴(轴1)P1速度,MiddleAxis_P1_Speed,400,,,,,,,, PRO,旋转轴(轴1)P1速度,MiddleAxis_P1_Speed,400,,,,,,
PRO,旋转轴(轴1)P2速度,MiddleAxis_P2_Speed,400,,,,,,,, PRO,旋转轴(轴1)P2速度,MiddleAxis_P2_Speed,400,,,,,,
PRO,进出轴(轴3)P1速度,InOutAxis_P1_Speed,150,,,,,,,, PRO,进出轴(轴3)P1速度,InOutAxis_P1_Speed,150,,,,,,
PRO,进出轴(轴3)P2速度,InOutAxis_P2_Speed,150,,,,,,,, PRO,进出轴(轴3)P2速度,InOutAxis_P2_Speed,150,,,,,,
PRO,进出轴(轴3)P3速度,InOutAxis_P3_Speed,150,,,,,,,, PRO,进出轴(轴3)P3速度,InOutAxis_P3_Speed,150,,,,,,
PRO,(轴一)旋转轴停止时可误差的脉冲数的最小值,MiddleAxis_ErrorCountMin,10,,,,,,,, PRO,(轴一)旋转轴停止时可误差的脉冲数的最小值,MiddleAxis_ErrorCountMin,10,,,,,,
PRO,(轴二)升降轴轴停止时可误差的脉冲数的最小值,UpdownAxis_ErrorCountMin,10,,,,,, ,, PRO,(轴二)升降轴轴停止时可误差的脉冲数的最小值,UpdownAxis_ErrorCountMin,10,,,,,,
PRO,(轴三)进出轴停止时可误差的脉冲数的最小值,InoutAxis_ErrorCountMin,10,,,,,,,, PRO,(轴三)进出轴停止时可误差的脉冲数的最小值,InoutAxis_ErrorCountMin,10,,,,,,
PRO,(轴一)旋转轴停止时可误差的脉冲数的最大值,MiddleAxis_ErrorCountMax,1000,,,,,,,, PRO,(轴一)旋转轴停止时可误差的脉冲数的最大值,MiddleAxis_ErrorCountMax,1000,,,,,,
PRO,(轴二)升降轴轴停止时可误差的脉冲数的最大值,UpdownAxis_ErrorCountMax,1000,,,,,,,, PRO,(轴二)升降轴轴停止时可误差的脉冲数的最大值,UpdownAxis_ErrorCountMax,1000,,,,,,
PRO,(轴三)进出轴停止时可误差的脉冲数的最大值,InoutAxis_ErrorCountMax,1000,,,,,,,, PRO,(轴三)进出轴停止时可误差的脉冲数的最大值,InoutAxis_ErrorCountMax,1000,,,,,,
PRO,出入库多少次,会自动重置旋转轴,Box_ResetMCount,1000,,,,,,,, PRO,出入库多少次,会自动重置旋转轴,Box_ResetMCount,1000,,,,,,
PRO,出入库多少次,会自动重置所有轴操作,Box_ResetACount,10000,,,,,,,, PRO,出入库多少次,会自动重置所有轴操作,Box_ResetACount,10000,,,,,,
PRO,IO信号超时时间(毫秒),IOSingle_TimerOut,10000,,,,,,,, PRO,IO信号超时时间(毫秒),IOSingle_TimerOut,10000,,,,,,
PRO,是否使用料盘检测信号,IsUse_Tray_Check,0,,,,,, ,, PRO,是否使用料盘检测信号,IsUse_Tray_Check,0,,,,,,
PRO,(轴一)旋转轴最小限位,MiddleAxis_PositionMin,0,,,,,,,, PRO,(轴一)旋转轴最小限位,MiddleAxis_PositionMin,0,,,,,,
PRO,(轴二)升降轴最小限位,UpdownAxis_PositionMin,0,,,,,,,, PRO,(轴二)升降轴最小限位,UpdownAxis_PositionMin,0,,,,,,
PRO,(轴三)进出轴最小限位,InoutAxis_PositionMin,0,,,,,,,, PRO,(轴三)进出轴最小限位,InoutAxis_PositionMin,0,,,,,,
PRO,(轴一)旋转轴最大限位,MiddleAxis_PositionMax,0,,,,,,,, PRO,(轴一)旋转轴最大限位,MiddleAxis_PositionMax,0,,,,,,
PRO,(轴二)升降轴最大限位,UpdownAxis_PositionMax,0,,,,,,,, PRO,(轴二)升降轴最大限位,UpdownAxis_PositionMax,0,,,,,,
PRO,(轴三)进出轴最大限位,InoutAxis_PositionMax,0,,,,,,,, PRO,(轴三)进出轴最大限位,InoutAxis_PositionMax,0,,,,,,
PRO,需要吹气的温度(温度标准),Max_Temperature,0,,,,,,,, PRO,需要吹气的温度(温度标准),Max_Temperature,0,,,,,,
PRO,需要吹气的湿度(湿度标准),Max_Humidity,10,,,,,,,, PRO,需要吹气的湿度(湿度标准),Max_Humidity,10,,,,,,
PRO,每次吹气的时间(分钟),BlowAir_Time,10,,,,,,,, PRO,每次吹气的时间(分钟),BlowAir_Time,10,,,,,,
PRO,两次吹气间隔(分钟),BlowAir_Interval,10,,,,,,,, PRO,两次吹气间隔(分钟),BlowAir_Interval,10,,,,,,
...@@ -85,24 +85,25 @@ namespace OnlineStore.DeviceLibrary ...@@ -85,24 +85,25 @@ namespace OnlineStore.DeviceLibrary
//初始化摄像机配置 //初始化摄像机配置
string nameStr = ConfigAppSettings.GetValue(Setting_Init.CameraName); string nameStr = ConfigAppSettings.GetValue(Setting_Init.CameraName);
string codeStr = ConfigAppSettings.GetValue(Setting_Init.CodeType); string codeStr = ConfigAppSettings.GetValue(Setting_Init.CodeType);
CodeManager.LoadConfig(nameStr, codeStr);
//初始化 //连接设备 CodeManager.LoadConfig(nameStr, codeStr);
IOManager.instance.ConnectionKND(Config.DIODeviceNameList); Task.Factory.StartNew(delegate
{
timersTimer.Enabled = false; IOManager.instance.ConnectionKND(Config.DIODeviceNameList);
int isAuto = ConfigAppSettings.GetIntValue(Setting_Init.App_AutoRun); timersTimer.Enabled = false;
if (isAuto == 1) int isAuto = ConfigAppSettings.GetIntValue(Setting_Init.App_AutoRun);
{ if (isAuto == 1)
timersTimer.Enabled = true; {
} timersTimer.Enabled = true;
}
Thread.Sleep(300); Thread.Sleep(300);
//默认三个灯都亮 //默认三个灯都亮
KNDIOMove(IO_Type.Alarm_HddLed, IO_VALUE.HIGH); KNDIOMove(IO_Type.Alarm_HddLed, IO_VALUE.HIGH);
KNDIOMove(IO_Type.AutoRun_HddLed, IO_VALUE.HIGH); KNDIOMove(IO_Type.AutoRun_HddLed, IO_VALUE.HIGH);
KNDIOMove(IO_Type.RunSign_HddLed, IO_VALUE.HIGH); KNDIOMove(IO_Type.RunSign_HddLed, IO_VALUE.HIGH);
LogUtil.info("软件启动:默认三个灯都亮");
});
} }
private void IoCheckTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) private void IoCheckTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
......
...@@ -49,7 +49,7 @@ namespace OnlineStore.DeviceLibrary ...@@ -49,7 +49,7 @@ namespace OnlineStore.DeviceLibrary
LoadCamera(); LoadCamera();
CodeLibrary.HDCodeLearnHelper.LoadConfig(nameStr, codeStr); CodeLibrary.HDCodeLearnHelper.LoadConfig(nameStr, codeStr);
} }
catch (Exception ex) catch (Exception ex)
{ {
LogUtil.error("解析摄像机配置出错:" + ex.ToString()); LogUtil.error("解析摄像机配置出错:" + ex.ToString());
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!