X-Z Motion Controller
Overview
The BenchBot V3 will use a ClearCore motion controller to actuate the X and Z axis servos as well as interface will I/O such as End-stops, E-stops, and motor brakes. The ClearCore will communicate to the host PC via the Amiga’s onboard ethernet network.
The Amiga “Brain” (host PC) will send commands containing a desired X-Y coordinate to the ClearCore controller. The controller will be configured with the useable travel in both axis and will not attempt to travel to an unreachable location. It will also perform homing operations. The “Brain” will independently command the Amiga’s wheel motors via CANBUS to preform Y travel motions. When the X-Z controller reaches the commanded location, it will respond that was successful and the host application and take whatever further action it needs to.
The ClearCore provides up to 4 channels of motor control, considerable I/O, and could be expanded indefinitely with further controllers added at different IP addresses.
Communication Protocol
The communication protocol between the ClearCore and the Brain will likely be custom and very simple. In theory any network device would be able to control the ClearCore, and read its status and position. The ClearCore is provided with a fairly extensive programming API that includes an IP stack with UDP and TCP (server or client) support.
Therefore, wiring our own protocol that is packaged in UDP or TCP datagrams should be fairly straightforward. We will need to decide if UDP or TCP is more suitable and how (or if) we will handle multiple connections.
Messages
Direction is from the point of view of the ClearCore Controller
Description | Direction | Frequency | Format |
---|---|---|---|
Request to move to X, Z position | IN | As needed |
|
Request Complete? (echo back request, with completed flag?) [multi usage?] | OUT | As needed |
|
Status (X & Z position, command complete Y/N, errors?, connections?) | OUT | As needed |
|
Request Configuration | IN | As needed |
|
Respond Configuration (Num Axis, Axis Size, run time?) | OUT | As needed |
|
Set Configuration? [this would be complex and possibly dangerous, will detail later] | IN | As needed |
|
|
|
|
|
|
|
|
|