M5 Thruster Module
Operator's Manual, 1.01.00 |
Copyright NoticeThis material is copyright protected. No material may be reproduced or transmitted in any form or by any means for any purpose without expressed written consent of VideoRay LLC. Copyright © 2019, VideoRay LLC - The Global Leader in Micro-ROV Technology |
M5 Thruster Module
Operator's Manual, 1.01.00 |
Table of Contents
|
M5 Thruster Module
Operator's Manual, 1.01.00 |
About this DocumentOnline ManualThis Quick Start Guide is a subset of the full version of this manual, which is available on the M5 Thruster Module control panel and online in the following formats:
Document ConventionsSeveral symbols are used throughout this documentation to add emphasis and to assist in relocating important information. The following table describes these symbols and their uses.
Beyond this DocumentThere is no substitute for experience and/or training, especially with respect to the real purpose for which you plan to use this equipment. We encourage you to explore options beyond the scope of these materials to expand your knowledge and skills necessary to support your applications. In addition to this documentation, VideoRay offers training and technical support and hosts a general user discussion forum and user image gallery. We also realize that collectively, users of our products spend considerably more time operating our systems than we do ourselves. Users also encounter more diverse operating environments across an extremely broad range of applications. We highly value this vast experience base, and invite and encourage you to share your experiences and suggestions with us. Please feel free to contact us by any of the methods listed below. Quality CommitmentVideoRay strives to design, manufacture, deliver and support the highest quality products and services, including this documentation. We have made every effort to ensure that this documentation is accurate and provides you with the most up-to-date information. If you find any errors in this documentation or have suggestions for improvements, each page contains a "Help us improve this document" feedback link in the left margin (you must be connected to the Internet to use this link).
DisclaimerThis document is deemed accurate at the time of its writing, however it is not a legal contract and the information contained herein should not be construed to represent any form of commitment. This document as well as the associated products and services are subject to change without notice. |
M5 Thruster Module
Operator's Manual, 1.01.00 |
How to Get HelpHelp for your M5 Thruster Module is available through several channels. All Hours Self-Service / Crowd-Source Tools
Global Support
Regional Support
Training
Operational Strategies and Tactics SupportIf you need help understanding how to apply your system to a specific project, contact VideoRay or you local VideoRay dealer. We can provide guidance or help you find a certified consultant. |
Before Contacting Support |
M5 Thruster Module
Operator's Manual, 1.01.00 |
M5 Thruster Module OverviewVideoRay is pleased to introduce the M5 series thruster motor. This thruster features oil compensation for a 2,000 m (6,560 ft) depth rating, direct drive brushless motor with the motor controller built into the housing. It delivers a high thrust to input power ratio and is very efficient at low inputs. It has a low starting RPM, reverses instantly and does not cog. It can be operated with either a left or a right pitch propeller. Addressable firmware allows multiple thrusters to be connected to the same bus using a stackable plug. |
M5 Thruster Module
Operator's Manual, 1.01.00 |
Equipment GuideThe M5 Thruster is a modular unit that includes a brushless motor and motor controller in a single housing with an integrated nozzle for the propeller. It is easy to mount and includes a stackable M/F 5 pin connector.
|
5 Pin ConnectorThe M5 Thruster Module 5 pin connector is molded neoprene, 10,000 psi rating, 5 contacts with 12 AWG, 600 VDC, 20A per pin. Connector pin configuration: Male face from the front Pin Configuration
Mating ConnectorConnector Vendor: Teledyne Impulse LPIL-5-MP, Male / Female Connector with whip used on the thruster LPBH-5-FS, Female Bulkhead Connector used on the platform vehicle |
M5 Thruster Module
Operator's Manual, 1.01.00 |
Software GuideSoftware requirements include the low level firmware for the motor controller (provided by VideoRay) and application control software to adjust the thrust during operation (user supplied). |
Bootloader OperationThe bootloader runs on the module upon power up. The module will remain in the bootloader for 1 second waiting for a command to remain in the bootloader. If no command is received and the module has a valid application firmware loaded then the module will run the application firmware. If the "remain in bootloader" command is received or if there is no valid application firmware the module will remain in the bootloader. The module must have the bootloader running. The primary mechanism of installing the bootloader on the module is via JTAG (Joint Test Action Group). If you require provisioning a module with a bootloader, please see the appropriate documentation. Bootloader LED Blink PatternsThe bootloader blinks the module status LED to indicate its operational state.
Typical blink startup pattern will be: 3 blinks, followed by 1 second of rapid blinks, followed by the application firmware blink pattern. If there is no valid application, the pattern will be 3 blinks, followed by continuous rapid blinks. Verification of Bootloader Operation via a TerminalThe bootloader emits an identifying message on startup. Part of the message is ASCII and thus human readable. This provides a method to insure that the bootloader is loaded on the module. Connect a terminal emulator (such as tera term or putty) to the serial port connected to the module. The terminal should be set to 115200, 8n1. Upon power up of the module the terminal will display the received characters. The display will look similar to the image below. If the text "BOOT" is visible then it is most likely that the bootloader is on the module.
ASCII terminal display showing bootloader message as well as text banner from a module application firmware (LED Controller). "BOOT" is highlighted in yellow, and the firmware message is highlighted in green. |
Firmware |
Updating Firmware on M5 ModulesQuick Steps for manual updating a single module:
Downloading Firmware and ToolsAll M5 software is distributed via the VideoRay FTP server (http://ftp.videoray.com/) using the following credentials:
Note the use of http://, not ftp:// in the server URL above. The firmware is located in the ./firmware folder. Tools (such as vr_refresh) are located in the ./windows_tools folder or ./ubuntu_tools folder depending upon what OS you are using. At a minimum the firmware for the module and the appropriate vr_referesh application are required to update the firmware on a module Instructions for using vr_refresh are included in the next section. |
Using vr_refreshThe vr_refresh tool is a standalone command line application that can be used to update the firmware on a module. There are no dependencies for vr_refresh. Usage: vr_refresh [OPTIONS] [SINGLE_HEX_FILE_NAME] Do not include the brackets [ ].
For example, to download the firmware to a LED controller module, the typical usage on a Windows machine would be:
The typically usage on a Linux host would be:
By default vr_refresh will use BROADCAST transmissions to establish connections. This behavior can be changed by using the -i or the -sn parameters. vr_refresh, like all VideoRay command line tools will output its usage options when run with the "-?" parameter. vr_refresh Methods of ConnectionThere are two ways to establish a connection between vr_refresh and the module.
Power on ConnectionWhen vr_refresh is run it will sit and wait for the initial announcement message sent by the module. The modules use a randomized transmission to attempt to minimize collisions when there are multiple devices on the bus. Since vr_refresh by default uses broadcasts, this means that if there are multiple devices connected and powered up at the same time it is a matter of chance as to which module will connect. It is therefore recommend that either the -sn or -i parameters be used or only as single module be connected at a time when updating firmware. Application Firmware Reboot ConnectionWhen vr_refresh is run it will send a REBOOT message immediately (-i parameter applies). If a module is connected, powered up, and accepts the REBOOT message from vr_refresh (either it is a broadcast message or the proper node id was passed in) the module will reboot and jump to the bootloader. It should then connect as desired. vr_refresh Outputvr_refresh will output status strings during operation. Examples are given below: Waiting to connect (command line: vr_refresh -c com7 -I 1); response:
Successful connection (command line: vr_refresh -c com7); response:
Successful connection VERBOSE mode (command line: vr_refresh -c com7 --verbose); response:
Sample end of firmware update (command line: vr_refresh -c com7 -verbose led_controller-1.0.0.hex); response:
|
Diagnostic / Test ModeDiagnostic mode is a simple ASCII terminal user interface that allows interaction with the motor controller electronics without requiring any additional topside software other than a serial terminal (such as Tera Term). The baud rate should be set to 115,200. Test cables are available from VideoRay and use an FTDI RS-485 to USB serial adapter. The driver for the adapter is a available from FTDI's website at: http://www.ftdichip.com/Drivers/D2XX.htm. To enter Diagnostic mode, input "+++++" (5 pluses) within 5 seconds after power up. If 5 seconds have elapsed, or any vrcsr packets have been received, diagnostic mode will be locked out until the next power cycle. Diagnostic mode includes Motor Activation Mode and Configuration Mode. These modes are described on the following pages. Since diagnostic mode is a simple ASCII terminal it is not appropriate for multiparty communications. |
Motor Activation ModeWhen the motor controller enters diagnostic mode it will go directly to motor actuation mode. In motor actuation mode the motor can be directly controlled by key presses in the terminal window. The diagnostic menu illustrates the keys which can be used actuate the motor. Diagnostics: Notes:
|
Configuration ModeThe diagnostic configuration menu allows for various operating parameters to be set. The parameters can also be saved in non-volatile storage. The diagnostic configuration menu displays the motor controller serial number as well as the firmware versions number and firmware inception date. In diagnostic configuration mode the "Enter" key must be hit after each command input.Primary Configuration Commands:
Entering a number followed by "Enter" will prompt for a new setting for the configuration parameter. If "Enter" is pressed before a new value has been entered the current value will remain. Motor Controller: THR0006
|
Programming |
CSR Memory MapIn normal operation the device implements a CSR type memory mapped data space. The VideoRay CSR comms protocol is used for communication. See https://github.com/videoray/VRCommsProtocol_doc/raw/master/VR_CSR_Communication_Protocol.doc for more information on the base binary protocol.
|
CSR Field DefinitionsTo be added. |
Commands and ResponsesThe motor controller firmware also supports custom commands that allow for the instantaneous setting of multiple controllers on a party line comms bus. PROPULSION_COMMAND: 0xaaThe propulsion command is an application custom command which is sent as a write request to CSR address 0xF0 (the custom command register. It has the following data payload format:
Where:
Typically this is sent as a group multicast to address 0x81 which is reserved for thrusters. RESPONSE_THRUSTER_STANDARD: 0x02The standard thruster response is typically used in conjunction with the multicast PROPULSION COMMAND to retrieve data from each thruster in the system in a round robin fashion. When the FLAG byte is set to 0x02 the RESPONSE_THRUSTER_STANDARD data payload is sent. The format of this payload is defined by the following structure: Response_Thruster_Standard { Please see the example thruster.py for an illustration of how to use the PROPULSION_COMMAND and parse the RESPONSE_THRUSTERS_STANDARD response packet. |
Example Thruster Control Code (Python)The following code can be used to control the thruster and display the response information. All M5 software, including this sample code, is distributed via the VideoRay FTP server (http://ftp.videoray.com/) using the following credentials:
import serial import struct import sys import operator import argparse import binascii import time #VRCSR protocol defines SYNC_REQUEST = 0x5FF5 SYNC_RESPONSE = 0x0FF0 PROTOCOL_VRCSR_HEADER_SIZE = 6 PROTOCOL_VRCSR_XSUM_SIZE = 4 #CSR Address for sending an application specific custom command ADDR_CUSTOM_COMMAND = 0xF0 #The command to send. #The Propulsion command has a payload format of: # 0xAA R_ID THRUST_0 THRUST_1 THRUST_2 ... THRUST_N # Where: # 0xAA is the command byte # R_ID is the NODE ID of the thruster to respond with data # THRUST_X is the thruster power value (-1 to 1) for the thruster with motor id X PROPULSION_COMMAND = 0xAA #flag for the standard thruster response which contains RESPONSE_THRUSTER_STANDARD = 0x2 #standard response is the device type followed by 4 32-bit floats and 1 byte RESPONSE_THRUSTER_STANDARD_LENGTH = 1 + 4 * 4 + 1 #The proppulsion command packets are typically sent as a multicast to a group ID #defined for thrusters THRUSTER_GROUP_ID = 0x81 def main(): #Parse command line arguments for portname, node id, motor id, and thrust values parser = argparse.ArgumentParser() parser.add_argument('-c', '--com', help='Comm port to use.', default = 'COM2', dest='portname') parser.add_argument('-i', '--id', help="Node id for the request packet. The default is the thruster group ID.", default = THRUSTER_GROUP_ID, dest='node_id') parser.add_argument('-m', '--motor', help="Motor NODE ID from which to get a response.", default = 0, dest='motor_id') parser.add_argument('thrust', metavar='N', type=float, nargs='*', help='list of thrust settings, in order of motor id. These are power settings and should be in the -1 to 1 range.' ) args = parser.parse_args() #default to 0 thrust for motor 0 if no thrust parameters are passed in if (len(args.thrust) == 0): thrust = [0.0] else: thrust = args.thrust #open the serial port try: port = serial.Serial(args.portname,115200) port.timeout = 1 port.flushInput(); except IOError: print ("Error: Could not open serial port: " + args.portname) sys.exit() #Create the custom command packet for setting the power level to a group of thrusters #generate the header flag = RESPONSE_THRUSTER_STANDARD CSR_address = ADDR_CUSTOM_COMMAND length = 2 + len(thrust) * 4 header = bytearray(struct.pack('HBBBB',SYNC_REQUEST,int(args.node_id), flag,CSR_address,length)) header_checksum = bytearray(struct.pack('i', binascii.crc32(header))) #generate the paylaod, limiting the thrust to reasonable values payload = bytearray(struct.pack('BB', PROPULSION_COMMAND, int(args.motor_id))) for t in thrust: t = max(t,-1) t = min(t, 1) payload += bytearray(struct.pack('f',t)) payload_checksum = bytearray(struct.pack('i', binascii.crc32(payload))) #send the packet and wait for a response packet = header + header_checksum + payload + payload_checksum #uncomment to dump the request payload #print (":".join("{:02x}".format(c) for c in packet)) write_time = time.time() #put the packet on the wire port.write(bytes(packet)) #get the response expected_response_length = PROTOCOL_VRCSR_HEADER_SIZE + PROTOCOL_VRCSR_XSUM_SIZE + RESPONSE_THRUSTER_STANDARD_LENGTH + PROTOCOL_VRCSR_XSUM_SIZE response_buf = port.read(expected_response_length) print ("Got response: %d bytes" % len(response_buf)) print ("Turnaround time: %f mS" % ((time.time()-write_time) * 1000)) #parse the response response = struct.unpack('=HBBBB I BffffB I', response_buf) #uncomment to dump the response buffer #print (":".join("{:02x}".format(ord(c)) for c in response_buf)) #header data sync = response[0] response_node_id = response[1] flag = response[2] CSR_address = response[3] length = response[4] header_checksum = response[5] #response device type device_type = response[6]; #custom response data payload rpm = response[7] bus_v = response[8] bus_i = response[9] temp = response[10] fault = response[11] payload_checksum = response[12] print ("\nResponse:") print ("\tSync:\t\t0x%04x" % sync) print ("\tId:\t\t%d" % response_node_id) print ("\tFlag:\t\t0x%x" % flag) print ("\tAddress:\t0x%x" % CSR_address) print ("\tLength:\t\t0x%x" % length) print ("\t\tChecksum: 0x%x" % header_checksum) print ("\n\tDevice Type:\t\t0x%x" % device_type) print ("\tRPM:\t\t\t%f" % rpm) print ("\tBus Voltage (V):\t%f" % bus_v) print ("\tBus Current (A):\t%f" % bus_i) print ("\tTemp (C):\t\t%f" % temp) print ("\tFault:\t\t\t0x%x" % fault) print ("\t\tChecksum: 0x%x" % payload_checksum) if __name__ == "__main__": main(); |
M5 Thruster Module
Operator's Manual, 1.01.00 |
Operations Guide |
M5 Thruster Module
Operator's Manual, 1.01.00 |
Maintenance Guide |
M5 Thruster Module
Operator's Manual, 1.01.00 |
Region Specific InformationThe following sections contain information that only applies in specific regional locations. See your region for information that may pertain to you. |
European Union (EU)The following sections are specific to the European Union. |
The Waste Electrical and Electronic Equipment Regulations (WEEE) 2013In accordance with the requirements of the Waste Electrical and Electronic Equipment Regulations 2013, all non fixed electrical and electronic equipment must be disposed of correctly at the end of its useful life through an authorised waste company, and there is an associated requirement to obtain the correct paperwork as per Duty of Care legislation. Please ensure that you treat this equipment as WEEE when you come to dispose of it. |