ADCNC 
Function Reference Manual 
2.0 
 
 
Wei-Li Chuang 
 
MAPS-Embedded System Section 
1 
 
Revision sheet: 
 
Rev  Date 
Author 
Description 
2.0 
2014.10.14 
Weili 
Release ADCNC function reference manual 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
MAPS-Embedded System Section 
2 
 
1. Introduction 
The  ADCNC  library  is  a  hardware-independent  library  which  is  developed  for  the 
demands of two-dimensional high speed and high precise machining in industry. Figure 
1 illustrates the structure of ADLINK CNC system composed of ADCNC library, APS 
library and motion control card. The ADCNC library including blocks of read file, path 
optimization  and  velocity  planning  plays  an  important  role  in  this  CNC  system.  The 
read file block can import user’s CAD/CAM file and the imported data can be processed 
by  both  path  optimize  and  velocity  planning  or  only  velocity  planning.  The  path 
optimize block is mainly responsible for line fitting of imported data. It has benefits of 
reducing machining time but the tradeoff is discontinuity of velocity and acceleration of 
each  axis.  The  velocity  planning  block  is  used  to  generate  smooth  resultant  velocity 
profile  and  acceleration  profile  for  user’s  applications.  A  smooth  velocity  factor  is 
employed to avoid vibration to improve manufacturing quality. The results of ADCNC 
library will transfer data to motion control card sequentially by APS library. Finally, the 
motion control card will generate smooth position commands to each axis to control the 
servo motor system by interpolation function for various applications. 
 
 
Figure 1 ADLINK CNC system 
 
Now each block of ADCNC library will be introduced here. 
 
MAPS-Embedded System Section 
3 
 
(1) Read file block:   
 
An  example  below  shows  a  basic  format  of  user’s  CAD/CAM  file  being  able  to 
recognize by read file block should include items opt (option), x and y (absolute position 
of  axes  or  arc  center)  and  theta  (arc  angle).  The  detailed  bit  define  of  opt  will  be 
introduced in the description of structure POS_DATA_2D_F64. On the other hand, the 
absolute position of each axis and arc angle can be floating values. The unit of arc angle 
is degree and its resolution is 10E-6. For example, if desired angle of arc is 90.0 degree, 
the input should be 90000000.0.     
 
Example of file format for structure POS_DATA_2D_F64 
//     opt           x           y         theta       
0x00000308  0.0000000000   0.0000000000 0.0000000000  
0x00000308 -0.0499995833   9.9998333342 0.0000000000  
0x00000308 -0.1999933334  19.9986666933 0.0000000000  
0x00000308 -0.4499662510  29.9955002025 0.0000000000   
 
An advanced format for structure PNT_DATA_2D_F64 shown below is similar to that 
for structure POS_DATA_2D_F64. Besides opt, x, y, and theta, the additional terms acc, 
dec,  vi,  vm,  and  ve  provide  information  of  acceleration,  deceleration,  start  velocity, 
maximum velocity, and end velocity respectively for velocity planning. 
 
Example of file format for structure PNT_DATA_2D_F64 
//   opt         x        y     theta    acc        dec       vi     vm         ve 
0x00000308   4381.000  139.000  0.000  2000.000   2000.000   0.000  200.000   0.000 
0x00000308   4381.000  154.000  0.000  1405.169   1056.169   0.000  997.638   0.000 
0x00000308   4553.000  240.000  0.000  6535.395   1535.395   0.000  653.540   0.000 
0x00000308   1129.000  340.000  0.000  2352.663   3112.663   0.000  992.999   0.000 
 
User should have basic  understanding about  how ADCNC library treat  these imported 
points  and  data.  Improper  setting  of  these  points  will  result  in  unexpected  behavior 
easily.  It  is  strongly  recommended  for  user  to  test  and  run  their  own  application  by 
MCP2 first to avoid accident happening.   
 
 
 
 
 
 
MAPS-Embedded System Section 
4 
 
(2) Path optimize block: 
 
Only one input parameter tolerance error is needed for path optimization, and its unit is 
pulse. Figure 2(a) shows the results of path optimization: Instead of original trajectory 
    automatically  based  on  the 
    ~    
    ~    ,  this  block  will  find  a  new  trajectory    
    ~    
    is  long  enough  to  be 
