您的位置 : 资讯 > 软件资讯 > C# GTS四轴运动控制器实例(固高科技步进电机不带编码器) -V1

C# GTS四轴运动控制器实例(固高科技步进电机不带编码器) -V1

来源:菜鸟下载 | 更新时间:2025-04-24

由于电机不带编码器,无法进行home和当前位置信息读取!功能:三个轴的点位运动:前进+后退,并

由于电机不带编码器,无法进行home和当前位置信息读取!

功能:

三个轴的点位运动:前进+后退,并分别显示每个轴的移动脉冲数(可以换算为距离)!

开发环境:VS2017

硬件设备:固高科技三维移动平台

在上一版本的基础上,增加了以下功能:

记录每次运行的距离,即使关闭软件,也能记录当前距离原点的距离(原点首次需在机台上选定)。运行超出机台的最大距离后停止运动。

C# GTS四轴运动控制器实例(固高科技步进电机不带编码器) -V1

代码语言:javascript

代码运行次数:0

using System;using System.Windows.Forms;using gts;using System.Xml;using System.Collections.Generic;

namespace 三维平移台控制系统{public partial class mainFrom : DevComponents.DotNetBar.OfficeForm{public mainFrom(){this.EnableGlass = false;InitializeComponent();}

    short Rtn;    int vel = 0;    int[] pos = { 0, 0, 0 };    int[] pos1 = { 0, 0, 0 };    bool flag = false;    uint clk;    double prfpos, prfvel, encpos, encvel;    short AXIS = 1;    int X = 0;    int Y = 0;    int Z = 0;    private void buttonX1_Click(object sender, EventArgs e)    {        mc.GT_ZeroPos(AXIS, 1);        //for (int i=0; i> settings = new List>();        KeyValuePair kv = new KeyValuePair("", "");        mc.GT_GetPrfPos(AXIS, out prfpos, 1, out clk);// profile 起始轴号        mc.GT_GetPrfVel(AXIS, out prfvel, 1, out clk);// 起始规划轴号        if (AXIS == 1)        {            labelX4.Text = "规划位置 : " + (prfpos / 500).ToString() + " mm";            labelX5.Text = "规划速度 : " + (prfvel / 2).ToString() + " mm/s";            kv = new KeyValuePair("X", ((prfpos + pos1[0]) / 500 + X).ToString());            settings.Add(kv);            labelX10.Text = "距离原点 : " + ((prfpos + pos1[0])/500 + X).ToString() + " mm";            if ((prfpos + pos1[0]) / 500 + X > 850)                mc.GT_Stop(AXIS, 0);        }        else if (AXIS == 2)        {            labelX6.Text = "规划位置 : " + (prfpos / 500).ToString() + " mm";            labelX7.Text = "规划速度 : " + (prfvel / 2).ToString() + " mm/s";            kv = new KeyValuePair("Y", ((prfpos + pos1[1]) / 500 + Y).ToString());            settings.Add(kv);            labelX11.Text = "距离原点 : " + ((prfpos + pos1[1]) / 500 + Y).ToString() + " mm";            if ((prfpos + pos1[1]) / 500 + Y > 500)                mc.GT_Stop(AXIS, 0);        }        else if (AXIS == 3)        {            labelX8.Text = "规划位置 : " + (prfpos / 500).ToString() + " mm";            labelX9.Text = "规划速度 : " + (prfvel / 2).ToString() + " mm/s";            kv = new KeyValuePair("Z", ((prfpos + pos1[2]) / 500 + Z).ToString());            settings.Add(kv);            labelX12.Text = "距离原点 : " + ((prfpos + pos1[2]) / 500 + Z).ToString() + " mm";            if ((prfpos + pos1[2]) / 500 + Z > 500)                mc.GT_Stop(AXIS, 0);        }        SaveSettings(settings);    }    private void ReadConfigXML()    {        XmlDocument xmlDoc = new XmlDocument();        xmlDoc.Load(AppDomain.CurrentDomain.BaseDirectory + "\config.xml");        XmlNode settingNode = xmlDoc.DocumentElement;        XmlElement e = settingNode.SelectSingleNode("X") as XmlElement;        if (e == null)        {            X = 0;        }        else        {            int val = 0;            if (!int.TryParse(e.InnerText, out val))            {                X = 0;            }            else            {                X = val;            }        }        e = settingNode.SelectSingleNode("Y") as XmlElement;        if (e == null)        {            Y = 0;        }        else        {            int val = 0;            if (!int.TryParse(e.InnerText, out val))            {                Y = 0;            }            else            {                Y = val;            }        }        e = settingNode.SelectSingleNode("Z") as XmlElement;        if (e == null)        {            Z = 0;        }        else        {            int val = 0;            if (!int.TryParse(e.InnerText, out val))            {                Z = 0;            }            else            {                Z = val;            }        }    }    private void mainFrom_Load(object sender, EventArgs e)    {        comboBoxEx1.SelectedIndex = 0;        textBoxX1.Text = "4";        textBoxX2.Text = "5";        labelX4.Text = "规划位置 : " + (0).ToString() + " mm";        labelX5.Text = "规划速度 : " + (0).ToString() + " mm/s";        labelX6.Text = "规划位置 : " + (0).ToString() + " mm";        labelX7.Text = "规划速度 : " + (0).ToString() + " mm/s";        labelX8.Text = "规划位置 : " + (0).ToString() + " mm";        labelX9.Text = "规划速度 : " + (0).ToString() + " mm/s";        /*初始化*/        Rtn = mc.GT_Open(0, 1);        Rtn = mc.GT_Reset();        Rtn = mc.GT_LoadConfig("GTS800.cfg"); ;        Rtn = mc.GT_ClrSts(1, 8); //axis 起始轴号,count         ReadConfigXML();        labelX10.Text = "距离原点 : " + (X).ToString() + " mm";        labelX11.Text = "距离原点 : " + (Y).ToString() + " mm";        labelX12.Text = "距离原点 : " + (Z).ToString() + " mm";        labelX13.Text = "最大距离 : " + (850).ToString() + " mm";        labelX14.Text = "最大距离 : " + (500).ToString() + " mm";        labelX15.Text = "最大距离 : " + (500).ToString() + " mm";        timer1.Enabled = true;    }    private void buttonX4_Click(object sender, EventArgs e)    {        mc.GT_Stop(AXIS, 0);    }    private void comboBoxEx1_SelectedIndexChanged(object sender, EventArgs e)    {        switch (comboBoxEx1.SelectedItem.ToString())        {            case "X轴":                AXIS = 1; break;            case "Y轴":                AXIS = 2; break;            case "Z轴":                AXIS = 3; break;            default:                break;        }    }    public static void SaveSettings(List> settings)    {        try        {            string docPath = AppDomain.CurrentDomain.BaseDirectory + "\config.xml";            XmlDocument xmlDoc = new XmlDocument();            xmlDoc.Load(docPath);            XmlNode settingNode = xmlDoc.DocumentElement;            if (settingNode == null)                return;            foreach (var kv in settings)            {                SetNodeValue(xmlDoc, settingNode, kv.Key, kv.Value);            }            xmlDoc.Save(docPath);        }        catch { }    }    private static void SetNodeValue(XmlDocument XmlDoc, XmlNode rootnode, string key, string value)    {        try        {            XmlElement e = rootnode.SelectSingleNode(key) as XmlElement;            if (e == null)            {                XmlNode node = XmlDoc.CreateNode(XmlNodeType.Element, key, "");                node.InnerText = value;                rootnode.AppendChild(node);            }            else            {                e.InnerText = value;            }        }        catch { }    }}
登录后复制

菜鸟下载发布此文仅为传递信息,不代表菜鸟下载认同其观点或证实其描述。

展开
M.A.C.E.塔防
M.A.C.E.塔防
类型:策略战棋 运营状态:公测 语言:简体中文
前往下载

相关文章

更多>>

热门游戏

更多>>

手机扫描此二维码,

在手机上查看此页面

关于本站 下载帮助 版权声明 网站地图

版权投诉请发邮件到 cn486com#outlook.com (把#改成@),我们会尽快处理

Copyright © 2019-2020 菜鸟下载(www.cn486.com).All Reserved | 备案号:湘ICP备2022003375号-1

本站资源均收集整理于互联网,其著作权归原作者所有,如有侵犯你的版权,请来信告知,我们将及时下架删除相应资源