跳转至

基本操作指南

1.1 本章简介

网络型运动控制器可以实现高速、高性能的运动轨迹控制,其核心是专用高性能多核处理器。它适用领域广泛,包括半导体加工、机器人、数控机床、木工机械、印刷机械、装配生产线、电子加工设备、激光加工设备以及PCB钻铣设备等。

运动控制器包括插卡式运动控制器和嵌入式运动控制器。插卡式运动控制器以计算机及其兼容机为主机,提供标准的PCIe总线接口。嵌入式控制器支持windows和Linux等系统,详细规格请参考对应的产品用户手册说明。

控制器

插卡式和嵌入式控制器

本章主要介绍正确使用控制器的步骤,包括开卡、关卡、复位和获取时钟等基本操作,获取控制器的固件版本信息、动态链接库的版本信息和网络型模块的版本信息。详细介绍网络拓扑结构和软件功能、运动控制器和网络型模块之间的资源映射关系。

1.2 快速使用

运动控制器支持Windows和Linux系统,提供了C++/C#等编程语言的动态连接库。嵌入式控制器在出厂时默认自带系统和驱动,插卡式控制器在Windows系统下需要先安装驱动程序。

1.2.1 安装驱动

安装驱动程序方法以Windows7为例进行图解说明:

1. 在关闭计算机电源的情况下,将插卡式控制器正确插入空闲的PCI/PCIe卡槽。启动计算机后,Windows将自动检测到运动控制器,打开“设备管理器”,如图所示。

驱动程序安装界面1
重要

在接触控制器电路或插/拔控制器之前请戴上防静电手套或者触摸有效接地金属物体进行人体放电,防止可能的静电损坏运动控制器。

2. 登陆官网下载驱动程序,并将驱动程序拷贝到C:\中为例进行说明。如图所示,选中“PCI内存控制器”,点击鼠标右键。点击“更新驱动程序软件(P)…”。

驱动程序安装界面2
通知

固高官网地址:www.googoltech.com.cn或者www.googoltech.com

3. 选择“浏览计算机以查找驱动程序软件(R)”。界面如下图所示。

驱动程序安装界面3

4. 点击“浏览”,选择驱动程序所在路径。点击“下一步(N)”。

驱动程序安装界面4

5. 勾选 “始终信任来自”固高科技(深圳)有限公司的软件(A)”,点击“安装(I)”。

驱动程序安装界面5

6. 点击关闭。

驱动程序安装界面6

7. 安装成功后,打开设备管理器,可以看到驱动已经安装成功,如图所示。

驱动程序安装界面7
常见问题与解决
  1. 设备管理器中不显示设备,建议计算机断电状态下重新插拔控制器,检查金手指是否破损。
  2. 安装驱动失败,检测官网下载的驱动程序和实际控制器的型号对应。
  3. 无法解决情况下请联系技服。

1.2.2 函数库的使用

1.2.2.1 Windows系统

在Windows系统下,用户可以使用任何能够支持动态链接库的开发工具来开发应用程序。下面以Visual C++为例讲解如何在这些开发工具中使用运动控制器的动态链接库。

Visual Studio 2022

(1)启动Visual Studio 2022,新建一个windows平台工程。

(2)将VC环境的动态链接库(gxn.dll)、头文件(gxn.h)和lib文件(gxn.lib)复制到工程文件夹中。

(3)在应用程序文件中加入函数库头文件的声明,例如:#include "gxn.h"。

(4)选择“项目”菜单下的“属性”菜单项,选择 “链接器”->“输入”标签页,在“附加依赖项”栏中输入lib文件名,例如gxn.lib,来调用动态链接库。或者在代码中添加#pragma comment(lib,"gxn.lib")来调用gxn.dll动态链接库。

完成上述设置后用户就可以在Visual Studio 2022中调用函数库中的任何函数,开始编写应用程序。

1.3 基本操作

1.3.1 指令列表

运动控制器基本功能

