物联网开发平台快速实现ModbusRTU连接

  Modbus是工业电子设备间通信的业界标准,可通过串口、以太网以及其他支持互联网协议的网络进行通信。

  Modbus有以下的优势 :

  • Modbus协议是开源免费的,任何工业通讯传感器设备等都可以使用。
  • Modbus支援多种常见工控接口(RS232, RS485, TCP/IP etc.),且可以各种物理层装置上传输(双绞线、光纤、无线等)。
  • Modbus格式简单易于开发。
  • Modbus能够将众多设备连接到DCS, PLC系统上,再利用中控(云、中央计算机)进行监控与下达指令,以便于集中式控制。

  Modbus通信协议是一个主-从架构,在整个Modbus通讯网路中能够同时拥有多个从机但是只允许拥有一个专门发送请求的的主机。
  Modbus是一个一主多从协议(最多可连接247台从机,所以从机地址范围在1~247之间),只有在主机发出请求时从机才会做出回应,从机之间不能相互沟通。
  每条主机所发出的指令,都包含一个从机地址,每台主机都会收到该请求,都只有符合该地址的主机才会回应该请求。

  ModbusRTU是利用RS485作为物理层实现的Modbus通信协议,也是现代工业通信中使用广泛的通讯连接方式,这种方式的连接抗干扰能力强,连接速率稳定,适应工业的恶劣环境。

  硬件设备连接完成后,我们需要使用专用的客户端来作为Modbus主机读取其中的数据,我们可以使用Smart物联网开发平台来制作ModbusRTU通讯连接测试的示例。

  示例的布局界面如下,在Smart物联网开发平台中以下布局的示例可以很快做到。

在这里插入图片描述
  功能实现的部分程序如下:

procedure TMyHandler.BitBtn01Click;
//BitBtn01的OnClick事件,对应的Modbus功能码为01 读取线圈寄存器,可选择读取单个或者多个寄存器的数据
begin
  FThis.ModbusClient1.ReadCoils(1,2,nil); //从地址1开始,读取两位
end;

procedure TMyHandler.ModbusClient1CoilsRead;
//ModbusClient1的OnCoilsRead事件,用于获取读取线圈寄存器的结果
var
 i:Integer;
begin
  FThis.Memo1.Lines.Add('线圈寄存器读取结果:');
  for i := Low(BitValues) to High(BitValues) do
  begin
    if BitValues[i] then
    FThis.Memo1.Lines.Add('True')
  else
    FThis.Memo1.Lines.Add('False') 
 end;
end;

procedure TMyHandler.BitBtn05Click;
//BitBtn05的OnClick事件,对应的Modbus功能码为05 写单个线圈寄存器
begin
  FThis.ModbusClient1.WriteSingleCoil(1,True,nil);
  FThis.Memo1.Lines.Add('写单个线圈寄存器:1');
end;

procedure TMyHandler.BitBtn16Click;
//BitBtn16的OnClick事件,对应的Modbus功能码为16 写多个保持寄存器
var
  v: TRegValues;
begin
  SetLength(v,3);
  v[0] := 1;
  v[1] := 123;
  v[2] := 224;
  FThis.ModbusClient1.WriteMultipleRegisters(1,v,nil);
  FThis.Memo1.Lines.Add('写多个保持寄存器:1,123,224');
end;

  保存设计后,不需要执行编译操作,直接运行就可以启用程序功能。此处可以使用相关仿真软件或者实体Modbus协议通讯的设备连接来进行。

  仿真软件切换至线圈寄存器模式,点击[01 读取线圈寄存器],程序读取对应的线圈寄存器位址并返回读取结果。点击[05 写单个线圈寄存器],程序向单个线圈寄存器位址写入数据并返回结果。点击[15 写多个线圈寄存器],程序向多个线圈寄存器位址写入数据并返回结果。

  仿真软件切换至离散输入寄存器模式,点击[02 读取离散输入寄存器],程序读取对应的离散输入寄存器位址并返回读取结果。

  仿真软件切换至保持寄存器模式,点击[03 读取保持寄存器],程序读取对应的保持寄存器位址并返回读取结果。点击[06 写单个保持寄存器],程序向单个保持寄存器位址写入数据并返回结果。点击[16 写多个保持寄存器],程序向多个保持寄存器位址写入数据并返回结果。

  仿真软件切换至输入寄存器模式,点击[04 读取输入寄存器],程序读取对应的输入寄存器位址并返回读取结果。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值