
在S7-300或S7-400的本地机架或远程I/O站点(DP)中的I/O模块,可以通过调用SFC 55(WR_PARM) 系统功能在系统运行时修改模块参数。SFC 55只修改信号模块的参数数据,不能修改CPU装载存储区中关于目的模块系统组态数据(SDB),因此系统重启后,SFC 55修改的模块参数将被CPU装载的系统数据所覆盖,恢复下载的组态参数。SFC 55(WR_PARM)不适用于Profinet I/O。
S7-300/400参数可编程信号模块
当前S7-300参数可编程信号模块(表1):
| 类型 | MLFB | 备 注 |
| SM321 | 6ES7 321-7BH01-0AB0 | DI 16 x DC 24 V |
| 6ES7 327-1BH00-0AB0 | DI 8/DX 8 x DC 24 V/0.5 A | |
| SM322 | 6ES7 322-8BF00-0AB0 | DO 8 x DC 24 V/0.5 A |
| 6ES7 322-5FF00-0AB0 | DO 8 x AC120/230 V /2A ISOL | |
| 6ES7 322-5HF00-0AB0 | DO 8 x Rel. AC230V /5A | |
| SM331 | 6ES7331-7NF00-0AB0 | AI 8 x 16 Bit |
| 6ES7331-7NF10-0AB0 | AI 8 x 16 Bit | |
| 6ES7331-7HF0x-0AB0 | AI 8 x 14 Bit High Speed; isochrone | |
| 6ES7331-1KF02-0AB0 | AI 8 x 13 Bit | |
| 6ES7 331-7KF02-0AB0 | AI 8 x 12 bit | |
| 6ES7331-7KB02-0AB0 | AI 2 x 12 Bit | |
| 6ES7331-7PF01-0AB0 | AI 8 x RTD | |
| 6ES7331-7PF11-0AB0 | AI 8 x TC | |
| 6ES7331-7PE10-0AB0 | AI 6 x TC isolated | |
| SM332 | 6ES7332-7ND02-0AB0 | AO 4 x 16 bit |
| SM334 | 6ES7334-0KE00-0AB0 | AI 4/AO 2 x 12 bit |
表1 S7-300参数可编程信号模块
当前S7-400参数可编程信号模块(表2):
| 类型 | MLFB | 备 注 |
| SM421 | 6ES7 421-7BH01-0AB0 | DI 16 x DC 24 V |
| 6ES7 421-7DH00-0AB0 | DI 16 x UC 24/60 V | |
| SM422 | 6ES7 422-5EH10-0AB0 | DO 16 x DC 20-125 V/1.5 A |
| 6ES7 422-7BL00-0AB0 | DO 32 x DC 24 V/0.5 A | |
| 6ES7 422-5EH00-0AB0 | DO 16 x AC 20-120 V/2 A | |
| SM431 | 6ES7 431-7QH00-0AB0 | AI 16 x 16 Bit |
| 6ES7 431-7KF10-0AB0 | AI 8 x RTD x 16 Bit | |
| 6ES7 431-7KF00-0AB0 | AI 8 x 16 Bit |
表2 S7-400参数可编程信号模块
3 SM331 AI8 x12bit模块的参数
以SM331 AI8 x12bit (6ES7331-7KF02-0AB0,下略写为SM331(7KF02))为例,说明如何编程修改信号参数。
3.1 可修改参数
参考手册《S7-300 模块数据》A.4小节,表A-4列出SM331(7KF02)模块参数是否可组态,可编程修改为(表3):
| 参数 | 参数数据记录号 | 可编程… | |
| … SFC55 | … PG | ||
| 诊断:组诊断 | 0 | 不支持 | 支持 |
| 诊断:使用断线监控 | |||
| 温度单位 | |||
| 温度系数 | |||
| 滤波 | |||
| 启用诊断中断 | 1 | 支持 | |
| 超限时硬件中断 | |||
| 启用周期结束中断 | |||
| 噪声抑制 | |||
| 测量方法 | |||
| 测量范围 | |||
| 上限 | |||
| 下限 | |||
表3 SM331(7KF02)参数组态编程特性
3.2 参数数据记录1
通过数据记录1可以进行修改SM331(7KF02)参数,参数数据记录1一共是14个字节,结构为:
►字节0(图1):

