函数列表

函数 说明
modbus 创建MODBUS对象
read 从MODBUS服务器读取数据
write

对连接的MODBUS服务器执行写操作

writeRead 在单个MODBUS事务中对一组保持寄存器执行写然后读操作
maskWrite 在保持寄存器上执行掩码写入操作
instrhwinfo 有关可用硬件的信息
clear 从MATLAB工作区中删除仪器对象

配置说明

使用Modbus Slave模拟服务器,数值如下设置:
在这里插入图片描述

注意:Modbus Slave中每个寄存器是16位!

数据类型有:'int16', 'uint16', 'int32', 'uint32', 'single', 'double', 'int64', 'uint64'

数据读取

% 创建客户端
m = modbus('tcpip','127.0.0.1',502)

% 属性查看
>> m.ByteOrder
ans =
    'big-endian'
>> m.Port
ans =
   502

% 设置属性
>> m.Timeout = 3
m = 
Modbus TCPIP with properties:
    DeviceAddress: '127.0.0.1'
             Port: 502
           Status: 'Connected'
       NumRetries: 1
          Timeout: 3 (seconds)
        ByteOrder: 'big-endian'
        WordOrder: 'big-endian'
  
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% read(obj,'holdingregs',address,count)
% read(obj,target,address,count,serverId)  % 指定Server ID
% read(obj,target,address,count,precision) % 指定数据读取格式
% read(obj,target,address,count,serverId,precision) % 同时指定Server ID和数据读取格式

% 读取23,以保持寄存器的方式读取,read列表为modbus对象、寄存器类型、开始地址(从1开始)、读取的个数、读取的类型
>> read(m,'holdingregs',3,1,'int16')
ans =
    23

% 单精度浮点型数据的读取,注意MATLAB默认的读取字序对应的Slave中的字序为Float AB CD,即大端
>> read(m,'holdingregs',5,1,'single')
ans =
   10.1100

% 断开并清除Modbus连接
clear m

数据发送

% 创建客户端
m = modbus('tcpip','127.0.0.1',502)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% write(m,target,address,values)
% write(m,target,address,values,serverId,'precision')

write(mbConnector,'holdingregs',10,1235,'int16')
write(mbConnector,'holdingregs',1,[1 2 3],'int16')

% 断开并清除Modbus连接
clear m

在这里插入图片描述


参考链接:

  • https://ww2.mathworks.cn/help/instrument/modbus.read.html#mw_bfb0478b-ea6e-42dc-94a5-88a54a3a55f9
  • https://blog.csdn.net/u011273970/article/details/92705421