change - PLC修改

pull/1/head
wenjy 10 months ago
parent 4a07ba4c87
commit 4c13ac9cfd

@ -36,47 +36,25 @@ namespace SlnMesnac.Plc
/// <summary> /// <summary>
/// 通过PLC地址写入int类型数据 /// 通过PLC地址写入int类型数据
/// </summary> /// </summary>
/// <param name="value"></param>
/// <param name="address"></param>
/// <returns></returns>
bool writeValueByAddress(int value, string address);
/// <summary>
/// 通过PLC地址清零数据
/// </summary>
/// <param name="address"></param>
/// <param name="len"></param>
/// <returns></returns>
bool resetByAddress(string address, int len);
/// <summary>
/// 通过PLC地址读取EA值
/// </summary>
/// <param name="address"></param>
/// <returns></returns>
string readEaByAddress(string address);
/// <summary>
/// 通过PLC地址读取交互信号
/// </summary>
/// <param name="address"></param> /// <param name="address"></param>
/// <param name="value"></param>
/// <returns></returns> /// <returns></returns>
int readInteractiveSignal(string address); bool writeValueByAddress(string address,int value);
/// <summary> /// <summary>
/// 通过PLC地址读取int32类型数据 /// 通过PLC地址读取int16类型数据
/// </summary> /// </summary>
/// <param name="address"></param> /// <param name="address"></param>
/// <returns></returns> /// <returns></returns>
int readInt32ByAddress(string address); int readInt16ByAddress(string address);
/// <summary> /// <summary>
/// 通过PLC地址写入int32类型数据 /// 通过PLC地址写入Short类型数据
/// </summary> /// </summary>
/// <param name="address"></param> /// <param name="address"></param>
/// <param name="value"></param> /// <param name="value"></param>
/// <returns></returns> /// <returns></returns>
bool writeInt32ByAddress(string address, int value); bool writeShortByAddress(string address, int value);
/// <summary> /// <summary>
/// 通过PLC地址读取string类型数据 /// 通过PLC地址读取string类型数据

