Parker’s PAC IEC61131-3 development environment (Parker Automation Manager or PAM) is built on 3S Software’s CODESYS 2.3 IDE. Depending on the model of PAC ordered, the controller supports not only basic point to point motion, multi-axis interpolation, gearing, camming, forward and inverse kinematics, as well as GCode motion from CAD files (in dxf format). Also included is an on board Visualization package for creating user defined GUI screens for testing, debugging, and controlling code.
Here at Cross Company Motion Solutions, we have developed a demo system using a full featured PAC controller that includes three 200 watt Parker “PDrive” Axes. We have also dedicated much “bench” time to exploring the different features of the PAC to better assist customers in solving applications and identify niches where this controller may be applied.
To demonstrate the ease of integrating third party products with the PAC, we decided to connect a Logitech F710 Gamepad (LGP) using its supplied USB interface (receiver). Our goal was to determine the degree of difficulty required to interface the two devices and allow for basic motion control capabilities.
How We Developed It
Currently Parker does not provide a Software Developer Kit (SDK) for the PAC. Instead we developed a VB.Net application using Microsoft’s Visual Studio to interpret the LPG’s buttons and joystick data. Microsoft includes .NET Frameworks to interface to their Xbox 360 game controller which is functionally the same as the LGP.
The application runs on an external PC and connects to the PAC via a Modbus/TCP client that utilizes a Modbus Client library that we had on hand. In the VB.Net application, we created a simple GUI (Window) in order to monitor the LGP and Modbus connections for debugging and demonstration.
The Window includes a Settings menu with an “Always On Top” selection to ease debugging etc. The button states are displayed, as well as the XY positions of the 2 joysticks. The Modbus connection’s IP address is fixed at the default for Port X2 on the PAC, however this could be made user-adjustable.
The Modbus connection status, a connect/re-connect Button, and the value for a Heartbeat are also displayed. The Heartbeat is a continuously changing (increments each Modbus cycle) value that the PAC uses to monitor the connection.
The PAC is configured as a Modbus Slave and left at the default 10 Words In/Out.
How It Functioned
The application takes each joystick’s XY position data (+/- 1.0 Decimal), multiplies it by 10,000, and sends it as a 16 Bit Integer value. The Watchdog value is sent as a 16 Bit Integer. The Button Statuses are logically OR’d into a 16 Bit Word and sent.
The joysticks have a small dead band (0.0 value) around the center positions, which is a nice feature as no additional code is required.
We mapped the LGP Buttons as follows:
- Blue (X) Toggles whether the LGP has control
- Yellow (Y) Reinitiates the Axes
- Green (A) Enables the Axes
- Red (B) Disables the Axes
We mapped the LGP joysticks as follows:
- Left (Left/Right) Axis X Velocity
- Left (Up/Down) Axis Y Velocity
- Right (Left/Right) Axis Z Velocity
- Right (Up/Down) Axis Theta Velocity
In the PAC program (POU), the incoming joystick position values are converted to REAL numbers by dividing by 10000.0 then multiplied by a maximum speed value (visMaxSpeed). The Acceleration/Deceleration values are set high for crisp response to the commands. The Axes are controlled in LGP mode via MC_ControlAxisByVel Function Blocks.
If the LGP WatchDog (iGPHeartBeat) value was constant for more than a set time (50 ms), the PAC reverted back to local control and stopped the axes.
The observed response to the joystick inputs was near real time and was acceptable for use in an actual application. Even though the LGP is not an industrial type device, it would be fine in a lab or other type of similar environment.
This code was added to an existing application that included a multi-axis Interpolator that we have developed, as well as a GCode executor. LGP status and settings were added to the basic Visualization that we had created to test and debug our Interpolator./p>
It was interesting to see what can be achieved with a < $50.00 game controller and some creative coding. It should be noted that all of the software used for this experiment was freely available including the Parker Application Manager (PAM) used for the PAC.