<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE article  PUBLIC "-//NLM//DTD Journal Publishing DTD v3.0 20080202//EN" "http://dtd.nlm.nih.gov/publishing/3.0/journalpublishing3.dtd"><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" dtd-version="3.0" xml:lang="en" article-type="research article"><front><journal-meta><journal-id journal-id-type="publisher-id">ICA</journal-id><journal-title-group><journal-title>Intelligent Control and Automation</journal-title></journal-title-group><issn pub-type="epub">2153-0653</issn><publisher><publisher-name>Scientific Research Publishing</publisher-name></publisher></journal-meta><article-meta><article-id pub-id-type="doi">10.4236/ica.2014.53013</article-id><article-id pub-id-type="publisher-id">ICA-48463</article-id><article-categories><subj-group subj-group-type="heading"><subject>Articles</subject></subj-group><subj-group subj-group-type="Discipline-v2"><subject>Computer Science&amp;Communications</subject></subj-group></article-categories><title-group><article-title>
 
 
  A Reference-Pulse Generator for Motion Control System
 
</article-title></title-group><contrib-group><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>guyen</surname><given-names>Hoang Giap</given-names></name><xref ref-type="aff" rid="aff1"><sup>1</sup></xref><xref ref-type="corresp" rid="cor1"><sup>*</sup></xref></contrib><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>Jin-Ho</surname><given-names>Shin</given-names></name><xref ref-type="aff" rid="aff2"><sup>2</sup></xref><xref ref-type="corresp" rid="cor1"><sup>*</sup></xref></contrib><contrib contrib-type="author" xlink:type="simple"><name name-style="western"><surname>Won-Ho</surname><given-names>Kim</given-names></name><xref ref-type="aff" rid="aff2"><sup>2</sup></xref><xref ref-type="corresp" rid="cor1"><sup>*</sup></xref></contrib></contrib-group><aff id="aff1"><addr-line>Department of Intelligent System Engineering, Graduate School of Dong-eui University, Busan, Korea</addr-line></aff><aff id="aff2"><addr-line>Department of Mechatronics Engineering, Dong-eui University, Busan, Korea</addr-line></aff><author-notes><corresp id="cor1">* E-mail:<email>hoanggiap1005@gmail.com(GHG)</email>;<email>jhshin7@deu.ac.kr(JS)</email>;<email>kwh@deu.ac.kr(WK)</email>;</corresp></author-notes><pub-date pub-type="epub"><day>03</day><month>07</month><year>2014</year></pub-date><volume>05</volume><issue>03</issue><fpage>111</fpage><lpage>119</lpage><history><date date-type="received"><day>17</day>	<month>May</month>	<year>2014</year></date><date date-type="rev-recd"><day>22</day>	<month>June</month>	<year>2014</year>	</date><date date-type="accepted"><day>5</day>	<month>July</month>	<year>2014</year></date></history><permissions><copyright-statement>&#169; Copyright  2014 by authors and Scientific Research Publishing Inc. </copyright-statement><copyright-year>2014</copyright-year><license><license-p>This work is licensed under the Creative Commons Attribution International License (CC BY). http://creativecommons.org/licenses/by/4.0/</license-p></license></permissions><abstract><p>
 
 
   This paper introduces a reference-pulse interpolator motion control system, which can be applied for computer numerical control (CNC) machine tools. The interpolation is calculated in DSP and the independent pulse generator modules are performed in FPGA, which can generate precise reference velocity profile and eliminate the path error of reference pulse interpolation. The proposed methodology has many advantages over existing reference-pulse interpolator controller, such as: real-time, extensibility, high flexibility and high precision motion profile planning. 
 
