Bring Values and Sucesses To Our Customers

Home / Support and services / Technical Support

Technical support

Technical Support

Zmotion EtherCAT PCIE Card XPCIE1032H for You (13) | C# Speed Look-Ahead

XPCIE1032H is one  EtherCAT PCI Express motion control card developed by Zmotion Technology.

*XPCIE1032H Introduction Video*:https://youtu.be/B1ktSxIRa44

*XPCIIE1032H Lesson 1- Lesson 12*: https://youtu.be/0C96S5_hVf0 

*XPCIE1032H Lesson 13 Video:  https://youtu.be/7bljdiy3wME

1.jpg

And one  software kernel is built.

--XPCIE1032H Card & MotionRT7 Soft Kernel--

P 1D/2D/3D PSO (high-speed hardware position comparison output): suit to vision fly-shooting, precise dispensing, laser energy control, etc.

P in PC Windows development, it can achieve real-time, and  the instruction interaction speed is faster 10 times than traditional PCI / PCIe.

Average Value

C++ LOCAL

C# LOCAL

Traditional PCI / PCIe

PLC EtherNET

Period of one command reading with 1W times

4.70us

5.3us

64us

500us-10ms

Period of one command reading with 10W times

3.90us

5.7us

65us

500us-10ms

Period of multi-command reading with 1W times

6.20us

8.85us

472us

500us-10ms

Period of multi-command reading with 10W times

5.50us

8.37us

471us

500us-10ms

[Zmotion Speed Look-Ahead Introduction]

