近期在程序开发中使用C语言写POU比较多,发现不同参数在使用时容易混乱,造成报错或者bug,考虑到很多同事可能也有潜在需求,所以将参数的使用与写法举例整理了一下。如下:
首先是FB的
//首先是FB的
void POU_1_BODY(POU_1* self)//
{
#define SysRegAddr_HD_D_HM_M
/*
VAR VAR0_VAR INT FB内部变量
VAR_INPUT VAR0_INPUT INT FB输入参数(非指针类型)
VAR_OUTPUT VAR0_OUTPUT INT FB输出参数(非指针类型)
VAR_INOUT VAR0_INOUT INT FB输入输出参数(指针类型)
VAR_INOUT VAR1_INOUT INT FB输入输出参数(指针类型)
*/
self->VAR0_OUTPUT = self->VAR0_VAR; //将VAR类型变量赋值给VAR OUTPUT类型变量
self->VAR0_OUTPUT = self->VAR0_INPUT; //将VAR INPUT类型变量赋值给VAR OUTPUT类型变量
*self->VAR0_INOUT = self->VAR0_VAR; //将VAR类型变量赋值给VAR IN OUT类型变量
*self->VAR0_INOUT = self->VAR0_INPUT; //将VAR INPUT类型变量赋值给VAR IN OUT类型变量
self->VAR0_OUTPUT = *self->VAR0_INOUT; //将VAR IN OUT类型变量赋值给VAR OUTPUT类型变量
self->VAR1_INOUT = self->VAR0_INOUT; //将VAR IN OUT类型变量赋值给VAR IN OUT类型变量
}
//然后是FC的
void POU_2(INT VAR0_INPUT, INT* VAR0_INOUT, INT* VAR1_INOUT, INT* VAR0_OUTPUT)
{
#define SysRegAddr_HD_D_HM_M
/*
VAR_INPUT VAR0_INPUT INT FC输入参数(非指针类型)
VAR_OUTPUT VAR0_OUTPUT INT FC输出参数(指针类型)
VAR_INOUT VAR0_INOUT INT FC输入输出参数(指针类型)
VAR_INOUT VAR1_INOUT INT FC输入输出参数(指针类型)
*/
int var0;
VAR0_OUTPUT = var0; //将普通变量赋值给VAR OUTPUT类型变量
VAR0_OUTPUT = VAR0_INPUT; //将VAR INPUT类型变量赋值给VAR OUTPUT类型变量
*VAR0_INOUT = var0; //将普通变量赋值给VAR IN OUT类型变量
*VAR0_INOUT = VAR0_INPUT; //将VAR INPUT类型变量赋值给VAR IN OUT类型变量
VAR0_OUTPUT = *VAR0_INOUT; //将VAR IN OUT类型变量赋值给VAR OUTPUT类型变量
VAR1_INOUT = VAR0_INOUT; //将VAR IN OUT类型变量赋值给VAR IN OUT类型变量
}