气缸是工业现场常用的一种执行机构。它以压缩空气为动力,有两个进气孔。通过控制进气和排气,推动气缸的往复运动。一些安全系数较高的油缸还配备了抱闸装置。默认情况下,抱闸关闭,气缸无法移动。供给压缩空气后,抱闸打开,气缸可以自由移动。在今天的文章中,我们将编写一个功能块——FB5022_Cyclinder来控制气缸的往复运动。也可用于液压缸的类似情况。
功能块FB5022_Cyclinder 具有以下特点:
支持自动模式和维护(手动)模式。自动模式下,气缸会运动指定的时间,直到时间到达或触发正反转位置反馈信号;维护(手动)模式下,气缸运动跟随按钮信号,按下按钮运动,松开按钮停止;
当气缸运动时,会产生制动释放信号;
当正向/反向请求或正向/反向到位信号同时触发时,会报错;
接下来我们编写函数。
打开Portal开发环境,新建功能块FB5022_Cyclinder,添加变量如下图所示:
在:
输入参数:
release:布尔值,1=启用功能块;
reqForward:Boolean,自动模式下请求转发;
reqBackward:Boolean,自动模式下请求返回;
btnForward:布尔值,维护(手动)模式下请求转发;
btnBackward:布尔值,请求返回维护(手动)模式;
timeForward:时间类型,自动模式下前进的最长时间;
timeBackward:时间类型,自动模式下最长时间后退;
mainMode:布尔值,1=维护/手动模式;
FeedbackForward:布尔类型,前向反馈信号;
FeedbackBackward:布尔类型,返回到位反馈信号;
输出参数:
向前:布尔值,向前;
向后:布尔值,向后;
制动:布尔型,制动输出控制(1=释放);
error:布尔类型,错误(1=错误)
静态变量和临时变量:
IEC_Timer_TP_Forward和IEC_Timer_TP_Backward是添加定时器指令时自动生成的多个背景数据块变量;
其他变量请参见图中解释;
为了方便阅读,我将代码分为三个区域:自动、维护(手动)和控制,请参见下图:
在OB1中调用该功能块进行测试,如下图:
审稿人:刘庆