<

Bring Values and Sucesses To Our Customers

Home / Support and services / Technical Support

Technical support

Technical Support

Economical EtherCAT Motion Controller (7) -- Motion Buffer


--XPLC006E Function Introduction--

XPLC006E   is a kind of multi-axis economical EtherCAT bus motion controller developed by ZMotion Technology, and XPLC series motion controllers can be applied in all kinds of occasions that need offline or online operation.

6-image 1.png

XPLC006E has 6 motor axes itself, and motion control of 12 axes at most can be achieved (including virtual axes). Also, it supports 12-axis linear interpolation, electronic cam, electronic gear, synchronous follow, virtual axis setting, etc.

In addition, XPLC006E cost-effective controller supports multi-task run synchronously. At the same time, it can do simulation on PC directly. There are several valid programming methods, such as, Basic / PLC ladder diagram / HMI configuration in ZDevelop software and commonly used upper computer software.

For PC upper computer API programming, following interfaces are supported: C#, C++, LabVIEW, VB, matlab, Qt, Linux, .Net, iMAC, Python, ROS, etc.

6-image 2.png

→Actually, according to different axis numbers, there are XPLC004E, XPLC006E and XPLC008E

There is one note: XPLC006E belongs to bus motion controller, which means it only supports EtherCAT bus axes, pulse axes and encoder axes are invalid. Then, it uses EtherCAT bus and drive to communication with refresh cycle of 1ms.

//



--XPLC864E2 Function Introduction--

Let's see   XPLC864E2  , it is upgraded on the basis of XPLC006E, which means, it supports all functions of XPLC006E mentioned above, and usages are basically the same. However, some resource spaces are better than XPLC006E. What's more, XPLC864E2 supports 32 inputs, 32 outputs, 2 ADs and 2 DAs in hardware level, pulse axis and bus axis can be hybrid used. The number of real axes is 8 totally. Except EtherCAT interface, in hardware of output, signal output of 8 axes in pulse direction can be configured, and be with 2 encoder inputs set by input configuration.

Same, XPLC864E2 supports PLC, Basic and HMI configuration programming methods. For PC upper computer API programming, following interfaces are supported: C#, C++, LabVIEW, VB, matlab, Qt, Linux, .Net, iMAC, Python, ROS, etc.

6-image 3.png

6-imgae 4.png


//

Let's begin!

01     What Is Motion Buffer

When running the motion instruction, in order to prevent the program from being blocked, the controller provides a buffer to save the motion buffer queue entering the motion buffer. This function is called motion buffer, so that the program can scan normally without blocking.

ZMotion motion controller has multilevel motion buffer. When the motion buffer is turned on, and when the program scans and recognizes the first motion instruction of the program task, it will assign the motion instruction to the motion buffer of the specified axis, and the motor starts to move. At this time, the program continues to scan down to the second motion, then it is stored in the motion buffer, and while the motion instructions are continuously scanned and stored, the motion commands are sequentially taken out from the motion buffer and executed.

MTYPE is the current running motion instruction and NTYPE is the first buffer motion instruction. Motion instructions of any program can enter motion buffer of any axis, which is assigned by axis number. And motion buffer areas of each axis are independent, they don't bother each other.

image 5.png




02      Motion Buffer Principle

During the program scanning, the scanned motion instructions are stored in the motion buffer of the corresponding axis, and the motion instructions are fetched and executed from the motion buffer in the order of first-in, first-out. In addition, it also includes a series of output instructions in motion buffer.

Interpolation motion buffer is in the motion buffer of main axis.

When buffering multiple motion instructions, in order to judge the current executing motion instruction, there are MOVE_MARK motion label and MOVE_CURMARK current motion label instructions to check. MOVE_MARK motion label will add one when scanned one motion instruction, and MOVE_CURMARK instruction is the current motion label, indicating which motion instruction the current motion reaches, and -1 after all motions are completed.

When the current motion finished, it will automatically execute the next motion of motion buffer. When all instructions are executed, the motion buffer is blank, or use CANCEL/RAPIDSTOP instruction to clear motion buffer.

Like below image, if there are many motion instructions in program, they will be scanned into motion buffer from up to bottom according to indication of axis No., then execute sequentially in first-in first-out order. For example, axis 0, execute MOVE(100) linear motion instruction firstly, then MTYPE instruction can be used to check types of motion instructions. MOVE(100) will exit buffer when executed, in this way, free buffer space, next instruction MOVE(150,200) will be executed continuously, as this order.

image 6.png

