MODBUS主备设备使用树莓派硬件时的TCP/IP通信
本示例展示了如何使用Simulink®支持包for Raspberr金宝appy Pi硬金宝app件在MODBUS主设备和从设备之间实现MODBUS TCP/IP通信。它还展示了如何在主读、主写、从读和从写四种操作模式下在两个设备之间进行通信。
本例使用了两个树莓派Simulink模型,即树莓派MODBUS Mas金宝appter和树莓派MODBUS Slave,它们共同利用主设备和从设备的不同操作模式。
主读——主设备通过TCP/IP从从设备寄存器读取数据
主写——主设备通过TCP/IP将数据写入从设备寄存器
从读-从设备通过TCP/IP从设备寄存器读取数据
从写-从设备通过TCP/IP将数据写入从设备寄存器
“树莓派MODBUS Slave”模型部署在其中一块板上,“树莓派MODBUS Master”模型外接在另一块板上。
该表将MODBUS主设备和从设备引用的不同从设备寄存器分类。
注册类型|注册|允许主操作寄存器大小 ----------------------------------------------------------------------------------- 线圈| |出读写离散输入| |出阅读保持寄存器| 16位|读和写输入注册| 16位|阅读
先决条件
有关如何使用树莓派硬件的Simulink支持包在树莓派硬件上运行Simulin金宝appk模型的金宝app详细信息,请参见树莓派硬件的Simulink支持包入门金宝app金宝app.
所需的硬件
2块树莓派硬件板
两根USB线
配置MODBUS Master Simulink金宝app模型和校准参数
这个支持包金宝app为MODBUS主机提供了一个预配置的模型。
要打开模型,请在MATLAB®命令窗口中运行此命令。
open_system(“raspberrypi_modbus_master”)
在本例中,根据从寄存器大小和允许的主操作,预先配置了S金宝appimulink主模型的默认值。主写操作对线圈和持有寄存器有效,而主读操作对所有寄存器类型有效。
在主用模式下,配置树莓派主板IP地址配置参数>硬件实现>目标硬件资源>板参数.
中配置这些参数配置参数>硬件实现>目标硬件资源>Modbus属性.
集通信接口来
TCP / IP
.集模式来
主
.中配置从设备IP端口号Remote Slave IP端口号参数。本例中参数设置为
502
.集接收超时时间(ms)来
One hundred.
秒。
为线圈寄存器配置MODBUS TCP/IP主写块
要对线圈寄存器执行1位写操作,请更改滑块开关的位置。的在
位置描述了数据1
都写在这些寄存器上,而从
位置描述了数据0
都写在寄存器上。在这个模型中使用了三个滑块开关,它们的输出是多路复用的,并作为MODBUS TCP/IP主写块的输入。
在“MODBUS TCP/IP主写块参数”对话框中配置这些参数,以将数据从滑块开关写入线圈寄存器。
中输入从设备的唯一IP地址从设备地址参数。在此模型中,参数设置为
172.19.66.177
.选择
写多个线圈
选项中的函数参数。类中第一个线圈的地址可通知主控制器向两个线圈寄存器写入数据线圈的地址参数。默认值为
0
.输入
3.
在线圈数参数。滑块开关的默认位置为从
,在
,在
.
为持有寄存器配置MODBUS TCP/IP主写块
为了在保持寄存器上执行16位主写操作,本例使用一个计数值从0增加到15的计数器和一个脉冲发生器。来自自由运行计数器和脉冲发生器的输出是多路复用的,并作为输入馈送到MODBUS TCP/IP主写块。
在MODBUS TCP/IP主写块参数对话框中配置这些参数,将数据从空闲运行计数器和脉冲发生器写入保持寄存器。
中输入从设备的唯一IP地址从设备地址参数。在此模型中,参数设置为
172.19.66.177
.选择
写多重保持寄存器
选项中的函数参数。命令中第一个线圈寄存器的地址,可以通知主控制器向保持寄存器写入数据持有登记册地址参数。默认值为
0
.输入
2
在贮存登记册数目参数。
配置计数器不同步的块参数对话框。
输入
4
在比特数参数使计数器从0计数到15。设置样品时间来
0.1
秒。
配置脉冲发生器块参数对话框。
选择
基于样本
选项中的脉冲式参数。设置样品时间来
0.1
秒。
为线圈寄存器配置MODBUS TCP/IP主读块
为了在线圈寄存器上执行1位读操作,使用三个指示灯来表示从线圈寄存器进行1位读操作。要从线圈寄存器读取数据,请在“MODBUS TCP/IP主读块参数”对话框中配置这些参数。
中输入从设备的唯一IP地址从设备地址参数。在此模型中,参数设置为
172.19.66.177
.选择读取多个线圈选项中的函数参数。
要通知主机从线圈寄存器读取数据,请在线圈的地址参数。默认值为
0
.集线圈数来
3.
.设置样品时间参数
0.1
.
为持有寄存器配置MODBUS TCP/IP主读块
要对持有寄存器执行16位读操作,请在“MODBUS TCP/IP主读块参数”对话框中配置这些参数。空闲运行的计数器和写入保持寄存器的脉冲发生器输出数据可以使用MODBUS TCP/IP主读块读取。可以在Scope中查看保持寄存器0、保持寄存器1和Status输出。
中输入从设备的唯一IP地址从设备地址参数。在此模型中,参数设置为
172.19.66.177
.选择读取多个保持寄存器选项中的函数参数。
要通知主机从线圈寄存器读取数据,请在持有登记册地址参数。默认值为
0
.集贮存登记册数目来
2
.设置样品时间参数
0.1
.
为离散输入寄存器配置MODBUS TCP/IP主读块
当自由运行计数器的计数值大于或等于8时,从离散输入寄存器读取的数据是高的。在计数值为15之后,块的输出被重置为0。只有当Status端口值为1时,该数据才有效,这表示读取操作成功,并且其数据端口上存在有效数据。灯指示器用于表示从离散输入寄存器读取的1位数据。要在离散输入寄存器上执行1位读操作,请在“MODBUS TCP/IP主读块参数”对话框中配置这些参数。
中输入从设备的唯一IP地址从设备地址参数。在此模型中,参数设置为
172.19.66.177
.选择离散输入选项中的函数参数。
要通知主程序从一个离散输入寄存器读取数据,请在离散输入地址参数。默认值为
0
.设置样品时间参数
0.1
.
为输入寄存器配置MODBUS TCP/IP主读块
当从与脉冲发生器输出相对应的保持寄存器读取的数据低时,从输入寄存器读取的数据高。类似地,当从脉冲发生器输出对应的保持寄存器读取的数据高时,从输入寄存器读取的数据低。只有当status port值为时,此数据才有效1
,表示读取操作成功,并且其数据端口上存在有效数据。观察范围内的输出。要对输入寄存器执行16位读操作,请在“MODBUS TCP/IP主读块参数”对话框中配置这些参数。
中输入从设备的唯一IP地址从设备地址参数。在此模型中,参数设置为
172.19.66.177
.选择读输入寄存器选项中的函数参数。
要通知主机从一个输入寄存器读取数据,请在输入寄存器地址参数。默认值为
0
.设置样品时间参数
0.1
.
配置MODUS Slave Simulink金宝app模型和校准参数
这个支持包金宝app为MODBUS从站提供了一个预配置的模型。
要打开模型,请在MATLAB命令窗口中运行此命令。
open_system(“raspberrypi_modbus_slave”)
本例中预先配置了Simulink从模型的默认值。金宝app
在备机模式下,配置树莓派备板IP地址配置参数>硬件实现>目标硬件资源>板参数.
中配置这些参数配置参数>硬件实现>目标硬件资源>Modbus属性.
集通信接口来
TCP / IP
.集模式来
奴隶
.中配置主设备IP端口号本地IP端口号参数。本例中参数设置为
502
.选择所有寄存器类型。默认的起始地址而且数量这些寄存器类型的参数配置如下表所示:
注册类型| |数量开始地址 -------------------------------------------------------- 离散输入线圈| 0 | 3 | 0 | 1保持寄存器输入注册| 0 | 2 | 0 | 1
为线圈寄存器配置MODBUS TCP/IP从读块
要在线圈寄存器上执行1位从读操作,请在每个线圈寄存器的MODBUS TCP/IP从读块参数对话框中配置这些参数。
选择读盘选项中的函数参数。
设置线圈的地址参数
0
.设置样品时间参数
0.1
.
类似地,配置其他两个MODBUS TCP/IP Slave Read块并设置线圈的地址参数1
而且2
,而其他参数保持不变。
双击与MODBUS TCP/IP Slave Read块的数据输出端口相连的子系统。树莓派GPIO写引脚映射到从线圈寄存器地址。配置树莓派董事会而且GPIO数量参数。
为持有寄存器配置MODBUS TCP/IP从读块
要在保持寄存器上执行16位从读操作,请在MODBUS TCP/IP从读块参数对话框中为空闲运行计数器和脉冲发生器输出配置这些参数。
选择读保持寄存器选项中的函数参数。
设置持有登记册地址参数
0
.设置样品时间参数
0.1
.
类似地,配置其他MODBUS TCP/IP从读块并设置持有登记册地址参数1
,其他参数保持不变。
为离散输入寄存器配置MODBUS TCP/IP从写块
双击与MODBUS TCP/IP Slave Read块的数据输出端口相连的子系统。当从与自由运行计数器相对应的保持寄存器读取的数据大于或等于8时,写入离散输入寄存器的数据是高的。在计数值为15之后,块的输出再次重置为0。只有当Status端口值为1时,该数据才有效,这表示读取操作成功,并且其数据端口上存在有效数据。要在离散输入寄存器上执行1位从写操作,请在离散输入寄存器的“MODBUS TCP/IP从写块参数”对话框中配置这些参数。
选择写入离散输入选项中的函数参数。
设置离散输入地址参数
0
.
为输入寄存器配置MODBUS TCP/IP从写块
双击与MODBUS TCP/IP Slave Read块的数据输出端口相连的子系统。当从与脉冲发生器输出相对应的保持寄存器读取的数据低时,读入到输入寄存器的数据就高。类似地,当从脉冲发生器输出对应的保持寄存器读取的数据高时,从输入寄存器读取的数据低。只有当status port值为时,此数据才有效1
,表示读取操作成功,并且其数据端口上存在有效数据。在输入寄存器的“MODBUS TCP/IP从写块参数”对话框中配置这些参数,即可对输入寄存器进行16位从写操作。
选择写输入寄存器选项中的函数参数。
设置输入寄存器地址参数
0
在主、从设备上运行MO金宝appDBUS Simulink模型
1.将作为从设备和主设备的树莓派板连接到主机。
2.在硬件的标签。树莓派MODBUS Slave金宝appSimulink模型,在模式部分中,选择在船上跑然后点击构建、部署和启动.
3.在硬件的标签。树莓派MODBUS Master金宝appSimulink模型,在模式部分中,选择在船上跑然后点击监视和调优.
4.对于线圈寄存器:
在MODBUS TCP/IP主写块中,改变滑块开关的位置,将数据写入线圈寄存器。
在MODBUS TCP/IP主读块中,验证线圈寄存器上读操作的状态。观察指示灯显示从线圈寄存器获得的相应数据。验证灯的状态是否显示了写在线圈寄存器上的正确数据。
5.有关持有登记册:
在MODBUS TCP/IP主写块中,计数器将从0到15的数据写入保持寄存器0。脉冲以振幅1产生,并写入保持寄存器1。
在MODBUS TCP/IP主读块中,检查保持寄存器0和1上的读操作的状态。观察从持有寄存器0获得的数据对应的计数器值从0到15的增量,并验证作用域中是否显示相同的值。观察保持寄存器1上的脉冲输出,验证作用域中是否显示相同的值。
6.对于输入寄存器:
在MODBUS TCP/IP主读块中,检查输入寄存器上读操作的状态。观察从脉冲发生器获得的数据所对应的反向脉冲输出,并将该值与从保持寄存器1获得的数据进行比较。
7.对于离散输入寄存器:
在MODBUS TCP/IP主读块中,检查离散输入寄存器上的读操作的状态。观察从自由运行计数器获得的数据所对应的脉冲输出,并将该值与从保持寄存器0获得的数据进行比较。
MODBUS主Simulink模型的仿真输出金宝app
在树莓派MODBUS Master Simulink模型中,对金宝app硬件选项卡上,单击数据检查在审查结果节查看和映射模型的各种输出。的输出保持寄存器0与离散输入0而且持有登记册1与输入寄存器0为了更好的能见度。
金宝appSimulink数据检查器输出MODBUS主Simulink模型
其他可以尝试的事情
使用MODBUS从设备,如温度传感器、湿度传感器等,将实时数据传输给树莓派板作为主设备。
以PID控制器为从设备,树莓派板为主设备,实现监控系统。