一.C#语言进行PC上位机的软着陆功能实现开发
1.在VS2019菜单"文件"→"新建"→"项目",启动创建项目向导。

2.选择开发语言为"C#"和Windows窗体应用程序,点击下一步。

3.配置好项目名称和位置,以及相应框架,点击创建。

4.找到厂家提供的光盘资料里面的C#函数库,路径如下(64位库为例)。
进入厂商提供的光盘资料,找到zauxdll.dll,zmotion.dll和Zmcaux.cs这三个库文件。库文件路径:【00光盘资料】→【04PC函数】→【01PC函数库V2.1】→【Windows平台】→【C#】→【64位】→【库文件】。

5.将厂商提供的C#的库文件以及相关文件复制到新建的项目中。
(1)将zmcaux.cs文件复制到新建的项目里面中。

(2)将zauxdll.dll和zmotion.dll文件放入bin\debug文件夹中。

(3)将Zmcaux.cs文件添加进项目中。右键项目名称,选择添加,再选择现有项,选择Zmcaux.cs文件。

6.双击Form1.cs里面的Form1,出现代码编辑界面,在文件开头写入using cszmcaux,并声明控制器句柄g_handle。

至此,项目新建完成,可进行C#项目开发。
二.相关PC函数介绍
PC函数手册可在光盘资料获取,具体路径如下:"00光盘资料\03编程手册\03ZMotion PC函数库编程手册"。






三.C#软着陆功能代码实现示例
在工业自动化与高精度运动控制领域,**设备的停止过程往往比运动过程更考验系统的控制性能。**传统运动控制方式在临近目标位置时仍维持较高速度,导致机械系统承受较大惯性冲击,引起设备振动、定位偏差、零件磨损甚至工件损伤。
软着陆功能作为一种先进的运动控制策略,通过智能化的速度规划与平滑切换机制,显著提升了设备在停止阶段的控制品质与可靠性。
1.软着陆功能的定义与核心机制
软着陆本质上是一种基于分段速度曲线的运动控制方法。其核心思想是将整个定位过程划分为如下两个主要阶段:
(1)高速趋近阶段
在此阶段,运动轴以系统允许的最高效率速度向目标位置移动,确保整体运动过程具备良好的时间性能与生产效率。
(2)低速精停阶段
在接近目标位置某一设定距离(即"切换点")时,控制系统自动切换至预先设定的低速模式,以极小且可控的速度完成最终阶段的位移。此举极大降低了系统动能,从而实现接近无冲击的停止效果。
该控制结构不仅在机械层面减少冲击,也可在需要力控制的场合(如精密装配、半导体压合、光学对位等)实现终端力的精确管理。
2.关键技术参数与算法支持
实现高性能的软着陆控制,离不开以下几类关键参数的精细配置与底层算法的支持:
(1)FORCE_SPEED
软着陆阶段的运行速度,通常设置为较低值,是影响接触力与平稳性的直接因素。
(2)MOVELIMIT
运动系统在最终阶段所允许的最大速度上限,用于约束末段运动能量,防止过冲。
(3)切换点
系统由高速转为低速的关键位置参数。其设置需综合考虑运动惯量、系统响应时间与负载特性,通常需在实际应用中通过调试优化确定。
(4)S型加减速曲线
采用S型算法规划加减速过程,使得速度变化连续平滑,避免阶跃变化引起的机械振荡与冲击噪声,进一步提升运动的平稳性与定位精度。
3.系统实现方式与典型指令结构
在正运动控制器中,软着陆功能常通过复合运动指令或参数化方式实现。
例如,可使用MOVESP指令组合,将整个运动分解为:
(1)前半段以FORCE_SPEED及较高加速度进行规划。
(2)后半段则受MOVELIMIT限制,并以S型曲线平滑过渡至目标点。
此类指令通常允许用户直接设置软着陆区间、末端速度及过渡点等参数,具有良好的可配置性与应用灵活性。

