GEN回零调试

news2024/12/21 8:13:32

一.根据motionstudio软件检测各部件完备;

二.调试点位模式的CPP测试程序

        其中,配置文件如下:

         回零相关(就是轴状态同步):

 下面是相关代码:

// 例程 7-1 点位运动
//#include "stdafx.h"
#include "windows.h"
#include "conio.h"
#include "gts.h"

#include <iostream>
using namespace std;

#define AXIS		1

// 该函数检测某条GT指令的执行结果,command为指令名称,error为指令执行返回值
void commandhandler(const char* command, short error)
{
	// 如果指令执行返回值为非0,说明指令执行错误,向屏幕输出错误结果
	if (error)
	{
		printf("%s = %d\n", command, error);
	}
}
int main(int argc, char* argv[])
{
	short sRtn, rtn, status;
	TTrapPrm trap;
	long sts;
	double prfPos;

	long lAxisStatus; // 轴状态
	unsigned short sHomeSts; // 回零状态
	bool bStop = false;
	long ecatEncpos;



	// 打开运动控制器
	sRtn = GTN_Open();
	// 指令返回值检测
	commandhandler("GTN_Open", sRtn);

	rtn = GTN_InitEcatComm(1);
	if (rtn) {
		printf("EtherCAT communication error\n");
		return -1;
	}
	//*wait untill EtherCAT comminication OK*/
	do {
		rtn = GTN_IsEcatReady(1, &status);
	} while (status != 1 || rtn != 0);

	rtn = GTN_StartEcatComm(1);
	rtn = GTN_Reset(1);
	rtn = GTN_LoadConfig(1, const_cast<char*>("test.cfg"));

	// 清除各轴的报警和限位
	sRtn = GTN_ClrSts(1, 1, 8);
	commandhandler("GTN_ClrSts", sRtn);
	// 伺服使能
	sRtn = GTN_AxisOn(1, AXIS);
	commandhandler("GTN_AxisOn", sRtn);

	// 位置清零
	sRtn = GTN_ZeroPos(1, AXIS);
	commandhandler("GTN_ZeroPos", sRtn);
	// AXIS轴规划位置清零
	sRtn = GTN_SetPrfPos(1, AXIS, 0);
	commandhandler("GTN_SetPrfPos", sRtn);
	// 将AXIS轴设为点位模式
	sRtn = GTN_PrfTrap(1, AXIS);
	commandhandler("GTN_PrfTrap", sRtn);
	// 读取点位运动参数
	sRtn = GTN_GetTrapPrm(1, AXIS, &trap);
	commandhandler("GTN_GetTrapPrm", sRtn);
	trap.acc = 0.25;
	trap.dec = 0.125;
	trap.smoothTime = 50;
	// 设置点位运动参数
	sRtn = GTN_SetTrapPrm(1, AXIS, &trap);
	commandhandler("GTN_SetTrapPrm", sRtn);


	/*sRtn = GTN_GetEcatEncPos(1, 1, &ecatEncpos);
	sRtn = GTN_SetPrfPos(1, 1, ecatEncpos);
	sRtn = GTN_SetEncPos(1, 1, ecatEncpos);
	sRtn = GTN_SynchAxisPos(1, 1);*/

	// 设置AXIS轴的目标位置
	sRtn = GTN_SetPos(1, AXIS, 500000L);
	commandhandler("GTN_SetPos", sRtn);
	// 设置AXIS轴的目标速度
	sRtn = GTN_SetVel(1, AXIS, 30);
	commandhandler("GTN_SetVel", sRtn);
	// 启动AXIS轴的运动
	sRtn = GTN_Update(1, 1 << (AXIS - 1));
	commandhandler("GTN_Update", sRtn);

	 //std::cout << "ecatEncpos = " << ecatEncpos << std::endl;

	do
	{
		// 读取AXIS轴的状态
		sRtn = GTN_GetSts(1, AXIS, &sts);
		// 读取AXIS轴的规划位置
		sRtn = GTN_GetPrfPos(1, AXIS, &prfPos);
		printf("sts=0x%-10lxprfPos=%-10.1lf\r", sts, prfPos);
	} while (sts & 0x400);	// 等待AXIS轴规划停止

	sRtn = GTN_GetEcatEncPos(1, 1, &ecatEncpos);

	std::cout << "ecatEncpos = " << ecatEncpos << std::endl;

	// 伺服关闭
	sRtn = GTN_AxisOff(1, AXIS);
	printf("\nGTN_AxisOff()=%d\n", sRtn);
	_getch();
	return 0;

}

三.根据上述调试程序来调GTN中的绝对回零程序

1.首先加动态链接库的中的八个文件放入工作目录中;

 2.再将Gecat.xml配置文件放到输出目录下;

 3.清除底层下位机的相关配置(以下文件中的配置全删除)

 4.在三个文件夹中加入新的配置

