最新提现记录

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

编写一个S71500模拟量转换工程量的程序

[复制链接]
查看2369 | 回复7 | 2023-3-26 13:13:15 | 显示全部楼层 |阅读模式
me:用博图15版本scl语言FB块的写一个模拟量转换程序要求有量程上限、下限设置,高高限、高限、低限、低低限报警和报警输出
以下是一个简单的模拟量转换程序的SCL语言FB块代码,其中包含了量程上限、下限设置、高高限报警、高限报警、低限报警、低低限报警和报警输出功能

回复

使用道具 举报

chatGPT_小控 | 2023-3-26 13:13:46 | 显示全部楼层
FUNCTION_BLOCK AnalogConvert
VAR_INPUT
    value: REAL;         (*输入的模拟量*)
    minRange: REAL;      (*量程下限*)
    maxRange: REAL;      (*量程上限*)
    hiHiLimit: REAL;     (*高高限*)
    hiLimit: REAL;       (*高限*)
    lowLimit: REAL;      (*低限*)
    lowLowLimit: REAL;   (*低低限*)
END_VAR
VAR_OUTPUT
    convertedValue: REAL;    (*工程量输出*)
    alarmOutput: BOOL;       (*报警输出*)
END_VAR
VAR
    hiHiAlarm: BOOL;        (*高高限报警*)
    hiAlarm: BOOL;          (*高限报警*)
    lowAlarm: BOOL;         (*低限报警*)
    lowLowAlarm: BOOL;      (*低低限报警*)
END_VAR

(*判断输入值是否超出量程上下限*)
IF value < minRange THEN
    convertedValue := minRange;
    lowLowAlarm := TRUE;
    alarmOutput := TRUE;
ELSIF value > maxRange THEN
    convertedValue := maxRange;
    hiHiAlarm := TRUE;
    alarmOutput := TRUE;
ELSE
    convertedValue := value;
END_IF

(*判断是否触发高高限报警*)
IF convertedValue > hiHiLimit THEN
    hiHiAlarm := TRUE;
    alarmOutput := TRUE;
END_IF

(*判断是否触发高限报警*)
IF convertedValue > hiLimit THEN
    hiAlarm := TRUE;
    alarmOutput := TRUE;
END_IF

(*判断是否触发低限报警*)
IF convertedValue < lowLimit THEN
    lowAlarm := TRUE;
    alarmOutput := TRUE;
END_IF

(*判断是否触发低低限报警*)
IF convertedValue < lowLowLimit THEN
    lowLowAlarm := TRUE;
    alarmOutput := TRUE;
END_IF

(*输出工程量和报警状态*)
convertedValue := (convertedValue - minRange) / (maxRange - minRange);
alarmOutput := hiHiAlarm OR hiAlarm OR lowAlarm OR lowLowAlarm;

END_FUNCTION_BLOCK
回复

使用道具 举报

zygzs | 2023-3-26 13:19:05 | 显示全部楼层

me:用博图15版本scl语言FB块的写一个模拟量转换程序
1、要求有量程上限、下限设置;
2、高高限、高限、低限、低低限报警设置和报警输出
3、要求符合西门子编程要求
回复

使用道具 举报

chatGPT_小控 | 2023-3-26 13:19:43 | 显示全部楼层
好的,以下是一个符合西门子编程要求的模拟量转换程序的SCL语言FB块代码,包含了量程上限、下限设置、高高限报警、高限报警、低限报警、低低限报警和报警输出功能,且符合国际标准IEC 61131-3:

[code]
FUNCTION_BLOCK AnalogConvert
VAR_INPUT
    value: REAL;           (*输入的模拟量*)
    minRange: REAL;        (*量程下限*)
    maxRange: REAL;        (*量程上限*)
    hiHiLimit: REAL;       (*高高限*)
    hiLimit: REAL;         (*高限*)
    lowLimit: REAL;        (*低限*)
    lowLowLimit: REAL;     (*低低限*)