指令 说明
GTN_Open 打开运动控制器并按照默认情况初始化gLink-II网络。
GTN_OpenCard 打开运动控制器(仅开卡)。
GTN_NetInit 运动控制器的网络初始化。
GTN_Close 关闭运动控制器。
GTN_Reset 复位运动控制器。
GTN_SetResetMode 调用GTN_Reset时,对应功能是否被复位。
GTN_GetClock 读取运动控制器系统时钟。
GTN_GetClockHighPrecision 读取运动控制器系统高精度时钟

1.3.2 打开运动控制器

通过调用指令GTN_OpenCard打开运动控制器,建立PC和运动控制器之间的通讯。然后调用指令GTN_NetInit初始化网络和资源映射。资源映射通过xml文件描述,xml文件通过MotionStudio生成和修改。

使用GEN控制器时,需注意!

GEN控制器目前暂不支持调用GTN_OpenCard,因此其需要调用GTN_Open来打开运动控制器,

1.3.2.1 资源映射

控制器软件逻辑资源和网络型模块硬件资源是相互独立的。在使用运动控制器进行各种操作之前,需要对运动控制器进行配置,使运动控制器的软件资源能控制对应的网络型模块硬件通道,这个过程,叫做映射。

映射示意图 映射示意图

不同系列控制器支持的网络协议、网络拓扑和软件资源都不同,详细可参考1.4.3

1.3.2.2 xml 文件生成

MotionStudio会按照默认的资源映射生成xml文件,指令GTN_NetInit通过加载xml文件修改资源映射。默认资源映射文件生成步骤如下:

  • 以"自动扫描拓扑开卡"方式打开 MotionStudio,如图所示。
自动扫描方式
  • 点击左侧的“导航”窗口中的“”按钮,如下图所示,保存的文件为Googol.xml,详细的路径和名字在"日志"窗口显示。 导航界面
生成xml界面

MotionStudio支持修改资源映射和离线配置xml文件,具体请参考MotionStudio的帮助文档。

1.3.3 网络拓扑和资源分配

软件编程指令每个控制器都支持双核,每个核的软件资源请参考“软件功能描述”章节。控制器支持的网络类型和网络拓扑请参照下图。

GSN 运动控制器仅支持通用 gLink-II 网络。控制器会按照网络拓扑结构自动映射,分配原则为优先考虑软件资源中的轴资源。单核产品所有网络从站都分配给核1。双核产品根据每个核的轴资源来分配,同一个物理模块不能同时分配给2个核。

指令GTN_OpenCardGTN_NetInit按照xml描述分配网络模块和软件资源。

GSN运动控制器网络拓扑

GSN网络拓扑示意图

重要

连接网络模块必须以网口 A作为起始连接端口,最后一个轴模块的输出端口建议连接在网口 B,形成环形网络通讯模式。

GVN 运动控制器支持高速 gLink-II、通用 gLink-II 和 EtherCAT 三种网络接口,如下图所示。控制器会按照网络拓扑自动映射,分配原则为优先考虑软件资源中的轴资源。控制器软件编程指令仅支持双核,高速 gLink-II 分配1个核(HS_CORE)的所有软件资源。通用 gLink-II 和 EtherCAT 共同分配另外一个核(GP_CORE)的软件资源,分配原则为优先根据通用 gLink-II 所接的硬件资源分配,剩下的软件资源分配给EtherCAT。

核序号在 gxn.h 头文件通过宏定义,即用户在编程过程中所有指令参数 core需要使用宏定义代替。宏定义如下:

1. 高速 gLink-II 所在核定义为 HS_CORE

2. 通用 gLink-II 和 EtherCAT 所在核定义为 GP_CORE

GVN运动控制器网络拓扑

GVN网络拓扑示意图

“高速 gLink-II+通用 gLink-II +EtherCAT”系统连接示意图

重要

使用“通用 gLink-II”协议时,连接轴模块必须以网口 A作为起始连接端口,最后一个轴模块的输出端口建议连接在网口 B,形成环形网络通讯模式。

