【无标题】 Modbus 通讯并读取写入寄存器地址信息

该博客介绍了如何通过Java实现Modbus TCP通讯,连接到指定IP和端口的服务器。首先,它创建了一个ModbusTcpNet实例,并尝试连接到设备。然后,读取了400和402两个寄存器的值,并记录了读取结果。最后,向400和402寄存器写入了新值11和60,并记录了写入操作。
摘要由CSDN通过智能技术生成

           public  void Modbus2()
        {   

      string HMI_IPAddress = "192.168.1.1";   //需要通讯地址
            int  port=502 ;//需要通讯端口
            byte station;
            if (!byte.TryParse("1", out station))
            {
                ShowErrorDialog("HMI 站号格式错误...");
                return;
            }
            modbusTcpNet = new ModbusTcpNet(HMI_IPAddress, port, 1);

            OperateResult connect = modbusTcpNet.ConnectServer();
            if (connect.IsSuccess)
            {
                HistoryHelper.SaveErrorLog("Modbus连接成功");
                 
            }
            else
            {

                HistoryHelper.SaveErrorLog("Modbus连接失败");
            }
            ushort RegisterValue = modbusTcpNet.ReadUInt16("400").Content;  // 读

TCP Modbus是一种用于通信的协议,常用于读取写入模拟量寄存器数据。下面是一个详细的TCP Modbus读取写入模拟量寄存器的示例程序: 首先需要导入modbus-tk库,它是一个Python实现的Modbus协议库。 ```python from modbus_tk import modbus_tcp import struct # 创建TCP Modbus客户端 master = modbus_tcp.TcpMaster("192.168.0.1", 502) master.set_timeout(5.0) # 设置超时时间为5秒 # 读取模拟量寄存器的值 def read_analog_register(address, count): response = master.execute(1, modbus_tcp.READ_HOLDING_REGISTERS, address, count) values = [] for i in range(count): value = struct.unpack('!f', struct.pack('HH', response[i * 2], response[i * 2 + 1]))[0] values.append(value) return values # 写入模拟量寄存器的值 def write_analog_register(address, values): data = [] for value in values: data.extend(struct.unpack('HH', struct.pack('!f', value))) master.execute(1, modbus_tcp.WRITE_MULTIPLE_REGISTERS, address, output_value=data) # 读取模拟量寄存器示例 analog_values = read_analog_register(0, 3) print("模拟量寄存器的值:", analog_values) # 写入模拟量寄存器示例 write_analog_register(0, [1.23, 4.56, 7.89]) ``` 上述示例中,通过创建一个TCP Modbus客户端,连接到指定的Modbus设备。`read_analog_register`函数用于读取模拟量寄存器的数据,通过执行`modbus_tcp.READ_HOLDING_REGISTERS`命令获取寄存器数据,并将数据转换为浮点型。`write_analog_register`函数用于写入模拟量寄存器的数据,将浮点型数据转换为16位整数并通过执行`modbus_tcp.WRITE_MULTIPLE_REGISTERS`命令进行写入。 在示例的最后,通过调用`read_analog_register`函数读取了前3个模拟量寄存器的值,并将其打印出来。接着,调用`write_analog_register`函数写入了3个浮点数值到模拟量寄存器。 这就是一个简单的TCP Modbus读取写入模拟量寄存器的示例。你可以根据实际情况修改示例代码来适配你的Modbus设备和寄存器地址
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值