M5 Thruster Module
Operator's Manual, 1.01.00 |
Most Popular Topics |
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 |
Language Support
|
Table of Contents |
About this DocumentDocument NavigationYou can navigate through the documentation to specific topics using the menu, or step through sequentially using the Next and Previous arrowhead buttons. The Next button will step you from the current topic to the next topic at the same level unless the current topic has a sub-topic. If the current topic has a sub-topic, the Next button will step you into the first sub-topic. The Previous button works similarly, but in reverse sequence. Your current location within the document is shown as a "breadcrumb" trail at the top of each page under the document title. You can click on any level of the breadcrumb hierarchy to go that location. You can also use the following keyboard shortcuts:
Links are shown in brown font. Finding InformationThis document includes a Table of Contents, Glossary / Index and Google search on each page. You must be connected to the Internet in order to be able to use the Google search, and you can select whether to search VideoRay's online document library only (the default) or the Internet. 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.
Document Customization - My_NotesThis document has been developed to allow local online versions to be customized using the My_Notes feature. Users can add their own notes to each page. See the Customizing this Document page for more information about how to customize this document. 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. Alternate FormatsSingle HTML Page Format Portable / Printable Format HTML File Set |
Customize this Documentation - My_NotesMy_Notes are easy to incorporate directly into the pages of this manual. They can be used to clarify content, add additional information, or document your custom settings, operational tactics or procedures. My_Notes are page specific and display at the bottom of the desired page under the "My_Notes" heading. No programming is required - it is as simple as saving a file with your notes. Creating My_NotesMy_Notes can be written in HTML or plain text. HTML allows for more flexible formatting and inclusion of images or links to other web pages. To add a My_Note, create an HTML or text file containing the note and save it in the VideoRay\My_Notes\ folder, which can be found in the computer account user's documents folder (Documents\ for Windows 7, or My Documents\ for Windows XP). The file should be named the same as the page in which you want the note to appear, with a "my_" prefix (without the quotes). For example, if you want a My_Note to appear at the bottom of this page, the name of the file to create is: my_custom_my_notes.html. The name of the page being viewed can be found in the address bar of the browser being used to display this documentation. Even if you are using a text file, the file name must end with the ".html" extension. All My_Notes files are processed as HTML, so if you are using a plain text file, you will need to add "<pre>" (without the quotes) at the beginning of the file and "</pre>" (without the quotes) at the end of the file if you want to preserve the layout. The "<pre>" and "</pre>" will not show up in the display. When using HTML, the My_Notes folder serves as the root for relative links. An images folder is included for you to store images. You may add other folders or files as desired. Viewing My_NotesWhen you reload the page, your My_Note will appear - there is nothing else to install or configure. A sample My_Note file has been included to display the My_Note below. You can use this file as a model for creating your own My_Notes. Updating My_NotesTo update a My_Note, simply edit and re-save the My_Note file. Removing My_NotesMy_Notes can be removed by deleting or renaming the My_Note file. Sizing My_Notes Display (Optional)The default vertical size for My_Notes is set to 200 pixels, which is used for the sample My_Note below. Due to browser limitations, My-Notes do not size dynamically. This means that a long My_Note may display a scroll bar in order to view the whole My-Note. You can adjust the size to eliminate the need for the scroll bar. To set the size of a My_Note, you need to edit the file named "my_notes_size_table.js" in the My_Notes\ folder (location defined above). The file contains one line for each page of this document using the following format: window.page_name = size_in_pixels; Find the line for the page that includes the My_Note you want to resize and replace the value of size_in_pixels with the desired size in pixels. The page names are listed alphabetically. Example line from the "my_notes_size_table.js" file for this page: window.custom_my_notes = 200; Note that ".html" in not included in the page name, and the line must end with a ";" Also, the optimum size required is dependent upon the size and aspect ratio of the browser window. |
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 Glossary / IndexAfter each entry, there is a list of pages where the entry can be found in this manual. |
FAQ (Frequently Asked Questions)
More Questions?Additional questions and answers are available online at www.rovfaq.com, which is also linked at the bottom of each page. The online FAQ is updated regularly. |
M5 Thruster Module
Operator's Manual, 1.01.00 |
RequirementsThe M5 thruster has the following general requirements:
|
SpecificationsPhysical
Electrical
Software
Performance
M5 Thruster Module features and specifications are subject to change without notice. Product NewsSee www.videoray.com for the most up-to-date product information. |
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 |
Reference Documents |
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. |