这个例子展示了如何使用Arduino®硬件的Simulink®支持包金宝app实现MOD金宝appBUS®RS485异步,串行通信之间的MODBUS主设备和从设备。它还显示了四种操作模式:主读、主写、从读和从写。
Arduino MKR零
Arduino Mega 2560.
Arduino Mega Adk.
Arduino MKR 1000
Arduino MKR WiFi 1010
arduino leonardo
Arduino Micro.
Arduino 3.0纳米
Arduino Nano 33 IoT
Arduino Uno.
Arduino机器人控制板
Arduino机器人电机板
简单,高效的通信和简化和快速数据通信使Modbus RTU RS485成为电子和仪器仪表行业中最广泛使用的串行通信协议之一。在此客户端/服务器体系结构中,主设备充当客户端,从设备充当服务器。RS485网络上的每个设备由唯一的8位地址或标识符引用。
此示例显示了Modbus RS485协议的功能,使用两个Arduino®板充当主和奴隶,其中Arduino MODBUS主模型部署在前者和Arduino MODBUS奴隶部署在后者的模型。
该示例还处理了用于主设备和从设备的不同操作模式。
主人读书:主设备从RS485网络中从从设备寄存器读取数据
大师写:主设备通过RS485网络将数据写入从设备寄存器
奴隶读:从设备从RS485网络读取从设备寄存器的数据读取数据
奴隶写:从机通过RS485网络写数据到从机注册
此表类别由Modbus主设备和从设备引用的不同从设备寄存器。
注册类型|注册尺寸|允许在注册时进行主操作------------------------------------------------------------------------卷|1比特|读写离散输入|1比特|读控股寄存器|16位|读写输入寄存器|16位| Read
我们建议您完成Arduino®硬件入门和与Arduino®硬件进行沟通例子。
两个Arduino电路板
此示例使用一个Arduino MKR 1000板作为主设备,另一个Arduino MKR 1000板作为从站。您可以使用建议板列表中的任何Arduino Boards。
两个微型USB电缆
两个RS485盾牌
实现此示例要求您在每个支持的Arduino板上成功部署这些Simulink®模型:金宝app金宝app
金宝appSimulink型号名称|部署硬件|目的 - - - - - - - - - - - - - - - - - - - - - - - - ----------------------------------------- 1.Arduino_modbus_slave.|第一个Arduino Board |表现为从设备2.Arduino_Modbus_master |两个Arduino板中的第二个|表现为主设备
MODBUS主从设备必须连接在同一RS485网络上,才能正常通信。
此支持包为金宝appModbus Master提供了一种预配置的模型。
要打开此模型,请在matlab®命令窗口中运行此命令:
open_system ('arduino_modbus_master')
主机的S金宝appimulink模型可分为两部分,写到奴隶和阅读奴隶,基于操作类型主机可以在从设备寄存器上执行。在此示例中,Simulink主模型的默认值取决于从设备金宝app大小和允许的主操作。
Modbus主配置为写入从属操作模式
主写操作在线圈和保持寄存器上有效。此示例使用两个Modbus RS485主写入块分别在线圈寄存器和保持寄存器上实现写入操作。
为了在线圈寄存器上执行1位写操作,改变滑块开关的位置。这上
位置描绘了数据1
是写在登记册上的,而从
位置描绘了数据0.
是写在登记簿上的。在这个模型中使用了两个滑块开关,其输出是多路复用的,并作为输入馈送给其中一个MODBUS RS485主写块。
您可以配置以下参数以将数据从滑块交换机写入线圈寄存器:
中输入标识符的唯一8位从属地址从地址参数。在此模型中,它配置为1
。
选择写多个线圈选项函数参数。
要将主人向两个线圈寄存器写入数据,请指定第一线圈寄存器的地址线圈地址参数。默认值是0.
。
进入2
在线圈的数量参数。
类似地,为了在保持寄存器上执行16位主写操作,此示例使用计数器计数从0到255的值。从自由运行计数器的输出被馈送为第二Modbus RS485主写块的输入。
您可以配置以下参数,将数据从自由运行的计数器写入到持有寄存器:
中输入标识符的唯一8位从属地址从地址参数。在此模型中,它配置为1
。
选择编写多个控股寄存器选项函数参数。
要通知主设备将数据写入控件寄存器,请指定第一个线圈寄存器的地址持有注册地址参数。默认值是0.
。
进入1
在持有登记册数目参数。
Modbus Master配置从从动操作模式读取
主读操作在所有从设备寄存器(线圈,保持,离散输入和输入)上有效。两个Modbus RS485主读块用于分别在输入和离散输入寄存器上实现读取操作。
用1位脉冲发生器将数据写入离散输入寄存器。从离散输入寄存器读取的数据可以在MODBUS主读块的数据端口上用于离散输入寄存器。仅当状态端口值为值时,此数据才有效1
,指示读取操作成功,其数据端口上存在有效数据。灯指示器用来表示从离散输入寄存器读取的1位。
可以配置以下参数从离散输入寄存器读取1位脉冲发生器数据:
中输入标识符的唯一8位从属地址从地址参数。在此模型中,它配置为1
。确保配置相同从地址如用于离散输入寄存器的Modbus RS485从写块。
选择读取离散输入选项函数参数。
方法中指定数据的地址,以通知主机从一个离散输入寄存器中读取数据离散输入地址参数。确保配置与离散输入寄存器的Modbus RS485从写块中使用的相同的离散输入寄存器地址。默认值是0.
。
设定采样时间参数。
类似地,本例使用一个自由运行的计数器将数据写入输入寄存器。从输入寄存器读取的数据可以在MODBUS RS485 Master read块的数据端口上用于输入寄存器。仅当状态端口值为值时,此数据才有效1
,指示读取操作成功,其数据端口上存在有效数据。显示块用于显示从输入寄存器读取的16位数据。
您可以配置以下参数以从输入寄存器读取计数器数据:
中输入标识符的唯一8位从属地址从地址参数。在此模型中,它配置为1
。确保配置相同从地址用于输入寄存器的Modbus RS485从属写入块。
选择读取输入寄存器选项函数参数。
要通知主人从一个输入寄存器读取数据,请指定其地址输入寄存器地址参数。确保配置与输入寄存器的Modbus RS485从写块中使用相同的输入寄存器地址。默认值是0.
。
设定采样时间参数。
此支持包为金宝appModbus Slave提供了一种预配置的模型。
要打开此模型,请在matlab®命令窗口中运行此命令:
open_system (“arduino_modbus_slave”)
从机的S金宝appimulink模型可分为两部分,写信给主人和读主人,基于操作类型,从设备可以在其寄存器上执行。在此示例中,Simulink从设备模型的默认值在此示例金宝app中预先配置。
Modbus从站配置写入Master操作模式
此示例使用两个Modbus RS485从写块分别在输入寄存器和离散输入寄存器上实现写入操作。
要在输入寄存器上执行16位从属写入操作,此示例使用计数器计数为0到255的计数器。从自由运行计数器的输出被馈送为输入的Modbus RS485从写块的输入登记。
您可以配置以下参数以将数据从自由运行计数器写入INPUT寄存器:
选择写入输入寄存器选项函数参数。
要通知主人从一个输入寄存器读取数据,请指定其地址输入寄存器地址参数。确保配置与输入寄存器的MDOBUS RS485主读块中使用相同的输入寄存器地址。默认值是0.
。
类似地,该示例使用1位脉冲发生器将数据写入离散输入寄存器。
您可以将以下参数配置为将1位数据从脉冲发生器写入离散输入寄存器:
选择编写离散输入选项函数参数。
要通知主人从一个输入寄存器读取数据,请指定其地址离散输入地址参数。确保为输入寄存器配置与MDOBUS RS485 Master Read块中使用的相同的离散输入寄存器地址。默认值是0.
。
MODBUS从主模式读取操作的从配置
这个例子使用两个MODBUS RS485 Slave Read块来分别实现线圈和持有寄存器上的读操作。
从设备使用两个滑动开关读取主设备写入的数据。这个从线圈寄存器读取的1位数据可以在MODBUS RS485 Slave read块的数据端口上用于线圈寄存器。仅当状态端口值为值时,此数据才有效1
,指示读取操作成功,其数据端口上存在有效数据。灯指示器用于表示从线圈寄存器读取的1位数据。
您可以配置以下参数从线圈寄存器读取1位滑块开关数据:
选择读盘选项函数参数。
要通知从设备读取来自线圈寄存器的数据,请指定其地址线圈地址参数。确保配置MDOBUS RS485主编写块的相同线圈寄存器地址,用于线圈寄存器。默认值是0.
。
设定采样时间参数。
类似地,从设备读取作为向主设备的输入馈送的自由运行计数器数据。从保持寄存器读取的16位数据可在Modbus RS485从站Read块的数据端口上获得用于保持寄存器。仅当状态端口值为值时,此数据才有效1
,指示读取操作成功,其数据端口上存在有效数据。显示块用于显示从保持寄存器读取的16位数据。
您可以配置以下参数来读取来自保持寄存器的16位计数器数据:
选择读控股寄存器选项函数参数。
要通知从站读取从控件寄存器的数据,请指定其地址持有注册地址参数。确保配置MDOBUS RS485主写入块中使用的相同的保持寄存器地址,用于保持寄存器。默认值是0.
。
设定采样时间参数。
1.将充当从设备的Arduino板和主设备连接到主计算机。
2.在这方面硬件选项卡Arduino MODBUS奴隶金宝appSimulink模型,单击监控和曲调。
3.在硬件选项卡Arduino MODBUS奴隶金宝appSimulink模型,单击监控和曲调。
4.线圈寄存器:
Modbus RS485主读块:更改滑块交换机的位置以将数据写入线圈寄存器。
Modbus RS485从属读块:验证线圈寄存器上的读取操作的状态。观察显示从线圈寄存器获得的相应数据的灯。验证灯泡状态是否呈现在线圈寄存器上写入正确的数据。
5.持有注册:
MODBUS RS485 Master Write block:计数器开始向保持寄存器写入从0到255的数据。
Modbus RS485从读块:检查保持寄存器上的读操作状态。观察与从保持寄存器获得的数据对应的计数器值,并验证显示块是否显示了相同的值。
6.输入寄存器:
Modbus RS485从属写块:计数器从0到255的值开始计数。
MODBUS RS485 Master Read block:检查输入寄存器上读操作的状态。观察与从输入寄存器获得的数据相对应的计数器值,并验证Display块上是否显示了相同的值。
7.离散输入寄存器:
MODBUS RS485从写块:1位脉冲发生器开始在0和1之间切换。
Modbus RS485主读块:检查离散输入寄存器上的读操作状态。观察显示从离散输入寄存器获得的相应数据的灯。验证灯泡状态是否呈现在离散输入寄存器上写入的正确数据。
实现MODBUS的主和从模型来读写所有寄存器类型的多个从设备寄存器。
利用温度传感器、湿度传感器等MODBUS从机,将实时数据传输给Arduino板作为主控设备。
使用PID控制器作为从设备和Arduino板实现监控系统作为主设备。