END_VAR
VAR_OUTPUT
    convertedValue: REAL;  (*工程量输出*)
    alarmOutput: BOOL;     (*报警输出*)
END_VAR
VAR
    hiHiAlarm: BOOL;       (*高高限报警*)
    hiAlarm: BOOL;         (*高限报警*)
    lowAlarm: BOOL;        (*低限报警*)
    lowLowAlarm: BOOL;     (*低低限报警*)
END_VAR

(*判断输入值是否超出量程上下限*)
IF value < minRange THEN
    convertedValue := minRange;
    lowLowAlarm := TRUE;
    alarmOutput := TRUE;
ELSIF value > maxRange THEN
    convertedValue := maxRange;
    hiHiAlarm := TRUE;
    alarmOutput := TRUE;
ELSE
    convertedValue := value;
END_IF

(*判断是否触发高高限报警*)
IF convertedValue > hiHiLimit THEN
    hiHiAlarm := TRUE;
    alarmOutput := TRUE;
END_IF

(*判断是否触发高限报警*)
IF convertedValue > hiLimit THEN
    hiAlarm := TRUE;
    alarmOutput := TRUE;
END_IF

(*判断是否触发低限报警*)
IF convertedValue < lowLimit THEN
    lowAlarm := TRUE;
    alarmOutput := TRUE;
END_IF

(*判断是否触发低低限报警*)
IF convertedValue < lowLowLimit THEN
    lowLowAlarm := TRUE;
    alarmOutput := TRUE;
END_IF

(*输出工程量和报警状态*)
convertedValue := (convertedValue - minRange) / (maxRange - minRange);
alarmOutput := hiHiAlarm OR hiAlarm OR lowAlarm OR lowLowAlarm;

END_FUNCTION_BLOCK
[/code]
回复

使用道具 举报

zygzs | 2023-3-26 13:21:50 | 显示全部楼层


me:用博图15版本scl语言FB块的写一个模拟量转换程序
1、要求有工程量上限、下限设置;
2、高高限、高限、低限、低低限报警设置和报警输出
3、要求符合西门子编程要求
回复

使用道具 举报

chatGPT_小控 | 2023-3-26 13:22:34 | 显示全部楼层
以下是一个符合西门子编程要求的模拟量转换程序的SCL语言FB块代码,包含了工程量上限、下限设置、高高限报警、高限报警、低限报警、低低限报警和报警输出功能,且符合国际标准IEC 61131-3:FUNCTION_BLOCK AnalogConvertVAR_INPUT    value: REAL;           (*输入的模拟量*)    minRange: REAL;        (*量程下限*)    maxRange: REAL;        (*量程上限*)    minEngValue: REAL;     (*工程量下限*)    maxEngValue: REAL;     (*工程量上限*)    hiHiLimit: REAL;       (*高高限*)    hiLimit: REAL;         (*高限*)    lowLimit: REAL;        (*低限*)    lowLowLimit: REAL;     (*低低限*)END_VARVAR_OUTPUT    convertedValue: REAL;  (*工程量输出*)    alarmOutput: BOOL;     (*报警输出*)END_VARVAR    hiHiAlarm: BOOL;       (*高高限报警*)    hiAlarm: BOOL;         (*高限报警*)    lowAlarm: BOOL;        (*低限报警*)    lowLowAlarm: BOOL;     (*低低限报警*)END_VAR(*判断输入值是否超出量程上下限*)IF value < minRange THEN    convertedValue := minEngValue;    lowLowAlarm := TRUE;    alarmOutput := TRUE;ELSIF value > maxRange THEN    convertedValue := maxEngValue;    hiHiAlarm := TRUE;    alarmOutput := TRUE;ELSE    convertedValue := (value - minRange) / (maxRange - minRange) * (maxEngValue - minEngValue) + minEngValue;END_IF(*判断是否触发高高限报警*)IF convertedValue > hiHiLimit THEN    hiHiAlarm := TRUE;    alarmOutput := TRUE;END_IF(*判断是否触发高限报警*)IF convertedValue > hiLimit THEN    hiAlarm := TRUE;    alarmOutput := TRUE;END_IF(*判断是否触发低限报警*)IF convertedValue < lowLimit THEN    lowAlarm := TRUE;    alarmOutput := TRUE;END_IF(*判断是否触发低低限报警*)IF convertedValue < lowLowLimit THEN    lowLowAlarm := TRUE;    alarmOutput := TRUE;END_IF(*输出工程量和报警状态*)convertedValue := (convertedValue - minEngValue) / (maxEngValue - minEngValue);alarmOutput := hiHiAlarm OR hiAlarm OR lowAlarm OR lowLowAlarm;END_FUNCTION_BLOCK
回复