tolerance  error  information.  The  length  of  new  line    
capable  to  increase  machining  speed  substantially.  In  figure  2(b),  increasing  tolerance 
error  yields  shorter  time  since  point  number  decreases  subcutaneously.  If  tolerance 
error  is  set  zero,  the  path  optimization  block  will  find  a  default  tolerance  error  by 
one-tenth  minimum  distance  of  this  pattern  and  use  it  to  generate  new  trajectory.  One 
thing needed to know is the path optimization block will insert dwell points before and 
after rapid point to avoid distortion machining results. User has to take responsibility to 
choose tolerance error carefully to avoid issue of pattern distortion. 
 
 
(a) 
(b) 
Figure 2 Results of path optimization 
 
 
MAPS-Embedded System Section 
5 
 
 
00.20.40.60.811.21.41.602040Time (second)Tolerence Error (Pulse)  00.20.40.60.811.21.41.6020004000Point NumberTime (second)Point Number
 
(3) Velocity planning block 
 
In figure 3, the velocity planning block uses technique of connecting successive s-curve 
velocity  profiles  to  reduce  acceleration  and  deceleration  time  and  improve  machining 
efficiency.  Unlike  conventional  trapezoidal  velocity  profile,  the  built-in  cubic-order 
s-curve  velocity  profile  guarantees  to  have  continuous  position,  velocity,  and 
acceleration during motion. The boundary velocity of velocity profiles is continuous and 
the start and end velocity of velocity profile are zero.   
 
 
Figure 3 Results of velocity planning 
 
A table shown below is to introduce the input parameters for velocity planning block. In 
order 
to  have  minimum  motion 
time,  velocity  planning  uses  maximum 
acceleration/deceleration  in  ramping  region  and  maximum  velocity  in  cruise  region  to 
meet  this  requirement.  The  scenario  of  using  max  velocity/acceleration  or  rapid  max 
velocity/acceleration  for  user  depends  on  current  motion  itself  is  machining  pieces  or 
moving stage. One thing needs to know is start/end velocity keep zero when this point is 
set  a  rapid  point.  A  velocity  smooth  factor  is  used  to  control  jerk  to  reduce  vibration 
when starting or breaking motor. The corner velocity limit is provided for user to adjust 
corner  velocity.  If  this  setting  is  zero,  velocity  planning  will  decrease  corner  velocity 
automatically. The input parameter cycle time is  used for planning since the results of 
velocity planning must be integer times of it. If this setting is zero, a default value 1000 
us will be used in this block. The cycle time parameter has to be equal to that used in 
motion control card. 
 
Table of input parameters for velocity planning 
Parameter 
Description 
Range 
Maximum Velocity 
Maximum velocity 
>0.0 
Maximum Acceleration  Maximum 
>0.0 
for machining 
acceleration for 
machining 
 
MAPS-Embedded System Section 
6 
Unit 
Pulse per 
second 
Pulse per 
second 
squared 
 
Rapid Maximum 
Maximum velocity 
>0.0 
Velocity 
Rapid Maximum 
for moving 
Maximum 
Acceleration 
acceleration for 
>0.0 
moving 
Pulse per 
second 
Pulse per 
second 
squared 
Smooth Velocity Factor  Adjust smoothness of 
0.0~1.0 
Dimensionless 
velocity profile 
Corner Velocity Limit 
Limit corner velocity     ; Suggested 
Dimensionless 
Cycle Time 
Motion control time 
   ; if user sets 0, 
Nano second 
value is 8000000 
the default cycle 
time 1000us is 
used. 
 
In  order  to  get  well-planned  velocity  profile  for  machining,  the  following  will  try  to 
make  user  have  more  understanding  about  the  insight  methods  and  theory  of  velocity 
planning. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
MAPS-Embedded System Section 
7 
 
a. Corner velocity constraint 
 
In  figure  4,  in  order  to  reduce  effect  of  inertia,  a  corner  deceleration  mechanism  is 
employed here, and the machining precision can be improved obviously. A description 
of calculating corner velocity           is   
 
                                 
 
 
 
Where        denotes maximum velocity of input parameter,     is corner velocity limit 
of input parameter and     is the angle between lines or arc. It is suggested the value of 
   can  be  8000000.  This  setting  will  make  corner  velocity  be  equal  to  about  1% 
maximum  velocity  when  the  angle  of  consequent  lines  or  arc  is  larger  than  about  30 
degree.  If      is  set  zero,  the            will  be  obtained  automatically  by  velocity 
 
planning 
 
         
        
           
 
 
Where          is maximum acceleration of input parameter and      is the cycle time 
of input parameter. 
 
 
 
Figure 4 Corner velocity 
 
 
 
MAPS-Embedded System Section 
8