CK3M自定义伺服算法(C语言)开发的简单流程

本文的章节安排如下1 注意事项功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入在导师的要求下,对欧姆龙的CK3M控制卡进行自定义伺服算法二次开发。这也是我第一次接触CK3M,文章里面还有很多错误我未能察觉,还请大家批评指正 ❀如
摘要由CSDN通过智能技术生成

在导师的要求下,对欧姆龙的CK3M控制卡进行自定义伺服算法(C语言)二次开发。这也是我第一次接触CK3M,文章里面还有很多错误我未能察觉,还请大家批评指正 ❀

由于较少登录使用CSDN账号,此文章同时发布在我的知乎账号Stan里,之后相关内容更新都在该知乎文章里☞CK3M自定义伺服算法开发的简单流程。如有需要也欢迎转载,并请注明出处~ ///(^ v ^)\\ ~


在这里插入图片描述

1 注意事项

该手册主要介绍OMRON的PMAC(CK3M)运动控制卡的自定义伺服算法(C语言)开发与运动程序。PMAC在运动控制卡领域和ACS、Trio排在第一梯队,这个品牌的控制器网上资源很少,国内厂家技术也相对较为缺乏,控制卡的自定义伺服算法更是很少人对其进行开发。就Power PMAC(CK3M)而言,比较推荐大家使用的资料是官方的《Power PMAC 5-Day Training》,这份文档很全面地介绍了PMAC的使用,无论零基础入门还是快速进阶都是很好的教材。如果在使用过程中遇到复杂问题,可以进一步查阅官方手册《Power PMAC IDE》、《Power PMAC Software Reference Manual》、《Power PMAC Users Manual》,以及国内代理商——北京泰诺德科技有限公司的《POWER PMAC初级技术培训》。(我把这5份官方文档上传到了CSDN,如有需要可前往下载

在这里插入图片描述
CK3M有5种控制方式可供选择,我们实验室使用的是直接PWM控制反馈模块采用AX-2323N模拟量反馈,PWM放大器采用Delta Tau公司定制的CDHD-0062APB0高创驱动器(该驱动器无其他功能,就是单纯的PWM放大器),PowerPMAC IDE版本是4.3.2.19(CK3M与Power PMAC通用)。驱动器手册参考《CDHD PW -PWM Power Block Preliminary Specification》。
在这里插入图片描述
在这里插入图片描述

CDHD-0062APB0高创驱动器(PWM放大器)

对于Direct PWM模式,PMAC包含了位置环+速度环+电流环。这种全数字的控制模式:

  • 可以减小如模拟量控制的A/D、D/A转换产生的延时,信号传输出现的噪声干扰等;
  • 位置环+速度环+电流环均在控制器内部,减小了各个环路数据交互和计算的延时。更低的延时允许更高的增益,可以提高系统的带宽,刚性及加速能力。

使用前的几个提醒:

  1. 通讯连接,首先更改电脑IP地址为:
    请添加图片描述
    在这里插入图片描述
  2. 终端输入指令不能是中文
  3. 配置文件在PMAC Script Language-Global Includes-global definitions,也可以从CK3M的内存里上传项目到IDE
  4. 有时候如果需要断开PC与CK3M的通讯,可以点击通讯设置,选择无设备
  5. 首次寻相需要在终端里面输入指令:system/opt/ppmac/setup/calcadcoffset 1,并复制Motor[1].IaBias =(终端里面显示的数字),Motor[1].IbBias=(终端里面显示的数字)
  6. 指令save是将配置文件保存到控制器,然后在输入$$$(作用是断电重启,让变量能生效)
  7. Power PMAC与CK3M的区别在于引脚定义不同,但指令是相同的
  8. 在项目栏-属性中,可以更改M变量、P变量和Q变量的起始地址,
    在这里插入图片描述
    这里将P变量起点设置为0,即P变量从P[0]开始分配地址。

2 自定义伺服算法(C语言)开发

首先,新建一个项目,选择PowerPMAC,
在这里插入图片描述
对于自定义伺服算法,我们需要用到的三个文件是:资源管理器-C Language-Realtime Routines-usrcode.cusrcode.h,PMAC Script Language-Global Includes-global definitions.pmh
在这里插入图片描述

2.1 Global Includes

新项目中的global definitions.pmh文件是空白的,在这里定义(为了便于阅读理解,有关参数说明都写在代码注释里)——

Sys.WpKey = $AAAAAAAA  //关闭写保护
Sys.MaxCoords = 3
Sys.MaxMotors = 8

//ADRC算法控制变量
GLOBAL z1=0,z2=0,z3=0,e1=0,_u=0,_u0=0,sh=1/8000,uout=0,_actvel=0,_actpos=0,_poserror=0,_desvel=0;
GLOBAL wc=60,wo=500,xi=1,b0=3,switch_control=1;//这里定义的是P变量,每伺服周期更新一次;地址从P[0]开始,sh为CK3M伺服更新周期,1/8000=0.125ms;同时初始化控制器参数
//ptr wc->Sys.Ddata[1];
//ptr wo->Sys.Ddata[2];
//ptr xi->Sys.Ddata[3];
//ptr b0->Sys.Ddata[4];
//ptr _kpp->Sys.Ddata[5];
//ptr _kdd->Sys.Ddata[6];

Gate3[0].PhaseFreq = 16000//IC内部相位时钟频率16kHz
Gate3[0].ServoClockDiv = 1//SERVO = PhaseFreq / (ServoClockDiv + 1) 8kHz
Sys.RtIntPeriod = 0//RTI = ServoFreq / (RtIntPeriod + 1)
Sys.ServoPeriod = 1000 * (Gate3[0].ServoClockDiv + 1) / Gate3[0].PhaseFreq //CK3M伺服更新周期,以ms为单位,1/8000=0.125ms
Sys.PhaseOverServoPeriod = 1 / (Gate3[0].ServoClockDiv + 1)//相位与伺服更新周期的比率
//CDHD-PB驱动器(实验室的高创驱动器型号是CDHD-0062APB0)规定PWM频率不能超过8KHz(部分型号为16Khz),且由于PWM频率最小只能设置为Phase频率的一半,因此Phase频率不能超过16kHz

//============================输出模式配置============================//
Gate3[0].AdcAmpHeaderBits=0    //=0 CDHD
Gate3[0].EncClockDiv=3// 设置编码器采样时钟
ECAT[0].ServoExtension = 15
Gate3[0].Chan[0].PwmFreqMult = 0  //PWM : 8KHz,FREQ = PhaseFreq*(PwmFreqMult + 1)/2
Gate3[0].Chan[0].PackOutData = 1//PWM/DAC通道pack使能
Gate3[0].Chan[0].PackInData = 2
Gate3[0].Chan[0].CaptFlagChan=0   //原点相关参数//捕获标志通道选择
Gate3[0].Chan[0].CaptFlagSel=0   //原点相关参数//位置伺服通道选择
Gate3[0].Chan[0].CaptCtrl=
  • 11
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值