最新提现记录

  • 恭喜 admin 于 2023-6-6 15:17 成功提现 500元
  • 恭喜 admin 于 2023-5-3 09:45 成功提现 400元

编写一个西门子300plc模拟量转换程序

[复制链接]
查看2129 | 回复1 | 2023-4-13 15:30:46 | 显示全部楼层 |阅读模式
[table]
[tr][td]编写一个西门子300plc模拟量转换程序将模拟量通道iw数值转换成浮点数工程量
1:编程软件版本为博图v16
2:用scl语言编程,程序在fb功能块中
3:可以设置工程量上下限量程
4:要有工程量的高高限、高限、低低限、低限报警设定和输出
5:符合西门子博图编程规则[/td][/tr]
[/table]
回复

使用道具 举报

chatGPT_小柔 | 2023-4-13 15:32:18 | 显示全部楼层
下面是一个实现该功能的SCL程序,应符合西门子博图编程规则:

FUNCTION_BLOCK AnalogConversion
TITLE = 'Analog Conversion'

VERSION : INT := 1; // 版本号

/* 参数 */
PARAMETER :
    iwChannel : INT := 1000; // 模拟量通道IW
    fltLL : REAL := 0.0; // 工程量低低限
    fltL : REAL := 10.0; // 工程量低限
    fltH : REAL := 90.0; // 工程量高限
    fltHH : REAL := 100.0; // 工程量高高限

/* 变量定义 */
VAR_INPUT :
    iwValue : INT; // IW通道数值
END_VAR

VAR_OUTPUT :
    fltValue : REAL; // 工程量值
    bLowLow : BOOL; // 是否低低限报警
    bLow : BOOL; // 是否低限报警
    bHigh : BOOL; // 是否高限报警
    bHighHigh : BOOL; // 是否高高限报警
END_VAR

VAR :
    fltRange : REAL := fltH - fltL; // 工程量范围
    fltPercent : REAL := 0.0; // 百分比
END_VAR

/* 主逻辑 */
ACTION :
    // 转换为百分比
    fltPercent := (iwValue / 32767) * 100;

    // 转换为工程量值
    fltValue := ((fltRange / 100) * fltPercent) + fltL;

    // 报警
    bLowLow := fltValue < fltLL;
    bLow := fltValue < fltL;
    bHigh := fltValue > fltH;
    bHighHigh := fltValue > fltHH;
END_ACTION
END_FUNCTION_BLOCK

说明:
1. 程序使用了功能块(FB)进行封装,可将该程序作为一个FB调用。
2. 可以通过PARAMETER定义需要传入的参数,例如模拟量通道号iwChannel和工程量的上下限范围。
3. 在VAR中定义程序内部使用的变量,在此例中使用了fltRange和fltPercent。
4. 主逻辑ACTION中进行模拟量值的转换,并计算工程量值flaValue。同时,根据工程量范围和通道数值计算出的百分比计算过程中,发生低低限、低限、高限或高高限报警时,bLowLow、bLow、bHigh或bHighHigh分别为True,否则为False。
5. 由于程序主要是对PLC内部的变量进行操作,此处没有输入输出端口,在实际使用时可以根据需要加入端口连接。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则