由于电机不带编码器,无法进行home和当前位置信息读取!功能:三个轴的点位运动:前进+后退,并
由于电机不带编码器,无法进行home和当前位置信息读取!
功能:
三个轴的点位运动:前进+后退,并分别显示每个轴的移动脉冲数(可以换算为距离)!
开发环境:VS2017
硬件设备:固高科技三维移动平台
在上一版本的基础上,增加了以下功能:
记录每次运行的距离,即使关闭软件,也能记录当前距离原点的距离(原点首次需在机台上选定)。运行超出机台的最大距离后停止运动。
代码语言: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 { } }} 菜鸟下载发布此文仅为传递信息,不代表菜鸟下载认同其观点或证实其描述。
版权投诉请发邮件到 cn486com#outlook.com (把#改成@),我们会尽快处理
Copyright © 2019-2020 菜鸟下载(www.cn486.com).All Reserved | 备案号:湘ICP备2022003375号-1
本站资源均收集整理于互联网,其著作权归原作者所有,如有侵犯你的版权,请来信告知,我们将及时下架删除相应资源