</p></abstract><kwd-group><kwd>Motion Control</kwd><kwd> Reference-Pulse Interpolator</kwd><kwd> CNC Machine</kwd></kwd-group></article-meta></front><body><sec id="s1"><title>1. Introduction</title><p>In the last few decades, motion control has developed steadily with the contribution of recent advanced control theories and technologies [<xref ref-type="bibr" rid="scirp.48463-ref1">1</xref>] . Along with the intensive applications of motion control, many researches have been conducted to enhance the performance of the motion control system [<xref ref-type="bibr" rid="scirp.48463-ref2">2</xref>] - [<xref ref-type="bibr" rid="scirp.48463-ref4">4</xref>] . The development of Field- Programmable Gate Array (FPGA) makes it easy to implement motion control applications due to programmable hard-wired feature, parallel processing architecture, short design cycle, low power consumption and high density [<xref ref-type="bibr" rid="scirp.48463-ref5">5</xref>] . Therefore FPGA is conventionally used to develop compact, low-price, high volume, and high performance motion control system [<xref ref-type="bibr" rid="scirp.48463-ref6">6</xref>] . However, FPGA-based controller with only hard-wired logic is not flexible and expandable for designing complicated algorithms and structures of motion control system, such as user’s defined motion profile, motion blending, advanced closed-loop control algorithms. Therefore, a new motion control hardware architecture was proposed by X. Shao, D. Shun, and J. K. Mills [<xref ref-type="bibr" rid="scirp.48463-ref7">7</xref>] to improve motion performance of high speed robotic manipulators. In this research, a DSP is used for dynamic compensation, trajectory planning, and the control loop is implemented in the FPGA. In [<xref ref-type="bibr" rid="scirp.48463-ref8">8</xref>] , a System-on-a Programmable-Chip (SoPC) with an embedded processor is implemented in FPGA to carry out motion profile generation and position control algorithm, while current vector control is performed in FPGA. This technology enables software and hardware co-design to be parallel processing, hence increases the system performance and flexibility [<xref ref-type="bibr" rid="scirp.48463-ref8">8</xref>] - [<xref ref-type="bibr" rid="scirp.48463-ref10">10</xref>] . However, all of above combinations are just developed in closed-loop control types.</p><p>Open-loop motion controller type generates reference signals, which is generally used for CNC systems such as water-jet cutting, machine tools, laser-beam cutters and welders. The reference signals from the controller can be transmitted as a sequence of reference pulse or as binary word in a sampled-data system [<xref ref-type="bibr" rid="scirp.48463-ref11">11</xref>] . The interpolator and signal generators are normally implemented in PC-based system with assembly language in order to save memory data and improve computing speed [<xref ref-type="bibr" rid="scirp.48463-ref11">11</xref>] [<xref ref-type="bibr" rid="scirp.48463-ref12">12</xref>] . In this system, the digital differential analyzer (DDA) method [<xref ref-type="bibr" rid="scirp.48463-ref11">11</xref>] [<xref ref-type="bibr" rid="scirp.48463-ref13">13</xref>] or stairs approximation method [<xref ref-type="bibr" rid="scirp.48463-ref12">12</xref>] [<xref ref-type="bibr" rid="scirp.48463-ref14">14</xref>] is used in hardware interpolators. Although the program design of geometric path planning is simple in PC-based control, the restriction of interpolation execution time of PC-based system makes it difficult to expand multi-axis motion system. Moreover, the design of interpolator and pulse generation based on one interrupt clock employed in these methods causes path error and cannot generate constant instantaneous velocity [<xref ref-type="bibr" rid="scirp.48463-ref12">12</xref>] . In [<xref ref-type="bibr" rid="scirp.48463-ref12">12</xref>] , a simple motion control approach is proposed by using two separate interrupt interval times at each interpolation step to generate constant velocity along geometric path. Although the precision is improved, this method still has error of half basic length unit.</p><p>In this paper we propose a new structure to overcome those drawbacks. Firstly, DSP is used to employ complicated calculation of the geometric path planning and motion profile generation. The order of velocity profile can be expanded to reduce jerk and vibration residue. Secondly, the binary velocity data of individual axis obtained from DSP are sent simultaneously to FPGA through Universal Host Port Interface (UHPI) at each sampling clock. A Master-Slave Wisbone interface (MSWI) module is designed in FPGA to communicate with DSP and pulse generator module through a First-In-First-Out (FIFO) memory buffer controller. Pulse generator modules with high speed clock designed in FPGA receive the velocity data from DSP and generate output pulse independently for each axis. The combination of interpolation calculation in DSP and independent pulse generator module in FPGA, along with the synchronous communication hardware structure, makes it possible to design a synchronous motion control system and eliminate the path error of reference pulse interpolation.</p></sec><sec id="s2"><title>2. Design of Synchronous Motion Control System</title><sec id="s2_1"><title>2.1. Architecture of Synchronous Motion Control System</title><p>The reference pulse motion controller generates a sequence of pulses representing position and velocity to be controlled, which is usually based on an iterative technique controlled by an interrupt clock.</p><p>In order to overcome the drawbacks of this kind of motion control, we proposed a new synchronous interpolation hardware and software structure, where the motion of each axis is independent with the system clock rate as shown in <xref ref-type="fig" rid="fig1">Figure 1</xref>. Consequently, the constant instantaneous velocity along the geometric path is generated and the error of pulse generator is eliminated.</p><fig id="fig1"  position="float"><label><xref ref-type="fig" rid="fig1">Figure 1</xref></label><caption><title> Proposed interpolation scheme</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/4-7900324x5.png"/></fig><p>The proposed controller is developed based on a high performance DSP and an FPGA. The geometric path planning and motion profile generation are calculated by DSP. At each interrupt clock, the interpolated velocity data of each coordinate are transferred to the pulse generator module through the MSWI. The MSWI module, designed in FPGA includes a Wishbone bus arbitration, a Wishbone master interface, a Wisbone slave interface for internal SRAM memory control, and Wishbone slave interfaces for connecting with the pulse generator module s through a FIFO buffer memory controller.</p><p>The FIFO buffer memory controller includes a timer and a shift register control. The signal i_clk and r_clk_full represent the input clock and output for timer, respectively. The frequency of r_clk_full signal is equivalent to the clock interrupt of DSP. This timer ensures the velocity data to be transferred between DSP and pulse generator module of FPGA synchronously. Memory buffer contains velocity data r_data to gradually transfer to the pulse generator module at every sampling clock. Then these velocity data are accumulated in the pulse generator module to generate reference pulse. A shift register in the stack occurs when there exists velocity input data i_wr_data from the host controller and i_time_trigger signal is active. The i_time_trigger signal indicates that the buffer memory is not empty and timer signal i_clk is active.</p><p>The bus arbitration in MSWI is used to inter-connect the bus control signals between master and slave module. This structure enables the interpolator velocity data to be transferred from DSP to pulse generator module s simultaneously, and the corresponding pulse outputs generated for all coordinates are synchronous at each interval clock.</p><p>Pulse generator module is connected with the Wishbone slave interface through a FIFO buffer memory controller as shown in <xref ref-type="fig" rid="fig2">Figure 2</xref>. This design protects the binary velocity data from the host controller to be overflowed. Consequently, the proposed controller is capable of generating synchronous and precise reference pulse signal for motion control system.</p><fig id="fig2"  position="float"><label><xref ref-type="fig" rid="fig2">Figure 2</xref></label><caption><title> Pulse generator module</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/4-7900324x6.png"/></fig></sec><sec id="s2_2"><title>2.2. Pulse Generator Module</title><p>Pulse generator module generates a sequence of signals o_pulse and o_dir representing reference position and moving direction of motion system, respectively. At each sampling time, the binary velocity data i_speed_data are stored in memory buffer for pulse generation process.</p><p>Since the pulse signal is equivalent to one basic length unit (BLU), the pulse frequency is proportional to velocity, and the number of pulse is equivalent to the integration of velocity over time unit as in Equation (1):</p><disp-formula id="scirp.48463-formula168"><label>(1)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/4-7900324x7.png"  xlink:type="simple"/></disp-formula><disp-formula id="scirp.48463-formula169"><label>(2)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/4-7900324x8.png"  xlink:type="simple"/></disp-formula><p>where P denotes the number of reference pulse output, BVU represents the basic velocity unit which is proportional to the frequency f&#173;<sub>clk</sub> of timer signal i_clk, and V is the reference velocity (pulse/sec), f<sub>RANGE</sub> is the frequency unit defines the input factor for Comparator block.</p><p>Equation (1) can be rewritten in discrete type as:</p><disp-formula id="scirp.48463-formula170"><label>(3)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/4-7900324x9.png"  xlink:type="simple"/></disp-formula><disp-formula id="scirp.48463-formula171"><label>(4)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/4-7900324x10.png"  xlink:type="simple"/></disp-formula><p>where n is the output of Counter block.</p><p>The Counter and Adder block in pulse generator module acts as the velocity integrator. The integrator value</p><p><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/4-7900324x11.png" xlink:type="simple"/></inline-formula> is compared with f<sub>RANGE</sub> factor in the Comparator block. An output pulse o_pulse is toggle when <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/4-7900324x12.png" xlink:type="simple"/></inline-formula> .</p></sec></sec><sec id="s3"><title>3. Geometric Path Planning and Motion Profile Generation</title><p>Motion planning, including geometric path planning G(p) and motion profile generation p(t), plays an important role in machine control. With the rapid development of microprocessor technology, motion planning becomes flexible to employ [<xref ref-type="bibr" rid="scirp.48463-ref10">10</xref>] . In this section, we will discuss about the effective method to design a DSP-based motion planning module that can be applied for reference pulse generator.</p><sec id="s3_1"><title>3.1. Motion Profile Generation</title><p>Motion profile is expressed as a parametric function of time p(t), which provides the corresponding desired position and velocity at each instant. S-curve trajectory or seven-segment trajectory is used in motion control system to provide a smooth motion profile by adopting a continuous, linear piece-wise acceleration profile. In this manner, the resulting velocity is composed by linear segment connected by parabolic blends. Since the jerk is characterized by a step profile, the stress load by this motion profile is reduced.</p><p>The seven main parts of S-curve profile can be determined from the input coordinate motion data, as follows:</p><p>1<sup>st</sup>, 3<sup>rd</sup>, 5<sup>th</sup>, and 7<sup>th</sup> segments:</p><disp-formula id="scirp.48463-formula172"><label>(5)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/4-7900324x13.png"  xlink:type="simple"/></disp-formula><disp-formula id="scirp.48463-formula173"><label>(6)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/4-7900324x14.png"  xlink:type="simple"/></disp-formula><p>2<sup>nd</sup>, and 6<sup>th</sup> segments:</p><disp-formula id="scirp.48463-formula174"><label>(7)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/4-7900324x15.png"  xlink:type="simple"/></disp-formula><disp-formula id="scirp.48463-formula175"><label>(8)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/4-7900324x16.png"  xlink:type="simple"/></disp-formula><p>4<sup>th</sup> segments:</p><disp-formula id="scirp.48463-formula176"><label>(9)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/4-7900324x17.png"  xlink:type="simple"/></disp-formula><disp-formula id="scirp.48463-formula177"><label>(10)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/4-7900324x18.png"  xlink:type="simple"/></disp-formula><p>where <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/4-7900324x19.png" xlink:type="simple"/></inline-formula> denotes the instant position, <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/4-7900324x20.png" xlink:type="simple"/></inline-formula>is initial position, <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/4-7900324x20.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/4-7900324x21.png" xlink:type="simple"/></inline-formula>is maximum velocity, and <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/4-7900324x20.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/4-7900324x21.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/4-7900324x22.png" xlink:type="simple"/></inline-formula> is maximum acceleration of geometric path, respectively.</p></sec><sec id="s3_2"><title>3.2. Geometric Path Planning</title><p>Generally, geometric path planning including linear interpolation is common applied in industrial manufacture. Geometric path planning generates the reference position <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/4-7900324x23.png" xlink:type="simple"/></inline-formula> and velocity command <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/4-7900324x23.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/4-7900324x24.png" xlink:type="simple"/></inline-formula> for individual coordinate which is used for reference pulse generator. The geometric path can be considered as a parametric vector function which represents the trajectory when the motion profile <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/4-7900324x23.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/4-7900324x24.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/4-7900324x25.png" xlink:type="simple"/></inline-formula> moves over some interval of coordination as following:</p><disp-formula id="scirp.48463-formula178"><label>(11)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/4-7900324x26.png"  xlink:type="simple"/></disp-formula><p>Linear interpolant is a straight line between two given points <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/4-7900324x27.png" xlink:type="simple"/></inline-formula> and<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/4-7900324x27.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/4-7900324x28.png" xlink:type="simple"/></inline-formula>. For a value <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/4-7900324x27.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/4-7900324x28.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/4-7900324x29.png" xlink:type="simple"/></inline-formula> in the interval<inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/4-7900324x27.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/4-7900324x28.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/4-7900324x29.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/4-7900324x30.png" xlink:type="simple"/></inline-formula>, the value <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/4-7900324x27.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/4-7900324x28.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/4-7900324x29.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/4-7900324x30.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/4-7900324x31.png" xlink:type="simple"/></inline-formula> along the straight line is calculated from the following equation:</p><disp-formula id="scirp.48463-formula179"><label>(11)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/4-7900324x32.png"  xlink:type="simple"/></disp-formula><p>The design of linear interpolation function in microprocessor is straightforward. The displacement of linear trajectory can be calculated as following:</p><disp-formula id="scirp.48463-formula180"><label>(12)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/4-7900324x33.png"  xlink:type="simple"/></disp-formula><p>The interpolated position <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/4-7900324x34.png" xlink:type="simple"/></inline-formula> and velocity <inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/4-7900324x34.png" xlink:type="simple"/></inline-formula><inline-formula><inline-graphic xlink:href="http://html.scirp.org/file/4-7900324x35.png" xlink:type="simple"/></inline-formula> of reference path can be presented as following:</p><disp-formula id="scirp.48463-formula181"><label>(13)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/4-7900324x36.png"  xlink:type="simple"/></disp-formula><disp-formula id="scirp.48463-formula182"><label>(14)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/4-7900324x37.png"  xlink:type="simple"/></disp-formula><disp-formula id="scirp.48463-formula183"><label>(15)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/4-7900324x38.png"  xlink:type="simple"/></disp-formula><disp-formula id="scirp.48463-formula184"><label>(16)</label><graphic position="anchor" xlink:href="http://html.scirp.org/file/4-7900324x39.png"  xlink:type="simple"/></disp-formula><p>It can be seen from the above calculations, the instantaneous position and velocity data of individual axis can be implemented comprehensively in DSP by some calculations of motion profile generation and geometric path planning process.</p></sec></sec><sec id="s4"><title>4. Experimental Results</title><p>The overall motion control system shown in <xref ref-type="fig" rid="fig3">Figure 3</xref> consists of an embedded motion control board, a host PC to communicate with the board, 4 servo drivers to drive 4 AC motors of gantry mechanical system. In this experiment, only a vertical axis and a horizontal axis are used for linear move. The developed embedded motion control board, showed in <xref ref-type="fig" rid="fig4">Figure 4</xref>, includes a high performance DSP TMS320F2812 operating at 150 MHz and an FPGA XC3S1000 that has 1M system gates, 17,280 logic cells, and 391 I/O pins. The summary of the device utilization characteristic for the circuit of the FPGA is given in <xref ref-type="table" rid="table1">Table 1</xref>. The line driver 75ALS174A is used to convert the reference single-end pulse/dir signal from the FPGA to differential-end signal. The servo driver is set to operate in position mode. A quadrature encoder module (QEM) is designed in FPGA to observe the actual position of mechanical system. The line receiver is used to convert differential-end signal from rotary encoder of motor to single-end signal for QEM. The velocity profile data is send periodically from DSP to FPGA at the sampling clock frequency of 2 KHz. The pulse generator module in FPGA is able to generate pulse at maximum speed of 4 Mpps. The motion control board implemented in this paper can control system with up to 4 axes.</p><p><xref ref-type="fig" rid="fig5">Figure 5</xref> shows the reference pulses of proposed motion control board, which represents the linear interpolation from (0.00 mm, 0.00 mm) to (500.00 mm, 800.00 mm) for the required vector velocity of 400.00 mm/s. The</p><fig id="fig3"  position="float"><label><xref ref-type="fig" rid="fig3">Figure 3</xref></label><caption><title> Multiple axis motion control system</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/4-7900324x40.png"/></fig><fig id="fig4"  position="float"><label><xref ref-type="fig" rid="fig4">Figure 4</xref></label><caption><title> Developed motion control board</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/4-7900324x41.png"/></fig><table-wrap id="table1" ><label><xref ref-type="table" rid="table1">Table 1</xref></label><caption><title> Device utilization summary</title></caption><table><tbody><thead><tr><th align="center" valign="middle"  rowspan="2"  >Device Utilization Summary</th><th align="center" valign="middle"  colspan="3"  >Logic Utilization</th></tr></thead><tr><td align="center" valign="middle" >Total</td><td align="center" valign="middle" >Used</td><td align="center" valign="middle" >%</td></tr><tr><td align="center" valign="middle" >Total Number Slice Registers</td><td align="center" valign="middle" >15,360</td><td align="center" valign="middle" >3594</td><td align="center" valign="middle" >23</td></tr><tr><td align="center" valign="middle" >Number of 4 input LUTs</td><td align="center" valign="middle" >15,360</td><td align="center" valign="middle" >5738</td><td align="center" valign="middle" >37</td></tr><tr><td align="center" valign="middle" >Number of occupied Slices</td><td align="center" valign="middle" >7680</td><td align="center" valign="middle" >3518</td><td align="center" valign="middle" >45</td></tr><tr><td align="center" valign="middle" >Total Number of 4 input LUTs</td><td align="center" valign="middle" >15,360</td><td align="center" valign="middle" >5975</td><td align="center" valign="middle" >38</td></tr><tr><td align="center" valign="middle" >Number of bonded IOBs</td><td align="center" valign="middle" >333</td><td align="center" valign="middle" >219</td><td align="center" valign="middle" >65</td></tr><tr><td align="center" valign="middle" >Number of BUFGMUXs</td><td align="center" valign="middle" >8</td><td align="center" valign="middle" >3</td><td align="center" valign="middle" >37</td></tr></tbody></table></table-wrap><p>BLU of pulse generator module is 0.0001 mm. Figures 6-8, present the velocity profile, position profile and geometric path planning generated by linear interpolation. The actual position and velocity of each axis are gathered by QEM module from servo drivers to compare with the result of proposed reference pulse generators.</p><p>Meanwhile, due to the combination of interpolation calculation from DSP and independent pulse generator module from FPGA, the instantaneous vector velocity of linear path generated by proposed method can keep a constant value, and the reference path error is 0. The experimental results in <xref ref-type="fig" rid="fig5">Figure 5</xref> shows that the pulses</p><fig id="fig5"  position="float"><label><xref ref-type="fig" rid="fig5">Figure 5</xref></label><caption><title> Reference pulse of X and Y axis along linear path using proposed controller</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/4-7900324x42.png"/></fig><fig id="fig6"  position="float"><label><xref ref-type="fig" rid="fig6">Figure 6</xref></label><caption><title> Single axis velocity of linear interpolation</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/4-7900324x43.png"/></fig><fig id="fig7"  position="float"><label><xref ref-type="fig" rid="fig7">Figure 7</xref></label><caption><title> Single axis position of linear interpolation</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/4-7900324x44.png"/></fig><fig id="fig8"  position="float"><label><xref ref-type="fig" rid="fig8">Figure 8</xref></label><caption><title> Position of linear interpolation</title></caption><graphic mimetype="image"   position="float"  xlink:type="simple"  xlink:href="http://html.scirp.org/file/4-7900324x45.png"/></fig><p>generated from two axes are uniform and synchronous. The velocity profiles in <xref ref-type="fig" rid="fig6">Figure 6</xref> and the position tracking in <xref ref-type="fig" rid="fig7">Figure 7</xref> validate the calculation of motion profile generation in the DSP.</p><p>The experimental results prove the synchronous performance of developed controller applied in an industrial motion system. The flexibility and the open design of the motion board make it easy to develop and configure advanced motion control algorithm.</p></sec><sec id="s5"><title>5. Conclusion</title><p>In this paper, we introduced a new synchronous reference pulse interpolator methodology for motion control system. The combination of proposed interpolation calculation in DSP and independent pulse generator module in FPGA can generate precise reference velocity profile and eliminate the path error of reference pulse interpolation. Therefore the proposed motion controller is applicable in high precision motion control system like CNC machine, planning machine, robot control.</p></sec><sec id="s6"><title>Acknowledgements</title><p>This work was supported by Dong-Eui University Foundation Grant (grant number 2014AA492).</p></sec></body><back><ref-list><title>References</title><ref id="scirp.48463-ref1"><label>1</label><mixed-citation publication-type="book" xlink:type="simple">Desborough, L. and Miller, R. (2002) Increasing Customer Value of Industrial Control Performance Monitoring— Honeywell Experience. In: Rawlings, J.B., Ogunnaike, B.A. and Eaton, J.W., Eds., 6th International Conference Chemical Process Control, AIChE Symp., Series 326, New York, AIChE.</mixed-citation></ref><ref id="scirp.48463-ref2"><label>2</label><mixed-citation publication-type="other" xlink:type="simple">Volpe, R. (1993) Task Space Velocity Blending for Real-Time Trajectory Generation. Proceedings of IEEE International Conference on Robotics and Automation, Atlanta, GA, 2-6 May 1993, 680-687. http://dx.doi.org/10.1109/ROBOT.1993.291880</mixed-citation></ref><ref id="scirp.48463-ref3"><label>3</label><mixed-citation publication-type="other" xlink:type="simple">Macfarlane, S. and Croft, E.A. (2003) Jerk-Bounded Manipulator Trajectory Planning: Design for Real-Time Applications. IEEE Transactions on Robotics and Automation, 19, 42-52. http://dx.doi.org/10.1109/TRA.2002.807548</mixed-citation></ref><ref id="scirp.48463-ref4"><label>4</label><mixed-citation publication-type="other" xlink:type="simple">Meckl, P.H., Arestides, P.B. and Woods, M.C. (1998) Optimized S-Curve Motion Profiles for Minimum Residual Vibration. Proceedings of the 1998 American Control Conference, Philadelphia, PA, 21-26 June 1998, 2627-2631.</mixed-citation></ref><ref id="scirp.48463-ref5"><label>5</label><mixed-citation publication-type="other" xlink:type="simple">Kung, Y.-S., Tseng, K.-H. and Tai, T.-Y. (2006) FPGA-Based Servo Control IC for X-Y Table. Proceedings of IEEE International Conference on Industrial Technology, Mumbai, 15-17 December 2006, 2913-2918.</mixed-citation></ref><ref id="scirp.48463-ref6"><label>6</label><mixed-citation publication-type="other" xlink:type="simple">Cho, J.U., Ngoc, Q.L. and Jeon, J.W. (2009) An FPGA-Based Multiple-Axis Motion Control Chip. IEEE Transactions on Industrial Electronics, 56, 856-870. http://dx.doi.org/10.1109/TIE.2008.2004671</mixed-citation></ref><ref id="scirp.48463-ref7"><label>7</label><mixed-citation publication-type="other" xlink:type="simple">Shao, X., Shun, D. and Mills, J.K. (2006) A New Motion Control Hardware Architecture with FPGA-Based IC Design for Robotic Manipulators. Proceedings of IEEE International Conference on Robotics and Automation, Orlando, FL, 15-19 May 2006, 3520-3525.</mixed-citation></ref><ref id="scirp.48463-ref8"><label>8</label><mixed-citation publication-type="other" xlink:type="simple">Xu, J., You, B. and Ma, L. (2008) Research and Development of DSP Based Servo Motion Controller. Proceedings of the 7th World Congress on Intelligent Control and Automation, Chongqing, 25-27 June 2008, 7720-7725.</mixed-citation></ref><ref id="scirp.48463-ref9"><label>9</label><mixed-citation publication-type="other" xlink:type="simple">Naouar, M.W., Monmasson, E., Naassani, A.A., Belkhodja, I.S. and Patin, N. (2007) FPGA-Based Current Controllers for AC Machine Drives—A Review. IEEE Transactions on Industrial Electronics, 54, 1907-1925. http://dx.doi.org/10.1109/TIE.2007.898302</mixed-citation></ref><ref id="scirp.48463-ref10"><label>10</label><mixed-citation publication-type="other" xlink:type="simple">You, B., Li, D. and Liu, S. (2007) Design of DSP-Based Open Control System for Industrial Robot. Proceedings of the IEEE International Conference on Automation and Logistics, Jinan, 18-21 August 2007, 1585-1590.</mixed-citation></ref><ref id="scirp.48463-ref11"><label>11</label><mixed-citation publication-type="other" xlink:type="simple">Koren, Y. and Masory, O. (1981) Reference-Pulse Circular Interpolators For CNC Systems. Journal of Manufacturing Science and Engineering, 103, 131-136. http://dx.doi.org/10.1115/1.3184454</mixed-citation></ref><ref id="scirp.48463-ref12"><label>12</label><mixed-citation publication-type="other" xlink:type="simple">Lho, T.J. and Kim, J.Y. (2000) A Study on Development of a PC-Based Software Interpolator for Two-Axis CNC Systems. TIT Research Journal, 3, 103-121.</mixed-citation></ref><ref id="scirp.48463-ref13"><label>13</label><mixed-citation publication-type="other" xlink:type="simple">Koren, Y. (1976) Interpolator for a Computer Numerical Control System. IEEE Transactions on Computers, C-25, 32-37. http://dx.doi.org/10.1109/TC.1976.5009202</mixed-citation></ref><ref id="scirp.48463-ref14"><label>14</label><mixed-citation publication-type="other" xlink:type="simple">Lee, B.J. and Nho, T.S. (1982) Linear and Circular Interpolation for 2-Dimension Contouring Control. Journal of Korean Society of Mechanical Engineers, 341-345.</mixed-citation></ref></ref-list></back></article>