5.ethcat通讯初始化

		GTN_InitEcatComm(1);

		short rtn, status;
		//*wait untill EtherCAT comminication OK*/
		do {
			rtn = GTN_IsEcatReady(1, &status);
		} while (status != 1 || rtn != 0);

		GTN_StartEcatComm(1);

6.注释以下代码;

7.用以下代码替换 

if (m_pAxises[i]->inuse() && i != 7) {
				GTN_GetEcatEncPos(1, i, &ecatEncpos);
				GTN_SetPrfPos(1, i, ecatEncpos);
				GTN_SetEncPos(1, i, ecatEncpos);
				GTN_SynchAxisPos(1, 1);
				m_pAxises[i]->move(0.0, 0.4 * m_pAxises[i]->maxVelocity(), 25/*平滑时间,单位:ms,取值范围:[0, 50]*/);

			}

8.修改代码参数

 9.轴参数配置

四.在第三点的绝对位置调零的基础上进行相对位置的回零

        相对位置的回零即是,在机器人各轴运行的过程中将当前位置设为相对零点,就是要把当前位置的脉冲量给记录下来,然后在以后各轴的运动过程中,可以在点击回零键,各轴能自动调整到那个记录的相对位置;

        1.在头文件中定义一个存储当前各轴位置脉冲量的double容器;

        2.在GTN Open状态后对其进行初始化为0.0,若后面操作时不设零点,那么各轴就回到绝对零点;

         3.在SetHome中,将当前各轴位置存入curRelZeroPos容器中;

        4.将move函数中的位置改为存储的相对位置;

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/653484.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

selenium自动化的时候网址重定向问题的解决思路

一、背景 因为我们系统是用企业微信扫码登录的&#xff0c;就输入网址 management-xxx.xxx.com以后&#xff0c;url就会重定向到企业微信授权的url &#xff1a;https://open.work.weixin.qq.com/wwopen/sso/3rd_qrConnect?statexxx&redirect_urimanagement-xxx.xxx.com …

如何制作数据可视化、数孪、安防、区域人流量识别+控制的项目?

制作与数据可视化、数字孪生、安防、区域人群识别和控制以及其他类似计划相关的项目需要仔细规划和执行。建议遵循以下通用框架来有效地开发这些项目&#xff1a; 定义项目目标&#xff1a;清楚地阐明项目目的和目标。确定要解决的具体问题、期望的结果以及衡量成功的关键绩效指…

vue3+ts+vite+electron打包exe

文章目录 一. 前言二. 准备写好的vue项目打包2.1 修改ts打包代码检测.这个比较烦人. 在package.json中 2.2 配置打包参数2.3 打包vue 三. 打包exe3.1 拉取electron官方demo3.2 下载打包插件3.3 在electron-quick-start项目中找到入口文件 main.js &#xff0c;修改打包的文件路…

差值结构的运动

( A, B )---3*30*2---( 1, 0 )( 0, 1 ) 让网络的输入有3个节点&#xff0c;训练集AB各由5张二值化的图片组成&#xff0c;让B全是0&#xff0c;让差值结构的5行分别有0&#xff0c;1&#xff0c;2&#xff0c;2&#xff0c;2个1&#xff0c;3列分别有1&#xff0c;3&#xff0…

知了堂Java V9.0重磅升级,真的很硬核!

“2023年&#xff0c;Java还值得学吗&#xff1f;” 说实话&#xff0c;Java自1995年诞生起&#xff0c;至今还难逢敌手&#xff0c;没有任何编程语言能够取代它的地位。不过随着互联网、计算机技术的发展&#xff0c;Java应用领域越来越广泛&#xff0c;因此也对掌握这门语言…

Vue全家桶(二):Vue中的axios异步通信

目录 1. Axios1.1 Axios介绍1.2 为什么使用Axios1.3 Axios API1.3 Vue使用axios向服务器请求数据1.4 Vue使用axios向服务器提交数据1.5 Vue封装网络请求 2. 使用Vue-cli解决Ajax跨域问题3. GitHub用户搜索案例4. Vue-resource 1. Axios 1.1 Axios介绍 Axios 是一个开源的可以…

flexible.js + rem 适配布局

什么是&#xff1a;flexible.js &#xff1f;&#xff1f; flexible.js 是手机淘宝团队出的移动端布局适配库不需要在写不同屏幕的媒体查询&#xff0c;因为里面js做了处理原理是把当前设备划分为10等份&#xff0c;但是不同设备下&#xff0c;比例还是一致的。要做的&#xf…

【亲测解决】import torch 出现段错误,报错信息 Segmentation fault

微信公众号&#xff1a;leetcode_algos_life import torch 出现段错误 【问题】【解决方案】 【问题】 安装pytorch-gpu版本&#xff0c;安装完成后&#xff0c;import torch发现报错直接返回&#xff0c;报错信息如下&#xff1a; Segmentation fault【解决方案】 Linux环境…

查看虚拟机网络IP和网关

