Commit 7bdb0072 LN

IOip配置方式修改

1 个父辈 a9301e4f
此文件类型无法预览
......@@ -136,7 +136,7 @@ namespace OnlineStore.ACSingleStore
{
// txtIp.Text = io.DeviceName;
txtDOIndex.Text = io.GetIOAddr().ToString();
txtDoName.Text = io.DeviceName;
txtDoName.Text = io.IO_IP;
txtSlaveId.Text = io.SlaveID.ToString();
IOTextControl newControl = DOControlList[io.ProName];
selectControl = newControl;
......
......@@ -67,6 +67,7 @@ namespace OnlineStore.ACSingleStore
if (store == null)
{
LogUtil.error(LOGGER, "找不到对应的料仓");
this.Close();
return;
}
//txtSpeed.Text = store.Config.CompressAxis_EndSpeed.ToString();
......
......@@ -451,11 +451,11 @@ namespace OnlineStore.DeviceLibrary
{
if (configIO.ProType.Equals(ConfigItemType.DI))
{
return GetDIValue(configIO.DeviceName, configIO.SlaveID, configIO.GetIOAddr());
return GetDIValue(configIO.IO_IP, configIO.SlaveID, configIO.GetIOAddr());
}
else if (configIO.ProType.Equals(ConfigItemType.DO))
{
return GetDOValue(configIO.DeviceName, configIO.SlaveID, configIO.GetIOAddr());
return GetDOValue(configIO.IO_IP, configIO.SlaveID, configIO.GetIOAddr());
}
}
catch (Exception ex)
......
......@@ -23,7 +23,7 @@ namespace OnlineStore.DeviceLibrary
{
ConfigIO configIo = StoreManager.Config.StoreDOList[ioType];
//DateTime time = DateTime.Now;
instance.WriteSingleDO(configIo.DeviceName, configIo.SlaveID, configIo.GetIOAddr(), ioValue);
instance.WriteSingleDO(configIo.IO_IP, configIo.SlaveID, configIo.GetIOAddr(), ioValue);
//TimeSpan span = DateTime.Now - time;
//if (span.TotalMilliseconds > 100)
//{
......@@ -43,13 +43,13 @@ namespace OnlineStore.DeviceLibrary
if (StoreManager.Config.StoreDIList.ContainsKey(ioType))
{
ConfigIO configIo = StoreManager.Config.StoreDIList[ioType];
ioValue = instance.GetDIValue(configIo.DeviceName, configIo.SlaveID, configIo.GetIOAddr());
ioValue = instance.GetDIValue(configIo.IO_IP, configIo.SlaveID, configIo.GetIOAddr());
//UpdateDoValue(ioType, ioValue);
}
else if (StoreManager.Config.StoreDOList.ContainsKey(ioType))
{
ConfigIO configIo = StoreManager.Config.StoreDOList[ioType];
ioValue = instance.GetDOValue(configIo.DeviceName, configIo.SlaveID, configIo.GetIOAddr());
ioValue = instance.GetDOValue(configIo.IO_IP, configIo.SlaveID, configIo.GetIOAddr());
}
else
{
......@@ -63,7 +63,7 @@ namespace OnlineStore.DeviceLibrary
if (StoreManager.Config.StoreDOList.ContainsKey(ioType))
{
ConfigIO configIo = StoreManager.Config.StoreDOList[ioType];
ioValue = instance.GetDOValue(configIo.DeviceName, configIo.SlaveID, configIo.GetIOAddr());
ioValue = instance.GetDOValue(configIo.IO_IP, configIo.SlaveID, configIo.GetIOAddr());
}
else
{
......
......@@ -367,9 +367,9 @@ namespace OnlineStore.DeviceLibrary
{
if (configIO.ProType.Equals(ConfigItemType.DI))
{
if (DIValueMap.ContainsKey(configIO.DeviceName))
if (DIValueMap.ContainsKey(configIO.IO_IP))
{
List<KNDIO> allIo = new List<KNDIO>(DIValueMap[configIO.DeviceName]);
List<KNDIO> allIo = new List<KNDIO>(DIValueMap[configIO.IO_IP]);
List<KNDIO> list = (from m in allIo where m.IOAddress.Equals(configIO.GetIOAddr()) select m).ToList<KNDIO>();
if (list.Count > 0)
{
......@@ -379,9 +379,9 @@ namespace OnlineStore.DeviceLibrary
}
else if (configIO.ProType.Equals(ConfigItemType.DO))
{
if (DOValueMap.ContainsKey(configIO.DeviceName))
if (DOValueMap.ContainsKey(configIO.IO_IP))
{
List<KNDIO> allIo = new List<KNDIO>(DOValueMap[configIO.DeviceName]);
List<KNDIO> allIo = new List<KNDIO>(DOValueMap[configIO.IO_IP]);
List<KNDIO> list = (from m in allIo where m.SlaveId.Equals(configIO.SlaveID) && m.IOAddress.Equals(configIO.GetIOAddr()) select m).ToList<KNDIO>();
if (list.Count > 0)
{
......
类型,说明,名称,属性值,设备名称,默认值,描述,电器定义,代码定义,SlaveID,
DI,急停,SuddenStop_BTN,0,192.168.200.11,0,急停,X01,DI-01,0,
DI,复位,Reset_BTN,1,192.168.200.11,0,复位,X02,DI-02,0,
DI,门禁,DoorLimit,2,192.168.200.11,0,门禁,X03,DI-03,0,
DI,料盘检测1(进料口),TrayCheck_Door,3,192.168.200.11,0,料盘检测1(进料口),X04,DI-04,0,
DI,料盘检测2(料叉),TrayCheck_Fixture,4,192.168.200.11,0,料盘检测2(料叉),X05,DI-05,0,
DI,气压检测,Airpressure_Check,5,192.168.200.11,0,气压检测,X06,DI-06,0,
DI,进料口门上升端,Door_Up,6,192.168.200.11,0,进料口门上升端,X07,DI-07,0,
DI,进料口门下降端,Door_Down,7,192.168.200.11,0,进料口门下降端,X08,DI-08,0,
DO,自动指示灯,AutoRun_HddLed,0,192.168.200.11,0,自动指示灯,Y01,DO-01,0,
DO,故障指示灯,Alarm_HddLed,1,192.168.200.11,0,故障指示灯,Y02,DO-02,0,
DO,待机指示灯,RunSign_HddLed,2,192.168.200.11,0,待机指示灯,Y03,DO-03,0,
DO,料仓运转ON,Run_Signal,3,192.168.200.11,0,料仓运转ON,Y04,DO-04,0,
DO,轴2刹车电源ON,Axis_Brake,4,192.168.200.11,0,轴2刹车电源ON,Y05,DO-05,0,
DO,料仓吹气SOL,StartOrStopBlow,5,192.168.200.11,0,料仓吹气SOL,Y06,DO-06,0,
DO,进料口门上升SOL,Door_Up,6,192.168.200.11,0,进料口门上升SOL,Y07,DO-07,0,
DO,进料口门下降SOL,Door_Down,7,192.168.200.11,0,进料口门下降SOL,Y08,DO-08,0,
PRO,IO模块对应的DI数量,IO_DILength,192.168.200.11#8,,,,,,,
PRO,模块对应的DO数量,IO_DOLength,192.168.200.11#8,,,,,,,
PRO,是否有仓门,HasDoor,1,,,,,,,
PRO,IO模块IP,PRO_AOI_IP_1,192.168.200.11,,,,,,,
,,,,,,,,,,
DI,急停,SuddenStop_BTN,0,PRO_AOI_IP_1,0,急停,X01,DI-01,0,
DI,复位,Reset_BTN,1,PRO_AOI_IP_1,0,复位,X02,DI-02,0,
DI,门禁,DoorLimit,2,PRO_AOI_IP_1,0,门禁,X03,DI-03,0,
DI,料盘检测1(进料口),TrayCheck_Door,3,PRO_AOI_IP_1,0,料盘检测1(进料口),X04,DI-04,0,
DI,料盘检测2(料叉),TrayCheck_Fixture,4,PRO_AOI_IP_1,0,料盘检测2(料叉),X05,DI-05,0,
DI,气压检测,Airpressure_Check,5,PRO_AOI_IP_1,0,气压检测,X06,DI-06,0,
DI,进料口门上升端,Door_Up,6,PRO_AOI_IP_1,0,进料口门上升端,X07,DI-07,0,
DI,进料口门下降端,Door_Down,7,PRO_AOI_IP_1,0,进料口门下降端,X08,DI-08,0,
DO,自动指示灯,AutoRun_HddLed,0,PRO_AOI_IP_1,0,自动指示灯,Y01,DO-01,0,
DO,故障指示灯,Alarm_HddLed,1,PRO_AOI_IP_1,0,故障指示灯,Y02,DO-02,0,
DO,待机指示灯,RunSign_HddLed,2,PRO_AOI_IP_1,0,待机指示灯,Y03,DO-03,0,
DO,料仓运转ON,Run_Signal,3,PRO_AOI_IP_1,0,料仓运转ON,Y04,DO-04,0,
DO,轴2刹车电源ON,Axis_Brake,4,PRO_AOI_IP_1,0,轴2刹车电源ON,Y05,DO-05,0,
DO,料仓吹气SOL,StartOrStopBlow,5,PRO_AOI_IP_1,0,料仓吹气SOL,Y06,DO-06,0,
DO,进料口门上升SOL,Door_Up,6,PRO_AOI_IP_1,0,进料口门上升SOL,Y07,DO-07,0,
DO,进料口门下降SOL,Door_Down,7,PRO_AOI_IP_1,0,进料口门下降SOL,Y08,DO-08,0,
AXIS,(轴一)旋转轴,Middle_Axis,1,COM1,0,,,,,
AXIS,(轴二)升降轴轴,UpDown_Axis,2,COM1,0,,,,,
AXIS,(轴三)进出轴,InOut_Axis,3,COM1,0,,,,,
......@@ -96,6 +101,4 @@ PRO,每次吹气的时间(分钟),BlowAir_Time,10,,,,,,,
PRO,两次吹气间隔(分钟),BlowAir_Interval,10,,,,,,,
PRO,温湿度端口号,Humiture_Port,COM2,,,,,,,
,,,,,,,,, ,
PRO,IO模块对应的DI数量,IO_DILength,192.168.200.11#8,,,,,, ,
PRO,模块对应的DO数量,IO_DOLength,192.168.200.11#8,,,,,,,
PRO,是否有仓门,HasDoor,1,,,,,,,
,,,,,,,,, ,
......@@ -48,6 +48,7 @@ namespace OnlineStore.DeviceLibrary
{
try
{
StoreConfig.ProIOIpMap = new Dictionary<string, string>();
if (!isInit)
{
string server = ConfigAppSettings.GetValue(Setting_Init.http_server);
......
......@@ -32,14 +32,14 @@ namespace OnlineStore.LoadCSVLibrary
/// 属性值
/// </summary>
[CSVAttribute("属性值")]
public string ProVale { get; set; }
public string ProValue { get; set; }
public ushort GetIOAddr()
{
ushort value = 0;
try
{
value = (ushort)Convert.ToInt32(ProVale);
value = (ushort)Convert.ToInt32(ProValue);
}
catch (Exception ex)
{
......@@ -49,20 +49,20 @@ namespace OnlineStore.LoadCSVLibrary
}
public virtual int GetValue()
{
if (ProVale.Equals(""))
if (ProValue.Equals(""))
{
return -1;
}
return Convert.ToInt32(ProVale);
return Convert.ToInt32(ProValue);
}
public override string ToString()
{
return "ConfigBase。" + "类型:" + ProType + ",说明:" + Explain + ",名称:" + ProName + ",属性值:" + ProVale;
return "ConfigBase。" + "类型:" + ProType + ",说明:" + Explain + ",名称:" + ProName + ",属性值:" + ProValue;
}
public virtual void CheckField()
{
if (String.IsNullOrEmpty(ProType) || String.IsNullOrEmpty(ProName) || String.IsNullOrEmpty(ProVale))
if (String.IsNullOrEmpty(ProType) || String.IsNullOrEmpty(ProName) || String.IsNullOrEmpty(ProValue))
{
throw new CVSFieldNotMatchingExection(ToString() + ",【类型:ProType】【名称:ProName】【属性值:ProVale】必须配置值!");
}
......@@ -168,20 +168,20 @@ namespace OnlineStore.LoadCSVLibrary
/// <returns></returns>
public short GetAxisValue()
{
if (ProVale.Equals("") || ProVale.Equals("-1"))
if (ProValue.Equals("") || ProValue.Equals("-1"))
{
return -1;
}
return (short)Convert.ToInt32(ProVale);
return (short)Convert.ToInt32(ProValue);
}
public override string ToString()
{
return "ConfigMoveAxis。" + "类型:" + ProType + ",说明:" + Explain + ",名称:" + ProName + ",属性值:" + ProVale + ",设备名称:" + DeviceName;
return "ConfigMoveAxis。" + "类型:" + ProType + ",说明:" + Explain + ",名称:" + ProName + ",属性值:" + ProValue + ",设备名称:" + DeviceName;
}
public override void CheckField()
{
if (String.IsNullOrEmpty( ProType) || String.IsNullOrEmpty( ProName ) || String.IsNullOrEmpty( DeviceName ) || String.IsNullOrEmpty( ProVale ))
if (String.IsNullOrEmpty( ProType) || String.IsNullOrEmpty( ProName ) || String.IsNullOrEmpty( DeviceName ) || String.IsNullOrEmpty( ProValue ))
{
throw new CVSFieldNotMatchingExection(ToString() + ",【类型:ProType】【名称:ProName】【属性值:ProVale】【设备名称:DeviceName】必须配置值!");
}
......@@ -208,6 +208,28 @@ namespace OnlineStore.LoadCSVLibrary
{
SlaveID = 0;
}
private string IP = "";
/// <summary>
/// 设备IP
/// </summary>
public string IO_IP
{
get
{
if (String.IsNullOrEmpty(IP))
{
if (StoreConfig.ProIOIpMap != null && StoreConfig.ProIOIpMap.ContainsKey(DeviceName))
{
IP = StoreConfig.ProIOIpMap[DeviceName];
}
else
{
IP = DeviceName;
}
}
return IP;
}
}
/// <summary>
/// 设备名称
/// </summary>
......@@ -262,26 +284,26 @@ namespace OnlineStore.LoadCSVLibrary
}
try
{
if (ProVale.Equals("") || ProVale.Equals("-1"))
if (ProValue.Equals("") || ProValue.Equals("-1"))
{
IoValue = -1;
}
else if (ProType.Equals(ConfigItemType.DI))
{
IoValue = Convert.ToInt32(ProVale, 8);
IoValue = Convert.ToInt32(ProValue, 8);
}
else if (ProType.Equals(ConfigItemType.DO))
{
if (ProVale.Length == 2)
if (ProValue.Length == 2)
{
int a = Convert.ToInt32(ProVale.Substring(0, 1), 16) - 8;
string str =a+ProVale.Substring(1,1);
int a = Convert.ToInt32(ProValue.Substring(0, 1), 16) - 8;
string str =a+ProValue.Substring(1,1);
IoValue = Convert.ToInt32( str, 8);
//IoValue = a + b;
}
else
{
IoValue = Convert.ToInt32(ProVale, 16) - Convert.ToInt32("80", 16);
IoValue = Convert.ToInt32(ProValue, 16) - Convert.ToInt32("80", 16);
}
}
//LOGGER.Info("IO转换:(" + ElectricalDefinition + ")" + ProVale + "=" + IoValue);
......@@ -296,11 +318,11 @@ namespace OnlineStore.LoadCSVLibrary
public override string ToString()
{
return "ConfigIO。" + ProType + "," + Explain + "," + ProName + ",属性值:" + ProVale + ",设备名称:" + DeviceName + ",描述:" + Describe + ",电器定义:" + ElectricalDefinition + ",代码定义:" + CodeDefinition + "";
return "ConfigIO。" + ProType + "," + Explain + "," + ProName + ",属性值:" + ProValue + ",设备名称:" + DeviceName + ",描述:" + Describe + ",电器定义:" + ElectricalDefinition + ",代码定义:" + CodeDefinition + "";
}
public override void CheckField()
{
if (String.IsNullOrEmpty(ProType) || String.IsNullOrEmpty(ProName) || String.IsNullOrEmpty(DeviceName) || String.IsNullOrEmpty(ProVale))
if (String.IsNullOrEmpty(ProType) || String.IsNullOrEmpty(ProName) || String.IsNullOrEmpty(DeviceName) || String.IsNullOrEmpty(ProValue))
{
throw new CVSFieldNotMatchingExection(ToString() + ",【类型:ProType】【名称:ProName】【属性值:ProVale】【设备名称:DeviceName】必须配置值!");
}
......
......@@ -4,11 +4,14 @@ using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
namespace OnlineStore.LoadCSVLibrary
{
public class StoreConfig
{
public static Dictionary<string, string> ProIOIpMap = null;
public const string IOIP_Str = "PRO_AOI_IP";
public static readonly ILog LOGGER = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
/// <summary>
/// ID
......@@ -109,9 +112,21 @@ namespace OnlineStore.LoadCSVLibrary
}
else if (con.ProType == ConfigItemType.PRO)
{
prop.SetValue(this, Convert.ChangeType(con.ProVale, prop.PropertyType), null);//赋值
prop.SetValue(this, Convert.ChangeType(con.ProValue, prop.PropertyType), null);//赋值
}
}
else
{
LOGGER.Error("配置文件:" + this.ConfigFilePath + ",属性名=" + con.ProName + "的属性未找到匹配字段!");
}
}
else if (!ProIOIpMap.ContainsKey(con.ProName) && con.ProName.ToUpper().Contains(IOIP_Str))
{
ProIOIpMap.Add(con.ProName, con.ProValue);
if (!DIODeviceNameList.Contains(con.ProValue))
{
DIODeviceNameList.Add(con.ProValue);
}
}
else
{
......@@ -123,7 +138,7 @@ namespace OnlineStore.LoadCSVLibrary
if (IO_Type.GetTypeList().Contains(con.ProName))
{
ConfigIO io = (ConfigIO)con;
if (!DIODeviceNameList.Contains(io.DeviceName) && (io.GetIOValue() >= 0 || io.GetIOAddr() >= 0))
if (!DIODeviceNameList.Contains(io.DeviceName) && (io.GetIOValue() >= 0 || io.GetIOAddr() >= 0)&&io.DeviceName.Contains(IOIP_Str).Equals(false))
{
DIODeviceNameList.Add(io.DeviceName);
}
......@@ -139,7 +154,7 @@ namespace OnlineStore.LoadCSVLibrary
if (IO_Type.GetTypeList().Contains(con.ProName))
{
ConfigIO io = (ConfigIO)con;
if (!DIODeviceNameList.Contains(io.DeviceName) && io.GetIOValue() >= 0)
if (!DIODeviceNameList.Contains(io.DeviceName) && io.GetIOValue() >= 0 && io.DeviceName.Contains(IOIP_Str).Equals(false))
{
DIODeviceNameList.Add(io.DeviceName);
}
......@@ -204,7 +219,7 @@ namespace OnlineStore.LoadCSVLibrary
}
}
public ConfigIO getWaitIO(string ioType)
{
if (StoreDIList.ContainsKey(ioType))
......@@ -216,6 +231,6 @@ namespace OnlineStore.LoadCSVLibrary
return StoreDOList[ioType];
}
return null;
}
}
}
}
}
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!