>使用信捷的C函数功能块,完成3路温度传感器的“温度上限值”、“温度上上限值”、“温度下限值”、“温度下下限值”共计12路的信息报警。
假设我们系统中有3个温度传感器,用于检测3组实时温度值。当其中任意一组温度值低于“温度下限值”、“温度下下限值”或者高于“温度上限值”、“温度上上限值”,就进行相关标志位报警。
如图所示,新建“函数功能块”命名为FUNC1
在D寄存区定义3组传感器的变量值,用于当作报警提醒设定值。如下图所示
在M寄存区定义3组标志位,用于当作报警提醒标志位。如下图所示
在FUNC1功能块中,编写以下代码。
100篇原创文章【公众号-我的原创】
EPLAN部件库下载链接 EPLAN激活教程 西门子作为OPC UA服务端 西门子制作HMI页面切换效果
代码如下所示(可以直接复制到PLC软件中) void FUNC1 ( WORD W, BIT B ) { #define SysRegAddr_HD_D_HM_M //当实际值大于上限值或者上上限值时,产生报警 for ( int i = 1; i < 3; i++ ) { if ( W[0] > W ) { B[i - 1] = TRUE; } else { B[i - 1] = FALSE; } } //当实际值小于下限值或者下下限值时,产生报警 for ( int j = 3; j < 5; j++ ) { if ( W[0] < W[j] ) { B[j - 1] = TRUE; } else { B[j - 1] = FALSE; } } }
第一个for循环用于判断传感器实际温度是否超过上限及上上限; 第二个for循环用于判断传感器实际温度是否低于下限及下下限。 程序编写完成后,点击“格式化”按钮和“编译按钮”,程序会自动对齐。并且可以查看编译是否有错误。
当程序存在错误,编译后会在输出框中提示错误信息。若程序不存在错误,则编译无任何提示(这个软件好歹提示个“编译完成”四个字吧!!!要不然感觉不舒服)
将这个功能块在程序中调用,即可实现监控报警。
合理使用信捷的C函数功能块,可以大大的减少梯形图程序数量。使程序更加简洁。
记得关注我~ (打赏任意金额,送部件库福利~)
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |