Five-axis CNC machining is a high-tech, high-precision technology for processing complex curved surfaces. With the development and popularization of five-axis processing at home and abroad, its applications are becoming more and more extensive.
ZMotion Technology motion controller "ZMC406R" adds RTCP function in 5-axis linkage application, and robotic arm algorithms "CONNREFRAME" and "CONNFRAME", mechanic and motor parameters related to parameter list settings are used together with smooth processing of mechanic origin correction "FRAME_CAL" and "CORNER_MODE" to achieve processing for high-speed, high-precision and high-softness workpieces in industrial production. What's more, it suits to 5-axis processing applications of several kinds of XYZAC structures, such as, dual-rotation, rotation + swing, etc.
Typical applications:
surface dispensing, welding, spraying, laser processing, woodworking, engraving, grinding and polishing of borders, etc.
Performance:
Ø There are 24 inputs and 12 outputs on board IO, and isolation IOs can be extended into 4096.
Ø There are 6 pulse-axis output interfaces with 10MHz on board.
Ø The fastest EtherCAT synchronization period is 125us.
Ø There are valid robotic-arm models, such as, 2-4 axis standard Delta, SCARA, dual-rotation, single-rotation, etc.
Ø There are robot forward kinematics "CONNREFRAME" and inverse kinematics "CONNFRAME".
Ø Mechanic origin can be corrected through FRAME_CAL instruction.
Ø CORNER_MODE can set corner deceleration, speed limit of small round and automatic chamfering to achieve smooth processing of motion.
Ø There are many other functions, electronic cam, position latch, synchronous follow, virtual axis, hardware position comparison output, etc.
Ø It is valid to program on multi-file and multi-task, and PC program and controller inside program can work at the same time.
Ø There are multiple independent robotic arms on multi-task for multiple axes controllers.
Following: refer to robotic arm manual:
--Motor Direction--
There is no requirement for Joint axis X, axis Y and axis Z.
--Motor Angle Range--
l For the direction of turntable 1, set the parameter IfAntiClock1 according to actual situation.
Anticlockwise | 1 | Turntable: Y (forward) → Z (forward) |
Clockwise | 0 | Turntable: Z (forward) → Y (forward) |
l For the direction of turntable 2, set the parameter IfAntiClock2 according to actual situation.
Anticlockwise | 1 | Turntable: X (forward) → Y (forward) |
Clockwise | 0 | Turntable: Y (forward) → X (forward) |
Angle / movement range | |
Axis X | Limit: mechanic structure |
Axis Y | |
Axis Z | |
Rotation axis X | Limit: No |
Axis sequence:
Actual robotic arm joint axis | Definition (abbreviation) |
Translation axis X | Axis_a |
Translation axis Y | Axis_b |
Translation axis Z | Axis_c |
Turntable 1 | Axis_d |
Turntable 2 | Axis_e |
Cartesian coordinate system virtual axis | Definition (abbreviation) |
Translation axis X | Viraxis_x |
Translation axis Y | Viraxis_y |
Translation axis Z | Viraxis_z |
Rotation axis RX | Axis_d |
Rotation axis RZ | Axis_e |
Sequence for filling axis No. of instruction:
Forward solution | BASE(Axis_a, Axis_b, Axis_c, Axis_d, Axis_e) CONNFRAME (17, tablenum, Viraxis_x, Viraxis_y, Viraxis_z, Axis_d, Axis_e) |
Inverse solution | BASE(Viraxis_x, Viraxis_y, Viraxis_z, Axis_d, Axis_e) CONNREFRAME (17, tablenum, Axis_a, Axis_b, Axis_c, Axis_d, Axis_e) |
TABLE(tablenum, CentY1, CentZ1, pulse1onecircle, IfAntiClock1, CentX2, CentY2, pulse2onecircle, ifAntiClock2) | |
Tablenum | save the TABLE position that saves conversion parameters |
CentY1 | when the origin is in the yz plane, it means offset between rotation center of rx rotation axis and origin in direction y. |
CentZ1 | when the origin is in the yz plane, it means offset between rotation center of rx rotation axis and origin in direction Z. |
pulse1onecircle | pulse numbers of turntable 1 in one round |
IfAntiClock1 | if turntable 1 and YZ is the anticlockwise relationship, When anticlockwise value is 1, which means turntable from Y forward to Z forward. When clockwise value is 0, which means turntable from Z forward to Y forward. |
CentX2 | when the origin is in the xy plane, it means offset between rotation center of rz rotation axis and origin in direction x. |
CentY2 | when the origin is in the xy plane, it means offset between rotation center of rz rotation axis and origin in direction y. |
Pulse2onecircle | pulse numbers of turntable 2 in one round |
IfAntiClock2 | if turntable 2 and YZ is the anticlockwise relationship, When anticlockwise value is 1, When clockwise value is 0, when it is anticlockwise, it uses right-hand principle. |
--Motor parameters setting--
Ø Axis type and pulse amount of each axis should be set correctly.
Ø A consistent length unit is needed for all virtual axes and joint axes of one robotic arm.
Ø It is recommended to set one mm pulse of virtual axis as 1000, which means the precision is 3 bits behind the decimal part.
--Origin’s position--
There is no special requirement, the current position can be as origin, but please note CENTERZ1 and CENTERY1 (circle center offset parameter of turntable 1) and CENTERX2 and CENTERY2 (circle center offset parameter of turntable 2) should be set correctly
--Build the connection--
→ forward kinematic:
BASE(Viraxis_x, Viraxis_y, Viraxis_z,Axis_d,Axis_e)
CONNREFRAME(17,tablenum,Axis_a,Axis_b,Axis_cs,Axis_d,Axis_e)
WAIT LOADED
Ø After built, MTYPE of virtual axis will show as 34, and IDLE will show as 0.
Ø Now, joint-axis only can be operated to move in joint-axis coordinate system, then virtual-axis will automatically calculate end work position in cartesian coordinate system.
→ inverse kinematic:
BASE(Axis_a,Axis_b, Axis_c,Axis_d,Axis_e)
CONNFRAME(17,tablenum,Viraxis_x,Viraxis_y,Viraxis_z,Axis_d,Axis_e)
WAIT LOADED
Ø After built, MTYPE of virtual axis will show as 33, and IDLE will show as 0.
Ø
Now, virtual-axis only can be operated to move in joint-axis coordinate system, then joint-axis will automatically calculate end work position in cartesian coordinate system.
Note:
Since there will be errors in the design and assembly of the overall parts of the robotic arm, if the parameters are filled in according to the theoretical values, the parameters will inevitably generate coordinates deviation, then you need to use the parameter correction function through FRAME_CAL instruction. Parameter correction is the coordinates and characteristics of robot teaching, which automatically corrects origin position and mechanical parameters.