GSNE 运动控制器支持gLink-II 和 EtherCAT 两种网络接口,其中gLink-II所有功能分配在 1个核(GP_CORE),EtherCAT的所有功能放在另一个核(EC_CORE),按照xml描述分配网络模块和软件资源。核序号在 gxn.h 头文件通过宏定义,即用户在编程过程中所有指令参数 core需要使用宏定义代替。宏定义如下:

1. gLink-II 所在核定义为 GP_CORE

2. EtherCAT 所在核定义为 EC_CORE

GSNE运动控制器网络拓扑

GSNE网络拓扑示意图

重要

网口 A为gLink-II,网口 B为EtherCAT。

GEN 运动控制器EtherCAT网络。控制器根据核个数和轴资源个数自动分配网络模块和软件资源。

GSN运动控制器网络拓扑

GSN网络拓扑示意图

重要

连接网络模块必须以网口 A作为起始连接端口,最后一个轴模块的输出端口建议连接在网口 B,形成环形网络通讯模式。

1.3.4 复位运动控制器

GTN_Reset指令将使运动控制器的所有功能恢复到上电默认状态。

GTN_SetResetMode指令可以设置GTN_Reset指令是否复位数字量输入输出(DIO)的功能。

重要

GTN_Reset指令会下使能,在确保安全的情况下使用。

1.3.5 读取系统时钟

运动控制器上电初始化和调用GTN_Reset复位之后,内部计数时钟从 0 开始计数,每 1 毫秒增加 1,通过GTN_GetClock指令可以读取该计数时钟的值。

GTN_GetClockHighPrecision读取的值每个中断周期增加 1,例如,如果控制器中断周期为 500 微秒,则该值每 500 微秒加 1。

1.3.6 关闭运动控制器

在使用运动控制器结束之后,退出应用程序时,应当调用GTN_Close指令关闭运动控制器。

重要

不建议在程序中反复地调用GTN_OpenCardGTN_OpenGTN_Close 指令,去频繁地打开和关闭运动控制器。只需在应用程序初始化阶段调用一次GTN_OpenCard、在应用程序退出时调用一次GTN_Close即可。

1.4 版本信息

1.4.1 指令列表

读取版本信息

指令 说明
GTN_GetVersionEx 读取运动控制器固件的版本信息。
GTN_GetTerminalVersion 读取网络型模块固件的版本信息。

1.4.2 MotionStudio读取版本信息

打开 MotionStudio,点击“帮助”->“版本信息”,可以查看固件和动态链接库版本号,如下图所示。

MotionStudio固件与链接库版本信息

MotionStudio固件与链接库版本信息

1.4.3 通过属性查看动态链接库版本信息

选中 gxn.dll,右键->属性->详细信息处可以查看动态链接库的版本。版本信息的详细说明如下图所示。

动态库详细信息图

动态库详细信息图

1.5 控制器软件功能描述

运动控制器支持的软件功能及其详细说明详见下表。实际选型可结合本表和软件规格详细列表




软件功能 核1 核2
基础功能 单轴点位运动模式 -
单轴连续运动模式 -
单轴手轮运动模式 -
同步运动模式 -
插补运动模式(多通道功能) -
补偿功能 -
高速硬件捕获 -
回零 -
开环龙门功能 -
输入整形控制算法 -
激光功能 -
振镜功能 -
位置比较输出功能(PSO) -
位置同步输出(PCO) -
轮廓误差控制 -
数字量输入 -
数字量输出 -
模拟量输入 -
模拟量输出 -
增强功能 闭环控制 - -
闭环龙门控制 - -
五轴功能 - -
机器人功能 - -
驱动器龙门 - -
Bezier插补 - -
双闭环控制 - -
力位控制 - -
高级功能 自学习 - -
增强PSO - -
振镜无线视野 - -




