在西门子 S7-1200 PLC 中,模拟量转换(模拟量输入 AI / 输出 AO 与实际物理量的换算)是工业控制的基础操作,核心是将传感器 / 执行器的物理信号(如温度、压力、电压、电流)与 PLC 内部的数字量(整数)进行双向转换。以下是详细的转换原理、计算公式、程序实现及实例说明:
S7-1200 的模拟量模块(如 SM 1231 AI、SM 1232 AO)会将外部模拟信号(如 4~20mA 电流、0~10V 电压)转换为 PLC 内部的数字量(整数),范围通常为0~27648(默认满量程对应值)。转换遵循 “线性比例” 原则:
以4~20mA 电流信号(对应物理量 0~100℃)为例,转换步骤:
信号范围对应关系:
物理量:P_min(0℃)→ P_max(100℃)
模拟信号:I_min(4mA)→ I_max(20mA)
数字量:D_min(0)→ D_max(27648)
转换公式:物理量代入数值:温度℃
特殊情况:若信号为0~10V 电压(对应物理量 0~50Hz),公式相同,仅D_min=0、D_max=27648,物理量范围替换为 0~50Hz 即可。
以输出 0~10V 电压(控制变频器 0~50Hz)为例,转换步骤:
信号范围对应关系:
物理量:P_min(0Hz)→ P_max(50Hz)
模拟信号:V_min(0V)→ V_max(10V)
数字量:D_min(0)→ D_max(27648)
转换公式:数字量代入数值:D=0+50−0(P−0)×(27648−0)=50P×27648
步骤 1:读取 AI 模块的原始数字量(通过 “地址映射” 或 “系统块” 查看 AI 通道地址,如 IW256 对应 AI 模块第 1 通道)。
步骤 2:在 OB1 中编写转换逻辑(使用 “缩放” 指令或手动计算)。
方法 1:使用SCALE_X指令(推荐,系统自带功能块)
方法 2:手动计算(梯形图 / LAD)
ladder
// 读取AI原始值(IW256)到MW10
L IW256
T MW10
// 转换为0~100℃:(MW10 * 100) / 27648
L MW10
L 100
*I
L 27648
/I
T MW20 // MW20为转换后的温度值(整数,精度0.1℃可乘以10后处理)
IN:AI 原始数字量(如 IW256)
LO_LIM:物理量最小值(0.0,单位℃)
HI_LIM:物理量最大值(100.0,单位℃)
LO_VAL:数字量最小值(0.0,对应 4mA)
HI_VAL:数字量最大值(27648.0,对应 20mA)
OUT:转换后的物理量(如 MW100,实数类型)
调用 “基本指令→转换操作→SCALE_X”,参数设置:
步骤 1:计算目标频率对应的数字量(如 30Hz)。
步骤 2:将数字量写入 AO 模块(地址如 QW256 对应 AO 模块第 1 通道)。
方法 1:使用NORM_X指令(系统自带功能块)
方法 2:手动计算(结构化文本 / ST)
st
// 目标频率30Hz转换为数字量
"TargetFrequency" := 30.0; // 目标频率
"AODigital" := UINT#(("TargetFrequency" * 27648.0) / 50.0); // 计算数字量
QW256 := "AODigital"; // 写入AO模块
信号类型匹配:
精度处理:
故障诊断:
S7-1200 的模拟量转换核心是 “线性比例换算”,通过系统功能块(SCALE_X/NORM_X)可简化编程,减少计算错误。实际应用中需根据传感器 / 执行器的信号范围调整参数,确保转换精度与现场需求匹配。