编写一个S71500模拟量转换工程量的程序
me:用博图15版本scl语言FB块的写一个模拟量转换程序要求有量程上限、下限设置,高高限、高限、低限、低低限报警和报警输出以下是一个简单的模拟量转换程序的SCL语言FB块代码,其中包含了量程上限、下限设置、高高限报警、高限报警、低限报警、低低限报警和报警输出功能
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
me:用博图15版本scl语言FB块的写一个模拟量转换程序
1、要求有量程上限、下限设置;
2、高高限、高限、低限、低低限报警设置和报警输出
3、要求符合西门子编程要求
好的,以下是一个符合西门子编程要求的模拟量转换程序的SCL语言FB块代码,包含了量程上限、下限设置、高高限报警、高限报警、低限报警、低低限报警和报警输出功能,且符合国际标准IEC 61131-3:
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
me:用博图15版本scl语言FB块的写一个模拟量转换程序
1、要求有工程量上限、下限设置;
2、高高限、高限、低限、低低限报警设置和报警输出
3、要求符合西门子编程要求 以下是一个符合西门子编程要求的模拟量转换程序的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 me:用博图FB块的编写一个模拟量转换程序
1.要求使用scl语言
2.要求有量程上限、下限设置,
3.要求高高限、高限、低限、低低限报警和报警输出
4.要求符合博图编程规范 好的,以下是一个符合博图编程规范的模拟量转换程序的SCL语言FB块代码,包含了量程上限、下限设置、高高限报警、高限报警、低限报警、低低限报警和报警输出功能:
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
注意,这段代码只是一个示例,并需要根据实际项目需求进行修改。同时,如果在编程时遇到任何问题,建议咨询相关领域的专业人士。
页:
[1]