SP motion instructions will be entered into motion buffer, and SP instructions moves according to SP speed, not SPEED parameter while using SP motion instructions ( directly add "SP" behind instructions, such as, MOVESP, MOVECIRSCSP, etc). SP speed inculdes FORCE_SPEED (force speed), ENEMOVE_SPEED (end speed) and STARTMOVE_SPEED (initial speed). The SP speed that is set before will take effect in motion buffer.

The operation effects of SP instruction and non-SP instruction are as follows, the speed of MOVE(100) is SPEED=100, and the speed of MOVESP(100) is FFORCE_SPEED=150.

image 7.png




03      Motion Buffer Checking

Each axis of the ZMC4 series motion controller can support up to 4096 motion buffers (the number of buffers varies for different models of controllers, see the controller hardware manual for details or use ?*max to print to view the max_movebuff parameter). And LIMIT_BUFFERED motion buffer limit can be set manually.

image 8.png

Each axis' motion buffer is independent, they won't disturb each other, and the size of axis' motion buffer are the same. The number of remain buffer of one certain axis can be checked through REMAIN_BUFFER(MTYPE) AXIS(N).

The buffer space occupied by different motion commands is different, and the more complex motion occupies, the more motion buffer space is occupied. For example, ZMC432 controller, the size of the motion buffer is 4096, and the number of MOVE linear interpolation instructions and MOVECIRC circular interpolation instructions that can be buffered at one time in the buffer is different.

image 9.png

LOADED instruction is used to judge whether motion buffer is free. And LOADED is the parameter that is only can be read, if return value is 0, which means there are instructions in motion buffer, if it is -1, which means motion buffer is space. Generally, the usage is WAIT LOADED.







04      Motion Buffer Blocked

Since the motion buffer space of each axis is limited, when too many motion instructions are scanned into the motion buffer, the multi-level motion buffer will be full. If the program continues to scan more motion instructions, the program will also be blocked. Until the motion commands are completed and exited in sequence, and the motion buffer has a vacancy, the motion command will continue to enter the motion buffer.

Example:

Take V3.10 version simulator as an example, the default is 4096 motion buffers of linear interpolation, and one circular interpolation / helicak interpolation / spline interpolation occupies motion buffers of several linear interpolations.

The routine in the following figure shows that the motion buffer of the controller can store up to 459 circular interpolation instructions, and the value of i is 485 after downloading the program, which means that the current FOR loop has not been executed and the program is blocked.

image 10.png

image 11.png

As shown in the figure below, when some arc motion commands are taken out from the motion buffer and are executed, the buffer has space, FOR loop continues to execute, then saves the motion commands into the motion buffer. After the instruction is executed and exits the motion buffer, as long as there is enough space in the motion buffer, new motion instructions will be stored in the motion buffer one by one.

image 12.png




05      Output in Motion Buffer

The output command in the motion buffer can enter the motion buffer. In the motion buffer, it can turn on the OP port, delay, output parameters, output PWM, start tasks, etc. For detailed instructions, please refer to the ZBasic Program Manuals.

(1) The difference between normal output and output in motion buffer:

Ordinary output instruction program scans this line's instruction and executes the output.

The output instruction in the motion buffer is stored in the motion buffer after the program is scanned, and the motion buffer is fetched and executed in the order of first-in, first-out, and the output will not be executed until the output instruction is fetched.

(2) Example: output effects of OP & MOVE_OP.

image 13.png


(3) Running effect of the example:

After delaying 1s, program scans OP instruction, then output 0 is executed to output immediately.

MOVE_OP fills the IO operation command into the motion buffer, so after MOVE(100) is executed, the output port 1 will be output.

image 14.png


(4) Valid output instructions in motion buffer of controller.

image 15.png

Now, we know the concept of output in motion buffer, then below functions can be achieved. With the precise control of the OP port to switch the light on and off, and use the MOVE_PWM command to adjust the energy of the light.

image 16.png


(5) Codes are here. This function needs the controller that supports linear interpolation, circular interpolation and PWM function. And continuous interpolation function is used to promote efficiency.

image 17.png


(6) Motion waveform captured by oscilloscope.

image 18.png

--plane interpolation trajectory in XY mode--

image 19.png

-- the synthesis track in XYZ mode:clearly see the level change of the output port--

image 20.png







06      Clear Motion Buffer

After the execution of motion instructions, etc., it will exit the motion buffer. After all the commands entering the motion buffer are executed, the motion buffer will be empty.

If you want to clear the motion buffer, use the CANCEL or RAPIDSTOP command. The two commands have the following four different modes. The difference is that CANCEL is for a single axis, and RAPIDSTOP is for all axes. Each axis needs a buffer zone, and no interference.

image 21.png

(1) Example: clear motion buffer, stop axis immediately.

image 22.png


(2) Oscilloscope captures motion waveform.

image 23.png





That's all, thank you for your reading -- Economica EtherCAT Motion Controller (7):  Motion Buffer

For more information, please pay close attention to   "Support"  and   "Download"   , and there are other platforms about ZMOTION --   Youtube  &   LinkedIn  &   Twitter  &   Tiktok  &   Facebook including technical information (development environment, routine code), product showing, company development, etc.

Hope to meet you, talk with you and be friends with you.
  Welcome!

This article is edited by ZMOTION, here, share with you, let's learn together. ZMOTION: DO THE BEST TO USE MOTION CONTROL.

Note: Copyright belongs to ZMotion Technology, if there is reproduction, please indicate article source. Thank you
.

ZMOTION Technology  has attracted experienced talents from famous companies or institutions, such as Huawei, ZET, Huazhong University of Science and Technology etc. ZMOTION insists self- innovating and collaborating with comprehensive universities, to research basic knowledge of motion control. Due to its concentration and hard work in motion control technology, ZMOTION already become one of the fastest growing industrial motion control companies in China, and is also the rare company who has managed core technologies of motion control and real time industrial control software completely.

ZMotion Technology  provides motion control card, motion controller  , vision motion controller, expansion module and HMI. ( more keywords  for ZMOTION: EtherCAT motion control card, EtherCAT motion controller, motion control system, vision controller, motion control PLC, robot controller, vision positioning...)





Reference
  1. Video Description:  https://www.youtube.com/channel/UCUeMHePZfrfBYM4_KtH_Euw/featured

  2. ZMotion Technology: https://www.zmotionglobal.com

  3. Contact us: http://www.zmotionglobal.com/contactus.html

  4. ZBasic Program Manual: http://www.zmotionglobal.com/upload/ZBasic%20Program%20Manual%20V3.3.0.pdf

  5. ZDevelop Software: http://www.zmotionglobal.com/download_list_14.html

  6. ZMC4XX Series Motion Controllers: http://www.zmotionglobal.com/pro_list_62.html 

  7. ZDevelop | Simulator: http://www.zmotionglobal.com/pro_info_167.html

  8. XPLC Series Economical Controllers: XPLCxx Series,ZMOTION TECHNOLOGY (zmotionglobal.com)





End
Technical Support

Economical EtherCAT Motion Controller (6-2) --  Data Storgae | Register of Modbus, Table, Flash & VR
Economical EtherCAT Motion Controller (6-1) --  Data Storgae | Register of Modbus, Table, Flash & VR
Economical EtherCAT Motion Controller (5-2) --  How Multi-Task Programming Of Motion Controller Is ?

Economical EtherCAT Motion Controller (5-1) --
 How Multi-Task Programming Of Motion Controller Is ?

Economical EtherCAT Motion Controller (3) -- Multi-axis Linear Interpolation & Electronic Cam Achievement Through PLC

Economical EtherCAT Motion Controller (2) -- ZBasic Achieves Multi-axis Linear Interpolation Motion
Economical EtherCAT Motion Controller (1) -- Function Introduction & Application

 
ZMotion Motion Control Development Tutorial in LabVIEW (4) -- Debug & Diagnosis

ZMotion Motion Control Development Tutorial in LabVIEW (3) -- Bus Initialization
ZMotion Motion Control Development Tutorial in LabVIEW (2) -- Homing Routine Motion

ZMotion Motion Control Development Tutorial in LabVIEW

ZMotion Application Development Tutorial -- Motion Control Card & VC6.0

 

Development Tutorial -- EtherCAT Motion Control Card & Python

How To Use Open Linux Platform of ZMotion XPLC516E Motion Controller (2) – LOCAL Interface Connection

How to use Open Linux Platform of ZMotion XPLC516E (1) ? -- detailed steps through Qt development

 

Motion Control Card Application in ROS System (2)

Motion Control Card Application in ROS System (1)

EtherCAT motion control card -- Custom Curve

Hardware Comparison Output with High-precision Application in Vision Fly-Shooting

Zmotion EtherCAT Bus Controller Application in 5-axis CNC Processing

ZMOTION EtherCAT Bus Controller Application in Parallel Robotic Arm

Multi-Programming of ZPlc and Zbasic

Multi-task function of ZMC controller



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

Contact Us-Youtube