软件功能 核1 核2
基础功能 单轴点位运动模式 -
单轴连续运动模式 -
单轴手轮运动模式 -
同步运动模式 -
插补运动模式(多通道功能) -
补偿功能 -
高速硬件捕获 -
回零 -
开环龙门功能 -
输入整形控制算法 -
激光功能 -
振镜功能 -
位置比较输出功能(PSO) -
位置同步输出(PCO) -
轮廓误差控制 -
数字量输入 -
数字量输出 -
模拟量输入 -
模拟量输出 -
增强功能 闭环控制 -
闭环龙门控制 -
五轴功能 -
机器人功能 -
驱动器龙门 -
Bezier插补 -
双闭环控制 - -
力位控制 - -
高级功能 自学习 - -
增强PSO - -
振镜无线视野 - -




软件功能 核1 核2
基础功能 单轴点位运动模式 -
单轴连续运动模式 -
单轴手轮运动模式 -
同步运动模式 -
插补运动模式(多通道功能) -
补偿功能 -
高速硬件捕获 -
回零 -
开环龙门功能 -
输入整形控制算法 -
激光功能 -
振镜功能 -
位置比较输出功能(PSO) -
位置同步输出(PCO) -
轮廓误差控制 -
数字量输入 -
数字量输出 -
模拟量输入 -
模拟量输出 -
增强功能 闭环控制 -
闭环龙门控制 -
五轴功能 -
机器人功能 -
驱动器龙门 -
Bezier插补 -
双闭环控制 - -
力位控制 -
高级功能 自学习 -
增强PSO -
振镜无线视野 - -




软件功能 核1 核2
基础功能 单轴点位运动模式
单轴连续运动模式
单轴手轮运动模式
同步运动模式
插补运动模式(多通道功能)
补偿功能
高速硬件捕获
回零
开环龙门功能
输入整形控制算法
激光功能 -
振镜功能 -
位置比较输出功能(PSO)
位置同步输出(PCO)
轮廓误差控制
数字量输入
数字量输出
模拟量输入
模拟量输出
增强功能 闭环控制 - -
闭环龙门控制 - -
五轴功能 - -
机器人功能 - -
驱动器龙门 - -
Bezier插补 - -
双闭环控制 - -
力位控制 - -
高级功能 自学习 - -
增强PSO - -
振镜无线视野 - -




软件功能 核1 核2
基础功能 单轴点位运动模式
单轴连续运动模式
单轴手轮运动模式
同步运动模式
插补运动模式(多通道功能)
补偿功能
高速硬件捕获
回零
开环龙门功能
输入整形控制算法
激光功能 -
振镜功能 -
位置比较输出功能(PSO)
位置同步输出(PCO)
轮廓误差控制
数字量输入
数字量输出
模拟量输入
模拟量输出
增强功能 闭环控制
闭环龙门控制
五轴功能
机器人功能
驱动器龙门
Bezier插补
双闭环控制 - -
力位控制
高级功能 自学习 - -
增强PSO - -
振镜无线视野 - -




软件功能 核1 核2
基础功能 单轴点位运动模式
单轴连续运动模式
单轴手轮运动模式
同步运动模式
插补运动模式(多通道功能)
补偿功能
高速硬件捕获
回零
开环龙门功能
输入整形控制算法
激光功能 -
振镜功能 -
位置比较输出功能(PSO)
位置同步输出(PCO)
轮廓误差控制
数字量输入
数字量输出
模拟量输入
模拟量输出
增强功能 闭环控制
闭环龙门控制
五轴功能
机器人功能
驱动器龙门
Bezier插补
双闭环控制 - -
力位控制
高级功能 自学习
增强PSO
振镜无线视野 - -




软件功能 核1 核2
基础功能 单轴点位运动模式
单轴连续运动模式
单轴手轮运动模式
同步运动模式
插补运动模式(多通道功能)
补偿功能
高速硬件捕获
回零
开环龙门功能
输入整形控制算法
激光功能 -
振镜功能 -
位置比较输出功能(PSO)
位置同步输出(PCO)
轮廓误差控制
数字量输入
数字量输出
模拟量输入
模拟量输出
增强功能 闭环控制 - -
闭环龙门控制 - -
五轴功能 - -
机器人功能 - -
驱动器龙门 - -
Bezier插补 - -
双闭环控制 - -
力位控制 - -
高级功能 自学习 - -
增强PSO - -
振镜无线视野 - -