如上图所示,重点想实现的功能为最大速度结束时能以一个很低速度靠近结束点。
将运动过程分为两段,将MOVESP分为两段,第一段以FORCE_SPEED进行规划加速到Vm,第二段以最大速度MOVELIMIT进行规划,使用软着陆速度Vp低速运行。
采用S型算法规划加减速过程,使得速度变化连续平滑。
以下是基于C#平台的软着陆功能实现关键代码:
private void button6_Click(object sender, EventArgs e)
{
if (g_handle == (IntPtr)0)
{
MessageBox.Show("未链接到控制器!", "提示");
}
else
{
int[] axislist = { m_axisnum };
float[] poslist1 = { Convert.ToSingle(textBox21.Text) };
float[] poslist2 = { Convert.ToSingle(textBox31.Text) };
//设置轴参数
zmcaux.ZAux_Direct_SetUnits(g_handle, m_axisnum, Convert.ToSingle(C_AxisUnits.Text));
zmcaux.ZAux_Direct_SetSpeed(g_handle, m_axisnum, Convert.ToSingle(C_AxisSpeed.Text));
zmcaux.ZAux_Direct_SetAccel(g_handle, m_axisnum, Convert.ToSingle(C_AxisAcc.Text));
zmcaux.ZAux_Direct_SetSramp(g_handle, m_axisnum, Convert.ToSingle(C_Axis_sramp.Text));
zmcaux.ZAux_Direct_SetLspeed(g_handle, 0, Convert.ToSingle(C_Axis_lspeed.Text));
zmcaux.ZAux_Direct_SetMerge(g_handle, 0, 1);
//触发示波器
zmcaux.ZAux_Trigger(g_handle);
zmcaux.ZAux_Direct_SetForceSpeed(g_handle, m_axisnum, Convert.ToSingle(textBox22.Text));//快速段速度设置
zmcaux.ZAux_Direct_MoveSp(g_handle, 1, axislist, poslist1);//运动距离设置
zmcaux.ZAux_Direct_MoveLimit(g_handle, m_axisnum, Convert.ToSingle(textBox23.Text));//限制速度
zmcaux.ZAux_Direct_SetForceSpeed(g_handle, m_axisnum, Convert.ToSingle(textBox32.Text));//软着陆速度设置
zmcaux.ZAux_Direct_MoveSp(g_handle, 1, axislist, poslist2);//运动距离设置
zmcaux.ZAux_Direct_MoveLimit(g_handle, m_axisnum, Convert.ToSingle(textBox33.Text));//限制速度
}
}
测试例程使用步骤:
**1.选择控制器LOCAL连接方式。**填入LOCAL+卡号连接后,点击连接。
**2.对总线进行初始化。**调用已经配置好的RTSys项目,点击打开项目,打开后下载ROM,初始化成功会在初始化状态显示,并且识别节点数量和轴数量。
**3.对轴进行参数设置。**根据驱动器一圈脉冲数和螺距设置好脉冲当量,设置合理的速度与加减速度,例程中减速度默认与加速度一致。
4.根据实际情况,选择驱动器回零模式进行回零。
**5.接下来对软着陆轨迹进行规划。**如下图,分成两段规划:
第一段为高速运动,靠近加工点,运动距离40,运行速度为300,结束速度为50;
第二段为软着陆加工段,以50速度加工距离为10,加工完成减速到0。

同时,利用MotionRT750的快速交互优点,basic程序中编写了驱动器的力矩检测,当运动前将TABLE(100)置1,开始检测到超过设置的最大值,会停止运动。

通过示波器采集的运动曲线可以清晰展示软着陆效果:
(1)运动初期以较高速度运行,提高效率;
(2)接近目标位置时自动切换至低速模式;
(3)速度平滑过渡,无突变或冲击;
(4)最终以极低速度精确到达目标位置。

四.应用优势与行业价值
软着陆技术不仅提升了运动控制的"质感",更在多方面体现出显著价值:
1.提高设备寿命:大幅减少机械碰撞与振动,延长导轨、电机、减速机等关键元件的使用寿命。
2.提升工艺质量:在精密装配、检测、点胶、压合等工艺中,防止因冲击导致的零件损坏或位置偏移。
3.增强系统可靠性:尤其适用于易碎、柔性或高价值工件的处理场景,降低生产风险与废品率。
4.支持力控应用延伸:为工业机器人、协作机器人及精密压机等提供良好的力控接口与运动基础。
总结
软着陆功能代表了**运动控制从"能动"到"精停"的高级进化方向。**它通过算法与规划的紧密结合,在几乎不损失效率的前提下实现了终端运动的质的提升。
随着工业领域对生产精度、设备可靠性及噪声振动等方面要求的不断提高,软着陆已成为高端装备和控制系统的标配功能之一。
无论是对于高精度制造设备,还是对可靠性要求极高的工业场景,这一功能都能显著提升系统性能和使用体验。通过合理的参数配置和运动规划,工程师可以轻松实现更加智能、柔和的运动控制策略。
如您有具体平台或设备的软落地实现细节问题,也欢迎与我们进一步探讨与交流。
教学视频:
实时在线变速实现多段速的软着陆