编写一个西门子1500PLC模拟量转换程序
编写一个西门子1500PLC模拟量转换程序,是将模拟量通道IW数值转换成浮点数工程量,信息如下:1、编程软件版本为博途V15
2、用SCL语言编程,程序是写在FB功能块中
3、可以设置工程量上下限量程
4、要符合西门子博途编程规则
以下是一个基本的博途V15 SCL语言编写的西门子1500PLC模拟量转换程序:
FUNCTION_BLOCK FB_AnalogConversion
TITLE = \'Analog Conversion\'
VERSION : INT := 1.0; (*版本号*)
VAR_INPUT
IW_Value : INT; (*模拟量通道IW数值*)
Low_Range : REAL; (*工程量下限*)
High_Range : REAL; (*工程量上限*)
END_VAR
VAR_OUTPUT
Convert_Value : REAL; (*转换后的浮点数工程量*)
Error_Code : INT; (*错误代码*)
END_VAR
VAR
Range : REAL; (*工程量量程*)
END_VAR
(*检查工程量下限和上限*)
IF Low_Range >= High_Range THEN
Error_Code := 1; (*错误代码为1,表示工程量下限不能大于等于上限*)
ELSE
Range := High_Range - Low_Range;
Convert_Value := ((IW_Value / 32767.0) * Range) + Low_Range; (*计算转换后的工程量*)
Error_Code := 0; (*没有错误发生*)
END_IF
END_FUNCTION_BLOCK
调用该FB功能块时,只需要输入IW_Value(模拟量通道IW数值)、Low_Range(工程量下限)和High_Range(工程量上限),就可以得到Convert_Value(转换后的浮点数工程量)和Error_Code(错误代码,如果为0则没有错误发生)。需要注意的是,在编写该程序时,要遵守西门子博途编程规则,如良好的命名规范、注释等。 我像在这个程序里面再增加浮点数工程量的高高限、高限、低限、低低限报警设定和输出 以下是修改后的程序,新增了浮点数工程量的高高限、高限、低限、低低限报警设定和输出功能:
FUNCTION_BLOCK FB_AnalogConversion
TITLE = \'Analog Conversion\'
VERSION : INT := 1.1; (*版本号*)
VAR_INPUT
IW_Value : INT; (*模拟量通道IW数值*)
Low_Range : REAL; (*工程量下限*)
High_Range : REAL; (*工程量上限*)
HH_Limit : REAL; (*工程量高高限报警*)
H_Limit : REAL; (*工程量高限报警*)
L_Limit : REAL; (*工程量低限报警*)
LL_Limit : REAL; (*工程量低低限报警*)
END_VAR
VAR_OUTPUT
Convert_Value : REAL; (*转换后的浮点数工程量*)
Error_Code : INT; (*错误代码*)
HH_Alarm : BOOL; (*高高限报警*)
H_Alarm : BOOL; (*高限报警*)
L_Alarm : BOOL; (*低限报警*)
LL_Alarm : BOOL; (*低低限报警*)
END_VAR
VAR
Range : REAL; (*工程量量程*)
END_VAR
(*检查工程量下限和上限*)
IF Low_Range >= High_Range THEN
Error_Code := 1; (*错误代码为1,表示工程量下限不能大于等于上限*)
ELSE
Range := High_Range - Low_Range;
Convert_Value := ((IW_Value / 32767.0) * Range) + Low_Range; (*计算转换后的工程量*)
HH_Alarm := (Convert_Value >= HH_Limit); (*高高限报警*)
H_Alarm := (Convert_Value >= H_Limit); (*高限报警*)
L_Alarm := (Convert_Value <= L_Limit); (*低限报警*)
LL_Alarm := (Convert_Value <= LL_Limit); (*低低限报警*)
Error_Code := 0; (*没有错误发生*)
END_IF
END_FUNCTION_BLOCK
在调用该FB功能块时,需要输入IW_Value(模拟量通道IW数值)、Low_Range(工程量下限)、High_Range(工程量上限)、HH_Limit(工程量高高限报警设定)、H_Limit(工程量高限报警设定)、L_Limit(工程量低限报警设定)和LL_Limit(工程量低低限报警设定)。输出的Convert_Value是转换后的浮点数工程量,HH_Alarm为高高限报警输出(如果为TRUE表示超出了设定范围),H_Alarm为高限报警输出,L_Alarm为低限报警输出,LL_Alarm为低低限报警输出。需要注意的是,在编写该程序时,要遵守西门子博途编程规则,如良好的命名规范、注释等。
页:
[1]