前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C# GTS四轴运动控制器实例(固高科技步进电机不带编码器)

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

作者头像
zls365
发布2020-08-19 11:19:35
1.1K0
发布2020-08-19 11:19:35
举报
文章被收录于专栏:CSharp编程大全

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

功能:

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

开发环境:VS2017

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

源码:

代码语言:javascript
复制
using System;
using System.Windows.Forms;
using gts;

namespace 三维平移台控制系统
{
    public partial class mainFrom : DevComponents.DotNetBar.OfficeForm
    {
        public mainFrom()
{
            this.EnableGlass = false;
            InitializeComponent();
        }
        short Rtn;
        int  vel = 0;
        int[] pos= {0,0,0 };
        bool flag = false;
        uint clk;
        double prfpos, prfvel, encpos, encvel;
        short AXIS = 1;

        private void buttonX1_Click(object sender, EventArgs e)
{
          
            mc.GT_ZeroPos(AXIS, 1);
            pos[AXIS-1] = 0;
           
        }

        private void buttonX2_Click(object sender, EventArgs e)
{
            //Rtn = mc.GT_Close();
            Rtn = mc.GT_PrfTrap(AXIS);
            mc.TTrapPrm trapprm;
            mc.GT_GetTrapPrm(AXIS, out trapprm);
            trapprm.acc = 0.1;//设置加速度
            trapprm.dec = 0.1;//设置减速度
            trapprm.smoothTime = 1;
            mc.GT_SetTrapPrm(AXIS, ref trapprm);
            pos[AXIS-1] += Convert.ToInt32(textBoxX1.Text);
            vel = Convert.ToInt32(textBoxX2.Text);
            mc.GT_SetPos(AXIS, pos[AXIS-1]);
            mc.GT_SetVel(AXIS, vel);
            // mc.GT_Update(AXIS);
            mc.GT_Update(1 << (AXIS - 1));
            //MessageBox.Show((1 << (AXIS - 1)).ToString());
        }

        private void buttonX3_Click(object sender, EventArgs e)
{
            //Rtn = mc.GT_Close();
            Rtn = mc.GT_PrfTrap(AXIS);
            mc.TTrapPrm trapprm;
            mc.GT_GetTrapPrm(AXIS, out trapprm);
            trapprm.acc = 0.1;
            trapprm.dec = 0.1;
            trapprm.smoothTime = 1;
            mc.GT_SetTrapPrm(AXIS, ref trapprm);
            pos[AXIS-1] -= Convert.ToInt32(textBoxX1.Text);
            vel = Convert.ToInt32(textBoxX2.Text);
            mc.GT_SetPos(AXIS, pos[AXIS-1]);
            mc.GT_SetVel(AXIS, vel);
            //mc.GT_Update(AXIS);
            mc.GT_Update(1 << (AXIS - 1));
        }

        private void timer1_Tick(object sender, EventArgs e)
{
            //if ()
            //{
            //    mc.GT_GetPrfPos(AXIS, out prfpos, 1, out clk);// profile 起始轴号
            //    mc.GT_GetEncPos(AXIS, out encpos, 1, out clk);// encoder 起始轴号
            //    textBox3.Text = prfpos.ToString();
            //    textBox5.Text = encpos.ToString();
            //    mc.GT_GetPrfVel(AXIS, out prfvel, 1, out clk);// 起始规划轴号
            //    mc.GT_GetEncVel(AXIS, out encvel, 1, out clk);// encoder 起始轴号
            //    textBox4.Text = prfvel.ToString();
            //    textBox6.Text = encvel.ToString();
            //}
            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.ToString();
                labelX5.Text = "规划速度 : " + prfvel.ToString();
            }
            else if (AXIS == 2)
            {
                labelX6.Text = "规划位置 : " + prfpos.ToString();
                labelX7.Text = "规划速度 : " + prfvel.ToString();
            }
            else if (AXIS == 3)
            {
                labelX8.Text = "规划位置 : " + prfpos.ToString();
                labelX9.Text = "规划速度 : " + prfvel.ToString();
            }

        }


        private void mainFrom_Load(object sender, EventArgs e)
{
            comboBoxEx1.SelectedIndex = 0;

            textBoxX1.Text = "2000";
            textBoxX2.Text = "10";


            /*初始化*/
            Rtn = mc.GT_Open(0, 1);
            Rtn = mc.GT_Reset();
            Rtn = mc.GT_LoadConfig("GTS800.cfg"); ;
            Rtn = mc.GT_ClrSts(1, 8); //axis 起始轴号,count 

            timer1.Enabled = true;
        }

        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;
            }
        }
    }
}

bin文件:

运行效果:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CSharp编程大全 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档