信捷PLC-C语言FB内编写轴控指令的方法举例-使能、速度控制、停止指令篇

前言-受本人水平所限,所写内容仅为本人测试过的代码以及观点,错漏之处请不吝指正。

首先在定义区内定义我们需要的函数参数,本篇省略内部FB参数引出方式等,主要介绍基本方法。

VAR_IN_OUT  Axis0      BMC_AXIS_REF //定义输入输出类型轴结构体参数,方便在FB外部指定不同的轴
VAR_IN_OUT  Start      BOOL //定义启动命令
VAR_IN_OUT  Stop       BOOL //定义停止命令
VAR         APWR0      BMC_A_Power //定义轴使能FB的背景数据块
VAR         AVELMOVE0  BMC_A_VelMove //定义轴速度控制FB背景数据块
VAR         ASTOP0     BMC_A_Stop //定义轴停止FB背景数据块

BMC_A_Power_BODY ( &self->APWR0 );//定义使能FB并关联定义好的背景数据
BMC_A_VelMove_BODY ( &self->AVELMOVE0 );//定义使能FB并关联定义好的背景数据
BMC_A_Stop_BODY ( &self->AStop0 );//定义使能FB并关联定义好的背景数据

self->APWR0.Axis = self->Axis0;//使能FB背景数据内的参数Axis关联上面定义的FB参数Axis0
self->AVELMOVE0.Axis = self->Axis0;//速度控制FB背景数据内的参数Axis关联上面定义的FB参数Axis0
self->ASTOP0.Axis = self->Axis0;//停止FB背景数据内的参数Axis关联上面定义的FB参数Axis0

self->APWR0.Enable = 1;//使能指令FB背景数据结构体使能信号(bool型)写1即可使能

if(*self->Start)//如果启动信号为1(IN_OUT类型数据在引用时需加指针*,轴除外)
{
	self->AVELMOVE0.Execute = 1;//速度控制指令FB背景数据结构体启动信号写1
	self->AStop0.Execute = 0;//停止指令FB背景数据结构体启动信号写0
}
if(*self->Stop)//如果停止信号为1(IN_OUT类型数据在引用时需加指针*,轴除外)
{
	self->AVELMOVE0.Execute = 0;//速度控制指令FB背景数据结构体启动信号写0
	self->AStop0.Execute = 1;//停止指令FB背景数据结构体启动信号写1
}
//以下是各指令所需的部分关键参数,仅举例
self->AVELMOVE0.Vel = 10;//速度控制指令FB背景数据结构体速度参数赋值,单位为指令单位
self->AVELMOVE0.Acc = 100;//速度控制指令FB背景数据结构体加速度参数赋值,单位为指令单位的平方
self->AVELMOVE0.Deceleration = 100;//速度控制指令FB背景数据结构体减速度参数赋值,单位为指令单位的平方
self->AVELMOVE0.Jerk = 1000;//速度控制指令FB背景数据结构体加加速度参数赋值,单位为指令单位的三次方

self->ASTOP0.Deceleration = 100;//停止指令FB背景数据结构体减速度参数赋值,单位为指令单位的平方
self->ASTOP0.Jerk = 1000;//停止指令FB背景数据结构体加加速度参数赋值,单位为指令单位的三次方
self->ASTOP0.StopMode = 0;//停止指令FB背景数据结构体停止模式参数赋值,0为减速停机

以上就是一个简单的写法。在外部梯形图调用此FB,分配对应的轴与启动停止信号,即可完成对应的使能与启动停止操作。

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

贰佰肆拾

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

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

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

打赏作者

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

抵扣说明:

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

余额充值