@ -63,7 +63,7 @@ namespace SlnMesnac.Plc.Impl
catch (Exception ex) catch (Exception ex)
{ {
this.IsConnected = false; this.IsConnected = false;
PrintLogInfo("欧姆龙NJ系列PLC建立连接异常", ex); PrintLogInfo("汇川PLC建立连接异常", ex);
return false; return false;
} }
} }
@ -86,7 +86,7 @@ namespace SlnMesnac.Plc.Impl
/// <exception cref="NotImplementedException"></exception> /// <exception cref="NotImplementedException"></exception>
public byte[] readValueByAddress(int len, string address) public byte[] readValueByAddress(int len, string address)
{ {
//PrintLogInfo("开始通过PLC地址和长度读取PLC数据"); PrintLogInfo($"开始通过地址:{address},读取长度:{len}的PLC数据");
try try
{ {
OperateResult<byte[]> read = inovanceTcp.Read(address, (ushort)(len)); OperateResult<byte[]> read = inovanceTcp.Read(address, (ushort)(len));
@ -98,7 +98,7 @@ namespace SlnMesnac.Plc.Impl
} }
else else
{ {
PrintLogInfo("通过地址和长度读取PLC数据失败"); PrintLogInfo($"通过地址和长度读取PLC数据失败:{read.Message}");
this.IsConnected = false; this.IsConnected = false;
return new byte[0]; return new byte[0];
} }
@ -114,13 +114,12 @@ namespace SlnMesnac.Plc.Impl
/// <summary> /// <summary>
/// 通过PLC地址写入int类型数据,模切汇川PLC复位逻辑 /// 通过PLC地址写入int类型数据,模切汇川PLC复位逻辑
/// </summary> /// </summary>
/// <param name="value"></param>
/// <param name="address"></param> /// <param name="address"></param>
/// <param name="value"></param>
/// <returns></returns> /// <returns></returns>
/// <exception cref="NotImplementedException"></exception> public bool writeValueByAddress(string address,int value)
public bool writeValueByAddress(int value, string address)
{ {
//PrintLogInfo(String.Format("开始通过PLC地址{0}写入int类型数据{1}", address, value)); PrintLogInfo(String.Format("开始通过PLC地址{0}写入int类型数据{1}", address, value));
OperateResult operateResult = new OperateResult(); OperateResult operateResult = new OperateResult();
try try
{ {
@ -175,171 +174,73 @@ namespace SlnMesnac.Plc.Impl
} }
if (operateResult.IsSuccess) if (operateResult.IsSuccess)
{ {
PrintLogInfo(String.Format("开始通过PLC地址{0}写入int类型数据{1}成功", address, value)); PrintLogInfo(String.Format("通过PLC地址{0}写入int类型数据{1}成功", address, value));
return true;
}
PrintLogInfo(String.Format("开始通过PLC地址{0}写入int类型数据{1}失败!!!", address, value));
this.IsConnected = false;
return false;
}
catch (Exception ex)
{
PrintLogInfo("通过PLC地址写入int类型数据", ex);
this.IsConnected = false;
return false;
}
}
/// <summary>
/// 通过PLC地址清零数据
/// </summary>
/// <param name="address"></param>
/// <param name="len"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public bool resetByAddress(string address, int len)
{
// PrintLogInfo(String.Format("开发通过PLC地址{0}清零数据", address));
try
{
byte[] write = new byte[len * 2];
for (int i = 0; i < len * 2; i++)
{
write[i] = 0;
}
OperateResult operateResult = inovanceTcp.Write(address, write);
if (operateResult.IsSuccess)
{
PrintLogInfo(String.Format("通过PLC地址{0}清零数据成功", address));
return true; return true;
} }
PrintLogInfo(String.Format("通过PLC地址{0}清零数据失败!!!", address)); PrintLogInfo(String.Format("通过PLC地址{0}写入int类型数据{1}失败!!!", address, value));
this.IsConnected = false; this.IsConnected = false;
return false; return false;
} }
catch (Exception ex) catch (Exception ex)
{ {
PrintLogInfo(String.Format("通过PLC地址{0}清零数据异常", address), ex); PrintLogInfo("通过PLC地址写入int类型数据异常", ex);
this.IsConnected = false; this.IsConnected = false;
return false; return false;
} }
} }
/// <summary> /// <summary>
/// 通过PLC地址读取EA值 /// 通过PLC地址读取int16类型数据
/// </summary>
/// <param name="address"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public string readEaByAddress(string address)
{
//PrintLogInfo(String.Format("通过PLC地址{0}读取EA值", address));
try
{
OperateResult<Byte[]> read = inovanceTcp.Read(address, (ushort)(8));
if (read.IsSuccess && read.Content != null)
{
string result = Convert.ToString(read.Content);
PrintLogInfo(String.Format("通过PLC地址{0}读取EA值成功{1}", address, result));
return result;
}
else
{
PrintLogInfo(String.Format("通过PLC地址{0}读取EA值失败", address));
this.IsConnected = false;
return "";
}
}
catch (Exception ex)
{
PrintLogInfo("通过PLC地址读取EA值异常", ex);
this.IsConnected = false;
return "";
}
}
/// <summary>
/// 通过PLC地址读取交互信号
/// </summary>
/// <param name="address"></param>
/// <returns></returns>
public int readInteractiveSignal(string address)
{
// PrintLogInfo(String.Format("开始通过PLC地址{0}读取交互信号", address));
try
{
OperateResult<short> read = inovanceTcp.ReadInt16(address);
if (read.IsSuccess)
{
PrintLogInfo(String.Format("通过PLC地址{0}读取交互信号成功:{1}", address, read.Content));
return read.Content;
}
PrintLogInfo(String.Format("通过PLC地址{0}读取交互信号失败!!!", address));
this.IsConnected = false;
return 0;
}
catch (Exception ex)
{
PrintLogInfo("通过PLC地址读取交互信号异常", ex);
this.IsConnected = false;
return 0;
}
}
/// <summary>
/// 通过PLC地址读取int32类型数据
/// </summary> /// </summary>
/// <param name="address"></param> /// <param name="address"></param>
/// <returns></returns> /// <returns></returns>
public int readInt32ByAddress(string address) public int readInt16ByAddress(string address)
{ {
//PrintLogInfo(String.Format("开始通过PLC地址{0}读取int32类型数据", address)); PrintLogInfo(String.Format("开始通过PLC地址{0}读取int16类型数据", address));
try try
{ {
OperateResult<short> read = inovanceTcp.ReadInt16(address); OperateResult<short> read = inovanceTcp.ReadInt16(address);
if (read.IsSuccess) if (read.IsSuccess)
{ {
PrintLogInfo(String.Format("通过PLC地址{0}读取int32类型数据成功:{1}", address, read.Content)); PrintLogInfo(String.Format("通过PLC地址{0}读取int16类型数据成功{1}", address, read.Content));
return read.Content; return read.Content;
} }
PrintLogInfo(String.Format("通过PLC地址{0}读取int32类型数据失败!!!", address)); PrintLogInfo(String.Format("通过PLC地址{0}读取int16类型数据失败", address));
this.IsConnected = false; this.IsConnected = false;
return 0; return 0;
} }
catch (Exception ex) catch (Exception ex)
{ {
PrintLogInfo("通过PLC地址读取int32类型数据异常", ex); PrintLogInfo("通过PLC地址读取int16类型数据异常", ex);
this.IsConnected = false; this.IsConnected = false;
return 0; return 0;
} }
} }
/// <summary> /// <summary>
/// 通过PLC地址写入int32类型数据 /// 通过PLC地址写入Short类型数据
/// </summary> /// </summary>
/// <param name="address"></param> /// <param name="address"></param>
/// <param name="value"></param> /// <param name="value"></param>
/// <returns></returns> /// <returns></returns>
/// <exception cref="NotImplementedException"></exception> /// <exception cref="NotImplementedException"></exception>
public bool writeInt32ByAddress(string address, int value) public bool writeShortByAddress(string address, int value)
{ {
//PrintLogInfo(String.Format("开始通过PLC地址{0}写入int32类型数据{1}", address, value)); PrintLogInfo(String.Format("开始通过PLC地址{0}写入Short类型数据{1}", address, value));
try try
{ {
OperateResult write = inovanceTcp.Write(address, short.Parse(Convert.ToString(value))); OperateResult write = inovanceTcp.Write(address, short.Parse(Convert.ToString(value)));
if (write.IsSuccess) if (write.IsSuccess)
{ {
PrintLogInfo(String.Format("通过PLC地址{0}写入int32类型数据{1}成功", address, value)); PrintLogInfo(String.Format("通过PLC地址{0}写入Short类型数据{1}成功", address, value));
return true; return true;
} }
PrintLogInfo(String.Format("通过PLC地址{0}写入int32类型数据{1}失败!!!", address, value)); PrintLogInfo(String.Format("通过PLC地址{0}写入Short类型数据{1}失败!!!", address, value));
return false; return false;
} }
catch (Exception ex) catch (Exception ex)
{ {
PrintLogInfo(String.Format("通过PLC地址{0}写入int32类型数据异常", address), ex); PrintLogInfo(String.Format("通过PLC地址{0}写入Short类型数据异常", address), ex);
return false; return false;
} }
} }
@ -353,7 +254,7 @@ namespace SlnMesnac.Plc.Impl
/// <exception cref="NotImplementedException"></exception> /// <exception cref="NotImplementedException"></exception>
public bool writeStringByAddress(string address, string value) public bool writeStringByAddress(string address, string value)
{ {
//PrintLogInfo(String.Format("通过PLC地址{0}写入String类型数据{1}", address, value)); PrintLogInfo(String.Format("通过PLC地址{0}写入String类型数据{1}", address, value));
try try
{ {
OperateResult operateResult = inovanceTcp.Write(address, value); OperateResult operateResult = inovanceTcp.Write(address, value);
@ -380,7 +281,7 @@ namespace SlnMesnac.Plc.Impl
/// <exception cref="NotImplementedException"></exception> /// <exception cref="NotImplementedException"></exception>
public string readStringByAddress(string address, ushort length) public string readStringByAddress(string address, ushort length)
{ {
//PrintLogInfo(String.Format("开始通过PLC地址{0}读取string类型数据", address)); PrintLogInfo(String.Format("开始通过PLC地址{0}读取string类型数据", address));
try try
{ {
OperateResult<String> read = inovanceTcp.ReadString(address, length); OperateResult<String> read = inovanceTcp.ReadString(address, length);
@ -394,7 +295,7 @@ namespace SlnMesnac.Plc.Impl
} }
catch (Exception ex) catch (Exception ex)
{ {
PrintLogInfo("通过PLC地址读取int32类型数据异常", ex); PrintLogInfo("通过PLC地址读取string类型数据异常", ex);
return ""; return "";
} }
} }
@ -407,7 +308,7 @@ namespace SlnMesnac.Plc.Impl
/// <exception cref="NotImplementedException"></exception> /// <exception cref="NotImplementedException"></exception>
public bool readBoolByAddress(string address) public bool readBoolByAddress(string address)
{ {
//PrintLogInfo(String.Format("开始通过PLC地址{0}读取bool类型数据", address)); PrintLogInfo(String.Format("开始通过PLC地址{0}读取bool类型数据", address));
try try
{ {
OperateResult<bool> read = inovanceTcp.ReadBool(address); OperateResult<bool> read = inovanceTcp.ReadBool(address);
@ -435,7 +336,7 @@ namespace SlnMesnac.Plc.Impl
/// <exception cref="NotImplementedException"></exception> /// <exception cref="NotImplementedException"></exception>
public bool writeBoolByAddress(string address, bool value) public bool writeBoolByAddress(string address, bool value)
{ {
// PrintLogInfo(String.Format("开始通过PLC地址{0}写入bool类型数据{1}", address, value)); PrintLogInfo(String.Format("开始通过PLC地址{0}写入bool类型数据{1}", address, value));
try try
{ {
@ -464,6 +365,7 @@ namespace SlnMesnac.Plc.Impl
/// <returns></returns> /// <returns></returns>
public bool writeDoubleByAddress(string address, int value) public bool writeDoubleByAddress(string address, int value)
{ {
PrintLogInfo(String.Format("开始通过PLC地址{0}写入Double类型数据{1}", address, value));
try try
{ {
OperateResult write = inovanceTcp.Write(address, Convert.ToDouble(value)); OperateResult write = inovanceTcp.Write(address, Convert.ToDouble(value));

@ -83,7 +83,7 @@ namespace SlnMesnac.Plc.Impl
/// <exception cref="NotImplementedException"></exception> /// <exception cref="NotImplementedException"></exception>
public byte[] readValueByAddress(int len, string address) public byte[] readValueByAddress(int len, string address)
{ {
//PrintLogInfo("开始通过PLC地址和长度读取PLC数据"); PrintLogInfo($"开始通过地址:{address},读取长度:{len}的PLC数据");
try try
{ {
OperateResult<byte[]> read = melsec_net.Read(address, (ushort)(len)); OperateResult<byte[]> read = melsec_net.Read(address, (ushort)(len));
@ -95,7 +95,7 @@ namespace SlnMesnac.Plc.Impl
} }
else else
{ {
PrintLogInfo("通过地址和长度读取PLC数据失败"); PrintLogInfo($"通过地址和长度读取PLC数据失败:{read.Message}");
this.IsConnected = false; this.IsConnected = false;
return new byte[0]; return new byte[0];
} }
@ -111,182 +111,86 @@ namespace SlnMesnac.Plc.Impl
/// <summary> /// <summary>
/// 通过PLC地址写入int类型数据 /// 通过PLC地址写入int类型数据
/// </summary> /// </summary>
/// <param name="value"></param>
/// <param name="address"></param> /// <param name="address"></param>
/// <param name="value"></param>
/// <returns></returns> /// <returns></returns>
/// <exception cref="NotImplementedException"></exception> /// <exception cref="NotImplementedException"></exception>
public bool writeValueByAddress(int value, string address) public bool writeValueByAddress(string address,int value)
{ {
//PrintLogInfo(String.Format("开始通过PLC地址{0}写入int类型数据{1}",address,value)); PrintLogInfo(String.Format("开始通过PLC地址{0}写入int类型数据{1}",address,value));
try try
{ {
OperateResult operateResult = melsec_net.Write(address, Convert.ToInt32(value)); OperateResult operateResult = melsec_net.Write(address, Convert.ToInt32(value));
if (operateResult.IsSuccess) if (operateResult.IsSuccess)
{ {
PrintLogInfo(String.Format("开始通过PLC地址{0}写入int类型数据{1}成功", address, value)); PrintLogInfo(String.Format("通过PLC地址{0}写入int类型数据{1}成功", address, value));
return true; return true;
} }
PrintLogInfo(String.Format("开始通过PLC地址{0}写入int类型数据{1}失败!!!", address, value)); PrintLogInfo(String.Format("通过PLC地址{0}写入int类型数据{1}失败!!!", address, value));
this.IsConnected = false; this.IsConnected = false;
return false; return false;
} }
catch (Exception ex) catch (Exception ex)
{ {
PrintLogInfo("通过PLC地址写入int类型数据", ex); PrintLogInfo("通过PLC地址写入int类型数据异常", ex);
this.IsConnected = false; this.IsConnected = false;
return false; return false;
} }
} }
/// <summary> /// <summary>
/// 通过PLC地址清零数据 /// 通过PLC地址读取int16类型数据
/// </summary>
/// <param name="address"></param>
/// <param name="len"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public bool resetByAddress(string address, int len)
{
//PrintLogInfo(String.Format("开发通过PLC地址{0}清零数据", address));
try
{
byte[] write = new byte[len * 2];
for (int i = 0; i < len * 2; i++)
{
write[i] = 0;
}
OperateResult operateResult = melsec_net.Write(address, write);
if (operateResult.IsSuccess)
{
PrintLogInfo(String.Format("通过PLC地址{0}清零数据成功", address));
return true;
}
PrintLogInfo(String.Format("通过PLC地址{0}清零数据失败!!!", address));
return false;
}
catch (Exception ex)
{
PrintLogInfo(String.Format("通过PLC地址{0}清零数据异常", address), ex);
return false;
}
}
/// <summary>
/// 通过PLC地址读取EA值
/// </summary>
/// <param name="address"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public string readEaByAddress(string address)
{
//PrintLogInfo(String.Format("通过PLC地址{0}读取EA值", address));
try
{
OperateResult<Byte[]> read = melsec_net.Read(address, (ushort)(8));
if (read.IsSuccess && read.Content != null)
{
string result = Convert.ToString(read.Content);
PrintLogInfo(String.Format("通过PLC地址{0}读取EA值成功{1}", address, result));
return result;
}
else
{
PrintLogInfo(String.Format("通过PLC地址{0}读取EA值失败", address));
this.IsConnected = false;
return "";
}
}
catch (Exception ex)
{
PrintLogInfo("通过PLC地址读取EA值异常", ex);
this.IsConnected = false;
return "";
}
}
/// <summary>
/// 通过PLC地址读取交互信号
/// </summary> /// </summary>
/// <param name="address"></param> /// <param name="address"></param>
/// <returns></returns> /// <returns></returns>
public int readInteractiveSignal(string address) public int readInt16ByAddress(string address)
{ {
//PrintLogInfo(String.Format("开始通过PLC地址{0}读取交互信号", address)); PrintLogInfo(String.Format("开始通过PLC地址{0}读取int16类型数据",address));
try try
{ {
OperateResult<short> read = melsec_net.ReadInt16(address); OperateResult<short> read = melsec_net.ReadInt16(address);
if (read.IsSuccess) if (read.IsSuccess)
{ {
PrintLogInfo(String.Format("通过PLC地址{0}读取交互信号成功:{1}", address, read.Content)); PrintLogInfo(String.Format("通过PLC地址{0}读取int16类型数据成功{1}", address, read.Content));
return read.Content; return read.Content;
} }
PrintLogInfo(String.Format("通过PLC地址{0}读取交互信号失败!!!", address)); PrintLogInfo(String.Format("通过PLC地址{0}读取int16类型数据失败", address));
this.IsConnected = false; this.IsConnected = false;
return 0; return 0;
} }
catch (Exception ex) catch (Exception ex)
{ {
PrintLogInfo("通过PLC地址读取交互信号异常", ex); PrintLogInfo("通过PLC地址读取int16类型数据异常", ex);
this.IsConnected = false; this.IsConnected = false;
return 0; return 0;
} }
} }
/// <summary> /// <summary>
/// 通过PLC地址读取int32类型数据 /// 通过PLC地址写入Short类型数据
/// </summary>
/// <param name="address"></param>
/// <returns></returns>
public int readInt32ByAddress(string address)
{
//PrintLogInfo(String.Format("开始通过PLC地址{0}读取int32类型数据",address));
try
{
OperateResult<short> read = melsec_net.ReadInt16(address);
if (read.IsSuccess)
{
PrintLogInfo(String.Format("通过PLC地址{0}读取int32类型数据成功{1}", address, read.Content));
return read.Content;
}
PrintLogInfo(String.Format("通过PLC地址{0}读取int32类型数据失败", address));
this.IsConnected = false;
return 0;
}
catch (Exception ex)
{
PrintLogInfo("通过PLC地址读取int32类型数据异常", ex);
this.IsConnected = false;
return 0;
}
}
/// <summary>
/// 通过PLC地址写入int32类型数据
/// </summary> /// </summary>
/// <param name="address"></param> /// <param name="address"></param>
/// <param name="value"></param> /// <param name="value"></param>
/// <returns></returns> /// <returns></returns>
/// <exception cref="NotImplementedException"></exception> /// <exception cref="NotImplementedException"></exception>
public bool writeInt32ByAddress(string address, int value) public bool writeShortByAddress(string address, int value)
{ {
PrintLogInfo(String.Format("开始通过PLC地址{0}写入int32类型数据{1}", address, value)); PrintLogInfo(String.Format("开始通过PLC地址{0}写入Short类型数据{1}", address, value));
try try
{ {
OperateResult write = melsec_net.Write(address, short.Parse(Convert.ToString(value))); OperateResult write = melsec_net.Write(address, short.Parse(Convert.ToString(value)));
if (write.IsSuccess) if (write.IsSuccess)
{ {
PrintLogInfo(String.Format("通过PLC地址{0}写入int32类型数据{1}成功", address, value)); PrintLogInfo(String.Format("通过PLC地址{0}写入Short类型数据{1}成功", address, value));
return true; return true;
} }
PrintLogInfo(String.Format("通过PLC地址{0}写入int32类型数据{1}失败!!!", address, value)); PrintLogInfo(String.Format("通过PLC地址{0}写入Short类型数据{1}失败!!!", address, value));
this.IsConnected = false; this.IsConnected = false;
return false; return false;
} }
catch (Exception ex) catch (Exception ex)
{ {
PrintLogInfo(String.Format("通过PLC地址{0}写入int32类型数据异常", address), ex); PrintLogInfo(String.Format("通过PLC地址{0}写入Short类型数据异常", address), ex);
this.IsConnected = false; this.IsConnected = false;
return false; return false;
} }
@ -301,7 +205,7 @@ namespace SlnMesnac.Plc.Impl
/// <exception cref="NotImplementedException"></exception> /// <exception cref="NotImplementedException"></exception>
public bool writeStringByAddress(string address, string value) public bool writeStringByAddress(string address, string value)
{ {
//PrintLogInfo(String.Format("通过PLC地址{0}写入String类型数据{1}",address,value)); PrintLogInfo(String.Format("通过PLC地址{0}写入String类型数据{1}",address,value));
try try
{ {
OperateResult operateResult = melsec_net.Write(address, value); OperateResult operateResult = melsec_net.Write(address, value);
@ -330,7 +234,7 @@ namespace SlnMesnac.Plc.Impl
/// <exception cref="NotImplementedException"></exception> /// <exception cref="NotImplementedException"></exception>
public string readStringByAddress(string address, ushort length) public string readStringByAddress(string address, ushort length)
{ {
//PrintLogInfo(String.Format("开始通过PLC地址{0}读取string类型数据", address)); PrintLogInfo(String.Format("开始通过PLC地址{0}读取string类型数据", address));
try try
{ {
OperateResult<String> read = melsec_net.ReadString(address, length); OperateResult<String> read = melsec_net.ReadString(address, length);
@ -345,7 +249,7 @@ namespace SlnMesnac.Plc.Impl
} }
catch (Exception ex) catch (Exception ex)
{ {
PrintLogInfo("通过PLC地址读取int32类型数据异常", ex); PrintLogInfo("通过PLC地址读取string类型数据异常", ex);
return ""; return "";
} }
} }
@ -358,7 +262,7 @@ namespace SlnMesnac.Plc.Impl
/// <exception cref="NotImplementedException"></exception> /// <exception cref="NotImplementedException"></exception>
public bool readBoolByAddress(string address) public bool readBoolByAddress(string address)
{ {
//PrintLogInfo(String.Format("开始通过PLC地址{0}读取bool类型数据", address)); PrintLogInfo(String.Format("开始通过PLC地址{0}读取bool类型数据", address));
try try
{ {
OperateResult<bool> read = melsec_net.ReadBool(address); OperateResult<bool> read = melsec_net.ReadBool(address);
@ -387,7 +291,7 @@ namespace SlnMesnac.Plc.Impl
/// <returns></returns> /// <returns></returns>
public bool writeBoolByAddress(string address, bool value) public bool writeBoolByAddress(string address, bool value)
{ {
//PrintLogInfo(String.Format("开始通过PLC地址{0}写入bool类型数据{1}", address, value)); PrintLogInfo(String.Format("开始通过PLC地址{0}写入bool类型数据{1}", address, value));
try try
{ {
OperateResult write = melsec_net.Write(address, short.Parse(_stringChange.ParseToInt(value ? "1" : "0").ToString())); OperateResult write = melsec_net.Write(address, short.Parse(_stringChange.ParseToInt(value ? "1" : "0").ToString()));
@ -416,6 +320,7 @@ namespace SlnMesnac.Plc.Impl
/// <returns></returns> /// <returns></returns>
public bool writeDoubleByAddress(string address, int value) public bool writeDoubleByAddress(string address, int value)
{ {
PrintLogInfo(String.Format("开始通过PLC地址{0}写入Double类型数据{1}", address, value));
try try
{ {
OperateResult write = melsec_net.Write(address, Convert.ToDouble(value)); OperateResult write = melsec_net.Write(address, Convert.ToDouble(value));

@ -88,7 +88,7 @@ namespace SlnMesnac.Plc.Impl
/// <exception cref="NotImplementedException"></exception> /// <exception cref="NotImplementedException"></exception>
public byte[] readValueByAddress(int len, string address) public byte[] readValueByAddress(int len, string address)
{ {
//PrintLogInfo("开始通过PLC地址和长度读取PLC数据"); PrintLogInfo($"开始通过地址:{address},读取长度:{len}的PLC数据");
try try
{ {
OperateResult<byte[]> read = omronFinsNet.Read(address, (ushort)(len)); OperateResult<byte[]> read = omronFinsNet.Read(address, (ushort)(len));
@ -100,7 +100,7 @@ namespace SlnMesnac.Plc.Impl
} }
else else
{ {
PrintLogInfo("通过地址和长度读取PLC数据失败"); PrintLogInfo($"通过地址和长度读取PLC数据失败:{read.Message}");
this.IsConnected = false; this.IsConnected = false;
return new byte[0]; return new byte[0];
} }
@ -116,182 +116,86 @@ namespace SlnMesnac.Plc.Impl
/// <summary> /// <summary>
/// 通过PLC地址写入int类型数据 /// 通过PLC地址写入int类型数据
/// </summary> /// </summary>
/// <param name="value"></param>
/// <param name="address"></param> /// <param name="address"></param>
/// <param name="value"></param>
/// <returns></returns> /// <returns></returns>
/// <exception cref="NotImplementedException"></exception> /// <exception cref="NotImplementedException"></exception>
public bool writeValueByAddress(int value, string address) public bool writeValueByAddress(string address,int value)
{ {
//PrintLogInfo(String.Format("开始通过PLC地址{0}写入int类型数据{1}",address,value)); PrintLogInfo(String.Format("开始通过PLC地址{0}写入int类型数据{1}",address,value));
try try
{ {
OperateResult operateResult = omronFinsNet.Write(address, Convert.ToInt32(value)); OperateResult operateResult = omronFinsNet.Write(address, Convert.ToInt32(value));
if (operateResult.IsSuccess) if (operateResult.IsSuccess)
{ {
PrintLogInfo(String.Format("开始通过PLC地址{0}写入int类型数据{1}成功", address, value)); PrintLogInfo(String.Format("通过PLC地址{0}写入int类型数据{1}成功", address, value));
return true; return true;
} }
PrintLogInfo(String.Format("开始通过PLC地址{0}写入int类型数据{1}失败!!!", address, value)); PrintLogInfo(String.Format("通过PLC地址{0}写入int类型数据{1}失败!!!", address, value));
this.IsConnected = false; this.IsConnected = false;
return false; return false;
} }
catch (Exception ex) catch (Exception ex)
{ {
PrintLogInfo("通过PLC地址写入int类型数据", ex); PrintLogInfo("通过PLC地址写入int类型数据异常", ex);
this.IsConnected = false; this.IsConnected = false;
return false; return false;
} }
} }
/// <summary> /// <summary>
/// 通过PLC地址清零数据 /// 通过PLC地址读取int16类型数据
/// </summary>
/// <param name="address"></param>
/// <param name="len"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public bool resetByAddress(string address, int len)
{
//PrintLogInfo(String.Format("开发通过PLC地址{0}清零数据", address));
try
{
byte[] write = new byte[len * 2];
for (int i = 0; i < len * 2; i++)
{
write[i] = 0;
}
OperateResult operateResult = omronFinsNet.Write(address, write);
if (operateResult.IsSuccess)
{
PrintLogInfo(String.Format("通过PLC地址{0}清零数据成功", address));
return true;
}
PrintLogInfo(String.Format("通过PLC地址{0}清零数据失败!!!", address));
return false;
}
catch (Exception ex)
{
PrintLogInfo(String.Format("通过PLC地址{0}清零数据异常", address), ex);
return false;
}
}
/// <summary>
/// 通过PLC地址读取EA值
/// </summary>
/// <param name="address"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public string readEaByAddress(string address)
{
//PrintLogInfo(String.Format("通过PLC地址{0}读取EA值", address));
try
{
OperateResult<Byte[]> read = omronFinsNet.Read(address, (ushort)(8));
if (read.IsSuccess && read.Content != null)
{
string result = Convert.ToString(read.Content);
PrintLogInfo(String.Format("通过PLC地址{0}读取EA值成功{1}", address, result));
return result;
}
else
{
PrintLogInfo(String.Format("通过PLC地址{0}读取EA值失败", address));
this.IsConnected = false;
return "";
}
}
catch (Exception ex)
{
PrintLogInfo("通过PLC地址读取EA值异常", ex);
this.IsConnected = false;
return "";
}
}
/// <summary>
/// 通过PLC地址读取交互信号
/// </summary> /// </summary>
/// <param name="address"></param> /// <param name="address"></param>
/// <returns></returns> /// <returns></returns>
public int readInteractiveSignal(string address) public int readInt16ByAddress(string address)
{ {
//PrintLogInfo(String.Format("开始通过PLC地址{0}读取交互信号", address)); PrintLogInfo(String.Format("开始通过PLC地址{0}读取int16类型数据",address));
try try
{ {
OperateResult<short> read = omronFinsNet.ReadInt16(address); OperateResult<short> read = omronFinsNet.ReadInt16(address);
if (read.IsSuccess) if (read.IsSuccess)
{ {
PrintLogInfo(String.Format("通过PLC地址{0}读取交互信号成功:{1}", address, read.Content)); PrintLogInfo(String.Format("通过PLC地址{0}读取int16类型数据成功{1}", address, read.Content));
return read.Content; return read.Content;
} }
PrintLogInfo(String.Format("通过PLC地址{0}读取交互信号失败!!!", address)); PrintLogInfo(String.Format("通过PLC地址{0}读取int16类型数据失败", address));
this.IsConnected = false; this.IsConnected = false;
return 0; return 0;
} }
catch (Exception ex) catch (Exception ex)
{ {
PrintLogInfo("通过PLC地址读取交互信号异常", ex); PrintLogInfo("通过PLC地址读取int16类型数据异常", ex);
this.IsConnected = false; this.IsConnected = false;
return 0; return 0;
} }
} }
/// <summary> /// <summary>
/// 通过PLC地址读取int32类型数据 /// 通过PLC地址写入Short类型数据
/// </summary>
/// <param name="address"></param>
/// <returns></returns>
public int readInt32ByAddress(string address)
{
//PrintLogInfo(String.Format("开始通过PLC地址{0}读取int32类型数据",address));
try
{
OperateResult<short> read = omronFinsNet.ReadInt16(address);
if (read.IsSuccess)
{
PrintLogInfo(String.Format("通过PLC地址{0}读取int32类型数据成功{1}", address, read.Content));
return read.Content;
}
PrintLogInfo(String.Format("通过PLC地址{0}读取int32类型数据失败", address));
this.IsConnected = false;
return 0;
}
catch (Exception ex)
{
PrintLogInfo("通过PLC地址读取int32类型数据异常", ex);
this.IsConnected = false;
return 0;
}
}
/// <summary>
/// 通过PLC地址写入int32类型数据
/// </summary> /// </summary>
/// <param name="address"></param> /// <param name="address"></param>
/// <param name="value"></param> /// <param name="value"></param>
/// <returns></returns> /// <returns></returns>
/// <exception cref="NotImplementedException"></exception> /// <exception cref="NotImplementedException"></exception>
public bool writeInt32ByAddress(string address, int value) public bool writeShortByAddress(string address, int value)
{ {
PrintLogInfo(String.Format("开始通过PLC地址{0}写入int32类型数据{1}", address, value)); PrintLogInfo(String.Format("开始通过PLC地址{0}写入Short类型数据{1}", address, value));
try try
{ {
OperateResult write = omronFinsNet.Write(address, short.Parse(Convert.ToString(value))); OperateResult write = omronFinsNet.Write(address, short.Parse(Convert.ToString(value)));
if (write.IsSuccess) if (write.IsSuccess)
{ {
PrintLogInfo(String.Format("通过PLC地址{0}写入int32类型数据{1}成功", address, value)); PrintLogInfo(String.Format("通过PLC地址{0}写入Short类型数据{1}成功", address, value));
return true; return true;
} }
PrintLogInfo(String.Format("通过PLC地址{0}写入int32类型数据{1}失败!!!", address, value)); PrintLogInfo(String.Format("通过PLC地址{0}写入Short类型数据{1}失败!!!", address, value));
this.IsConnected = false; this.IsConnected = false;
return false; return false;
} }
catch (Exception ex) catch (Exception ex)
{ {
PrintLogInfo(String.Format("通过PLC地址{0}写入int32类型数据异常", address), ex); PrintLogInfo(String.Format("通过PLC地址{0}写入Short类型数据异常", address), ex);
this.IsConnected = false; this.IsConnected = false;
return false; return false;
} }
@ -306,7 +210,7 @@ namespace SlnMesnac.Plc.Impl
/// <exception cref="NotImplementedException"></exception> /// <exception cref="NotImplementedException"></exception>
public bool writeStringByAddress(string address, string value) public bool writeStringByAddress(string address, string value)
{ {
//PrintLogInfo(String.Format("通过PLC地址{0}写入String类型数据{1}",address,value)); PrintLogInfo(String.Format("通过PLC地址{0}写入String类型数据{1}",address,value));
try try
{ {
OperateResult operateResult = omronFinsNet.Write(address, value); OperateResult operateResult = omronFinsNet.Write(address, value);
@ -335,7 +239,7 @@ namespace SlnMesnac.Plc.Impl
/// <exception cref="NotImplementedException"></exception> /// <exception cref="NotImplementedException"></exception>
public string readStringByAddress(string address, ushort length) public string readStringByAddress(string address, ushort length)
{ {
//PrintLogInfo(String.Format("开始通过PLC地址{0}读取string类型数据", address)); PrintLogInfo(String.Format("开始通过PLC地址{0}读取string类型数据", address));
try try
{ {
OperateResult<String> read = omronFinsNet.ReadString(address, length); OperateResult<String> read = omronFinsNet.ReadString(address, length);
@ -350,7 +254,7 @@ namespace SlnMesnac.Plc.Impl
} }
catch (Exception ex) catch (Exception ex)
{ {
PrintLogInfo("通过PLC地址读取int32类型数据异常", ex); PrintLogInfo("通过PLC地址读取string类型数据异常", ex);
return ""; return "";
} }
} }
@ -363,7 +267,7 @@ namespace SlnMesnac.Plc.Impl
/// <exception cref="NotImplementedException"></exception> /// <exception cref="NotImplementedException"></exception>
public bool readBoolByAddress(string address) public bool readBoolByAddress(string address)
{ {
//PrintLogInfo(String.Format("开始通过PLC地址{0}读取bool类型数据", address)); PrintLogInfo(String.Format("开始通过PLC地址{0}读取bool类型数据", address));
try try
{ {
OperateResult<bool> read = omronFinsNet.ReadBool(address); OperateResult<bool> read = omronFinsNet.ReadBool(address);
@ -392,7 +296,7 @@ namespace SlnMesnac.Plc.Impl
/// <returns></returns> /// <returns></returns>
public bool writeBoolByAddress(string address, bool value) public bool writeBoolByAddress(string address, bool value)
{ {
//PrintLogInfo(String.Format("开始通过PLC地址{0}写入bool类型数据{1}", address, value)); PrintLogInfo(String.Format("开始通过PLC地址{0}写入bool类型数据{1}", address, value));
try try
{ {
OperateResult write = omronFinsNet.Write(address, short.Parse(_stringChange.ParseToInt(value ? "1" : "0").ToString())); OperateResult write = omronFinsNet.Write(address, short.Parse(_stringChange.ParseToInt(value ? "1" : "0").ToString()));
@ -421,6 +325,7 @@ namespace SlnMesnac.Plc.Impl
/// <returns></returns> /// <returns></returns>
public bool writeDoubleByAddress(string address, int value) public bool writeDoubleByAddress(string address, int value)
{ {
PrintLogInfo(String.Format("开始通过PLC地址{0}写入Double类型数据{1}", address, value));
try try
{ {
OperateResult write = omronFinsNet.Write(address, Convert.ToDouble(value)); OperateResult write = omronFinsNet.Write(address, Convert.ToDouble(value));

@ -63,6 +63,15 @@ namespace SlnMesnac.Plc.Impl
} }
} }
/// <summary>
/// 断开连接
/// </summary>
/// <returns></returns>
public bool DisConnect()
{
return s7.ConnectClose().IsSuccess;
}
/// <summary> /// <summary>
/// 通过地址和长度读取PLC数据 /// 通过地址和长度读取PLC数据
/// </summary> /// </summary>
@ -72,7 +81,7 @@ namespace SlnMesnac.Plc.Impl
/// <exception cref="NotImplementedException"></exception> /// <exception cref="NotImplementedException"></exception>
public byte[] readValueByAddress(int len, string address) public byte[] readValueByAddress(int len, string address)
{ {
//PrintLogInfo("开始通过PLC地址和长度读取PLC数据"); PrintLogInfo($"开始通过地址:{address},读取长度:{len}的PLC数据");
try try
{ {
OperateResult<byte[]> read = s7.Read(address, (ushort)(len)); OperateResult<byte[]> read = s7.Read(address, (ushort)(len));
@ -84,7 +93,7 @@ namespace SlnMesnac.Plc.Impl
} }
else else
{ {
PrintLogInfo("通过地址和长度读取PLC数据失败"); PrintLogInfo($"通过地址和长度读取PLC数据失败:{read.Message}");
this.IsConnected = false; this.IsConnected = false;
return new byte[0]; return new byte[0];
} }
@ -100,182 +109,86 @@ namespace SlnMesnac.Plc.Impl
/// <summary> /// <summary>
/// 通过PLC地址写入int类型数据 /// 通过PLC地址写入int类型数据
/// </summary> /// </summary>
/// <param name="value"></param>
/// <param name="address"></param> /// <param name="address"></param>
/// <param name="value"></param>
/// <returns></returns> /// <returns></returns>
/// <exception cref="NotImplementedException"></exception> /// <exception cref="NotImplementedException"></exception>
public bool writeValueByAddress(int value, string address) public bool writeValueByAddress(string address,int value)
{ {
//PrintLogInfo(String.Format("开始通过PLC地址{0}写入int类型数据{1}",address,value)); PrintLogInfo(String.Format("开始通过PLC地址{0}写入int类型数据{1}",address,value));
try try
{ {
OperateResult operateResult = s7.Write(address, Convert.ToInt32(value)); OperateResult operateResult = s7.Write(address, Convert.ToInt32(value));
if (operateResult.IsSuccess) if (operateResult.IsSuccess)
{ {
PrintLogInfo(String.Format("开始通过PLC地址{0}写入int类型数据{1}成功", address, value)); PrintLogInfo(String.Format("通过PLC地址{0}写入int类型数据{1}成功", address, value));
return true; return true;
} }
PrintLogInfo(String.Format("开始通过PLC地址{0}写入int类型数据{1}失败!!!", address, value)); PrintLogInfo(String.Format("通过PLC地址{0}写入int类型数据{1}失败!!!", address, value));
this.IsConnected = false; this.IsConnected = false;
return false; return false;
} }
catch (Exception ex) catch (Exception ex)
{ {
PrintLogInfo("通过PLC地址写入int类型数据", ex); PrintLogInfo("通过PLC地址写入int类型数据异常", ex);
this.IsConnected = false; this.IsConnected = false;
return false; return false;
} }
} }
/// <summary> /// <summary>
/// 通过PLC地址清零数据 /// 通过PLC地址读取int16类型数据
/// </summary>
/// <param name="address"></param>
/// <param name="len"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public bool resetByAddress(string address, int len)
{
//PrintLogInfo(String.Format("开发通过PLC地址{0}清零数据", address));
try
{
byte[] write = new byte[len * 2];
for (int i = 0; i < len * 2; i++)
{
write[i] = 0;
}
OperateResult operateResult = s7.Write(address, write);
if (operateResult.IsSuccess)
{
PrintLogInfo(String.Format("通过PLC地址{0}清零数据成功", address));
return true;
}
PrintLogInfo(String.Format("通过PLC地址{0}清零数据失败!!!", address));
return false;
}
catch (Exception ex)
{
PrintLogInfo(String.Format("通过PLC地址{0}清零数据异常", address), ex);
return false;
}
}
/// <summary>
/// 通过PLC地址读取EA值
/// </summary> /// </summary>
/// <param name="address"></param> /// <param name="address"></param>
/// <returns></returns> /// <returns></returns>
/// <exception cref="NotImplementedException"></exception> public int readInt16ByAddress(string address)
public string readEaByAddress(string address)
{ {
//PrintLogInfo(String.Format("通过PLC地址{0}读取EA值", address)); PrintLogInfo(String.Format("开始通过PLC地址{0}读取int16类型数据",address));
try
{
OperateResult<Byte[]> read = s7.Read(address, (ushort)(8));
if (read.IsSuccess && read.Content != null)
{
string result = Convert.ToString(read.Content);
PrintLogInfo(String.Format("通过PLC地址{0}读取EA值成功{1}", address, result));
return result;
}
else
{
PrintLogInfo(String.Format("通过PLC地址{0}读取EA值失败", address));
this.IsConnected = false;
return "";
}
}
catch (Exception ex)
{
PrintLogInfo("通过PLC地址读取EA值异常", ex);
this.IsConnected = false;
return "";
}
}
/// <summary>
/// 通过PLC地址读取交互信号
/// </summary>
/// <param name="address"></param>
/// <returns></returns>
public int readInteractiveSignal(string address)
{
//PrintLogInfo(String.Format("开始通过PLC地址{0}读取交互信号", address));
try try
{ {
OperateResult<short> read = s7.ReadInt16(address); OperateResult<short> read = s7.ReadInt16(address);
if (read.IsSuccess) if (read.IsSuccess)
{ {
PrintLogInfo(String.Format("通过PLC地址{0}读取交互信号成功:{1}", address, read.Content)); PrintLogInfo(String.Format("通过PLC地址{0}读取int16类型数据成功{1}", address, read.Content));
return read.Content; return read.Content;
} }
PrintLogInfo(String.Format("通过PLC地址{0}读取交互信号失败!!!", address)); PrintLogInfo(String.Format("通过PLC地址{0}读取int16类型数据失败", address));
this.IsConnected = false; this.IsConnected = false;
return 0; return 0;
} }
catch (Exception ex) catch (Exception ex)
{ {
PrintLogInfo("通过PLC地址读取交互信号异常", ex); PrintLogInfo("通过PLC地址读取int16类型数据异常", ex);
this.IsConnected = false; this.IsConnected = false;
return 0; return 0;
} }
} }
/// <summary> /// <summary>
/// 通过PLC地址读取int32类型数据 /// 通过PLC地址写入Short类型数据
/// </summary>
/// <param name="address"></param>
/// <returns></returns>
public int readInt32ByAddress(string address)
{
//PrintLogInfo(String.Format("开始通过PLC地址{0}读取int32类型数据",address));
try
{
OperateResult<short> read = s7.ReadInt16(address);
if (read.IsSuccess)
{
PrintLogInfo(String.Format("通过PLC地址{0}读取int32类型数据成功{1}", address, read.Content));
return read.Content;
}
PrintLogInfo(String.Format("通过PLC地址{0}读取int32类型数据失败", address));
this.IsConnected = false;
return 0;
}
catch (Exception ex)
{
PrintLogInfo("通过PLC地址读取int32类型数据异常", ex);
this.IsConnected = false;
return 0;
}
}
/// <summary>
/// 通过PLC地址写入int32类型数据
/// </summary> /// </summary>
/// <param name="address"></param> /// <param name="address"></param>
/// <param name="value"></param> /// <param name="value"></param>
/// <returns></returns> /// <returns></returns>
/// <exception cref="NotImplementedException"></exception> /// <exception cref="NotImplementedException"></exception>
public bool writeInt32ByAddress(string address, int value) public bool writeShortByAddress(string address, int value)
{ {
PrintLogInfo(String.Format("开始通过PLC地址{0}写入int32类型数据{1}", address, value)); PrintLogInfo(String.Format("开始通过PLC地址{0}写入Short类型数据{1}", address, value));
try try
{ {
OperateResult write = s7.Write(address, short.Parse(Convert.ToString(value))); OperateResult write = s7.Write(address, short.Parse(Convert.ToString(value)));
if (write.IsSuccess) if (write.IsSuccess)
{ {
PrintLogInfo(String.Format("通过PLC地址{0}写入int32类型数据{1}成功", address, value)); PrintLogInfo(String.Format("通过PLC地址{0}写入Short类型数据{1}成功", address, value));
return true; return true;
} }
PrintLogInfo(String.Format("通过PLC地址{0}写入int32类型数据{1}失败!!!", address, value)); PrintLogInfo(String.Format("通过PLC地址{0}写入Short类型数据{1}失败!!!", address, value));
this.IsConnected = false; this.IsConnected = false;
return false; return false;
} }
catch (Exception ex) catch (Exception ex)
{ {
PrintLogInfo(String.Format("通过PLC地址{0}写入int32类型数据异常", address), ex); PrintLogInfo(String.Format("通过PLC地址{0}写入Short类型数据异常", address), ex);
this.IsConnected = false; this.IsConnected = false;
return false; return false;
} }
@ -290,7 +203,7 @@ namespace SlnMesnac.Plc.Impl
/// <exception cref="NotImplementedException"></exception> /// <exception cref="NotImplementedException"></exception>
public bool writeStringByAddress(string address, string value) public bool writeStringByAddress(string address, string value)
{ {
//PrintLogInfo(String.Format("通过PLC地址{0}写入String类型数据{1}",address,value)); PrintLogInfo(String.Format("通过PLC地址{0}写入String类型数据{1}",address,value));
try try
{ {
OperateResult operateResult = s7.Write(address, value); OperateResult operateResult = s7.Write(address, value);
@ -319,7 +232,7 @@ namespace SlnMesnac.Plc.Impl
/// <exception cref="NotImplementedException"></exception> /// <exception cref="NotImplementedException"></exception>
public string readStringByAddress(string address, ushort length) public string readStringByAddress(string address, ushort length)
{ {
//PrintLogInfo(String.Format("开始通过PLC地址{0}读取string类型数据", address)); PrintLogInfo(String.Format("开始通过PLC地址{0}读取string类型数据", address));
try try
{ {
OperateResult<String> read = s7.ReadString(address, length); OperateResult<String> read = s7.ReadString(address, length);
@ -334,7 +247,7 @@ namespace SlnMesnac.Plc.Impl
} }
catch (Exception ex) catch (Exception ex)
{ {
PrintLogInfo("通过PLC地址读取int32类型数据异常", ex); PrintLogInfo("通过PLC地址读取string类型数据异常", ex);
return ""; return "";
} }
} }
@ -347,7 +260,7 @@ namespace SlnMesnac.Plc.Impl
/// <exception cref="NotImplementedException"></exception> /// <exception cref="NotImplementedException"></exception>
public bool readBoolByAddress(string address) public bool readBoolByAddress(string address)
{ {
//PrintLogInfo(String.Format("开始通过PLC地址{0}读取bool类型数据", address)); PrintLogInfo(String.Format("开始通过PLC地址{0}读取bool类型数据", address));
try try
{ {
OperateResult<bool> read = s7.ReadBool(address); OperateResult<bool> read = s7.ReadBool(address);
@ -376,7 +289,7 @@ namespace SlnMesnac.Plc.Impl
/// <returns></returns> /// <returns></returns>
public bool writeBoolByAddress(string address, bool value) public bool writeBoolByAddress(string address, bool value)
{ {
//PrintLogInfo(String.Format("开始通过PLC地址{0}写入bool类型数据{1}", address, value)); PrintLogInfo(String.Format("开始通过PLC地址{0}写入bool类型数据{1}", address, value));
try try
{ {
OperateResult write = s7.Write(address, short.Parse(_stringChange.ParseToInt(value ? "1" : "0").ToString())); OperateResult write = s7.Write(address, short.Parse(_stringChange.ParseToInt(value ? "1" : "0").ToString()));
@ -397,14 +310,32 @@ namespace SlnMesnac.Plc.Impl
} }
} }
public bool DisConnect() /// <summary>
{ /// 写入Double类型
throw new NotImplementedException(); /// </summary>
} /// <param name="address"></param>
/// <param name="value"></param>
/// <returns></returns>
public bool writeDoubleByAddress(string address, int value) public bool writeDoubleByAddress(string address, int value)
{ {
throw new NotImplementedException(); PrintLogInfo(String.Format("开始通过PLC地址{0}写入Double类型数据{1}", address, value));
try
{
OperateResult write = s7.Write(address, Convert.ToDouble(value));
if (write.IsSuccess)
{
PrintLogInfo(String.Format("通过PLC地址{0}写入Double类型数据{1}成功", address, value));
return true;
}
PrintLogInfo(String.Format("通过PLC地址{0}写入Double类型数据{1}失败!!!", address, value));
return false;
}
catch (Exception ex)
{
PrintLogInfo(String.Format("通过PLC地址{0}写入Double类型数据异常", address), ex);
return false;
}
} }
private void PrintLogInfo(string message, Exception ex = null) private void PrintLogInfo(string message, Exception ex = null)

Loading…
Cancel
Save