WAM Properties List

Common Properties

These properties are common to both the motor encoders and the Safety Module.

Property:Definition:Values (Units):Read/Write:Default:Saved:Notes:
ADDRAddress to peek/pokeR/W0No
ANA0, ANA1Analog input values from the on-board DAC0 – 4095 R/-None No0-3.0 V only
BAUDRS-232 serial baud rateBits/sec R/W9600 No
CMDExecute a special command over CANbus, instead of the typical Get/Set command. -/WNone NoSet CMD to the enumerated value of the desired command. Can only be used with commands that don’t take values: RESET, HOME, KEEP, PASS, LOOP, HI, IC, IO, TC, TO, C, O, T
DEFDefault command for CAN -/WNone NoResets all parameters to their defaults (use SAVE to store them permanently in EEPROM)
DIG0Digital I/O, PWM-capable-1 to 100 R/W0 No0-3.3 V only (no optical isolation, reverse voltage, or overvoltage protection, be careful). -1 = Input, 0 = Output low, 1 = Output high, 2-100 = PWM duty cycle of n%, Pin 41 (Pin 44 = GND)
DIG1Digital I/O-1, 0, 1 R/W0 No0-3.3 V only (no optical isolation, reverse voltage, or overvoltage protection, be careful). -1 = Input, 0 = Output low, 1 = Output high, Pin 43 (Pin 44 = GND)
ERRORReports the last error encountered by the Puck R/-None NoNot yet implemented
FET0Tensioner output (0 = Off, 1 = On)0, 1 R/W0 NoPin 33 floats when FET0 = 0, it is grounded when FET0 = 1 (Pin 34 = 5V, current source)
FET1Brake output (0 = Off, 1 = On)0, 1 R/W0 NoPin 31 floats when FET1 = 0, it is grounded when FET1 = 1 (Pin 32 = 5V, current source)
FINDFind command for CAN -/WNone NoUsed for calibration. Set FIND to the value you want to calibrate: setProperty(0, FIND, FALSE, MOFST);
GRPA, GRPB, GRPCThe communication groups to which the puck belongs0 to 31 R/WNone YesA Puck can be addressed by ID, or as part of a group
IDCANbus ID0 to 31 R/WNone YesEach Puck on a CANbus must have a unique ID
ILOGIC R/-None No
IMOTOR R/-None No
LOADLoad a property from non-volatile memory into active puck memory via the CAN bus -/WNone NoExample of use: setProperty(0,4,LOAD,FALSE,MT)
LOCKA combination lock to allow write access to locked properties -/WNone NoThese properties are locked: ROLE, SN, PTEMP, UPSECS, OD
MODEThe control method for the motor controller0, 2, 3, 4, 5 R/W0 No0 = Idle, 2 = Torque, 3 = PID, 4 = Velocity, 5 = Trapezoidal
OTEMPOver temperature limit R/W82 NoMT is reduced gradually 16C before OTEMP. When TEMP >= OTEMP, MT will be zero.
PTEMPPeak temperature recorded R/WNone Yes
ROLEA value used by the firmware to determine the function of the device R/WNone YesBitfield: F=Feedback, R=Role: XXXX FFFF XXXX RRRR ROLE: 0 = Tater, 1 = Gimbals, 2 = Safety, 3 = Wraptor, 4 = Trigger FEEDBACK: 0 = Optical encoder, 1 = Magnetic encoder
SAVEAfter setting a non-volatile property, save it to non-volatile Puck™ memory -/WNone No setProperty(0, 4, SAVE, FALSE, MT);
SGAnalog reading of the strain gage peripheral0-4095 R/-None NoThe 12-bit value 0-4095 corresponds to an analog reading of 0-3.0V
SNThe unique manufacturing serial number for this Puck R/W Yes
STAT0 = Reset/Monitor, 2 = Ready/Main0, 2 R/W NoThe Puck firmware is divided into two parts: Monitor and Main. The Puck initially boots into Monitor where there is a very limited command/property set. From here, you can download new Main firmware, or SET STAT 2 to execute the Main firmware. Setting STAT=0 forces a firmware reset, which will leave the motors free-spinning (no torque, no braking).
TEMPPuck™ temperature R/- NoThe Puck temperature should not exceed 70 ˚C for extended periods.
THERMThermistor (motor) temperature R/- NoThe motor temperature should not exceed 125 ˚C for extended periods.
VALUEValue to poke/peek R/W NoUse with ADDR to read/write data from the Puck memory. Read the TMS320F2812 DSP’s GPBDAT register; setProperty(0, 4, ADDR, FALSE, 28900); getProperty(0, 4, VALUE, &longVal);
VBUSThe bus voltage on a Puck™ R/- NoThe standard Puck is designed for operation between 18V and 90V. However, contact Barrett Technology if operating the bus at a voltage other than 48 V.
VERSFirmware version (or the monitor version, if the Puck™ is in reset) R/W No
VLOGIC R/- NoNot yet implemented
X0, X1, X2 R/W YesN/A
X3, X4, X5 R/W Yes
X6, X7 R/W Yes

