信捷POU_C语言参数写法举例

文章介绍了在C语言编程中,如何正确处理POU(过程对象单元)的参数,包括FB和FC函数中的输入、输出和指针参数赋值,以减少错误和bug。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

近期在程序开发中使用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类型变量
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贰佰肆拾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值