[西门子] 95%的PLC工程师都在使用的FB

[复制链接]
查看151 | 回复0 | 2024-11-29 14:58:43 | 显示全部楼层 |阅读模式
>

对于PLC工程师来说,常用的功能块(FB)确实能够显著提升编程效率。功能块是一种预定义的、可重用的代码模块,它封装了特定的控制逻辑或算法。它们不仅提高了编程效率,还使得PLC程序更加可靠、易于理解和维护。因此,对于PLC工程师来说,熟练掌握功能块的使用和编程技巧是非常重要的。

以下是一个气缸控制功能块的ST书写方式

Cylinder_FB(

DoingInExecute:= , 

DoingOutExecute:= , 

DetectingInSensor:= , 

DetectingOutSensor:= , 

ResetButton:= , 

DoingIn=> , 

DoingOut=> , 

DoingInDown=> ,

DoingOutDown=> , 

AlarmOut=> , 

AlarmIn=> );

这个是梯形图书写方式

以下是气缸功能块的程序,可以直接COPY使用

FUNCTION_BLOCK Cylinder_FB

VAR_INPUT

DoingInExecute:BOOL;

DoingOutExecute:BOOL;

DetectingInSensor:BOOL;

DetectingOutSensor:BOOL;

ResetButton:BOOL;

END_VAR

VAR_OUTPUT

DoingIn:BOOL;

DoingOut:BOOL;

DoingInDown:BOOL;

DoingOutDown:BOOL;

AlarmOut:BOOL;

AlarmIn:BOOL;

END_VAR

VAR

DetectingInSensorTon:TON;

DetectingOutSensorTon:TON;

END_VAR

(*************************气缸缩回****************************)

IF(DoingInExecuteAND NOT DoingOutExecute AND NOT DoingOut )  THEN

DoingIn:=TRUE;

DoingOut:=FALSE;

END_IF;

DetectingInSensorTon(IN:=NOT DetectingInSensorANDDoingInANDNOT ResetButton  ,PT :=T#6S);

IF DetectingInSensorTon.Q THEN

AlarmIn:=TRUE;

ELSE

DoingIn:=FALSE;

AlarmIn:=FALSE;

END_IF;

IF  DoingIn AND DetectingInSensor  THEN

DoingInDown:=TRUE;

ELSE

DoingInDown:=FALSE;

END_IF;

(*************************气缸伸出***************************)

IF(DoingOutExecuteAND NOT DoingInExecute  AND NOT DoingIn )  THEN

DoingIn:=FALSE;

DoingOut:=TRUE;

END_IF;

DetectingOutSensorTon(IN:=NOT DetectingOutSensorAND DoingOutAND NOT ResetButton  ,PT :=T#6S);

IF DetectingOutSensorTon.Q THEN

AlarmOut:=TRUE;

ELSE

DoingOut:=FALSE;

AlarmOut:=FALSE;

END_IF;

IF  DoingOut AND DetectingOutSensor  THEN

DoingOutDown:=TRUE;

ELSE

DoingOutDown:=FALSE;

END_IF;



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则