Motor Properties

These properties are used only by the motor controllers (not the safety module).

ACCEL R/W2048 Yes
CT32-Bit Close Target R/W30000 Yes
CTS32-Bit Counts per revolution R/W4096 YesCTS
DP32-Bit Default Position R/W0 Yes
DS R/W25000 Yes
E32-Bit Endpoint R/W0 No
ECMAXEncoder Correction Maximum Value R/W0 No
ECMINEncoder Correction Minimum Value R/W0 No
EN R/W No
HALLH32-Bit Hall History Bitfield R/W0 No
HALLSHall feedback bitfield: CBA R/W No
HOLDFlag to hold position after move R/W0 Yes
HSG R/W255 Yes
IKCORCurrent sense correction factor R/W1638 Yes
IKICurrent sense integral gain R/W3276 Yes
IKPCurrent sense proportional gain R/W8192 Yes
IOFF32-Bit Intialization Offset R/W Yes
IOFSTCurrent Offset Calibration R/W Yes
IPNMThe puck torque unit to Nm (Command Current / Nm) conversion is stored here R/W2755 YesIPNM is set at the factory. IPNM is never actually used in the pucks themselves. It is simply a non-volatile place to store the conversion constant so that the controlling PC can read it upon startup and use it to convert between puck units and SI units of torque for the end user.
IVEL R/W20 Yes
JIDX R/W Yes
KD R/W8000 Yes
KI R/W0 Yes
KP R/W2000 Yes
LCTC R/W1 No
LCVC R/W1 No
LFLAGS R/W0 No
LSG R/W0 Yes
M32-Bit Mechanical Angle in ENCODER counts? -/W No
MCV In counts/ms R/W1500 Yes
MDSMax Duty Sum for Power Limiting R/W1650 Yes
MECHMechanical encoder angle R/- NoFor magnetic encoders, MECH is the raw encoder feedback, absolute within one rotation of the motor. For optical encoders, MECH is the number of encoder counts between the present location and the index pulse. (See Appendix C for details about MECH with optical encoders).
MOFSTMechanical Offset Calibration R/W YesCalibrated at lab. MOFST is the encoder reading at the start of an electrical cycle. (See Appendix C for details about MOFST with Optical Encoders).
MOVCounts/ms R/W1500 Yes
MPE R/W5 Yes
MTThe maximum torque a Puck™ will apply, even if commanded to apply more (in milliamps). R/W4700 YesOpenWAM() calls InitializeSystem() (see the Doxygen documentation) which sets MT to 4731 for each puck. A value of 1024 corresponds to 1.00A of current in the motor windings. Let's say MT = 750, TL1 = 2500, TL2 = 4000. You send a T of 2800. The safety system is okay with this, it just shows the warning light on the pendant. The puck notices that abs(2800) exceeds 750, so it sets its own torque output to 750 * sign(2800).
MVMaximum Velocity in counts/millisecond R/W1500 Yes
OD R/W Yes
OT32-Bit Open Target R/W0 Yes
PMotor position in encoder counts. R/W YesYou can set P in a puck only when the puck's MODE = 0 (MODE = MODE_IDLE). Just be careful to set IFAULT (see Safety-Module properties section below) in the safety module before you do this, else you will likely get a velocity fault
PIDXPuck™ Index for Torque R/W Yes
POLESNumber of magnets on rotor R/W12, 8, or 6, depending on motor type Yes
TSet the Puck™ torque (in milliamps) R/W0 NoThe pucks will apply the last received torque until a new torque is sent, or the MODE changes to MODE_IDLE.
TENSO R/W Yes
TENST R/W Yes
TIEFlag to tie inner and outer links R/W0 Yes
TSTOPTime until considered stopped R/W1000 Yes
UPSECSThe total power-up time for this WAM R/W Yes
VVelocity in counts/milliseconds R/W0 No

Safety-Module Properties

The Safety Module is an additional Puck located in the base of the WAM (not attached to a motor). The Safety Module has a puck ID of 10, and is identified in the software as SAFETY_MODULE. Its job is to listen to the CANbus traffic and shut the WAM down in the event of an over-torque, over-velocity, voltage problem, or heartbeat error (missing communication from any puck or the PC). It also controls the pendant lights and switches. The properties below are only applicable to the Safety Module. All safety module properties apply to the whole arm on a global basis. For example, if the torque of ANY motor exceeds TL2, the safety system will force the arm into IDLE mode (all phase leads tied together).

