在以前的文章中有描述传统梯形图的写运动控制程序,本文用C语言写简易绝对运动函数的使用。
1.在用户数据类型表中建立类型
2在全局变量表中建立变量
3.建立pou子程序
void POU_test_ethercat_motor_c_language()
{
#define SysRegAddr_HD_D_HM_M
#include "D:\XINJE\SuperAxisArray.h"//实际的地
DRVA_PAR_array[0].Axis=Axis[0];
DRVA_PAR_array[0].Execute = motor_cond_array[0].internal_cond;
DRVA_PAR_array[0].AccTime = 0.05;
//DRVA_PAR_array[0].Pos = 1;
DRVA_PAR_array[0].Vel = 1;
BMC_A_DRVA_BODY ( &DRVA_PAR_array[0] );
//if(BMC_Axis000.Status.StandStill )//M[20008]
if(Axis[0]->Status.StandStill )//马达静止状态
{
motor_cond_array[0].internal_cond = false;
}
}
4.调用子程序
5.下载到PLC中调试
(1)在监视窗口将external_cond置true;
(2)修改Pos的值
(3) 将internal_cond置true
(4) 如果需要运动到另一个位置,到(2)步,然后(3)步
也就是说通过BMC_A_DRVA_BODY函数来执行简易绝对运动需满足两个条件:外部条件和内部条件,外部条件可以一直为true。设置好简易绝对运动的结构体参数后,让内部条件为true.
运动位置到达后,程序会自动复位内部条件。
另外说明:一个时刻对一个马达只能有一个地方调用(简易)运动指令,指令的形式包括梯形图也,功能块函数。
所以要确保:在不同地方的调用运动指令的条件的互斥关系。