深圳市软赢科技有限公司

咨询及服务电话

0755-23014490

创新,易用,实时的高性能软件控制系统
主页  |  新闻  

公众号.png    产品手册.png

公众号
产品手册

WMX3 Windows版本 ---Profile Mode运动控制模式


WMX3 Windows版本

---Profile Mode运动控制模式


我公司新推出了WMX3 Windows版本,是一种直接安装在Windows操作系统中,更具性价比的通用运动控制软件,使用EtherCAT的Profile位置/速度/扭矩控制模式(PP/PV/TQ),可以组成经济型总线控制方案。

在上一篇里我们讲述了WMX3 Windows版本架构,特点与适用案例。

文章链接:https://mp.weixin.qq.com/s/YZy7wHk49zctFm6QFu-qWg

这次将带来WMX3 Windows版本的安装操作步骤、具体功能与样例程序,让您开始了解软件的真正使用,安装包下载链接附于文章底部。



安装说明

1.打开WMX3安装包,选择WMX3 Install.exe双击开始安装。

2.单击 Install按键。WMX3 Window版本为一键式安装,在每一步点击Install等待安装完成即可,无需选择可选项文件和额外配置。

注:WMX3 Windows版本分为正式版和评估版。评估版不需要注册,但是总线通讯会每小时自动断开并给出警报。正式版WMX3 Windows的注册请联系我公司业务人员。



WMX3 Windows版功能:

WMX3 Windows版本的使用方法与RTX版本相同,各部分功能与库函数也基本一致,主要不同在新增Profile Mode(包括PP.PV.TQ模式运动控制)。以下比较表通用于WMX3_V3.4u1_Win_64bit及以上版本。


1.功能比较

功能

说明

RTX版

Windows版

Api Buffer

Api缓冲

Yes

Yes

Compensation

补偿

Yes

Yes

CoreMotion

基本运动控制

Yes

Yes

AdvancedMotion

高级运动控制

Yes

Yes

CyclicBuffer

周期数据控制缓冲

Yes

Yes

EventControl

事件

Yes

Yes

Io

输入输出

Yes

Yes

Log

日志

Yes

Yes

UserMemory

用户数据内存

Yes

Yes

WMX3Api

引擎核心功能

Yes

Yes

Profile Mode

PP.PV.TQ模式运动控制

No

Yes


2.模式比较:

模式

说明

RTX版

Windows版

PP

非周期性位置模式

No

Yes

PV

非周期性速度模式

No

Yes

TQ

非周期性转矩模式

No

Yes

CSP

周期性位置模式

Yes

No

CSV

周期性速度模式

Yes

No

CST

周期性转矩模式

Yes

No

HM

回零模式

Yes

Yes

注:PP.PV.TQ.HM模式的调用请参考WMX3函数手册CoreMotion API。




步骤

下面以C#语言在Profile Mode中的PP模式下控制轴0运动程序为例,展示具体步骤。


系统环境:Windows7 SP1       

软件版本:WMX3_V3.4u1_Win_64bit      Visual Studio 2012

编程语言:C#


1. 加载PMMotion.rtdll

打开module.ini文件(默认位置"C:\ProgramFiles\SoftServo\WMX3")

添加以下设置,使得启动WMX3Engine时加载Profile Mode模块。

[Module 9]

DllName = PMMotion

disable = 0

注:如果PMMotion.rtdll 文件不在WMX3安装目录Motion文件夹中,请指定该文件的位置Location = …


2.Profile Mode配置

目前,只有EcPlatform 支持Profile Mode。打开ec_network.def文件(默认位置"C:\ProgramFiles\SoftServo\WMX3\Platform\EtherCAT")添加以下设置以启动 Profile Mode。

PPMode = 1

注:“Cyclic mode”和“Profile Mode”不可能同时应用于网络。当“Profile Mode”被应用时,DCMode将自动关闭。


3.添加下面的示例代码,具体作用为创建设备,开启通讯,开启轴0使能,通过PP模式控制轴0运动到命令位置。


using System;

using System.Threading;

using WMX3ApiCLR;

namespace CSharpAPISample

{

class ApiBufferMotion

   {

     static WMX3Api Wmx3Lib = new WMX3Api();

     static PMMotion pmmotion = new PMMotion(Wmx3Lib);

     static PMMotionStatus PmStatus = new PMMotionStatus();

     static void Main(string[] args)

     {

      Console.WriteLine("Program Start");

      Thread.Sleep(1000);

      InitializeFunc();

      PMAxisMotion.PosCommand PMCmd = new PMAxisMotion.PosCommand();

            PMCmd.Profile.Type = WMX3ApiCLR.ProfileType.Trapezoidal;

            PMCmd.Axis = 0;

            PMCmd.Target = 500000;

            PMCmd.Profile.Velocity = 200000;

            PMCmd.Profile.StartingVelocity = 0;

            PMCmd.Profile.EndVelocity = 0;

            PMCmd.Profile.Acc = 2000000;

            PMCmd.Profile.Dec = 2000000;

            PMCmd.Profile.JerkAcc = 1000;

            PMCmd.Profile.JerkAccRatio = 0.5;

            PMCmd.Profile.JerkDec = 1000;

            PMCmd.Profile.JerkDecRatio = 0.5;

            pmmotion.Motion.StartMov(PMCmd);

            Thread.Sleep(5000);   

            Console.WriteLine("End Recording. (It will run in 5 seconds.)");

            Thread.Sleep(5000);   

            FinalizeFunc();

            Console.WriteLine("Program End");

            Thread.Sleep(3000);

            }

        private static void InitializeFunc()

        {

         Int ret=Wmx3Lib.CreateDevice("C:\\Program Files\\SoftServo\\WMX3\\",

                                DeviceType.DeviceTypeNormal 0xFFFFFFFF);

         ret=Wmx3Lib.StartCommunication(0xFFFFFFFF);

         ret = pmmotion.AxisControl.SetServoOn(0, 1);

         while (true)

            {

                pmmotion.GetStatus(ref PmStatus);

                if (PmStatus.AxesStatus[0].ServoOn)

                {

                    break;

                }

                System.Threading.Thread.Sleep(100);

                }

                             }

      private static void FinalizeFunc()

        {

           pmmotion.AxisControl.SetServoOn(0, 0);

            while (true)

            {

                pmmotion.GetStatus(ref PmStatus);

                if (!PmStatus.AxesStatus[0].ServoOn)

                {

                    break;

                }

                System.Threading.Thread.Sleep(100);

            }

              Wmx3Lib.StopCommunication(0xFFFFFFFF);

            Wmx3Lib.CloseDevice();

        }

    }

}


4.连接驱动器和电机,运行程序,打开PMMotionController监控轴0的运动。



WMX3 Windows版本下载链接


https://drive.weixin.qq.com/s?k=ANIAOwfvAAcs6HbaXWAK4ACwbfAHU

复制链接到浏览器打开,即可免费下载最新版本的WMX3 Windows版安装包