📄 sv_pci.cpp
字号:
#include <graphics.h>
#include <math.h>
#include <stdio.h>
#include <dos.h>
#include "userlib.h"
#include "sv_pci.h"
#include "ctrl.h"
extern int safety;
short rtn; // rtn为运动控制卡接口函数命令的返回值
int sv_init() //运动控制卡初始化函数(变量请查看"sv_pci.h"中定义)
{
rtn=GT_Close(); //先关闭一下控制卡,确保下面函数正常执行
rtn=GT_Open(); //打开控制卡,准备运行
rtn=GT_Reset(); //复位控制卡,确保控制卡能正常运行
rtn=GT_LmtSns(Snslmt); //设置限位开关有效电平
rtn=GT_LmtsOn(); //打开限位开关自动监控功能
rtn=GT_EncSns(Snsenc); //设置电机相应编码器计数方向
rtn=GT_SetSmplTm(SAM*1000000); //设置运动控制卡的伺服控制周期,SAM=0.0002,即运动控制卡的控制周期为200ms
rtn=GT_Axis(1); /*设置当前工作轴为1轴,下面的命令只对1轴有效(GT-400-SV-PCI运动控制卡一共有四个通道,
倒立摆系统为单输出系统,只采用了第一通道即第1轴,所以本程序控制命令都是针对第1轴)
*/
rtn=GT_PrflT(); //设置1轴的轨迹规划方式为T型曲线模式
rtn=GT_ClrSts(); //清除1轴状态字
rtn=GT_SetKp(Kp); //设置1轴滤波器的P参数
rtn=GT_SetKi(Ki); //设置1轴滤波器的I参数
rtn=GT_SetKd(Kd); //设置1轴滤波器的D参数
rtn=GT_SetKvff(Kvff); //设置1轴滤波器的Kvff(速度前馈)参数
rtn=GT_SetKaff(Kaff); //设置1轴滤波器的Kaff(加速度前馈)参数
rtn=GT_SetILmt(Ilmt); //设置当前轴的伺服滤波器误差积分饱和值
rtn=GT_SetMtrBias(MBias); //设置当前轴的伺服滤波器输出零点偏移值
rtn=GT_Update(); /*当前轴参数更新(运动控制卡采用双缓冲机制,当主机发出单轴运动、控制参数设置命令时,
把这些命令下载到运动控制器中,参数刷新之前,下载的命令和运动命令不生效;参数刷新
之后,控制起将在下一个控制周期将这些参数和命令复制到有效的寄存器中,使其同时生效)
*/
rtn=GT_ClrSts(); //清除1轴状态字
rtn=GT_SetPos(0); //设置当前轴的目标位置
rtn=GT_SetVel(2); //设置当前轴的目标速度
rtn=GT_SetAcc(0.3); //设置当前轴的目标加速度
//tn=GT_SetJerk(0.2);
rtn=GT_Update(); //当前轴参数更新
return 0; //返回
}
int error_msg(int num_msg) //运动控制卡函数返回值处理函数,请参考Userlib.h中 “命令返回值定义解释”
{
unsigned short sts;
switch(num_msg)
{
case 0: //当返回值为0时,命令执行成功。
return 0;
default:
return num_msg;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -