使用信捷的C函数功能块,完成3路温度传感器的“温度上限值”、“温度上上限值”、“温度下限值”、“温度下下限值”共计12路的信息报警。

使用信捷的C函数功能块,完成3路温度传感器的“温度上限值”、“温度上上限值”、“温度下限值”、“温度下下限值”共计12路的信息报警。

假设我们系统中有3个温度传感器,用于检测3组实时温度值。当其中任意一组温度值低于“温度下限值”、“温度下下限值”或者高于“温度上限值”、“温度上上限值”,就进行相关标志位报警。

如图所示,新建“函数功能块”命名为FUNC1

打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片

在D寄存区定义3组传感器的变量值,用于当作报警提醒设定值。如下图所示

打开网易新闻 查看精彩图片

在M寄存区定义3组标志位,用于当作报警提醒标志位。如下图所示

打开网易新闻 查看精彩图片

在FUNC1功能块中,编写以下代码。

打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片

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[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循环用于判断传感器实际温度是否低于下限及下下限。

程序编写完成后,点击“格式化”按钮和“编译按钮”,程序会自动对齐。并且可以查看编译是否有错误。

打开网易新闻 查看精彩图片

当程序存在错误,编译后会在输出框中提示错误信息。若程序不存在错误,则编译无任何提示(这个软件好歹提示个“编译完成”四个字吧!!!要不然感觉不舒服)

打开网易新闻 查看精彩图片

将这个功能块在程序中调用,即可实现监控报警。

打开网易新闻 查看精彩图片

合理使用信捷的C函数功能块,可以大大的减少梯形图程序数量。使程序更加简洁。