SIMATIC S7-1200 SM 1234,AI 4x13 bit/AO 2x14 bit
订货号: 6ES7234-4HE32-0XB0
SIMATIC S7-1200,模拟输入/输出 SM 1234,4 个模拟输入/2 个模拟输出, +/-10V,14 位分辨率 或者 0(4)-20mA, 13 位分辨率
访问数据块中的数据区域,而不是直接访问 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:
UInt | 映射到此数据区域的 MODBUS 数据类型的标识符: |
UInt | 映射的数据区编号,该 DB 必须是非优化 DB |
UInt | 映射到数据块中的 MODBUS 地址,从 0 开始 |
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 所示: