使用信捷的C函数功能块,完成3路温度传感器的“温度上限值”、“温度上上限值”、“温度下限值”、“温度下下限值”共计12路的信息报警。
使用信捷的C函数功能块,完成3路温度传感器的“温度上限值”、“温度上上限值”、“温度下限值”、“温度下下限值”共计12路的信息报警。
假设我们系统中有3个温度传感器,用于检测3组实时温度值。当其中任意一组温度值低于“温度下限值”、“温度下下限值”或者高于“温度上限值”、“温度上上限值”,就进行相关标志位报警。
如图所示,新建“函数功能块”命名为FUNC1
![](http://dingyue.ws.126.net/2022/0822/5dbd4392j00rh0e6t001pc000cy009um.jpg)
![](http://dingyue.ws.126.net/2022/0822/792d651aj00rh0e6t0007c000c3007om.jpg)
在D寄存区定义3组传感器的变量值,用于当作报警提醒设定值。如下图所示
![](http://dingyue.ws.126.net/2022/0822/78e4d419j00rh0e6t000ec0009300c9m.jpg)
在M寄存区定义3组标志位,用于当作报警提醒标志位。如下图所示
![](http://dingyue.ws.126.net/2022/0822/5ab68390j00rh0e6t000dc0008y00anm.jpg)
在FUNC1功能块中,编写以下代码。
![](http://dingyue.ws.126.net/2022/0822/66d275aaj00rh0e6t000sc000fd00cim.jpg)
![](http://dingyue.ws.126.net/2022/0822/40d41b02j00rh0e6t000ac000qb003im.jpg)
EPLAN部件库下载链接
EPLAN激活教程
西门子作为OPC UA服务端
西门子制作HMI页面切换效果
![](http://dingyue.ws.126.net/2022/0822/a3c9d486j00rh0e6t000cc000qb0045m.jpg)
代码如下所示(可以直接复制到PLC软件中)
void FUNC1 ( WORD W, BIT B )
#define SysRegAddr_HD_D_HM_M
//当实际值大于上限值或者上上限值时,产生报警
for ( int i = 1; i < 3; i++ )
if ( W[0] > W[i] )
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循环用于判断传感器实际温度是否低于下限及下下限。
程序编写完成后,点击“格式化”按钮和“编译按钮”,程序会自动对齐。并且可以查看编译是否有错误。
![](http://dingyue.ws.126.net/2022/0822/b0f7d61fj00rh0e6t0019c000f400c1m.jpg)
当程序存在错误,编译后会在输出框中提示错误信息。若程序不存在错误,则编译无任何提示(这个软件好歹提示个“编译完成”四个字吧!!!要不然感觉不舒服)
![](http://dingyue.ws.126.net/2022/0822/dbede975j00rh0e6t0007c0008n005zm.jpg)
将这个功能块在程序中调用,即可实现监控报警。
![](http://dingyue.ws.126.net/2022/0822/39d601b0j00rh0e6t000qc000u0007km.jpg)
合理使用信捷的C函数功能块,可以大大的减少梯形图程序数量。使程序更加简洁。
热门跟贴