[C# Routine Showing & Design]

[C# Routine Operation & Effect]



( ZMOTION )
Zmotion  Speed Look-Ahead Introduction

In automation motion control, speed look-ahead function can play an important role, especially it is matched with Merge continuous processing (not stop in motion), which can  improve the machine efficiency, also can  reduce the impact & increase the flexibility. In this way, at the same time, the parts wear will be less, the equipment service life will be longer, your costs also can be reduced.

ü   Higher Efficiency

It can wholly plan each segment speed, and do acceleration & deceleration control for segments within instruction, making the machine tool keep running at the high-speed. At the same time, “merge” continuous interpolation function is used together, the loading motion will be more flexible, no need to stop and run again. Obviously, the efficiency is promoted.

ü   Less Impact & Safer

As we all know, when one machine runs rapidly, machine shock and overshoot maybe appear. At this time, look-ahead algorithm can be used to identify the trajectory changes in advance, then decelerate correspondingly. Therefore, through deceleration / stop merging function, it can restrict the impact effectively.

There are 3 modes of speed look-ahead:

A.       Corner Decleration

“C# Instruction:  ZAux_Direct_SetCornerMode=2

When the angle between commands is too large, and if it runs at high-speed, there will cause a big machine impact at the angle, make the trajectory deviate. Now,  corner deceleration can be used : recognize the angle change in advance, then compare it with deceleration / stop angle, according to that, it will determine whether to decelerate for stable operation.

In a word, corner deceleration is applied to automatically judge whether decelerates at the corner without changing the motion trajectory. It is only for improving machine shaking, and the occasion requires high trajectory accuracy (no speed requirement).

--Example--

2.png

*the angle 1 (OA OB) < deceleration angle: not deceleration for S1-S2.

*the angle 2 (AB BC) > deceleration angle: decelerate for S2-S3

*the angle 3 (BC CD) > stop angle: decelerate to 0 for S3-S4

3.png

Note:  the deceleration angle means the change value of motor reference angle that corresponds to the former motion. Like below shown, this angle is not the real trajectory angle, but the angle converted to the motor transformation (only for reference).

4.png


B.       Auto-Chamfer

“C# Instruction:  ZAux_Direct_SetCornerMode=32

The automatic chamfering function does radian processing at the corner according to one certain chamfer radius, that is, for big corner,  it will do automatically smoothing . And after using it, the motion trajectory will be change, but the speed won’t be reduced.

Therefore, it is mainly applied in the occasion that requires high speed (no accuracy requirement).


C.       Small-Circle Speed Limit

“C# Instruction:  ZAux_Direct_SetCornerMode=8”

In motion trajectory, when it runs the small circle that is made by circular trajectory, but it appears the deviation due to big angle. Now, it needs to limit the speed at this position. Then, this is the small-round speed limit function.

*small-round radius > speed limit radius – no speed limit

*small-round radius < speed limit radius – speed limit




( ZMOTION )
C# Routine Showing & Design

(1)    Speed Look-Ahead Related C# Command

ZAux_FastOpen   – please check  lesson 2

ZAux_Direct_SetCornerMode (handle, iaxis, iValue)

handle

Connection handle

iaxis

Axis No.

imode

modes

l    Bit 0 = value 1 – reserved.

l    Bit 1 = value 2 – automatic corner deceleration

l    Bit 2 = value 4 – reserved

l    Bit 3 = value 8 – automatic small-round speed limit

l    Bit 4 = value 16 – reserved

l    Bit 5 = value 32 – automatic chamfering

ZAux_Direct_SetFullSpRadius (handle, iaxis, fValue)

fValue

Small round radius

ZAux_Direct_SetStopAngle (handle, iaxis, pfValue)

pfValue

Stop deceleration angle

ZAux_Direct_SetZsmooth (handle, iaxis, pfValue)

pfValue

Deceleration chamfering radius

For details, please refer to Zmotion PC Programming Manual.

Download Add.:  https://www.zmotionglobal.com/download_list_17.html

Contact Us: https://www.zmotionglobal.com/contactus.html

Including the C# library file. How to call the PC library file, please review lesson 2.

(2)    Speed Look-Ahead C# Routine UI Design

5.png


(3)    Speed Look-Ahead C# Routine Steps

This C# routine moves one continuous hexagon trajectory. You also a move needed motion by modifying each motion coordinates.

6.png

Step 1:  connect to XPCIE1032H motion control card

In Form 1, call the interface  “ZAux_FastOpen()” to make it automatically connect to controller when the system initializes.

Step 2:  update axis state

Update controller axis state by timer, including current coordinates, remain buffer numbers, motion state, etc.

Step 3:  set parameters & move

Set axis parameters and look-ahead parameters, then run it according to set trajectory points. [for full codes, please contact us]

private void Button_start_Click(object sender, EventArgs e)    //run
{
    if (g_handle == (IntPtr)0)
    {
        MessageBox.Show("Not Connect to Controller!", "Note");
    }
    else
    {
        int RemainBuffer = 0;
        int CornerMode = 0;
        int[] axislist = { 0, 1, 2 };
        float[] poslist = { Convert.ToSingle(endpos1.Text), Convert.ToSingle(endpos2.Text), Convert.ToSingle(endpos3.Text) };
        float[] midlist = { Convert.ToSingle(midpos1.Text), Convert.ToSingle(midpos2.Text), Convert.ToSingle(midpos3.Text) };
 
        float[] firstlist = { Convert.ToSingle(firstpos1.Text), Convert.ToSingle(firstpos2.Text), Convert.ToSingle(firstpos3.Text) };
        float[] seclist = { Convert.ToSingle(secpos1.Text), Convert.ToSingle(secpos2.Text), Convert.ToSingle(secpos3.Text) };
        float[] thirdlist = { Convert.ToSingle(thirdpos1.Text), Convert.ToSingle(thirdpos2.Text), Convert.ToSingle(thirdpos3.Text) };
        float[] fourlist = { Convert.ToSingle(fourpos1.Text), Convert.ToSingle(fourpos2.Text), Convert.ToSingle(fourpos3.Text) };
        float[] fivelist = { Convert.ToSingle(fivepos1.Text), Convert.ToSingle(fivepos2.Text), Convert.ToSingle(fivepos3.Text) };
        float[] sixlist = { Convert.ToSingle(sixpos1.Text), Convert.ToSingle(sixpos2.Text), Convert.ToSingle(sixpos3.Text) };
        zmcaux.ZAux_Direct_Base(g_handle, 3, axislist); //select motion axes list
        zmcaux.ZAux_Direct_SetMerge(g_handle, axislist[0], 1);
        //for the interpolation motion, use spindle parameters (the first axis of BASE)
        zmcaux.ZAux_Direct_SetSpeed(g_handle, axislist[0], Convert.ToSingle(textBox_speed.Text));
        zmcaux.ZAux_Direct_SetAccel(g_handle, axislist[0], Convert.ToSingle(textBox_acc.Text));
        zmcaux.ZAux_Direct_SetDecel(g_handle, axislist[0], Convert.ToSingle(textBox_dec.Text));
        zmcaux.ZAux_Direct_SetSramp(g_handle, axislist[0], Convert.ToSingle(textBox_sramp.Text));
        if (checkBox1.Checked == true)
            CornerMode += 2;
        if (checkBox2.Checked == true)
            CornerMode += 8;
        if (checkBox3.Checked == true)
            CornerMode += 32;
        //set look-ahead mode and corresponding parameters
        zmcaux.ZAux_Direct_SetCornerMode(g_handle, axislist[0], CornerMode);
        zmcaux.ZAux_Direct_SetDecelAngle(g_handle, axislist[0], Convert.ToSingle(textBox_DecelAngle.Text));
        zmcaux.ZAux_Direct_SetStopAngle(g_handle, axislist[0], Convert.ToSingle(textBox_StopAngle.Text));
        zmcaux.ZAux_Direct_SetFullSpRadius(g_handle, axislist[0], Convert.ToSingle(textBox_SpRadius.Text));
        zmcaux.ZAux_Direct_SetZsmooth(g_handle, axislist[0], Convert.ToSingle(textBox_ZSmooth.Text));
        zmcaux.ZAux_Direct_SetForceSpeed(g_handle, axislist[0], Convert.ToSingle(textBox_speed.Text));
......


Step 4: stop motion

Press stop button to call the stop interface  “ZAux_Direct_Single_Cancel()” to make it end.

Step 5:  clear coordinates

Press clear button to call the coordinate clearing interface  “ZAux_Direct_SetDpos()” to reset the current motion coordinates.




( ZMOTION )
C# Routine Operation & Effect

In this C#, let’s test 3 modes that were mentioned above: run the motion in C# & check running effect (capture data) by RTSys “SCOPE” tool (for RTSys debugging information, please review lesson 6).

Note: for real operation and scope configurations, please check this lesson’s video.

7.png

A.       Test “Corner Deceleration”

--Corner Deceleration is OFF--

8.png

--Corner Deceleration is ON (deceleration condition is met)--

9.png


B.       Test “Auto-Chamfer”

--Chamfering is OFF--

10.png

--Chamfering is ON--

11.png


C.       Test “Small-Round Speed Limit”

--Small-Round Speed Limit is OFF--

Small-circle radius 100 > speed limit radius 30, the speed is normal, meeting the peak value.

12.png

--Small-Round Speed Limit is ON--

Small-circle radius 100 < speed limit radius 150, the speed is limited.

13.png

<b

Copyright © 2013-2024 Shenzhen Zmotion Technology Co.,Ltd Design by Zmotion    粤ICP备13037187号 Motion Controller-Motion Control Card

Contact Us-Youtube