3.8 RD3A/WD3A指令说明
3.8.1 共用配置区
RD3A:第二个操作数为配置区起始地址 D*,例如 RD3A K0 D100 D200 中的 D100。
WD3A:第二个操作数为配置区起始地址 D*,例如 WD3A K0 D100 D300 中的 D100。
配置区范围:从 D* 到 D*+8,共 9 个 D 字。
配置区范围:从 D* 到 D*+8,共 9 个 D 字。
| 地址 | 类型 | 用途 | 建议/示例 |
|---|---|---|---|
| D* ~ D*+1 | float | 工程量上限 | 100.0、10.0、4095.0 |
| D*+2 ~ D*+3 | float | 工程量下限 | 0.0 |
| D*+4 | int16 | 模拟量原始上限 | 4095 |
| D*+5 | int16 | 模拟量原始下限 | 0;4-20mA 可按现场标定写入约 819 |
| D*+6 | uint16 | 滤波系数 | >=1;1=不滤波,常用 3~8 |
| D*+7 ~ D*+8 | float | 死区阈值 | 0=不启用;单位与工程量一致 |
上下限写反时当前实现会自动交换;
工程量上下限都为 0 时按 0~4095 使用;
模拟量原始上下限都为 0 时按 0~4095 使用。
3.8.2 RD3A读取模拟量
| 项目 | 使用方式 |
|---|---|
| 指令格式 | RD3A K通道 D配置起始 D目标 |
| 通道 | K0~K3 对应当前工程实际模拟输入通道;实现内部按低 8 位取通道号并做越界保护 |
| 配置起始 | 指向上面的 9 字配置区,例如 D100。 |
| 目标 | 写入换算后的 float 工程量,占两个连续 D 字,例如 D200~D201。 |
- RD3A示例1:ATO原始量换算为0-100.0
配置区 D100:
D100~D101 = FLOAT(100.0) ; 工程量上限
D102~D103 = FLOAT(0.0) ; 工程量下限
D104 = 4095 ; ADC 原始上限
D105 = 0 ; ADC 原始下限
D106 = 5 ; 滤波系数
D107~D108 = FLOAT(0.2) ; 死区 0.2
RD3A K0 D100 D200
结果:AI0 当前值从 D8030 读取,经 04095 映射到 0.0100.0 后,以 float 写入 D200~D201。
- RD3A 示例 2:AI1 按 4-20mA 标定换算为 0~10.0
配置区 D120:
D120~D121 = FLOAT(10.0) ; 工程量上限
D122~D123 = FLOAT(0.0) ; 工程量下限
D124 = 4095 ; 20mA 标定原始值
D125 = 819 ; 4mA 标定原始值,按现场标定可调整
D126 = 8 ; 滤波系数
D127~D128 = FLOAT(0.05) ; 死区 0.05
RD3A K1 D120 D210
结果:AI1 的原始值先限制在 D125=819 到 D124=4095 范围内;
原始值小于等于 819 时输出 0.0,大于等于 4095 时输出 10.0。
中间值按比例换算:
输出 = (原始值 - 819) * 10.0 / (4095 - 819),换算后的 float 写入 D210~D211。
RD3A指令实例:
上电时将整数格式的 AD 零点值存入 D2035,作为整数换算的下限参考上电时将整数格式的 AD 零点值存入 D2035,作为整数换算的下限参考上电时将整数格式的 AD 零点值存入 D2035,作为整数换算的下限参考上电时将整数格式的 AD 零点值存入 D2035,作为整数换算的下限参考上电时将整数格式的 AD 满量程值存入 D2034,适配整数型量程换算逻辑,整数运算速度更快。上电时将整数格式的 AD 满量程值存入 D2034,适配整数型量程换算逻辑,整数运算速度更快。上电时将整数格式的 AD 满量程值存入 D2034,适配整数型量程换算逻辑,整数运算速度更快。上电时将整数格式的 AD 满量程值存入 D2034,适配整数型量程换算逻辑,整数运算速度更快。上电时将模拟量零点 AD 值 0.0 存入 D2032 双字,作为浮点法工程量换算的 AD 下限参数。上电时将模拟量零点 AD 值 0.0 存入 D2032 双字,作为浮点法工程量换算的 AD 下限参数。上电时将模拟量零点 AD 值 0.0 存入 D2032 双字,作为浮点法工程量换算的 AD 下限参数。上电时将模拟量零点 AD 值 0.0 存入 D2032 双字,作为浮点法工程量换算的 AD 下限参数。上电时将模拟量满程AD值4095.0存入D2030双字,作为后续浮点法,工程换算的AD上限参数上电时将模拟量满程AD值4095.0存入D2030双字,作为后续浮点法,工程换算的AD上限参数上电时将模拟量满程AD值4095.0存入D2030双字,作为后续浮点法,工程换算的AD上限参数上电时将模拟量满程AD值4095.0存入D2030双字,作为后续浮点法,工程换算的AD上限参数作为浮点法换算的工程量零点基准(0.0MPa、0.0℃),和 D2030、D2032 的 AD 基准配对,完成高精度的浮点工程量换算。作为浮点法换算的工程量零点基准(0.0MPa、0.0℃),和 D2030、D2032 的 AD 基准配对,完成高精度的浮点工程量换算。作为浮点法换算的工程量零点基准(0.0MPa、0.0℃),和 D2030、D2032 的 AD 基准配对,完成高精度的浮点工程量换算。作为浮点法换算的工程量零点基准(0.0MPa、0.0℃),和 D2030、D2032 的 AD 基准配对,完成高精度的浮点工程量换算。工程量=(当前AD值-AD零点)×工程量满程/(AD满程-AD)零点)工程量=(当前AD值-AD零点)×工程量满程/(AD满程-AD)零点)工程量=(当前AD值-AD零点)×工程量满程/(AD满程-AD)零点)工程量=(当前AD值-AD零点)×工程量满程/(AD满程-AD)零点)PLC运行时,持续从0号模拟量模块读取指定通道的原始AD数值,存入寄存器组,为后续工程量换算提供原始数据。PLC运行时,持续从0号模拟量模块读取指定通道的原始AD数值,存入寄存器组,为后续工程量换算提供原始数据。PLC运行时,持续从0号模拟量模块读取指定通道的原始AD数值,存入寄存器组,为后续工程量换算提供原始数据。PLC运行时,持续从0号模拟量模块读取指定通道的原始AD数值,存入寄存器组,为后续工程量换算提供原始数据。
3.8.3 WR3A 写入模拟量
| 项目 | 使用方式 |
|---|---|
| 指令格式 | WD3A K通道 D配置起始 S设定值 |
| 通道 | K0=DA0,写入 D8112;K1=DA1,写入 D8113。 |
| 配置起始 | 与 RD3A 使用相同的 9 字配置区,例如 D100。 |
| 设定值 | float 工程量来源,可为 D 寄存器浮点值;指令会按工程量上下限夹紧。 |
| 输出 | 工程量映射为 0~4095 DAC 原始值,最终写入对应 DA 通道。 |
- WR3A 示例 1:DA0 输出 0100.0 对应 04095
配置区 D100:
D100~D101 = FLOAT(100.0)
D102~D103 = FLOAT(0.0)
D104 = 4095
D105 = 0
D106 = 1 ; 不滤波
D107~D108 = FLOAT(0.0) ; 不启用死区
D300~D301 = FLOAT(50.0) ; 设定输出 50.0
WD3A K0 D100 D300
结果:DA0 输出约 2048 原始值,当前工程中写入 D8112,由 DAC 轮询任务送到 DAC 通道 1。
- WR3A 示例 2:DA1 输出 0~10.0 工程量
配置区 D120:
D120~D121 = FLOAT(10.0)
D122~D123 = FLOAT(0.0)
D124 = 4095
D125 = 0
D126 = 3 ; 输出变化做平滑
D127~D128 = FLOAT(0.02) ; 小于 0.02 的变化保持不动
D320~D321 = FLOAT(2.5) ; 设定输出 2.5
WD3A K1 D120 D320
Dead=0 关闭死区;大于 0 时,设定值小幅波动不改变 DA 输出Dead=0 关闭死区;大于 0 时,设定值小幅波动不改变 DA 输出Dead=0 关闭死区;大于 0 时,设定值小幅波动不改变 DA 输出Dead=0 关闭死区;大于 0 时,设定值小幅波动不改变 DA 输出规则:N=1 关闭滤波;N>1 开启均值滤波,数值越大滤波越强规则:N=1 关闭滤波;N>1 开启均值滤波,数值越大滤波越强规则:N=1 关闭滤波;N>1 开启均值滤波,数值越大滤波越强规则:N=1 关闭滤波;N>1 开启均值滤波,数值越大滤波越强配置DA输出物理下限配置DA输出物理下限配置DA输出物理下限配置DA输出物理下限配置DA输出物理上限配置DA输出物理上限配置DA输出物理上限配置DA输出物理上限WR3A示例如图:
整体功能:读取 D2040 的目标数值,结合 D2030 量程、滤波、死区参数,自动换算输出对应模拟量电压 / 电流