查看虚拟网络编辑器和修IP地址: 查看网关&#xff1a; 查看windows:环境的中VMnet8网络配置(ipconfig指令): 查看linux的配置ifconfig: ping测试主机之间网络连通性: 基本语法 ping 目的主机&#xff08;功能描述&#xff1a;测试当前服务器是否可以连接目的主机) 应用实例 测…

一秒教你搞定前端打包上传后路由404的问题!

1、问题描述 前端实现权限管理后&#xff0c;本地路由跳转正常&#xff0c;打包上传线上出现前404找不到路由路径问题 报如下错误: 2、错误原因 打包之后根路径变化&#xff0c;前端没有将获取到的用户菜单权限中的component进行转换&#xff0c;导致上传后路径错误 3、解决…

Gurobi许可证获取并部署到Pycharm中

获取Gurobi许可证 海外版&#xff08;Gurobi&#xff09;~ 可略过 海外Gurobi地址但是就算用高校身份注册还是无法获取许可证图例 原因&#xff1b;学校的网关没有将本校的 IP 地址标注为学术机构&#xff0c;那么会出现 Error 303/305 错误&#xff0c;IP 验证不会成功&…

第三章_基于zookeeper实现分布式锁

实现分布式锁目前有三种流行方案&#xff0c;分别为基于数据库、Redis、Zookeeper的方案。这里主要介绍基于zk怎么实现分布式锁。在实现分布式锁之前&#xff0c;先回顾zookeeper的知识点。 知识点回顾 Zookeeper&#xff08;业界简称zk&#xff09;是一种提供配置管理、分布式…

NIFI1.21.0_Mysql到Mysql增量CDC同步中_日期类型_以及null数据同步处理补充---大数据之Nifi工作笔记0057

NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现update数据实时同步_实际操作05---大数据之Nifi工作笔记0044 具体的,之前已经写过,如何在NIFI中实现MySQL的增量数据同步,但是写的简单了,因为,比如在插入的时候,更新的时候,仅仅是写死的某…

第五节 利用Ogre 2.3实现雨,雪,爆炸,飞机喷气尾焰等粒子效果

本节主要学习如何使用Ogre2.3加载粒子效果。为了学习方便&#xff0c;直接将官方粒子模块Sample_ParticleFX单独拿出来编译&#xff0c;学习如何实现粒子效果。 一. 前提须知 如果参考官方示例建议用最新版的Ogre 2.3.1。否则找不到有粒子效果的示例。不要用官网Ogre2.3 scri…

【微信小程序开发】第 8 课 - 小程序 API 的 3 大分类

欢迎来到博主 Apeiron 的博客&#xff0c;祝您旅程愉快 &#xff01; 时止则止&#xff0c;时行则行。动静不失其时&#xff0c;其道光明。 目录 1、小程序 API 概述 2、小程序 API 的 3 大分类 3、总结 1、小程序 API 概述 小程序中的 API 是由宿主环境提供的&#xff0c;…

一款基于 SpringCloud 的电商商城系统,小程序+管理端一套带走

项目介绍 Smart Shop 是一款基于 Spring Cloud MybatisPlusXXL-JOBredisVue 的前后端分离、分布式、微服务架构的 Java 商城系统&#xff0c;采用稳定框架开发及优化核心&#xff0c;减少依赖&#xff0c;具备出色的执行效率&#xff0c;扩展性、稳定性高&#xff0c;H5/小程序…

pnpm + monorepo架构思想小试牛刀

写在前面 今天要写的是关于一种前端全新架构的方式&#xff0c;monorepo这是目前相对来讲比较新的一种前端架构&#xff0c;整好趁着最近在学&#xff0c;就利用这个平台记录一下学习的一个过程&#xff0c;上一篇文章更新的是react&#xff0c;后面也会一样更新&#xff0c;今…

深入理解Java虚拟机jvm-运行时数据区域(基于OpenJDK12)

运行时数据区域 运行时数据区域程序计数器Java虚拟机栈本地方法栈Java堆方法区运行时常量池直接内存 运行时数据区域 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域 有各自的用途&#xff0c;以及创建和销毁的时间&#xff0c;有的…

持续改进与创新:水库大坝安全管理方式

随着工业的快速发展&#xff0c;大坝建设已成为经济发展的重要部分。然而&#xff0c;由于自然环境的破坏以及人类因素的干扰&#xff0c;大坝的安全问题备受关注。每年都有不少大坝事故爆发&#xff0c;造成无法预估的损失。据统计&#xff0c;截至2006年我国共有3260座水库已…

【AntDB数据库】AntDB数据库跨地域多中心部署

跨地域多中心部署 **** 某省核心账务库案例 **** 通信行业核心业务系统已经与某款国外成熟商业数据库深度捆绑多年&#xff0c;为改变这一现状&#xff0c;实现数据库“自主可控”的目标&#xff0c;某省经过多轮调研选型与评测最终选择AntDB分布式内存数据库进行核心产生系统…