--Advantages--
No need to use slot, which means it is more stable.
It can use MINI PC or ARM IPC, then the whole cost can be reduced.
Controller can be used as wiring board directly, the space can be saved.
Programs can be run in parallel on the controller. It only needs to do simple interaction with PC.
ZMC Motion Controller can be debugged by ZDevelop. ZDevelop is one free development environment that is convenient to program, compile, and debug. There are 4 methods to build connection between controller and ZDevelop, serial port, EtherNET, PCI, and LOCAL. Except ZDevelop platform, VC, VB, VS, C++Builder and other software can be used to develop. And while debugging, ZDevelop also can be connected to controller for watching corresponding states. Please note, dynamical library Zmotion.dll is needed when program is operating.
Generally, Delta robotic arm supports 3-4 axes (joint axis 1 + joint axis 2 + joint axis 3 + [end rotary axis 4]). For Zmotion motion controllers, not all controllers support Delta robot function, only the controller that is with suffix “R” can be applied in Delta robot application, for example, ZMC406R.
ZMC406 is a kind of multi-axis and high-performance EtherCAT motion controller. It supports 6-axis motion control, but can be expanded to 32 axes at most. All basic and complex control functions can be achieved, linear interpolation, any circular interpolation, space arc, helical interpolation, electronic cam, electronic gear, synchronous following, etc.
It can be seen there are several communication interfaces, EtherCAT, EtherNET, RS232, CAN, U Disk. And ZMC motion controllers can be applied in all kinds of situation (with PC / without PC) (online / offline).
Then, ZMC406R, it supports all functions of ZMC406 + Robot function.
ZMC406R can download edited program into the controller in the way of offline, and can obtain needed motion trajectory through touch screen teaching. In addition, it also can call PC API functions or send commands in real-time, that is, it can develop Delta robotic arm application through PC host computer languages, like, C#, C++, Labview, Python, etc.
(1) Related Robotic Arm Meanings
--Joint-Axis & Virtual-Axis--
Ø Joint-Axis:
The joint axis refers to the rotary joint in the actual mechanical structure. In program, generally it shows the rotation angle (some structures are also translation axes). Since there is a reduction ratio between the motor and the rotary joint, when setting UNITS (the number of pulses when motor moves 1mm or 1°), it should be set according to the actual joint rotation. At the same time, when filling in the structural parameters in the TABLE, it should also be calculated according to the rotary joint center, not the center of the motor axis.
Ø Virtual-axis
The virtual axis does not actually exist. It is 6 degrees of freedom of the world coordinate system, which are X, Y, Z, RX, RY, and RZ in turn. Also, it can be understood as the three linear axes and three rotary axes of the Cartesian coordinate system. This kind of axis can be used to determine the processing trajectory and coordinates of robot end working point.
--Forward Kinematics & Inverse Kinematics--
Ø Forward Kinematics
By operating the joint coordinates, the spatial position of the end position in the Cartesian coordinate system can be calculated according to the mechanical structure parameters. This process is called “Forward Kinematics”. Now, the actual joint axis is operated, then the virtual axis automatically calculates the coordinates. And at this time, only joint-axis motion can be operated. Generally, forward kinematics is used to adjust joint position manually or point-homing when powered on.
Ø Inverse Kinematics
Given a spatial position in a Cartesian coordinate system, calculate the coordinates of each joint axis. This process is called “Inverse Kinematics”. Now, the virtual axis is operated, then the actual joint axis automatically calculates the coordinates and moves.
There is one command for controller to build the inverse kinematics mode, “CONNFRAME” . This instruction acts on the joint axis. At this time, only the virtual axis can be operated (send motion command to virtual axis). Then, it can do linear motion, circular motion, space arc motions in the Cartesian coordinate system, for the joint axis, it will automatically move to the position where is after the inverse solution due to CONNFRAME command.
(2) How to Use Robotic Arm
A. Observe Motor Direction
At first, check whether the motor’s rotary direction is correct or not. When 3 joint axes rotate down, it is positive. Look down, when the end rotate axis rotates in the anticlockwise, it is positive. At this time, we can connect to robotic arm simulation tool “ZRobotView”, and click “Tool—Manual” in ZDevelop, then operate 3 joint axes separately at one small speed. While moving, please see whether each joint-axis trends to end working point in the movement process of down. If “YES”, the direction is correct.
B. Save Robot Structure Parameters into TABLE Register
While building the robotic arm connection, it needs to fill in mechanical parameters into TABLE arrays according to below sequence.
--Mechanical Structural Parameters of Delta Robotic Arm FRAME 12--
‘starting from TableNum, save robotic arm structural parameters shown in above form into Table.
TABLE(TableNum,Top_R,Under_R,Top_L,Under_L,OneCirPules_J1,OneCirPules_J2,OneCirPules_J3,Offset_X,Offset_Y,Offset_Z,OneCirPules_J4)
C. Set Parameters of Joint-Axis & Virtual-Axis
All axes’ axis types and pulse amounts (units) should be set correctly. UNITS means the number of pulses for the motor in 1° motion. But for virtual-axis, its “units” is unrelated to actual sending pulses, it is used to set motion precision. And it is recommended to set virtual-axis’ units in 1mm is 1000, which means the accuracy is 3 digits after decimal part.
D. Move Each Joint-Axis to Planned Origin Position
While robotic arm algorithm is building, it needs one origin position as the reference. When Delta robot each joint-axis’ connection rods L1 are all in horizontal position, it is considered as joint origin position. In real robotic arm machine on site, generally there is one location pin, if it doesn’t have the location pin, it can adjust L1 to be horizontal by “level instrument”.
E. Control Robotic Arm
There are two modes to control it, according to needs, build the forward kinematics or inverse kinematics.
(3) Robotic Arm Commands
Different robotic arm models are with different parameters. Please check details in “Zmotion Robotic Arm Command Manual”, then do selection.
Here, take Delta FRAME 12 model as the example. FRAME 12 means there is one end rotary axis, then use joint-axis to operate the rotary axis.
A. CONNREFRAME: Build Forward Kinematics Connection
a. what is forward kinematics mode
Associate virtual-axis coordinate with joint-axis coordinate, when joint-axis moves, virtual-axis will automatically move to corresponding position.
b. how to use command
CONNREFRAME(frame, tablenum, Axis_J1, Axis_J2, Axis_J3, Axis_J4)
Frame: the type of coordinate system. (for example, 12 means the robotic arm is 4-axis Delta robot, please refer to Zmotion robot command manual).
Tablenum: TABLE starting position that saves robotic arm structural parameters.
Axis_J1: the first joint-axis axis No.
Axis_J2: the second joint-axis axis No.
Axis_J3: the third joint-axis axis No.
Axis_J4: the fourth joint-axis axis No.
B. CONNFRAME: Build Inverse Kinematics Connection
a. what is inverse kinematics mode
Associate current joint-axis coordinate system demand position with virtual-axis coordinate system position. Please note the motion max speed of joint-axis coordinate system is limited by SPEED parameter. And when there is one alarm of joint-axis, the motion will be cancelled.
b. how to use command
CONNFRAME(frame, tablenum, Axis_Vx, Axis_Vy, Axis_Vz, Axis_J4)
Frame: the type of coordinate system. (for example, 12 means the robotic arm is 4-axis Delta robot, please refer to Zmotion robot command manual).
Tablenum: TABLE starting position that saves robotic arm structural parameters.
Axis_Vx: the first virtual-axis axis No.
Axis_Vy: the second virtual-axis axis No.
Axis_Vz: the third virtual-axis axis No.
Axis_J4: the fourth virtual-axis axis No.
(1) Forward Kinematics Connection
Take Delta robotic arm Frame 12 as the example. At first, save robotic arm structural parameters into Table in order, starting from one certain Table No., then select corresponding model axis list, at last, use CONNREFRAME command to build the forward kinematics mode.
For details of this command, please refer to “ZBasic Programming Manual”.
If the building succeeds, virtual axes’ MTYPE (current motion type) will become 34, now, only joint-axis can be operated in joint-axis coordinate to adjust the robotic arm attitude. In ZDevelop (RTSys), there is one “manual” tool, we can select joint-axis No. to do point or inch (here, we select axis 0, axis 1, and axis 2 joint axes, and axis 3 terminal rotate axis). At this time, virtual axis will automatically calculate the position of end working place in the Cartesian coordinate system.
(2) Inverse Kinematics Connection
Take Delta robotic arm Frame 12 as the example. At first, save robotic arm structural parameters into Table in order, starting from one certain Table No., then select corresponding model axis list, at last, use CONNFRAME command to build the inverse kinematics mode.
For details of this command, please refer to “ZBasic Programming Manual”.
If the building succeeds, joint axes’ MTYPE (current motion type) will become 33. “manual” also can be used here. Now, only virtual-axis can be operated by processing technology commands. That is, the trajectory edited before moves in the Cartesian coordinate system (here, take virtual axis 10, 11, 12 as the example), joint axis will automatically calculate how to do joint motion in the joint coordinate system.
(1) Edit the Program
ZDevelop (RTSys) supports hybrid programming among Basic, HMI, and PLC. This routine matches Basic with HMI. For HMI, it can select “control” to drag and place for interacting the interface.
In this routine, define global SUB subfunction in BAS file at first, that is, edit sub-function’s function needs (project source codes can be referred at the end of this article), then use the control to bind, please note all controls’ actions select “calling function”.
A. Understand the Needs
--Condition--
Delta robotic arm builds the inverse kinematics, and take the origin position as the reference to determine one safe height.
--Basic Actions--
a. Delta moves up to above the fixed material in one certain safe height.
b. Delta moves down, opens OP port to get the material by “vacuum suction”.
c. Delay to move up to the safe height.
d. Move to fixed 2*2 disk position.
e. Down to disk position, close OP to place the material.
f. Repeat above, until the disk is full.
B. Process the Codes
(2) Debug & Analyze
A. Download the program into controller, then click “RTSys” – “Tool” – “Plugin” – “XPLC SCREEN”.
B. In appeared interaction interface, select “Forward” mode in main interface “mode” (robotic arm mode).
C. After forward building, open Zmotion Robotic Arm Solution “ZRobotView”, click “connect”, one “connect to controller” window appears, then select controller connection method (serial port or ethernet). Here, we select ethernet, it only needs to select controller IP, then click “connect”.
D. Now, it shows current robotic arm type in the above, and robotic arm structural parameters that are saved in Table all can be checked in this simulation tool, and corresponding robotic arm model will be built.
E. Open ZDevelop (RTSys) again, click “SCOPE” (oscilloscope). In the “scope” window, please select XYZ mode, that is, obverse the effect in 3D. For data source, select DPOS (demand position) here, and select axis No. of virtual axes. When all these parameters are set, click “stop” – “start” – “trigger”.
F. Switch to interaction interface, select “inverse” mode to build the inverse kinematics, then click “ON” to process needed technologies.
G. Return our programming software (ZDevelop / RTSys). In oscilloscope interface, processing effect is shown.
It can be seen Delta robotic arm always keeps moving up and down in one certain safe height in the process of getting and placing the material. In this way, real processing can be stable.
(3) Video Help