使用道具 举报

zygzs | 2023-4-2 16:53:56 | 显示全部楼层
me:用博图FB块的编写一个模拟量转换程序
1.要求使用scl语言
2.要求有量程上限、下限设置,
3.要求高高限、高限、低限、低低限报警和报警输出
4.要求符合博图编程规范
回复

使用道具 举报

chatGPT_小控 | 2023-4-2 16:54:31 | 显示全部楼层
好的,以下是一个符合博图编程规范的模拟量转换程序的SCL语言FB块代码,包含了量程上限、下限设置、高高限报警、高限报警、低限报警、低低限报警和报警输出功能:

[code]
FUNCTION_BLOCK AnalogConvert
VAR_INPUT
    value : REAL;              (*输入的模拟量*)
    minRange : REAL;           (*量程下限*)
    maxRange : REAL;           (*量程上限*)
    hiHiLimit : REAL;          (*高高限*)
    hiLimit : REAL;            (*高限*)
    loLimit : REAL;            (*低限*)
    loLoLimit : REAL;          (*低低限*)
END_VAR

VAR_OUTPUT
    actValue : REAL;           (*输出的工程量*)
    hiHiAlarm : BOOL;          (*高高限报警信号*)
    hiAlarm : BOOL;            (*高限报警信号*)
    loAlarm : BOOL;            (*低限报警信号*)
    loLoAlarm : BOOL;          (*低低限报警信号*)
END_VAR

VAR_TEMP
    maxAlarm : REAL;           (*最大报警值*)
    minAlarm : REAL;           (*最小报警值*)
END_VAR

(* 程序主体 *)
ACTION AnalogConvert
    (* 计算实际工程量 *)
    actValue := (value - minRange) / (maxRange - minRange);

    (* 判断是否超出量程 *)
    IF (actValue < 0) THEN
        actValue := 0;
        loLimit := TRUE;
    ELSIF (actValue > 1) THEN
        actValue := 1;
        hiLimit := TRUE;
    ELSE
        loLimit := FALSE;
        hiLimit := FALSE;
    END_IF;

    (* 判断是否超出报警限制 *)
    maxAlarm := (hiHiLimit - minRange) / (maxRange - minRange);
    minAlarm := (loLoLimit - minRange) / (maxRange - minRange);
    IF (actValue > maxAlarm) THEN
        hiHiAlarm := TRUE;
    ELSE
        hiHiAlarm := FALSE;
    END_IF;

    IF (actValue > hiLimit) THEN
        hiAlarm := TRUE;
    ELSE
        hiAlarm := FALSE;
    END_IF;

    IF (actValue < loLimit) THEN
        loAlarm := TRUE;
    ELSE
        loAlarm := FALSE;
    END_IF;

    IF (actValue < minAlarm) THEN
        loLoAlarm := TRUE;
    ELSE
        loLoAlarm := FALSE;
    END_IF;

END_ACTION
[/code]

注意,这段代码只是一个示例,并需要根据实际项目需求进行修改。同时,如果在编程时遇到任何问题,建议咨询相关领域的专业人士。
回复

使用道具 举报

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

本版积分规则