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

[复制链接]
查看430 | 回复0 | 2024-7-21 15:51:54 | 显示全部楼层 |阅读模式

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

这一篇来详细介绍函数体的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等等。





如何使用串口调试助手

如何使用以太网调试助手

松下    MEWTOCOL-COM协议解析

三菱    CC-Link协议解析

欧姆龙 HostLink协议解析

ModbusTCP协议解析

ModbusRTU协议解析

ModbusASCII协议解析




在函数中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被小写),则程序编译时候会报错。





免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则