表中名词解释说明
  1. "-": 表示不支持该功能。
  2. 五轴功能:支持多种五轴模型,支持RTCP、斜面加工、刀具方向进退刀等五轴加工模式,支持刀具长度补偿、工件坐标系偏移、非正交模型等五轴校正功能。
  3. 机器人功能:支持多种机器人模型解算(6R、SCARA、Delta等),支持机器人坐标系切换,支持变位机协同、双机器人协同、传送带跟踪等协同模式。

1.6 网络型模块

1.6.1 指令列表

读取网络型模块状态

指令 说明
GTN_GetTerminalStatus 读取网络型模块的通讯状态。
GTN_GetResCount 读取软件资源实际个数。
GTN_GetResMax 读取软件资源最大个数。

1.6.2 重点说明

通过指令GTN_GetTerminalStatus(参数 type=MC_TERMIANAL)可以获取每个核支持网络型模块的最大个数,通过指令GTN_GetResCount获取(参数 type=MC_TERMIANAL)可以获取每个核实际连接的网络型模块个数。通过指令GTN_GetTerminalStatus可以获取每个网络型模块的通讯状态。

读取网络模块状态例程
// 该例程仅用于功能演示,请保证安全的情况下使用

// 测试功能:读取控制器信息示例
// 测试平台:网络型运动控制器
// 测试环境:Windows
// 测试流程:
//           (1)初始化控制器
// 注意事项:
//           (1)本例程使用的“例程专用.xml”、“例程专用.cfg”,仅用于本例程
//           (2)实际使用时,需要使用MotionStudio生成网络配置xml

#include "stdafx.h"

// 加载固高运动控制库头文件
#include "gxn.h"
// 动态加载固高运动控制gxn.lib库
#pragma comment(lib,"gxn.lib")

/**
 * @brief 指令出错打印函数
 * @param command 打印信息字符串
 * @param error 错误码
 * @return 错误码
*/
short CommandHandler(char *command ,short error)
{
    printf("%s = %d\n", command, error);
    getchar();
    return error;
}

int _tmain(int argc, _TCHAR* argv[])
{
    short core = 1;
    TTerminalStatus terminalLinkSts;
    short terminalCnt;
    short rtn;
    int i;
    long status;
    short overTime;
    //打开控制器
    rtn = GTN_OpenCard(CHANNEL_PCIE,NULL,NULL);
    if (CMD_SUCCESS != rtn)
    {
        return CommandHandler("GTN_OpenCard",rtn);
    }
     // 初始化网络
    // 注意:(1)“例程专用.xml”仅用于本例程
    //       (2)实际使用时,需要使用MotionStudio生成对应的网络配置文件
    // overTime:网络初始化超时时间,单位:秒
    overTime = 120;
    rtn = GTN_NetInit(NET_INIT_MODE_XML_STRICT,"例程专用.xml",overTime,&status);
    if ( 0 != rtn )
    {
        printf("status = %d\n",status);
        return CommandHandler("GTN_NetInit",rtn);
    }
    printf("Init Net Success !\n");

    //读取实际连接的模块资源个数
    rtn = GTN_GetResCount(core,MC_TERMINAL,&terminalCnt);
    if (CMD_SUCCESS != rtn)
    {
        return CommandHandler("GTN_GetVersionEx",rtn);
    }
    printf("TerminalCount%d\n",terminalCnt);
    for (i = 1;i<=terminalCnt;i++)
    {
        // 读取每个从站的连接状态
        rtn = GTN_GetTerminalStatus(core,i,&terminalLinkSts);
        if (CMD_SUCCESS != rtn)
        {
            return CommandHandler("GTN_GetTerminalStatus",rtn);
        }
        printf("Terminal Index = %d:  linkSts = %d\n",i,terminalLinkSts.status);
    }

    printf("Press Any Key To Exit !\n");
    getchar();
    return 0;
}