|
@@ -15,7 +15,8 @@ namespace PLCTool.Common
|
|
|
private static string plcPort = ConfigurationManager.AppSettings["PLCPort"];
|
|
|
private EtherNetPLC ENT;//plc连接
|
|
|
private static PLCCom instance;
|
|
|
- private bool isConnect = false;
|
|
|
+ private static bool isConnect=false;
|
|
|
+
|
|
|
|
|
|
private PLCCom()
|
|
|
{
|
|
@@ -25,7 +26,7 @@ namespace PLCTool.Common
|
|
|
|
|
|
public static PLCCom GetInstance()
|
|
|
{
|
|
|
- if (instance == null)
|
|
|
+ if (instance == null||(!isConnect))
|
|
|
{
|
|
|
instance = new PLCCom();
|
|
|
}
|
|
@@ -33,6 +34,11 @@ namespace PLCTool.Common
|
|
|
|
|
|
}
|
|
|
|
|
|
+ public bool IsConnectPLC()
|
|
|
+ {
|
|
|
+ return isConnect;
|
|
|
+ }
|
|
|
+
|
|
|
private bool ConnectPLC()
|
|
|
{
|
|
|
ENT = new EtherNetPLC();
|
|
@@ -54,7 +60,7 @@ namespace PLCTool.Common
|
|
|
string value = string.Empty; ;
|
|
|
short rb;
|
|
|
short reSuc = -1;
|
|
|
- if (isConnect== false)
|
|
|
+ if (isConnect == false)
|
|
|
{
|
|
|
return string.Empty;
|
|
|
}
|
|
@@ -62,22 +68,35 @@ namespace PLCTool.Common
|
|
|
switch (valueType)
|
|
|
{
|
|
|
case VarType.Bit:
|
|
|
-
|
|
|
- reSuc = ENT.GetBitState(PlcMemory.CIO, address, out rb);
|
|
|
- //读取成功
|
|
|
- if (reSuc == 0)
|
|
|
+ try
|
|
|
+ {
|
|
|
+ reSuc = ENT.GetBitState(PlcMemory.CIO, address, out rb);
|
|
|
+ //读取成功
|
|
|
+ if (reSuc == 0)
|
|
|
+ {
|
|
|
+ value = rb.ToString();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch(Exception ex)
|
|
|
{
|
|
|
- value = rb.ToString();
|
|
|
+
|
|
|
}
|
|
|
break;
|
|
|
case VarType.Byte:
|
|
|
break;
|
|
|
case VarType.Word:
|
|
|
- reSuc = ENT.ReadWord(PlcMemory.DM, short.Parse(address), out rb);
|
|
|
- //读取成功
|
|
|
- if(reSuc==0)
|
|
|
+ try
|
|
|
+ {
|
|
|
+ reSuc = ENT.ReadWord(PlcMemory.DM, short.Parse(address), out rb);
|
|
|
+ //读取成功
|
|
|
+ if (reSuc == 0)
|
|
|
+ {
|
|
|
+ value = rb.ToString();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
{
|
|
|
- value = rb.ToString();
|
|
|
+
|
|
|
}
|
|
|
break;
|
|
|
case VarType.DWord:
|
|
@@ -103,51 +122,58 @@ namespace PLCTool.Common
|
|
|
{
|
|
|
return false;
|
|
|
}
|
|
|
-
|
|
|
- switch (valueType)
|
|
|
+ try
|
|
|
{
|
|
|
- case VarType.Bit:
|
|
|
- BitState bit= BitState.OFF;
|
|
|
- if(writeValue.Trim()=="1")
|
|
|
- {
|
|
|
- bit = BitState.ON;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- if (writeValue.Trim() == "0")
|
|
|
+ switch (valueType)
|
|
|
+ {
|
|
|
+ case VarType.Bit:
|
|
|
+ BitState bit = BitState.OFF;
|
|
|
+ if (writeValue.Trim() == "1")
|
|
|
{
|
|
|
- bit = BitState.OFF;
|
|
|
+ bit = BitState.ON;
|
|
|
}
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if (writeValue.Trim() == "0")
|
|
|
+ {
|
|
|
+ bit = BitState.OFF;
|
|
|
+ }
|
|
|
|
|
|
- }
|
|
|
- reSuc = ENT.SetBitState(PlcMemory.DM, address,bit);
|
|
|
- //写成功
|
|
|
- if (reSuc == 0)
|
|
|
- {
|
|
|
- isSuccess = true;
|
|
|
- }
|
|
|
- break;
|
|
|
- case VarType.Byte:
|
|
|
- break;
|
|
|
- case VarType.Word:
|
|
|
- short wValue = Convert.ToInt16(writeValue);
|
|
|
- reSuc = ENT.WriteWord(PlcMemory.DM, short.Parse(address), wValue);
|
|
|
- //写成功
|
|
|
- if (reSuc == 0)
|
|
|
- {
|
|
|
- isSuccess = true;
|
|
|
- }
|
|
|
- break;
|
|
|
- case VarType.DWord:
|
|
|
- break;
|
|
|
- case VarType.Int:
|
|
|
- break;
|
|
|
- case VarType.DInt:
|
|
|
- break;
|
|
|
- case VarType.Real:
|
|
|
- break;
|
|
|
+ }
|
|
|
+ reSuc = ENT.SetBitState(PlcMemory.DM, address, bit);
|
|
|
+ //写成功
|
|
|
+ if (reSuc == 0)
|
|
|
+ {
|
|
|
+ isSuccess = true;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case VarType.Byte:
|
|
|
+ break;
|
|
|
+ case VarType.Word:
|
|
|
+ short wValue = Convert.ToInt16(writeValue);
|
|
|
+ reSuc = ENT.WriteWord(PlcMemory.DM, short.Parse(address), wValue);
|
|
|
+ //写成功
|
|
|
+ if (reSuc == 0)
|
|
|
+ {
|
|
|
+ isSuccess = true;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case VarType.DWord:
|
|
|
+ break;
|
|
|
+ case VarType.Int:
|
|
|
+ break;
|
|
|
+ case VarType.DInt:
|
|
|
+ break;
|
|
|
+ case VarType.Real:
|
|
|
+ break;
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch(Exception ex )
|
|
|
+ {
|
|
|
|
|
|
}
|
|
|
+
|
|
|
return isSuccess;
|
|
|
}
|
|
|
|