2021-6-17 plc连接
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using HslCommunication; using HslCommunication.ModBus; using HslCommunication.Profinet.Omron; namespace BatteryDetectWorkA { public class HslPLC { private OmronFinsNet omronFinsNet; private bool isConnect = false; public bool connection() { isConnect = true; try { omronFinsNet = new OmronFinsNet(Config.App.PLCIP, int.Parse(Config.App.PLCPort)); // omronFinsNet.LogNet = new HslCommunication.LogNet.LogNetSingle("omron.log.txt"); omronFinsNet.SA1 = (byte)Convert.ToInt16(Config.App.PCNet); //0x0D; // PC网络号,PC的IP地址的最后一个数 omronFinsNet.DA1 = (byte)Convert.ToInt16(Config.App.PLCNet);// 0x10; // PLC网络号,PLC的IP地址的最后一个数 omronFinsNet.DA2 = 0x00; // PLC单元号,通常为0 OperateResult connect = omronFinsNet.ConnectServer(); if (connect.IsSuccess) { isConnect = true; } else { MessageBox.Show("PLC连接失败"); isConnect = false; } } catch (Exception ex) { isConnect = false; } return isConnect; } public bool GetPlcState() { return isConnect; } public bool isConnected() { if (isConnect) return true; OperateResult connect = omronFinsNet.ConnectServer(); isConnect = connect.IsSuccess; return isConnect; } public void close() { omronFinsNet.ConnectClose(); isConnect = false; } public string readString(string add) { if (!isConnect) return "PLC未连接"; var ret = omronFinsNet.ReadString(add, 20);// 读取D100-D104组成的ASCII字符串数据 isConnect = ret.IsSuccess; if (ret.IsSuccess) { byte[] returnBytes = Encoding.Default.GetBytes(ret.Content); for (int i = 0; i < returnBytes.Length; i = i + 2) { byte buffer = returnBytes[i]; returnBytes[i] = returnBytes[i + 1]; returnBytes[i + 1] = buffer; } return Encoding.ASCII.GetString(returnBytes, 0, returnBytes.Length).Replace('\0', ' ').Trim(); } else { return (ret.Message); } } public int readInt(string add) { if (!isConnect) return -99; var ret = omronFinsNet.ReadInt32(add); isConnect = ret.IsSuccess; if (ret.IsSuccess) return ret.Content; else return -99; } public bool writeString(string add, string v) { if (!isConnect) return false; omronFinsNet.Write(add, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"); string strTemp = ""; if (v.Length % 2 == 1) strTemp = v + "\0"; else strTemp = v; byte[] writeByte = Encoding.Default.GetBytes(strTemp); for (int i = 0; i < writeByte.Length; i = i + 2) { byte buffer = writeByte[i]; writeByte[i] = writeByte[i + 1]; writeByte[i + 1] = buffer; } strTemp = Encoding.ASCII.GetString(writeByte, 0, writeByte.Length)/*.Replace('\0', ' ').Trim()*/; OperateResult result = omronFinsNet.Write(add, strTemp);// 写ASCII字符串 return result.IsSuccess; } public bool writeInt(string add, int v) { if (!isConnect) return false; OperateResult result = omronFinsNet.Write(add, v); return result.IsSuccess; } } //Addr950 登录2/注销3 //Addr952 账号 1操作员 2管理员 3工程师 //Addr962 密码 1(49),2(50),3(51) public class TourchHsl { private ModbusTcpNet modbusTcpNet; private bool isConnect = false; public bool connection() { isConnect = true; try { modbusTcpNet = new ModbusTcpNet(Config.App.TourchIp, Config.App.TourchPort,Convert.ToByte("1")); modbusTcpNet.AddressStartWithZero = Config.App.StartAddr; //modbusTcpNet = new ModbusTcpNet("127.0.0.1", Config.App.TourchPort); OperateResult connect = modbusTcpNet.ConnectServer(); if (connect.IsSuccess) { isConnect = true; } else { MessageBox.Show("触摸屏连接失败!"); isConnect = false; } } catch (Exception ex) { isConnect = false; } return isConnect; } public bool GetTourchState() { return isConnect; } public bool isConnected() { if (isConnect) return true; OperateResult connect = modbusTcpNet.ConnectServer(); isConnect = connect.IsSuccess; return isConnect; } public bool writeInt(string add, ushort v) { if (!isConnect) return false; OperateResult result = modbusTcpNet.Write(add, v); return result.IsSuccess; } public bool writeCoil(string add, bool v) { if (!isConnect) return false; OperateResult result = modbusTcpNet.WriteCoil(add, v); return result.IsSuccess; } public int readInt16(string add) { if (!isConnect) return -99; var ret = modbusTcpNet.ReadInt16(add); isConnect = ret.IsSuccess; if (ret.IsSuccess) return ret.Content; else return -99; } public int readInt32(string add) { if (!isConnect) return -99; var ret = modbusTcpNet.ReadInt32(add); isConnect = ret.IsSuccess; if (ret.IsSuccess) return ret.Content; else return -99; } } }