前两篇文章,我们介绍了如何新建一个函数功能块文件。也介绍了如何使用函数功能块实现温度检测上限、下限等的报警输出。 这一篇来详细介绍函数体的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被小写),则程序编译时候会报错。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |