单轴常用批量控制功能库V2.0.0最终版

本次更新优化了使用体验,不需要写头文件了,直接在FC里操作。

原理是一个.c文件里可以写很多函数,所以只需要在一个文件里写一个返回值为轴结构体指针、索引为参数的函数就可以了。其他POU也就是.c文件在函数调用位置前声明一下即可。同时利用条件预处理指令,现在不需要手动注释未定义/未使用的轴,只需要在宏定义处更改轴数即可,但是超出未定义的轴范围时仍然会报错。

下面是函数代码:

void A_pAxis()//无用,仅作新建.c文件存储函数用
{
	#define SysRegAddr_HD_D_HM_M
}
BMC_AXIS_REF *Axis(int index)
{
    #define num 4       //此处修改轴数量
    
    BMC_AXIS_REF *Axis_a[num];
    
    #if(num >= 1)
        Axis_a[0] = &BMC_Axis000;
    #endif
    #if(num >= 2)
        Axis_a[1] = &BMC_Axis001;
    #endif
    #if(num >= 3)
        Axis_a[2] = &BMC_Axis002;
    #endif
    #if(num >= 4)
        Axis_a[3] = &BMC_Axis003;
    #endif
    #if(num >= 5)
        Axis_a[4] = &BMC_Axis004;
    #endif
    #if(num >= 6)
        Axis_a[5] = &BMC_Axis005;
    #endif
    #if(num >= 7)
        Axis_a[6] = &BMC_Axis006;
    #endif
    #if(num >= 8)
        Axis_a[7] = &BMC_Axis007;
    #endif
    #if(num >= 9)
        Axis_a[8] = &BMC_Axis008;
    #endif
    #if(num >= 10)
        Axis_a[9] = &BMC_Axis009;
    #endif
    #if(num >= 11)
        Axis_a[10] = &BMC_Axis010;
    #endif
    #if(num >= 12)
        Axis_a[11] = &BMC_Axis011;
    #endif
    #if(num >= 13)
        Axis_a[12] = &BMC_Axis012;
    #endif
    #if(num >= 14)
        Axis_a[13] = &BMC_Axis013;
    #endif
    #if(num >= 15)
        Axis_a[14] = &BMC_Axis014;
    #endif
    #if(num >= 16)
        Axis_a[15] = &BMC_Axis015;
    #endif
    #if(num >= 17)
        Axis_a[16] = &BMC_Axis016;
    #endif
    #if(num >= 18)
        Axis_a[17] = &BMC_Axis017;
    #endif
    #if(num >= 19)
        Axis_a[18] = &BMC_Axis018;
    #endif
    #if(num >= 20)
        Axis_a[19] = &BMC_Axis019;
    #endif
    #if(num >= 21)
        Axis_a[20] = &BMC_Axis020;
    #endif
    #if(num >= 22)
        Axis_a[21] = &BMC_Axis021;
    #endif
    #if(num >= 23)
        Axis_a[22] = &BMC_Axis022;
    #endif
    #if(num >= 24)
        Axis_a[23] = &BMC_Axis023;
    #endif
    #if(num >= 25)
        Axis_a[24] = &BMC_Axis024;
    #endif
    #if(num >= 26)
        Axis_a[25] = &BMC_Axis025;
    #endif
    #if(num >= 27)
        Axis_a[26] = &BMC_Axis026;
    #endif
    #if(num >= 28)
        Axis_a[27] = &BMC_Axis027;
    #endif
    #if(num >= 29)
        Axis_a[28] = &BMC_Axis028;
    #endif
    #if(num >= 30)
        Axis_a[29] = &BMC_Axis029;
    #endif
    #if(num >= 31)
        Axis_a[30] = &BMC_Axis030;
    #endif
    #if(num >= 32)
        Axis_a[31] = &BMC_Axis031;
    #endif
    
    return Axis_a[index];
}

下面是其他POU调用函数示例:

BMC_AXIS_REF *Axis ( int );//其他.c文件中调用外部函数前声明函数
void FB_Axis_Absolute_BODY(FB_Axis_Absolute* self)//批量绝对运动FB
{
	#define SysRegAddr_HD_D_HM_M
	
    int i;
	for(i=0;i<self->Num_Of_Axis;i++)
    {
        BMC_A_MoveA_BODY ( &self->AMoveA[i] );
        self->AMoveA[i].Execute = self->ManCtrl[i].MoveAbsolute;
        self->AMoveA[i].Axis = Axis(i);//调用函数,参数为for索引i
        self->AMoveA[i].Pos = self->ManPara[i].AbsolutePosition;
        self->AMoveA[i].Vel = self->ManPara[i].Velocity;
        self->AMoveA[i].Acc = self->ManPara[i].Acceleration;
        self->AMoveA[i].Deceleration = self->ManPara[i].Deceleration;
        self->AMoveA[i].Jerk = self->ManPara[i].Jrek;
    }
}

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

贰佰肆拾

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

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

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

打赏作者

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

抵扣说明:

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

余额充值