C# modbus tcp通讯防止断线

 public ModbusTcpNet busTcpClient= new ModbusTcpNet("ip", 502, 通讯地址);
 /// <summary>
 /// 建立连接
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 public void ModbusConect(object sender, System.Timers.ElapsedEventArgs e)
 {
     Task.Factory.StartNew(async () => { 
     try
     {
         string ip = "IP";
         int port = Convert.ToInt32("502");
         bool IsEnable = false;
         busTcpClient = new ModbusTcpNet(ip, port, 0x01);
         OperateResult res = busTcpClient.ConnectServer();
         if (res.IsSuccess == true) //接收状态返回值
         {
             IsEnable = true;
             log.Info("上位机网络连接成功");
             //Main.main.textBox_log.Text += ("\r\n"+ "时间:" + DateTime.Now+"信息:上位机网络开启连接成功!" );
             Main.main.hslLanternSimple4.LanternBackground = Color.Green;
                                                                                                 
         }
         else
         {
             Main.main.hslLanternSimple4.LanternBackground = Color.Gray;
             log.Info("开启连接失败,尝试重连中");
             Main.main.textBox_log.Text += ("\r\n信息:开启连接失败,尝试重连中!" + "时间:" + DateTime.Now);
         }
         if (IsEnable)
         {
             //MessageBox.Show("请勿重复建立连接!");
             return;
         }
         else
         {
             Main.main.hslLanternSimple4.LanternBackground = Color.Gray;
             log.Info("上位机网络连接断开");
             Main.main.textBox_log.Text += ("\r\n信息:上位机网络连接断开!" + "时间:" + DateTime.Now);
         }

     }
     catch (Exception ex)
     {
         MessageBox.Show("开启连接失败通讯异常!", ex.Message.ToString());
     }
         await Task.Delay(1000);
     });

 }

C#中实现Modbus TCP通讯的步骤如下: 1. 引用Modbus库。可以使用NuGet安装"NModbus4"库,也可以手动下载并添加到项目中。 2. 创建Modbus TCP客户端。使用TcpClient类创建一个TCP客户端,并连接到Modbus TCP服务器。 3. 创建Modbus TCP主站。使用ModbusFactory类创建一个Modbus TCP主站实例。 4. 读取数据。使用主站实例的ReadInputs、ReadCoils、ReadHoldingRegisters或ReadInputRegisters方法读取数据。 5. 写入数据。使用主站实例的WriteSingleCoil、WriteSingleRegister、WriteMultipleCoils或WriteMultipleRegisters方法写入数据。 下面是一个简单的示例代码: ```C# using System; using System.Net.Sockets; using NModbus; namespace ModbusDemo { class Program { static void Main(string[] args) { // 创建TCP客户端 TcpClient tcpClient = new TcpClient("192.168.1.100", 502); // 创建Modbus TCP主站 IModbusMaster modbusMaster = ModbusFactory.CreateMaster(tcpClient); // 读取线圈状态 bool[] coils = modbusMaster.ReadCoils(0, 10); // 写入单个线圈状态 modbusMaster.WriteSingleCoil(0, true); // 写入多个线圈状态 bool[] coilsToWrite = new bool[] { true, false, true }; modbusMaster.WriteMultipleCoils(0, coilsToWrite); // 读取寄存器值 ushort[] registers = modbusMaster.ReadHoldingRegisters(0, 10); // 写入单个寄存器值 modbusMaster.WriteSingleRegister(0, 1234); // 写入多个寄存器值 ushort[] registersToWrite = new ushort[] { 1234, 5678, 9012 }; modbusMaster.WriteMultipleRegisters(0, registersToWrite); // 关闭TCP客户端 tcpClient.Close(); } } } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值