什么是运动控制卡
是一种基于PC机及工业PC机、 用于各种运动控制场合(包括位移、速度、加速度等)的上位控制单元
运动控制卡原理:
可与各种类型的步进电机驱动器连接,驱动步进电机,组成高精度位置控制系统或调速系统。
可与电脑机组成主从式控制结构:电脑机负责人机界面的管理和其它管理工作;而运动控制卡负责运动控制方面的所有细节。
运动控制卡用户通过厂家提供的动态链接库可方便快速的开发出自己需要的运动控制功能

1.安装
1.1 插入运动控制卡到计算机PCLe插槽;
1.2 硬件连接
1.3 安装运动控制驱动程序
1.4建立主机和运动控制器的通讯
1.5MCT2008 Demo 使用
MCT2008 是固高运动控制器的功能演示和调试软件,通过该软件可以查看和监控控制器状态
配置板卡、测试控制器不同功能模块、调试电机系统等

1. 复位操作

复位以后,一般情况下,由于调试时没有连接位等传感器,而控制器在出现报警状态下是
不能运行的,因此,为了能顺利让电机运行,应当使限位等报警无效
以第1轴为例,操作如下:
1)点击 MCT2008 主界面菜单“视图”-->“轴状态”
观察 各个部件的状态是否绿色 如果是红色 调整对应部件参数
下图中 正负限位 为红色

工具--控制器配置--di
调整正负限位 输入反转


回到视图”-->“轴状态”界面 查看是否变绿 绿色既为正常
注意:伺服使能 绿色 默认是未上电 需要点击 伺服使能按钮 上电

如果是想要伺服使能使用未上电状态 输出反转

其他轴状态 如上步骤
修改完毕后 写入控制器状态

本地使用控制器状态 写入到文件 保存到winform项目 debug文件夹

Jog运动 调试
单击“视图”->“JOG”菜单项调出 Jog 面板,在“轴号”下拉框中选择控制轴。

设置合适的运动参数。加速度减速度大于零,速度可正可负。







1 z轴上升
2 z轴下降
3 镊子收紧
4 镊子放开
5 传动轴开始or关闭 (已坏)
6 报警灯
7 红色信号灯
8 黄色信号灯
9 绿色信号灯
c#程序开发
// 1.导入gst.dll 到winform项目中的bin/debug中
* 2.打开mct2008 工具 -> 控制器配置 -> di --> 1 2 3轴的 正限位 负限位 驱动警告 都进行取反,
* 然后点击控制→写入控制器
* 将文件名改成 GTS800(运动控制配置文件) 保存到项目Debug文件中
*3.软件的安装目录中gts.cs文件 引入当前项目根目录中
*4. 导入gts类库 using static gts.mc;
*/

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace _01_运动控制卡测试程序
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
// 每个方法调用的返回值
short sRtn = 0;
private void button1_Click(object sender, EventArgs e)
{
sRtn = gts.mc.GT_Open(0, 0);
errCheck("打开运动控制卡", sRtn);
//sRtn = gts.mc.GT_Reset();
//errCheck("复位运动控制卡", sRtn);
// 配置文件取消了各轴的报警和限位
sRtn = gts.mc.GT_LoadConfig("laoguo.cfg");
errCheck("加载配置文件", sRtn);
sRtn = gts.mc.GT_ClrSts(1, 8); // 从1轴开始,清除8个轴的状态
errCheck("清除各轴的报警和限位", sRtn);
}
// 上电
private void button2_Click(object sender, EventArgs e)
{
sRtn = gts.mc.GT_AxisOn(1);
errCheck("打开1轴的伺服使能", sRtn);
}
/// <summary>
/// 错误检测
/// </summary>
private void errCheck(string msg, short code)
{
if(code != 0)
{
Console.WriteLine(msg + "操作失败,错误码:" + code);
}
}
// jog运动参数
gts.mc.TJogPrm jogPrm;
private void button3_Click(object sender, EventArgs e)
{
sRtn = gts.mc.GT_PrfJog(1);
errCheck("设置1轴为JOG模式", sRtn);
sRtn = gts.mc.GT_GetJogPrm(1, out jogPrm);
errCheck("读取 Jog 运动参数", sRtn);
//设置需要修改的运动参数
jogPrm.acc = 0.0625; // 加速度
jogPrm.dec = 0.0625; // 减速度
jogPrm.smooth = 0.5; // 平滑系数。取值范围:[0, 1)。平滑系数的数值越大,加减速过程越平稳
sRtn = gts.mc.GT_SetJogPrm(1, ref jogPrm);
errCheck("设置 Jog 运动参数", sRtn);
sRtn = gts.mc.GT_SetVel(1, 20); // 设置1轴的目标速度为100
errCheck("设置 AXIS 轴的目标速度", sRtn);
}
// 定义轴号
short AXIS = 1;
private void button4_Click(object sender, EventArgs e)
{
// 设置1轴的目标速度为10
sRtn = gts.mc.GT_SetVel(1, 10);
errCheck("设置 AXIS 轴的目标速度为10", sRtn);
/*
1 << (AXIS - 1)
<< 二进制左移运算符。左操作数的值向左移动右操作数指定的位数
https://www.runoob.com/csharp/csharp-operators.html
1对应 二进制 0001
(AXIS-1)轴的索引 结果 为0
1的二进制 0001 左移 (AXIS - 1)位 得到的结果:为0001 代表是1轴
如果是2轴结果为0010 如果是3轴结果为0100 哪一位是1就表示哪个轴运动
*/
sRtn = gts.mc.GT_Update(1 << (AXIS - 1)); // 按位控制启动哪个轴 1 << (轴号 - 1)
errCheck("启动点位或者JOG运动(开始干活)", sRtn);
}
private void button5_Click(object sender, EventArgs e)
{
// 停止运动,参数1:按位表示停止的轴号
// 参数2:按位表示停止的方式(1 急停 0 平滑停止)
sRtn = gts.mc.GT_Stop(1 << (AXIS - 1), 0);
errCheck("停止", sRtn);
}
private void button6_Click(object sender, EventArgs e)
{
// 设置1轴的目标速度为10
sRtn = gts.mc.GT_SetVel(1, 5);
errCheck("再次设置 AXIS 轴的目标速度为5", sRtn);
// 更新轴的速度,以新的速度运行
sRtn = gts.mc.GT_Update(1 << (AXIS - 1));
errCheck("启动点位或者JOG运动(开始干活)", sRtn);
}
}
}

377

被折叠的 条评论
为什么被折叠?



