SINAMICS V20 1AC200-240V -15/+10% 47-63Hz 3kW,150% 过载 60 秒 未滤波 I/O:4 DI,2DQ,2AI,1AO 现场总线:USS/Modbus 带内置基本操作面板 防护等级 IP20/UL 开放式 规格:AD136x176.5x160(宽x高x深)
SINAMICS V20变频器 无滤波器1AC200-240V 3 kW FSAD
订货号: 6SL3210-5BB23-0UV1
访问数据块中的数据区域,而不是直接访问 Modbus 地址
Modbus_Slave 指令版本 V4.0 以及 S7-1200 CPU 固件版本 V4.2起,用户可访问数据块中的数据区域,而不用直接访问过程映像和保持寄存器。为此,在全局 DB属性页中,必须取消选中"仅存储在装载存储器中和"优化块访问复选框。
如果 MODBUS 请求到达时,尚未定义相应功能代码的 MODBUS数据类型的数据区域,请求会按之前的指令版本处理,即直接访问过程映像和保持性寄存器。
如果 MODBUS 请求到达时,已定义功能代码的 MODBUS 数据类型的数据区域,则 Modbus_Slave指令会对此数据区域执行读写操作。具体是读操作还是写操作取决于作业类型。
单个 MODBUS 请求只能对一个数据区域进行读写操作。如果要读取覆盖多个数据区域的保持性寄存器,则需要多个 MODBUS请求。
数据区域的定义规则如下:
多可以定义 8 个数据区,位于 Data_Area_Array[1..8] 中。
数据区数组元素定义必须连续,如果中间某数组元素定义无效,则后面的区域不生效。
如果在数据区定义了保持寄存器,则 MB_HOLD_REG 映射失效,如果在数据区定义了过程映像输出,则对应的 Q区映射失效,如果在数据区定义了过程映像输入,则对应的 I 区映射失效,如果在数据区定义了输入寄存器,则对应的 AI区映射失效。也就是说,如果在数据区内没有定义哪个区域,则原有的映射依然保留。
单个 MODBUS 请求只能对恰好一个数据区域进行读写操作。
每个字段元素 Data_Area_Array[x](其中 1 <= x <= 8)都是 MB_DataArea类型的 UDT,结构参见表 1:
参数 | 数据类型 | 含义 |
---|---|---|
data_type | UInt | 映射到此数据区域的 MODBUS 数据类型的标识符: |
db | UInt | 映射的数据区编号,该 DB 必须是非优化 DB |
start | UInt | 映射到数据块中的 MODBUS 地址,从 0 开始 |
length | UInt | Bool 个数(对于data_type 1 或者 2),Word 个数(data_type 3 或者 4) |
表 1. Data_Area_Array 数组的元素及其含义
本例中,使用 TIA Portal V16,CPU1215C 配置 CM1241 RS422/485 模块作为Modbus RTU 主站,CPU1214C 配置 CM1241 RS422/485 模块作为 Modbus RTU从站,主站访问从站的数据块中的数据区域:
主站配置:在 OB1 中,拖入 Modbus_Comm_Load 指令和 Modbus_Master指令,MODE=0,DATA_ADDR=40006,DATA_LEN=5,如图 8 所示:
图 8. 主站调用 Master 指令
从站配置:在 OB1 中,拖入 Modbus_Comm_Load 指令和 Modbus_Slave 指令,参考图 4所示:
从站的背景 DB 中 Data_Area_Array 进行如图 9 所示配置: