欢迎光临,我们是一家专注中小型企业营销推广服务的公司!

咨询热线:400 9868 577
淮南兰乔电子商务有限公司
新闻中心News
淮南兰乔电子商务有限公司

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

作者:爱谁谁 | 点击: | 来源:爱谁谁
2404
2025
由于电机不带编码器,无法进行home和当前位置信息读取!功能:三个轴的点位运动:前进+后退,并分别显示每个轴的移动脉冲数(可以换算为距离)!开发环境:VS2017硬件设备:固高科技三维移动平台在上一版本的基础上,增加了以下功能:记录每次运行的距离,即使关闭软件,也能记录当前距离原点的距离(原点首次需在机台上选定)。运行超出机台的最大距离后停止运动。代码语言:javascript代码运行次数:0usingSystem;usingSystem.Windows.Forms;usinggts;usin...

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

功能:

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

开发环境:VS2017

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

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

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

CreBee

短视频矩阵运营工具,跨平台多账号一站式管理

下载

代码语言:javascript

代码运行次数:0

using System;
using System.Windows.Forms;
using gts;
using System.Xml;
using System.Collections.Generic;
<p>namespace 三维平移台控制系统
{
public partial class mainFrom : DevComponents.DotNetBar.OfficeForm
{
public mainFrom()
{
this.EnableGlass = false;
InitializeComponent();
}</p><pre class="brush:php;toolbar:false;"><code>    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<string, string>>();
        KeyValuePair<string, string> kv = new KeyValuePair<string, string>("", "");
        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<string, string>("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<string, string>("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<string, string>("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<KeyValuePair<string, string>> 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 { }
    }
}

}

相关推荐
我要咨询做网站
成功案例
建站流程
  • 网站需
    求分析
  • 网站策
    划方案
  • 页面风
    格设计
  • 程序设
    计研发
  • 资料录
    入优化
  • 确认交
    付使用
  • 后续跟
    踪服务
  • 400 9868 577
    info#ilanqiao.cn
Hi,Are you ready?
准备好开始了吗?
那就与我们取得联系吧

咨询送礼现在提交,将获得兰乔电子商务策划专家免费为您制作
价值5880元《全网营销方案+优化视频教程》一份!
下单送礼感恩七周年,新老用户下单即送创业型空间+域名等大礼
24小时免费咨询热线400 9868 577
合作意向表
您需要的服务
您最关注的地方
预算

直接咨询