Control of External Servo with I/O

  • Hi All,


    I posted this in the Yaskawa forum but I might get some responses if I make the question a bit more general,


    How can I go about controlling a AC servo motor to move to a position and hold using I/O communication from a robot controller?


    Can someone please give me some kind of idea of what steps I would need to go through.

  • That... depends entirely on what control interface the servo driver has.


    Most servos cannot be driven directly from I/O -- even inside the robot controller, every servo has to have a driver, or "amp," that handles the low-level control of the servo. For example, often the main processor knows little, or nothing, about the mechanical details of the servo (internal harmonic-drive ratio, encoder configuration, electrical frequency, etc), but instead, simply tells the servo amp "rotate at this many RPM in this direction." The amp takes care of all the fiddly hardware details, as well as providing the high-power, high-frequency electrical current.


    There are some servo motors, like the ClearPath or DynaMixel series, that can be operated by I/O (often RS-485 serial or I2C), b/c they incorporate the amp into the body of the motor.


    So, before anyone can answer your question, you need to provide details on what servo motor you want to control, what amp it has, what control interfaces it offers, and what you need to be able to do with it.

  • Thanks for the reply,


    I am using a 1kw Hiwin AC servo that has a Hiwin D2 servo drive.


    I plan on using the servo to move my robot on a linear rail I have built. The robot and track will be used to weld trusses. I plan to move the robot to a working position, hold it there while the robot welds all of the weld seams in its working envelope then move it to the next position and repeat.


    The drive has a modbus compatibility, Digital pulse-direction interface and analogue ±10 V interface, Position control, speed control and torque control, Inputs/outputs can be parameterised.

  • It sounds like the "Position control" is what you need. Can that be done over digital I/O, or would it require ModBus? If the latter, then you'll need a ModBus interface for your robot. If the former, it'll depend on what digital I/O your robot has or supports.


    You'll also need to look at what the servo requires for zero reference. Does it need re-referencing any time power is lost? In the event of losing reference for any reason, what will your recovery procedure be? It'll need to be precise, otherwise you'll have to re-program all your weld paths.

  • Ok I will read up on position control, I will be using modbus but I can use Digital I/O with this drive it seems.


    How do robots usually program external output movements into their programs? Can I request a position command and have the servo go to it or is the ability to program the output more limited.


    I have a Motoman robot with Inform II programming language.

  • A question that specific, you'd have to ask in the Motoman forum.


    In general, you can bit-bang anything over I/O, if the control interfaces are compatible. But the robot won't "know" anything about the external servo -- you'll just a line in your program, at the right point, to send a signal to the external servo controller. Whether that signal moves the robot 1mm, 1mm, or 100mm, the robot won't know. Since the external servo isn't an organic part of the robot, the robot will have no real awareness of what effect that servo has on the physical world.


    For more complex setups (most often, one where the robot needs to be able to move the arm and the external axis in perfect sync), usually the only way to do it is to buy an add-on servo kit specific to that robot, and set up the external kinematics so that the new servo becomes a "natural" part of the robot arm -- the robot will now have 7 axes rather than 6. This isn't really achievable with 3rd-party servos -- there are some workarounds, but they generally require advanced technical setup and complex, expert programming to make work.

  • It seems you don't need a synchronized movement of robot and servo . So you can define multiple adjustable position for your servo and call each one by robot digital I/O.
    In general you need a position controller to get IO from robot and issues command to the servo. It is possible to define some position register inside it and call them by IO.
    But I have used Delta A2 servo drives for this job. Because it has a built-in position controller.

Advertising from our partners