From bab42c1ff8ec53ffca042f12e5c8fa8d165e0dfd Mon Sep 17 00:00:00 2001 From: "zhengxuan.zhang" Date: Mon, 4 Mar 2024 17:00:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9EHexcal=E4=B8=AD=E9=97=B4?= =?UTF-8?q?=E4=BB=B6=E8=AE=BE=E7=BD=AE=E8=BF=90=E5=8A=A8=E9=80=9F=E5=BA=A6?= =?UTF-8?q?=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HSI_HexagonMI_EF3/HSI_Motion.cpp | 2 +- HSI_HexagonMI_EF3/version.h | 4 +- .../x64/Debug/HSI_HexagonMI_EF3.dll | Bin 567808 -> 567808 bytes .../x64/Debug/HSI_HexagonMI_EF3.pdb | Bin 10989568 -> 11669504 bytes HSI_SEVENOCEAN_EF1_CsTest/bin/Debug/HSI.dll | Bin 567808 -> 567808 bytes HexcalMC/MainFrom.Designer.cs | 2 +- HexcalMC/MainFrom.cs | 230 ++++++++++-------- HexcalMC/Motion/Motion.cs | 2 +- Motion/ACS Motion/bin/Debug/ACS_Motion.exe | Bin 169472 -> 169472 bytes Motion/ACS Motion/bin/Debug/ACS_Motion.pdb | Bin 62976 -> 65024 bytes .../ACS Motion.csproj.FileListAbsolute.txt | 16 ++ 11 files changed, 146 insertions(+), 110 deletions(-) diff --git a/HSI_HexagonMI_EF3/HSI_Motion.cpp b/HSI_HexagonMI_EF3/HSI_Motion.cpp index 45474d5..58eb21d 100644 --- a/HSI_HexagonMI_EF3/HSI_Motion.cpp +++ b/HSI_HexagonMI_EF3/HSI_Motion.cpp @@ -469,7 +469,7 @@ HSI_STATUS HSI_Motion::Startup(HWND _hWnd, bool _bOfflineOnly) handleACS = acsc_OpenCommSimulator(); #else // 10.0.0.100 - default IP address of the controller - handleACS = acsc_OpenCommEthernet("10.0.0.100", ACSC_SOCKET_DGRAM_PORT); + handleACS = acsc_OpenCommEthernet("100.0.0.100", ACSC_SOCKET_DGRAM_PORT); // for the connection to the controller via local network or Internet // hComm = acsc_OpenCommEthernet("10.0.0.100", ACSC_SOCKET_STREAM_PORT); diff --git a/HSI_HexagonMI_EF3/version.h b/HSI_HexagonMI_EF3/version.h index e548516..6e4dac0 100644 --- a/HSI_HexagonMI_EF3/version.h +++ b/HSI_HexagonMI_EF3/version.h @@ -12,5 +12,5 @@ #define HSI_VERSION_REVNUM #define HSI_VERSION_BUILD_DATE _T(__DATE__ ) #define HSI_VERSION_BUILD_TIME _T(__TIME__ ) -#define HSI_FILE_DESCRIPTION "2024.02.28 / 14:55 " -#define HSI_FILE_CSDESCRIPTION _T("2024.02.28 / 14:55 ") +#define HSI_FILE_DESCRIPTION "2024.02.28 / 15:15 " +#define HSI_FILE_CSDESCRIPTION _T("2024.02.28 / 15:15 ") diff --git a/HSI_HexagonMI_EF3/x64/Debug/HSI_HexagonMI_EF3.dll b/HSI_HexagonMI_EF3/x64/Debug/HSI_HexagonMI_EF3.dll index 7521436c90b3bf237981f38d4944af60d6324b31..6fb5a72c9ca4447be9941e6bb42c97b78fda2b06 100644 GIT binary patch delta 86 zcmZp;qSSCjX@dYG)7-nwLX7P~j3CSe#LPg<0>rG_g&5g{I#^8^tQZWpYj(0pGIJW} hfuNy*!FKN+wwL!Axu&m`V3TVP&SBpkoWrr!768UU7P|ld delta 86 zcmZp;qSSCjX@dYG)9V|}LX7P~j3CSe#LPg<0>rG_g&5g{I#^8@tQbtUYj(0pGIQz~ i0HL9Q0mF9h9=4bF89An}m0*)=56)rV9-PCm))oNQ!4}m3 diff --git a/HSI_HexagonMI_EF3/x64/Debug/HSI_HexagonMI_EF3.pdb b/HSI_HexagonMI_EF3/x64/Debug/HSI_HexagonMI_EF3.pdb index 791fa1401ee0128c6fdaf5ba98fc3ee2f4bf6757..cabcbc789ac9f0cf59a48ffe6857e5f4d69b3d72 100644 GIT binary patch delta 33529 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 delta 61128 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 delta 86 zcmZp;qSSCjX@dYG)9V|}LX7P~j3CSe#LPg<0>rG_g&5g{I#^8@tQbtUYj(0pGIQz~ i0HL9Q0mF9h9=4bF89An}m0*)=56)rV9-PCm))oNQ!4}m3 diff --git a/HexcalMC/MainFrom.Designer.cs b/HexcalMC/MainFrom.Designer.cs index 04e03a0..6ecd783 100644 --- a/HexcalMC/MainFrom.Designer.cs +++ b/HexcalMC/MainFrom.Designer.cs @@ -1139,7 +1139,7 @@ this.txtIP.Name = "txtIP"; this.txtIP.Size = new System.Drawing.Size(91, 21); this.txtIP.TabIndex = 22; - this.txtIP.Text = "10.0.0.100"; + this.txtIP.Text = "100.0.0.100"; // // btn_ACSStop // diff --git a/HexcalMC/MainFrom.cs b/HexcalMC/MainFrom.cs index 95b3b11..e73794e 100644 --- a/HexcalMC/MainFrom.cs +++ b/HexcalMC/MainFrom.cs @@ -32,8 +32,7 @@ namespace HexcalMC public partial class MainFrom : RadRibbonForm { - private List _pointCloud = new List(); //运动中点集合 - + private readonly List _pointCloud = new List(); //运动中点集合 public MainFrom() @@ -41,7 +40,7 @@ namespace HexcalMC InitializeComponent(); - #region 3D相关绘制,暂时取消 + #region 3D相关绘制,暂时取消 //var sharpGlViewportControl = new SharpGLViewportControl //{ @@ -69,8 +68,6 @@ namespace HexcalMC tabControl1.TabPages.RemoveAt(1); #endregion - - } private void MainFrom_Load(object sender, EventArgs e) @@ -83,9 +80,12 @@ namespace HexcalMC //加载配置文件 LoadConfig(); + _acs = new Api(); //初始化 ACS运动控制类 + //启动界面刷新 timer_RefreshUI.Start(); + this.TopMost = true; } private void MainFrom_Shown(object sender, EventArgs e) //窗体显示准备好接受用户输入时发生 @@ -93,7 +93,8 @@ namespace HexcalMC //启动服务端,用于接收hexcal传来的指令 StartServer(); - + Btn_ACSStart_Click(null, null); + //Plot3D(); } @@ -131,6 +132,7 @@ namespace HexcalMC return; } + MOTION_SPEED = FileIni.ReadDouble(StrConfigFile, "MOTOR", "MOTION_SPEED"); //运动定位速度 //正限位 X_MAXSTROKESW = FileIni.ReadDouble(StrConfigFile, "MOTOR", "X_MAXSTROKESW"); Y_MAXSTROKESW = FileIni.ReadDouble(StrConfigFile, "MOTOR", "Y_MAXSTROKESW"); @@ -147,6 +149,12 @@ namespace HexcalMC // 清空画布 formsPlot1.Plot.Clear(); + //pointCloud 是否为空 + if (pointCloud.Count <= 0) + { + return; + } + List dataX = new List(); List dataY = new List(); @@ -172,8 +180,6 @@ namespace HexcalMC } - - #region 运动平台变量区 private Api _acs; @@ -185,7 +191,7 @@ namespace HexcalMC private int _mNTotalBuffer = 0; private Axis[] _mArrAxisList = null; - private bool _mBConnected; //ACS通讯状态 + private bool _mAcsConnected; //ACS通讯状态 // For update values private MotorStates _mNMotorState; //运动状态 @@ -201,22 +207,23 @@ namespace HexcalMC private HomeStates _homeStates; //回家状态 private MotionStates _currentMotionState; //当前运动状态 - private readonly int _motionTimeout = 5000; //定义运动超时时间 + private readonly int _motionTimeout = 50000; //定义运动超时时间 public static Axis[] USE_AXIS = - { Axis.ACSC_AXIS_0, Axis.ACSC_AXIS_1, Axis.ACSC_AXIS_4, Axis.ACSC_NONE }; //定义启用的轴,后面运动时会使用 + { Axis.ACSC_AXIS_1, Axis.ACSC_AXIS_0, Axis.ACSC_AXIS_8, Axis.ACSC_NONE }; //定义启用的轴,后面运动时会使用 //定义 XYZ三个轴的左右行程范围 public string StrConfigFile = Application.StartupPath + "\\File\\config.ini"; - public static double X_MAXSTROKESW = 100.0; //正限位 - public static double Y_MAXSTROKESW = 50.0; - public static double Z_MAXSTROKESW = 10.0; + public static double MOTION_SPEED = 60; + public static double X_MAXSTROKESW = 730; //正限位 + public static double Y_MAXSTROKESW = 1000; + public static double Z_MAXSTROKESW = 5; - public static double X_MINSTROKESW = -100.0; //负限位 - public static double Y_MINSTROKESW = -50.0; - public static double Z_MINSTROKESW = -10.0; + public static double X_MINSTROKESW = -30; //负限位 + public static double Y_MINSTROKESW = -10; + public static double Z_MINSTROKESW = -280; #endregion @@ -340,7 +347,7 @@ namespace HexcalMC private void ParseHexcalMsg(string msg) //编写一个Hexcal协议解析函数 { - DebugDfn.AddLogText("正在解析" + msg); + DebugDfn.AddLogText("正在解析 " + msg); //去除Msg中\r\n msg = msg.Replace("\r\n", ""); //判断是否含有故障ERROR字样 @@ -439,7 +446,7 @@ namespace HexcalMC SendMsgToHexcal( "ACCEL 1000.000000,1000.000000,1000.000000,0.000000,0.000000,0.000000,0.000000,0.000000"); } - else if (msg.Contains("MOVPAR 300.0,300.0,300.0,0.0,0.0,0.0")) //设置速度 xyz 轴的速度 + else if (msg.Contains("MOVPAR")) //设置速度 xyz 轴的速度 { SendMsgToHexcal("%"); } @@ -537,8 +544,16 @@ namespace HexcalMC private void BtnEnable_Click(object sender, EventArgs e) //使能所有轴 { - //!!!! Important !! Must insert '-1' at the last - _acs.EnableM(USE_AXIS); + if (_mAcsConnected) + { + //!!!! Important !! Must insert '-1' at the last + _acs.EnableM(USE_AXIS); + } + else + { + //弹窗提醒尚未连接 + MessageBox.Show("未连接到运动平台,请先点击连接"); + } } private void BtnDisable_Click(object sender, EventArgs e) //轴取消 @@ -550,20 +565,10 @@ namespace HexcalMC private void TmrMonitor_Tick(object sender, EventArgs e) //用于刷新状态 { int iAxisNo = cboAxisNo.SelectedIndex; - if (_mBConnected) + if (_mAcsConnected) { try { - // Instruction 1. Using library functions - acsc_GetFPosition, - // acsc_GetRPosition, .... Instruction 2. Read ACS variable - Already defined - // almost things (FPOS, RPOS, ...) Motion parameters and state is array (Max - // length is total number of axes) - // - // * Library function can read only 1 axis information, so if you want to read - // several axes, you have to call the function many times. (This may cause - // communication delay.) Recommand (if you want to read many axes) : read/write - // variable using ReadVariable, ReadVariableScalar, ReadVariableVector, ReadVariableMatrix - // Get Motor State ACSPL+ Variable : MST (integer) _mNMotorState = _acs.GetMotorState((Axis)iAxisNo); @@ -573,6 +578,7 @@ namespace HexcalMC if ((_mNMotorState & MotorStates.ACSC_MST_MOVE) != 0) { lblMoving.Image = Resources.On; + _currentMotionState = MotionStates.Moving; } else { @@ -583,6 +589,7 @@ namespace HexcalMC if ((_mNMotorState & MotorStates.ACSC_MST_INPOS) != 0) { lblInPos.Image = Resources.On; + _currentMotionState = MotionStates.InPos; } else { @@ -608,43 +615,6 @@ namespace HexcalMC { lblEnable.Image = Resources.Off; } - - - // Reference position ACSPL+ Variable : RPOS (real) - _mLfRPos = _acs.GetRPosition((Axis)iAxisNo); // 参考位置 - - // Feedback position (Encoder value) ACSPL+ Variable : FPO (real) - _mLfFPos = _acs.GetFPosition((Axis)iAxisNo); //反馈位置 - - // PE (Position Error) There is no function in library. We need to use - // ReadVariable function - _mLfPe = (double)_acs.ReadVariable("PE", ProgramBuffer.ACSC_NONE, iAxisNo, iAxisNo); //位置误差 - - // Feedback Velocity - _mLfFvel = (double)_acs.ReadVariable("FVEL", ProgramBuffer.ACSC_NONE, iAxisNo, iAxisNo); //实际速度 - - // txtRPOS.Text = String.Format("{0:0.0000}", m_lfRPos); //参考位置 - rtb_xPos.Text = string.Format("{0:0.0000}", _mLfFPos); //反馈位置 - // txtPE.Text = - // String.Format("{0:0.0000}", - // m_lfPE); //实际速度 - // txtFVEL.Text = - // String.Format("{0:0.0000}", m_lfFVEL);//位置误差 - - // Read left/right hardware limits state ACSPL+ Variable : FAULT (integer) - _mObjReadVar = - _acs.ReadVariableAsVector("FAULT", ProgramBuffer.ACSC_NONE, 0, _mNTotalAxis - 1); - if (_mObjReadVar != null) - { - _mArrReadVector = _mObjReadVar as Array; - if (_mArrReadVector != null) - { - for (int i = 0; i < _mNTotalAxis; i++) - { - UpdateLimitState(i, (int)_mArrReadVector.GetValue(i)); - } - } - } } catch (Exception ex) { @@ -665,7 +635,7 @@ namespace HexcalMC txtIP.Text, // IP Address (Default : 10.0.0.100) Convert.ToInt32(txtPort.Text.Trim())); // TCP/IP Port nubmer (default : 701) - _mBConnected = true; + _mAcsConnected = true; } catch (Exception ex) { @@ -685,7 +655,7 @@ namespace HexcalMC private void Btn_ACSStop_Click(object sender, EventArgs e) //断开连接 { - if (_mBConnected) _acs.CloseComm(); + if (_mAcsConnected) _acs.CloseComm(); tmrMonitor.Stop(); @@ -709,7 +679,7 @@ namespace HexcalMC private void Ishome() //读取回家状态,当未回家时执行回家指令 { // 1、连接状态检查,如果未连接,提示 - if (!_mBConnected) + if (!_mAcsConnected) { DebugDfn.AddLogText("[Ishome] ACS平台未连接,请先点击连接"); MessageBox.Show("ACS平台未连接,请先点击连接", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); @@ -717,7 +687,7 @@ namespace HexcalMC } // 2、回家状态检查是否已经回家 - if (_mBConnected && _homeStates == HomeStates.Homed) + if (_mAcsConnected && _homeStates == HomeStates.Homed) { //弹窗提示 MessageBox.Show("轴已经回家", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); @@ -725,12 +695,12 @@ namespace HexcalMC } // 3、读取回家状态 - if (_acs != null && _mBConnected) + if (_acs != null && _mAcsConnected) { var yawHome = _acs.ReadVariable("YAW_HOME_DONE"); - if (yawHome != null && (bool)yawHome) + if (Convert.ToBoolean(yawHome)) { //弹窗提示 MessageBox.Show("轴已经回家", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); @@ -769,7 +739,6 @@ namespace HexcalMC } } - private void InitMotion() //定义 运动状态初始化函数,包括内部变量,轴启用,回家判断等 { //运动相关变量初始化 @@ -777,6 +746,18 @@ namespace HexcalMC _currentMotionState = MotionStates.None; _currentMotionState = MotionStates.None; + if (!_mAcsConnected) + { + MessageBox.Show("未连接运动平台,请先连接运动平台"); + return; + } + + if (_acs == null) + { + DebugDfn.AddLogText("运动控制对象不存在"); + return; + } + //轴启用,加电 _acs.EnableM(USE_AXIS); for (int i = 0; i < USE_AXIS.Length; i++) @@ -788,6 +769,39 @@ namespace HexcalMC //回家 Ishome(); + + SetSpeedXyz(); + + //注册到位事件 + _acs.PHYSICALMOTIONEND += ACS_PHYSICALMOTIONEND; + _acs.EnableEvent(Interrupts.ACSC_INTR_PHYSICAL_MOTION_END); + } + + private void ACS_PHYSICALMOTIONEND(AxisMasks axis) + { + int bit = 0x01; + int axisNo = 0; + // Param value is bit number + // Bit Number = Axis Number + for (int i = 0; i < 64; i++) + { + if ((int)axis == bit) + { + axisNo = i; + break; + } + + bit = bit << 1; + } + + // Add log to ListBox + Invoke((MethodInvoker)delegate + { + DebugDfn.AddLogText("运动到位"); + _currentMotionState = MotionStates.InPos; + DebugDfn.AddLogText("运动到位"); + + }); } private bool IsWithinStrokes(Point3D point) //判断点是否在行程范围内 @@ -804,7 +818,7 @@ namespace HexcalMC private void SetPositionXyz(Point3D point3D) //运动到指定位置 { - if (!_mBConnected) + if (!_mAcsConnected) { DebugDfn.AddLogText("ACS平台未连接,请先点击连接"); MessageBox.Show("ACS平台未连接,请先点击连接", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); @@ -821,22 +835,22 @@ namespace HexcalMC { double[] pointsArray = { - point3D.Y, point3D.X, + point3D.Y, point3D.Z }; //执行运动指令 _acs.ToPointM(MotionFlags.ACSC_NONE, USE_AXIS, pointsArray); //多轴运动到指定位置 - //等待运动完成 - for (int i = 0; i < USE_AXIS.Length; i++) - { - _acs.WaitMotionEnd(USE_AXIS[i], _motionTimeout); //等待回家完成 - } + ////等待运动完成 + //for (int i = 0; i < USE_AXIS.Length; i++) + //{ + // _acs.WaitMotionEnd(USE_AXIS[i], _motionTimeout); //等待回家完成 + //} - _currentMotionState = MotionStates.InPos; - DebugDfn.AddLogText("运动到位"); + //_currentMotionState = MotionStates.InPos; + //DebugDfn.AddLogText("运动到位"); } else { @@ -852,12 +866,11 @@ namespace HexcalMC } } - private Point3D GetPositionXyz(int positionMode = 1) //获取当前位置 { double xPosition = 0, yPosition = 0, zPosition = 0; Point3D point3D = new Point3D(xPosition, yPosition, zPosition); - if (!_mBConnected) + if (!_mAcsConnected) { DebugDfn.AddLogText("ACS平台未连接,请先点击连接"); MessageBox.Show("ACS平台未连接,请先点击连接", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); @@ -882,9 +895,6 @@ namespace HexcalMC DebugDfn.AddLogText("参考位置: " + xPosition + " " + yPosition + " " + zPosition); } - //获取位置误差 - double positionError = (double)_acs.ReadVariable("PE", ProgramBuffer.ACSC_NONE, 0, 2); - DebugDfn.AddLogText("位置误差: " + positionError); //构造point3D格式 point3D = new Point3D(xPosition, yPosition, zPosition); @@ -892,14 +902,30 @@ namespace HexcalMC return point3D; } - private void GetSpeedXyz() //获取运动参数 + private void SetSpeedXyz() //获取运动参数 { //获取实际速度 - double feedbackVelocity = (double)_acs.ReadVariable("FVEL", ProgramBuffer.ACSC_NONE, 0, 2); + double feedbackVelocity = (double)_acs.ReadVariable("FVEL", ProgramBuffer.ACSC_NONE, 0, 0); DebugDfn.AddLogText("实际速度: " + feedbackVelocity); + + //设置Y轴 速度参数 + _acs.SetVelocity(Axis.ACSC_AXIS_0, MOTION_SPEED); + _acs.SetAcceleration(Axis.ACSC_AXIS_0,MOTION_SPEED*10); + _acs.SetDeceleration(Axis.ACSC_AXIS_0,MOTION_SPEED*10); + + //设置X轴速度参数 + _acs.SetVelocity(Axis.ACSC_AXIS_1, MOTION_SPEED); + _acs.SetAcceleration(Axis.ACSC_AXIS_1, MOTION_SPEED * 10); + _acs.SetDeceleration(Axis.ACSC_AXIS_1, MOTION_SPEED * 10); + + //设置Z轴速度参数 + _acs.SetVelocity(Axis.ACSC_AXIS_8, MOTION_SPEED); + _acs.SetAcceleration(Axis.ACSC_AXIS_8, MOTION_SPEED * 10); + _acs.SetDeceleration(Axis.ACSC_AXIS_8, MOTION_SPEED * 10); + } - private void openGLControl1_OpenGLDraw(object sender, SharpGL.RenderEventArgs args) + private void openGLControl1_OpenGLDraw(object sender, RenderEventArgs args) { OpenGL gl = openGLControl1.OpenGL; @@ -908,7 +934,6 @@ namespace HexcalMC gl.LoadIdentity(); //gl.Translate(0.0f, 0.0f, -5.0f); // 平移场景 - } private void LoadPoints(List points) @@ -931,6 +956,7 @@ namespace HexcalMC gl.PointSize(5.0f); // 大小为5个单位 gl.Vertex(point.X, point.Y, point.Z); } + gl.End(); gl.Flush(); @@ -938,24 +964,18 @@ namespace HexcalMC private void openGLControl1_OpenGLInitialized(object sender, EventArgs e) { - } private void openGLControl1_Resized(object sender, EventArgs e) { - } - private void openGLControl1_GDIDraw(object sender, SharpGL.RenderEventArgs args) - { - - } - - private void SetSpeedXyz() //设置运动参数 - + private void openGLControl1_GDIDraw(object sender, RenderEventArgs args) { } + + #endregion ACS平台相关 #region 菜单栏 @@ -976,14 +996,14 @@ namespace HexcalMC private void Timer_RefreshUI_Tick(object sender, EventArgs e) //UI刷新 { //状态灯刷新 - lamp_acs.State = _mBConnected ? LampColor.Green : LampColor.Silver; + lamp_acs.State = _mAcsConnected ? LampColor.Green : LampColor.Silver; lamp_hexcal.State = _mBHexcalConnected ? LampColor.Green : LampColor.Silver; //时间栏 //获取当前时间,构造形如 精确到秒,例如 2023-10-08 16:01:23 rle_timer.Text = "当前时间: " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); - Plot2D(_pointCloud);//绘图 + Plot2D(_pointCloud); //绘图 } #endregion 菜单栏 diff --git a/HexcalMC/Motion/Motion.cs b/HexcalMC/Motion/Motion.cs index 6cf3bf2..814fb71 100644 --- a/HexcalMC/Motion/Motion.cs +++ b/HexcalMC/Motion/Motion.cs @@ -852,7 +852,7 @@ namespace HexcalMC private void BtnEventMotionEnd_Click(object sender, EventArgs e) { - //_ACS.PHYSICALMOTIONEND +=_ACS_PHYSICALMOTIONEND; + _acs.PHYSICALMOTIONEND +=ACS_PHYSICALMOTIONEND; _acs.EnableEvent(Interrupts.ACSC_INTR_PHYSICAL_MOTION_END); lstLog.Items.Add("PHYSICAL_MOTION_END event enabled"); } diff --git a/Motion/ACS Motion/bin/Debug/ACS_Motion.exe b/Motion/ACS Motion/bin/Debug/ACS_Motion.exe index de79f531dfd565af03d7f3b98805334d8b793376..fb18e0c4b21bc408f6f9374eb82bce339a80564c 100644 GIT binary patch delta 4543 zcmZ9Q3s{t87RS%~eshCim>ItL22n|H(n%3?z&p~a;FH&avdyVy^HQ3n8_Go>z~QpE zqF79CtC?9@x?x&isDNoJUI0x~Tei%y^w~e0M|L2_dyqEdr zV`eJ0M^u&yu53vPXYB?!j6#*2UF&{qUM9U}b9%Zf!M3nb2L;2@yMl-vBW1{AHLZKOB}FVc97f`)h$C;lR zSgW`vQ48z|hu;ayy(Fo{K9V%YyCi9C{|MLa56gCvw2uQ}c`z&wNm<$(nOlxq1THT3 z58C88>%MfGDEGvQGEY?Vc8~LJ5%<((zD5m z>y?9T=T%seTSXm9J4I8KOZ=zuHZh^n%YRVC6O|d_lM1hmxxz(9sK|pwg%w`zbcvTL zGK3vvqDzdf@Nu6@yd3b^M)eqSOgIBBmwYW_b8A9VNt1V%ONA|H>}L_9tvYa+YI zXUfoMVe9it`3z0C3$n$A!rpwYCRz%8wxyH|Eoqk+SU8B6Xd(v_wLKEM#r}eUJgA9_ z1wM6Ck3@^U$~grIe5)p^Fx}Q8-KwWsmOjecaZPy>O#h;^7?$s`eIlj)((Mt!JeMfQ zkFj0uF@BFYlsAxH)xQ^gZ`y}9BREAo7*>XthSEm~f%@}ROyJ9(U2#Fb4n4W+c` zUOtSa3u7SFG%XaUUG8D`h&Puf_mx*}zlZyc%dfyDxs{<#GMG2lEha6WDh`(S=J{^% zdAZM4-D9$LF`;}UuXT$OOl<6tI3V6HOXHi|LMivDyLu$#TR<*vZdo#KbBp>ipL)DU zTD~nX-TY})1{c$7;zU|a9NQ^uHF3@JYpxjs-|?J^CC01BY~pOg;$Z`u;7|d~)kmsEd$WbmEGKIL$AoVHYLh5tWBKuf02gYNG3*3$Xni97R z)wng}R#$K20CpSF6w@CW?Uwp;`#@y2Rq9!;!N}fL$y-q=$RDFpk!#E{n{JkIAMpdq zZZyi8wZvzL7MqOhRz@lT27Y|P7F@E7Xdt?cvYm~lu^VO6@h&;+JF36KAnX69$w&k> z9dD5}H*Au1OlG5qR}5oO?{iCfHJLTjmTa<502*krVZ>G%V0X!hy$)G=$RH=^PZJC# zj;5OZASYnNB${#>oyr)}qpULPHA~KONv5ph}3n_Av^mjDzY|Nw$BDPYEMtVHyrT{&4QR~s9<7u#k)|f}7 zTj**yN>@M^Wp~rrY$djvTuB@cigDRv%Hu1Etk5Gc#{RBsbP{2 zf~1kOg9h)Xrn88zQ|niVr)d$_D1L>QOp#tR>T{}@O3Wly5zDD^8SzWn>SuhUy#7zp z-~q&&#Gi=w68}u4(?~BMJ(*gZp)2Dg>3A-8`8Si?Km+js>z%02L`{@&${wcp9+NyR zMUnNR@NDq(}gyGPN*!H>GD!^%FeGC9=cwkUrA5#XvUxtNpyU}@JmM`S)bUdaEf&$$Y;#N*bIV5z4K{b&r5z{F^G_v&`a+)i@B@}8qc$%GrayJTLCPTefW3ClHe5M5v0wK|_yvLG;B zw};&?p)J$h%}ANtuDeS%={_a5)-qJvjP5GA6*PSo+#nb1b;eoFvmge)uK@g->r1X0 zUIP>SK3CD4DK;o-IXlH}w^p(v%;Z|Ze5}N=TKuqfM876h35{9{yABuBci9x)W?Tq4 zyxZx8cBYz-i%IJ|>?`s3x_I;VEQfVFuZuP7JRCnfzrC*i028mp0Z}}N161D5(xc;$ zt!4+T*CVGR6U6m(@c}Q!&qr$T1I%n{8l!Y`W^@)EcbnShLq&PAr%mm!l>beK=!$Fyd!;J{F?~IQcS1A3Rnei!9HNj%;MQ_mccUd6@HS{v-NBXJH)!# zS@t!n-f%zV_m?S-Nwak|sLoJ7U z@5{Q+=H9l~aw>WHuE46yMVnr{fN98T(Q5Hif6Qe4_Z2yIp417!L^qq+GGP@z%vz%B T_|IluFuKM0EdQPbhnfBlnLW$b delta 4401 zcmZXY3v^Re7KZmZdA4cVgyh~JZG=)wfl?qmi@*r9%vccRp_ZacP=v);poO;3C+WjF z2t}w{d5NQlKvA$@#ul&$2(;z30PT#Z!%Iei>Ffpxak%!!9+)MPL@rhcfBYkL64cMb z^paqLf362;`xAhHd{+ST)ZYSQyCGL1J6YJe0g%@wQ$3z`bql})MEPzNnqu+jQ05iTgk>LxJSLa55saBOLM-e*oxQUHU9@3DOQ0kEO}L%S#r~@DrA1)<>~EUQ0V1P96%&gJIbkmMvk~9F_<0eCM@Tmk@<(5~A#C zH*(78&OnyD7ub{#_bA4eJtLR6u%v9bd94d_a|U4Tf=+Uy3j+&$_C}5b>zgofK^M8p zg<}?s!qzgcJnF&=Wj@!bdur6bmnY{h7$`20-@34O$yofTw1d3m!V{%FdxTr{4|dy* zX{BAH(~a4sJ{j-Ezm|INyArSL=0;Pg&o$_t(uPpe;*w5sxEt4$_~bY@9xL(S+Iejv z3+K%rDQCGcqu3|&+*n%d6IJ+4Q6GtJ)Qf%Qb=(Roic&-X>x=rB_XPt3iW0=80|tNZ}ZJ?XZn0}-23jok}-%LomhF7!#ShD!@Q*fQTM6Eys8 zzR%TH3*VeND{32d&$%YkH2iRGx;c~6cymFEoUh>?{|NJvU}R2Zid?1P+m$~1mU~+4 z$Db%&NX&@?VzY z%5zQEh+~%Vbc7UDp+jo6d9%c%4T z<_zw0$g28SwP=canA7!WKbaz3g{pNIag)0}F;T=3&Fwl7qjjav#5_P8Yg2lnyDPDS zP4RA2590Nx-ozyql^twRaUb(D&c103*Y{pfgXaKK-(~Y7Z%(XGZ=@utit2@8FJ>a&!Jgps z%mX}X7mu34{Drr)iaCR`HrB{H>SDG7HSq=R_LiE(4-vfWy^Lz@i=~?0#e9R8lES5} zJmpyCNxtJL%(J{J{h6J3^A}OQ6MnFdBns;&;!*Qs1~b&TCJ-;hT$8`*e~=#A=`r=W z>!tQ>PBXokPIgkR0@j-{X&L1SLAQ&X0p1L`@5q^;Dde7v$~0KuVq&l|CMpv*F6-vc zG}xdiDHtoYWg6^|o*Z;LtWFsNdqQrKbuumRl^(&|6{>VWUC7-fr@^No=c9Q%a3bWM zCwCuQ54jqujD>|M!7lelW%>#VTW;;8y+iJMcEQt_4%gY$w*SgmBGVy~{%8O7q^5(LT@|bYGyFbR7#NLj7+j^| zgm}PKE)EK_yIS}}kz*0wTHe3o2ciP%wU5LtxZr9M8FGhd28@$!&Lr3?T$aN)W<`Sd z7tUGXwOkS7M4R&_zP=(s-W9lWMdw7Le3=GB%32!WlzYYCXb*9_#R02Ak&}`4qgd(n zCsO=eqz2dEafjmPrbKxH@@$E+NSt%`kb`8QM}u=PzwGej5`n)k^Jc|;3`Z+Q%|tLenU@i!BJu? z{F|5nH;Bm)YwQVqnS+^W93Ktw6raG6rq4x8 zM&mvQoAXRCl|U}OzbZCksaPr2iBH96;%jkHERyfYI@u^ckw$v>nZQB^?4o0%0U*M< zh1lc_5D)4*h{C4yWxL`N+HQVlV z9dS&v4c~3)j4!pg9L{{028EDM@8=x4`fx%^LL9YoO@$ehnMxZK$^e)$N~$NLl}2`G z?u+YNJL~^fMGr5-L`*)IY@#(7CgGjd_M@E7K>UURpIr=D z85Ipby)rv%OGIGJq1htRZn4_i&5`tj+L2C{NQ+6?z|bQlhN^~RjSa`dfE_;d1;($N z9Y^08+@^0YZZDKDenR?$c~^hlu({9RN0&eN_{}b#oEbrB7}@B3SsH|WSm+xKHFna9 jltnUDJkpr4NFETiy{(PWHS%YRoSE9_d{zEH5%Yfmbg#g& diff --git a/Motion/ACS Motion/bin/Debug/ACS_Motion.pdb b/Motion/ACS Motion/bin/Debug/ACS_Motion.pdb index 7dd46f60ee2d6aa0e9f15b54580be4c9501fcfcc..59d00b320f182ea6cfd40d8aeed2faf5c6f9c1a2 100644 GIT binary patch delta 7994 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 J>cq>I{{i97bp-$b diff --git a/Motion/ACS Motion/obj/x86/Debug/ACS Motion.csproj.FileListAbsolute.txt b/Motion/ACS Motion/obj/x86/Debug/ACS Motion.csproj.FileListAbsolute.txt index c03a578..4c03c46 100644 --- a/Motion/ACS Motion/obj/x86/Debug/ACS Motion.csproj.FileListAbsolute.txt +++ b/Motion/ACS Motion/obj/x86/Debug/ACS Motion.csproj.FileListAbsolute.txt @@ -14,3 +14,19 @@ E:\HexagonProjects\2022-05-直线电机平台\LM-Middleware\Motion\ACS Motion\bi E:\HexagonProjects\2022-05-直线电机平台\LM-Middleware\Motion\ACS Motion\obj\x86\Debug\ACS_Motion.exe.licenses E:\HexagonProjects\2022-05-直线电机平台\LM-Middleware\Motion\ACS Motion\obj\x86\Debug\ACS_Motion.exe E:\HexagonProjects\2022-05-直线电机平台\LM-Middleware\Motion\ACS Motion\obj\x86\Debug\ACS_Motion.pdb +D:\HexagonProjects\2022-05-直线电机平台\LM-Middleware\Motion\ACS Motion\bin\Debug\ACS_Motion.exe +D:\HexagonProjects\2022-05-直线电机平台\LM-Middleware\Motion\ACS Motion\bin\Debug\ACS_Motion.pdb +D:\HexagonProjects\2022-05-直线电机平台\LM-Middleware\Motion\ACS Motion\bin\Debug\Telerik.WinControls.dll +D:\HexagonProjects\2022-05-直线电机平台\LM-Middleware\Motion\ACS Motion\bin\Debug\Telerik.WinControls.UI.dll +D:\HexagonProjects\2022-05-直线电机平台\LM-Middleware\Motion\ACS Motion\bin\Debug\TelerikCommon.dll +D:\HexagonProjects\2022-05-直线电机平台\LM-Middleware\Motion\ACS Motion\bin\Debug\Telerik.WinControls.xml +D:\HexagonProjects\2022-05-直线电机平台\LM-Middleware\Motion\ACS Motion\bin\Debug\Telerik.WinControls.UI.xml +D:\HexagonProjects\2022-05-直线电机平台\LM-Middleware\Motion\ACS Motion\obj\x86\Debug\ACS Motion.csproj.AssemblyReference.cache +D:\HexagonProjects\2022-05-直线电机平台\LM-Middleware\Motion\ACS Motion\obj\x86\Debug\ACS_DotNET_Library_Advanced_Demo.MainForm.resources +D:\HexagonProjects\2022-05-直线电机平台\LM-Middleware\Motion\ACS Motion\obj\x86\Debug\ACS_DotNET_Library_Advanced_Demo.Properties.Resources.resources +D:\HexagonProjects\2022-05-直线电机平台\LM-Middleware\Motion\ACS Motion\obj\x86\Debug\ACS Motion.csproj.GenerateResource.cache +D:\HexagonProjects\2022-05-直线电机平台\LM-Middleware\Motion\ACS Motion\obj\x86\Debug\ACS_Motion.exe.licenses +D:\HexagonProjects\2022-05-直线电机平台\LM-Middleware\Motion\ACS Motion\obj\x86\Debug\ACS Motion.csproj.CoreCompileInputs.cache +D:\HexagonProjects\2022-05-直线电机平台\LM-Middleware\Motion\ACS Motion\obj\x86\Debug\ACS Motion.csproj.CopyComplete +D:\HexagonProjects\2022-05-直线电机平台\LM-Middleware\Motion\ACS Motion\obj\x86\Debug\ACS_Motion.exe +D:\HexagonProjects\2022-05-直线电机平台\LM-Middleware\Motion\ACS Motion\obj\x86\Debug\ACS_Motion.pdb