龙空技术网

[信捷PLC] 信捷PLC之C函数编程(三)

PLC技术玩 108

前言:

目前各位老铁们对“c语言值传递函数怎么写”大概比较重视,小伙伴们都需要学习一些“c语言值传递函数怎么写”的相关内容。那么小编同时在网摘上收集了一些对于“c语言值传递函数怎么写””的相关资讯,希望你们能喜欢,你们快快来了解一下吧!

前两篇文章,我们介绍了如何新建一个函数功能块文件。也介绍了如何使用函数功能块实现温度检测上限、下限等的报警输出。

这一篇来详细介绍函数体的W和B是什么意思,以及我们如何使用它。

首先,新建一个函数功能块,命名为FUNC1,在FUNC1中输入以下代码,如图所示:

代码内容见下文,也可以直接复制到程序中使用。

void FUNC1 ( WORD W, BIT B )

{

#define SysRegAddr_HD_D_HM_M

if ( B[0] == true )

{

W[0] = 10;

}

else

{

W[0] = 9;

}

if ( B[1] == true )

{

W[1] = 20;

}

else

{

W[1] = 19;

}

}

格式化及编译后,程序不报错。如下图所示:

函数如下所示:void FUNC1 ( WORD W, BIT B )

其中的void为函数返回为空

FUNC1为我们定义的函数名称

其中的WORD W是形参,表示要传递给函数一个WORD类型的参数,即16位字类型的参数。

其中的BIT B也是形参,表示要传递给函数一个BIT类型的参数,即BOOL类型的参数。

100篇原创文章【公众号-我的原创】

EPLAN部件库下载链接

EPLAN激活教程

西门子作为OPC UA服务端

西门子制作HMI页面切换效果

在函数中我们使用W[0]、W[1]、W[2]、W[3]等,表示的是传给函数的WORD类型的寄存器往后顺延的地址。

例如:我将FUNC1的函数引用到主程序中,使用的是如下图所示的实现方式

LD SM0

FUNC1 D30 M10实现

则刚刚所讲述的在FUNC1中的W[0]、W[1]、W[2]、W[3]对应程序D寄存器的D30、D31、D32、D33等。

若调用的函数的第一个形参(指的是WORD W)给定的是D55,则W[0]、W[1]、W[2]、W[3]等分别对应的是D55、D56、D57、D58等等。

在函数中void FUNC1 ( WORD W, BIT B )中的BIT B 也是和WORD W具有相同的使用方式。

在程序中,将BIT B传入M10,则在FUNC1函数中使用的B[0]、B[1]、B[2]、B[3]等依次对应的寄存器M10、M11、M12、M13等。

但是需要注意的是,这款编程软件使用C函数编程,是区分大小写的例如,将W[0]=30;写成w[0]=30;(W被小写),则程序编译时候会报错。

信捷PLC之C函数编程(三)

(出处: PLC论坛-全力打造可编程控制器专业技术论坛)

#编程十年是一种什么样的感受#

标签: #c语言值传递函数怎么写