图1参数数据记录1字节0
►字节1(图2):
| 噪声抑制 | 积分时间 | 代码 |
| 400 Hz | 2.5 ms | 2#00 |
| 60 Hz | 16.7 ms | 2#01 |
| 50 Hz | 20 ms | 2#10 |
| 10 Hz | 100 ms | 2#11 |
图2参数数据记录1字节1
►字节2至字节5(图3)

图3参数数据记录1字节2至字节5
部分测量方法与量程代码(表4):
| 测量方法 | 代码 | 测量范围 | 代码 |
| … | … | … | … |
| 电压 | 2#0001 | ± 80 mV | 2#0001 |
| ± 250 mV | 2#0010 | ||
| ± 500 mV | 2#0011 | ||
| ±1 V | 2#0100 | ||
| ±2.5 V | 2#0101 | ||
| ±5 V | 2#0110 | ||
| 1 V到5 V | 2#0111 | ||
| 0 V到10 V | 2#1000 | ||
| ±10 V | 2#1001 | ||
| ± 25 mV | 2#1010 | ||
| ± 50 mV | 2#1011 | ||
| … | … | … | … |
(上表仅列出本文示例所涉及测量方法及量程代码,其余代码请参考《S7-300模块数据手册》)
表4 SM331(7KF02)部分测量方法与量程代码
►字节6至字节13(图4)

图4参数数据记录1字节6至字节13
4 编程SM331 AI8 x12bit参数
组态SM331(7KF02) 0通道为0~10V电压测量,组态报警上限为9V,下限为1V,示例将报警的上限编程修改为8V,下限修改为2V。
4.1 组态SM331(7KF02)

图5 组态SM331(7KF02)在主机架

图6 SM331 参数组态
4.2 编程SM331(7KF02)写参数
| OPN "DB1" | //要求DB1长度 >= 14 字节 | ||
| L 2#10000100 | // 使能OB40 | ||
| T DBB 0 | |||
| L 2#10101010 | // 4个通道组的干扰抑制时间, 50Hz | ||
| T DBB 1 | |||
| L 2#11001 | // 4个通道组的量程,电压测量,+/-10V | ||
| T DBB 2 | |||
| T DBB 3 | |||
| T DBB 4 | |||
| T DBB 5 | |||
| L 22118 | // 通道0上限报警值, 8V | ||
| T DBW 6 | // 22118= 27648 / 10V * 8V | ||
| L 5530 | // 通道0下限报警值, 2V | ||
| T DBW 8 | // 5530 = 27648 / 10V * 2V | ||
| L 26266 | // 通道2上限报警值,原组态的9.5V | ||
| T DBW 10 | // 26266= 27648 / 10V * 9.5V | ||
| L 1382 | // 通道2下限报警值,原组态的0.5V | ||
| T DBW 12 | // 1382= 27648 / 10V * 0.5V | ||
| CALL "WR_PARM" | // SFC 55 | ||
| REQ | :=M0.0 | // M0.0触发写入参数 | |
| IOID | :=B#16#54 | // 输入地址 | |
| LADDR | :=W#16#110 | // 模块逻辑起始地址272 | |
| RECNUM | :=B#16#1 | // 数据记录号 1 | |
| RECORD | :="DB1".DR | // 将写入模块的参数数据 | |
| RET_VA | :=MW2 | // RET_VAL = 0,无错误 | |
| BUSY | :=M0.1 | // M0.1 True -> False,写完成 | |
| AN M 0.1 | |||
| R M 0.0 | |||