Property:Definition:Values (Units):Read/Write:Default:Saved:Notes:
IFAULTIf IFAULT is greater than 0 and a fault is observed by the safety system, IFAULT is decremented by one, and the fault is ignored.0 to 20 (typical)0To set the initial positions of the pucks, you must also set IFAULT (Ignore Fault) at that time to prevent the giant instantaneous position change from causing an over-velocity fault in the safety module. See the DefineWAMpos() function in the Doxygen documentation for an example.
MAXPWR
PEN
PWR
SAFE
TL1, TL2The safety system’s motor torque warning, fault levels (Puck™ torque units) TL1 is the minimum torque that will cause a warning; TL2 is the minimum torque that will cause a fault.
VL1, VL2VL1 is the minimum velocity that will cause a warning; VL2 is the minimum velocity that will cause a fault.(rad/s or m/s) 0.5, 1.0 (respectively) Before calling DefineWAMpos() (otherwise known as zeroing the WAM), VL1 and VL2 limit the angular velocity (rad/s) of every joint, and the 7-segment LED display on the pendants will show which joint exceeded the velocity limit if a velocity warning or fault occurs. After DefineWAMpos() is called, the WAM switches to limiting the Cartesian velocity (m/s) of the elbow and 4-DOF endpoint, instead of each joint’s velocity. In the event of a fault after DefineWAMpos() is called, the 7-segment LED display on the pendants will show “E” or “A” to indicate whether the Elbow or the Arm endpoint exceeded the velocity limit. The value of these limits can be changed at any time, but both limits are always applicable to the entire robot – the limits cannot be applied only to particular joints or points on the WAM.

If you want to set these properties directly (using setProperty()), please note that they are in Q4.12 notation, so take whatever you want the value to be and multiply it by 4096 before you set it. Q4.12 means "4 bits of integer, 12 bits of fraction". 0x1000 = 1.0, 0x1800 = 1.5, 0x7800 = 7.5. If you go much higher, you'll go negative (do not do this). See the source code for SetSafetyLimits() in src/btwam/btwam.c for an example.

VNOM
VOLTH1, VOLTH2The safety system’s high voltage warning, fault limitVolts 54, 57 If the bus voltage exceeds VOLTH1, the safety system will begin bleeding off bus voltage through a resistor, and the pendants will display a voltage warning with the letter ‘H’. If the bus voltage exceeds VOLTH2, the safety system will disconnect the bus and clamp it, and the pendants will display a voltage fault with the letter ‘H’.
VOLTL1, VOLTL2The safety system’s low voltage warning, fault limit.Volts 36, 30 If the bus voltage falls below VOLTL1, the pendants will display a voltage warning with the letter ‘L’. If the bus voltage falls below VOLTL2, the safety system will disconnect the bus and clamp it, and the pendants will display a voltage fault with the letter ‘L’.
ZEROAfter sending the pucks their known initial position, set the safety system's ZERO property to 1 so it can start calculating Cartesian velocities. Use the DefineWAMpos() function in src/btwam/btwam.c to set the initial positions of the other motor controllers. This is called automatically during the normal OpenWAM() call.

Key to Property Table

KeyParam.45MV91IKP
0VERS46MCV92IKI
1ROLE47MOV93IKCOR
2SN48P94HOLD
3ID49P295TIE
4ERROR50DP96ECMAX
5STAT51DP297ECMIN
6ADDR52E98LFLAGS
7VALUE53E299LCTC
8MODE54OT100LCVC
9TEMP55OT2
10PTEMP56CT
11OTEMP57CT2
12BAUD58M
13LOCK59M2
14DIG060DS
15DIG161MOFST
16FET062IOFST
17FET163UPSECS
18ANA064OD
19ANA165MDS
20THERM66MECH
21VBUS67MECH2
22IMOTOR68CTS
23VLOGIC69CTS2
24ILOGIC70PIDX
25SG71HSG
26GRPA72LSG
27GRPB73IVEL
28GRPC74IOFF
29CMD75IOFF2
30SAVE76MPE
31LOAD77EN
32DEF78TSTOP
33FIND79KP
34X080KD
35X181KI
36X282ACCEL
37X383TENST
38X484TENSO
39X585JIDX
40X686IPNM
41X787HALLS
42T88HALLH
43MT89HALLH2
44V90POLES
Last modified 6 years ago Last modified on May 13, 2011, 2:12:11 PM