S71200几个SCL编写的功能块.docx

上传人:b****8 文档编号:9125264 上传时间:2023-02-03 格式:DOCX 页数:11 大小:40.41KB
下载 相关 举报
S71200几个SCL编写的功能块.docx_第1页
第1页 / 共11页
S71200几个SCL编写的功能块.docx_第2页
第2页 / 共11页
S71200几个SCL编写的功能块.docx_第3页
第3页 / 共11页
S71200几个SCL编写的功能块.docx_第4页
第4页 / 共11页
S71200几个SCL编写的功能块.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

S71200几个SCL编写的功能块.docx

《S71200几个SCL编写的功能块.docx》由会员分享,可在线阅读,更多相关《S71200几个SCL编写的功能块.docx(11页珍藏版)》请在冰豆网上搜索。

S71200几个SCL编写的功能块.docx

S71200几个SCL编写的功能块

1200 AI数据采集功能块  

FUNCTION_BLOCK"AI_convert"

{S7_Optimized_Access:

='FALSE'}

AUTHOR:

Tyfixn

VERSION:

0.1

  VAR_INPUT 

   _inAW{ExternalAccessible:

='False';ExternalVisible:

='False';ExternalWritable:

='False'}:

Int;  //AI输入采集端,对应硬件地址

   _inHI:

Real:

=100.0;  //AI量程上限

   _inLi:

Real;  //AI量程下限

   _AlarmHiSP:

Real:

=90.0;  //AI报警上限

   _AlarmLiSP:

Real:

=0.0;  //AI报警下限

   _AlarmHHiSP:

Real:

=95.0;  //AI报警上上限

   _AlarmLLiSP:

Real;  //AI报警下下限

  END_VAR

  VAR_OUTPUT 

   _out:

Real;  //AI转换输出值,PV值

   _Alarm_H:

Bool;  //高报

   _Alarm_L:

Bool;  //低报

   _Alarm_HH:

Bool;  //高高报

   _Alarm_LL:

Bool;  //低低报

  END_VAR

  VAR 

   Err_Code:

Word;  //转换错误代码,word字节中的第一位高报,第二位低报,第三位高高报,第四位底底报,第五位转发错误。

其中转换错误代码是Err_Code.

   Err:

Bool;  //报警数字输出

   _out_N:

Real;  //输出0-1之间的比例,

  END_VAR

  VAR_TEMP 

   "Var":

Word;

  END_VAR

 

BEGIN

#_out_N:

=NORM_X(MIN:

=0,VALUE:

=#_inAW,MAX:

=27648);//将采集的信号缩放到0-1之间

#_out:

=SCALE_X(MIN:

=#_inLi,VALUE:

=#_out_N,MAX:

=#_inHI);//将采集的信号缩放到需要的量程范围内。

//当上上限小于上限时,更改上上限值为上限值。

//当下下限大于下限时,更改下下限值为下限值。

IF#_AlarmHHiSP<#_AlarmHiSPTHEN

  #_AlarmHHiSP:

=#_AlarmHiSP;

END_IF;

IF#_AlarmLLiSP>#_AlarmLiSPTHEN

  #_AlarmLLiSP:

=#_AlarmLiSP;

END_IF;

IF#_out>#_AlarmHiSPTHEN         //高限报警触发。

  #_Alarm_H:

=1;

  #Err_Code:

=#Err_CodeOR16#1;

ELSE

  #_Alarm_H:

=0;

  #Err_Code:

=#Err_CodeAND16#fe;

END_IF;

IF#_out<#_AlarmLiSPTHEN         //低限报警触发。

  #_Alarm_L:

=1;

  #Err_Code:

=#Err_CodeOR16#2;

ELSE

  #_Alarm_L:

=0;

  #Err_Code:

=#Err_CodeAND16#fd;

END_IF;

IF#_out>#_AlarmHHiSPTHEN         //高高限报警触发。

  #_Alarm_HH:

=1;

  #Err_Code:

=#Err_CodeOR16#4;

ELSE

  #_Alarm_HH:

=0;

  #Err_Code:

=#Err_CodeAND16#fb;

END_IF;

IF#_out<#_AlarmLLiSPTHEN         //低低限报警触发。

  #_Alarm_LL:

=1;

  #Err_Code:

=#Err_CodeOR16#8;

ELSE

  #_Alarm_LL:

=0;

  #Err_Code:

=#Err_CodeAND16#f7;

END_IF;

IF#Var<>0THEN           //自带的Scale功能块运算错误报警

  #Err_Code:

=#Err_CodeOR16#10;

ELSE

  #Err_Code:

=#Err_CodeAND16#ef;

END_IF;

IF#Err_Code<>0THEN

  #Err:

=1;

ELSE

  #Err:

=0;

END_IF;

//word字节中的第一位高报,第二位低报,第三位转换错误,第四位高高报警,第五位低低报警。

END_FUNCTION_BLOCK

 

2、

1500AI采集功能块

FUNCTION_BLOCK"AI_convert"

{S7_Optimized_Access:

='FALSE'}

AUTHOR:

Tyfixn

VERSION:

0.1

  VAR_INPUT 

   _inAW:

Int;  //AI输入采集端,对应硬件地址

   _inLi:

Real;  //AI量程下限

   _inHI:

Real:

=100.0;  //AI量程上限

   _AlarmLiSP:

Real:

=0.0;  //AI报警下限

   _AlarmHiSP:

Real:

=95.0;  //AI报警上限

   _AlarmLLiSP:

Real;  //AI报警下下限

   _AlarmHHiSP:

Real;  //AI报警上上限

  END_VAR

  VAR_OUTPUT 

   _out:

Real;  //AI转换输出值,PV值

   _Alarm_L:

Bool;  //低报

   _Alarm_H:

Bool;  //高报

   _Alarm_LL:

Bool;  //低低报

   _Alarm_HH:

Bool;  //高高报

  END_VAR

  VAR 

   Err_Code:

Word;  //转换错误代码,word字节中的第一位高报,第二位低报,第三位转换错误。

其中转换错误代码是Err_Code.

   Err:

Bool;  //报警数字输出

   _out_N:

Real;  //输出0-1之间的比例,

  END_VAR

  VAR_TEMP 

   "Var":

Word;

  END_VAR

 

BEGIN

#Var:

=SCALE(IN:

=#_inAW,HI_LIM:

=1.0,LO_LIM:

=0.0,BIPOLAR:

=0,OUT=>#_out_N);      //将采集的信号缩放到0-1之间

#Var:

=SCALE(IN:

=#_inAW,HI_LIM:

=#_inHI,LO_LIM:

=#_inLi,BIPOLAR:

=0,OUT=>#_out);    //将采集的信号缩放到需要的量程范围内。

IF#_out>#_AlarmHiSPTHEN         //高限报警触发。

  #_Alarm_H:

=1;

  #Err_Code:

=#Err_CodeOR16#1;

ELSE

  #_Alarm_H:

=0;

  #Err_Code:

=#Err_CodeAND16#fe;

END_IF;

IF#_out<#_AlarmLiSPTHEN         //低限报警触发。

  #_Alarm_L:

=1;

  #Err_Code:

=#Err_CodeOR16#2;

ELSE

  #_Alarm_L:

=0;

  #Err_Code:

=#Err_CodeAND16#fd;

END_IF;

IF#Var<>0THEN           //自带的Scale功能块运算错误报警

  #Err_Code:

=#Err_CodeOR16#4;

ELSE

  #Err_Code:

=#Err_CodeAND16#fb;

END_IF;

IF#_out>#_AlarmHHiSPTHEN         //高高限报警触发。

  #_Alarm_HH:

=1;

  #Err_Code:

=#Err_CodeOR16#8;

ELSE

  #_Alarm_HH:

=0;

  #Err_Code:

=#Err_CodeAND16#f7;

END_IF;

IF#_AlarmHHiSP<#_AlarmHiSPTHEN

  #_AlarmHHiSP:

=#_AlarmHiSP;

END_IF;

IF#_out<#_AlarmLLiSPTHEN         //低低限报警触发。

  #_Alarm_LL:

=1;

  #Err_Code:

=#Err_CodeOR16#10;

ELSE

  #_Alarm_LL:

=0;

  #Err_Code:

=#Err_CodeAND16#ef;

END_IF;

IF#_AlarmLLiSP>#_AlarmLiSPTHEN

  #_AlarmLLiSP:

=#_AlarmLiSP;

END_IF;

IF#Err_Code<>0THEN

  #Err:

=1;

ELSE

  #Err:

=0;

END_IF;

//word字节中的第一位高报,第二位低报,第三位转换错误,第四位高高报警,第五位低低报警。

END_FUNCTION_BLOCK

3、

RTD采集功能块

FUNCTION_BLOCK"RTD_Convert"

{S7_Optimized_Access:

='FALSE'}

AUTHOR:

Tyfixn

VERSION:

0.1

  VAR_INPUT 

   _inAW:

Int:

=0;  //RTD输入采集端,对应硬件地址

   _inLi:

Real:

=0.0;  //RTD量程下限,供上位机使用

   _inHI:

Real:

=100.0;  //RTD量程上限,供上位机使用

   _AlarmLiSP:

Real:

=0.0;  //RTD报警下限

   _AlarmHiSP:

Real:

=90.0;  //RTD报警上限

   _AlarmLLiSP:

Real:

=0.0;  //RTD报警下下限

   _AlarmHHiSP:

Real:

=95.0;  //RTD报警上上限

  END_VAR

  VAR_OUTPUT 

   _out:

Real;  //AI转换输出值,PV值

   _Alarm_L:

Bool;  //低报

   _Alarm_H:

Bool;  //高报

   _Alarm_LL:

Bool;  //低低报

   _Alarm_HH:

Bool;  //高高报

  END_VAR

  VAR 

   Err_Code:

Word;  //转换错误代码

   Err:

Bool;  //word字节中的第一位高报,第二位低报,第三位转换错误。

其中转换错误代码是Err_Code.

   _out_N:

Real;  //将输出转换为0-1之间,供PID回路使用。

  END_VAR

  VAR_TEMP 

   "Var":

Word;

  END_VAR

 

BEGIN

#_out:

=INT_TO_REAL(#_inAW)/10;    //将温度采集的信号直接除以10,即可得到实际的温度数值。

#_out_N:

=#_out/#_inHI;

IF#_out>#_AlarmHiSPTHEN         //高限报警触发。

  #_Alarm_H:

=1;

  #Err_Code:

=#Err_CodeOR16#1;

ELSE

  #_Alarm_H:

=0;

  #Err_Code:

=#Err_CodeAND16#fe;

END_IF;

IF#_out<#_AlarmLiSPTHEN         //低限报警触发。

  #_Alarm_L:

=1;

  #Err_Code:

=#Err_CodeOR16#2;

ELSE

  #_Alarm_L:

=0;

  #Err_Code:

=#Err_CodeAND16#fd;

END_IF;

IF#_out>#_AlarmHHiSPTHEN         //高高限报警触发。

  #_Alarm_HH:

=1;

  #Err_Code:

=#Err_CodeOR16#4;

ELSE

  #_Alarm_HH:

=0;

  #Err_Code:

=#Err_CodeAND16#fb;

END_IF;

IF#_out<#_AlarmLLiSPTHEN         //低低限报警触发。

  #_Alarm_LL:

=1;

  #Err_Code:

=#Err_CodeOR16#8;

ELSE

  #_Alarm_LL:

=0;

  #Err_Code:

=#Err_CodeAND16#f7;

END_IF;

IF#Var<>0THEN           //自带的Scale功能块运算错误报警

  #Err_Code:

=#Err_CodeOR16#10;

ELSE

  #Err_Code:

=#Err_CodeAND16#ef;

END_IF;

IF#Err_Code<>0THEN

  #Err:

=1;

ELSE

  #Err:

=0;

END_IF;

//word字节中的第一位高报,第二位低报,第三位转换错误,第四位高高报警,第五位低低报警。

END_FUNCTION_BLOCK

 

使用方法:

将文本复制到记事本里,另存为后缀为“xxx.scl"的文件。

再TIA中使用:

外部源文件添加同时生成块文件

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学研究 > 教学案例设计

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1