Servosila Device Reference Device Type: Servo Controller (0xA020192) Revision D (Sept 2022) 1 www.servosila.
Table of Contents Servosila Device Reference.................................................................................................................................................1 Configuration Parameters................................................................................................................................................4 Configuration - Datasheet..............................................................................................................................
Command - Brake....................................................................................................................................................57 Command - Stop.......................................................................................................................................................58 Command - Off.........................................................................................................................................................
Configuration Parameters Configuration - Datasheet The "Datasheet" section contains parameters that characterize the key components of an electric drive: a motor, encoder(s), and a gearbox. The information is either found in datasheets supplied by manufacturers of those components, or measured using the controller's capabilities. The "Datasheet" section is an input into computation of various parameters of control laws that determine performance of the electric drive.
by the manufacturer. This would establish a safety margin at the expense of torque. If the design goal is to push the motor to its limit in terms of torque and dynamics, it is still wise to start the commissioning procedure at a lower limit, and gradually raise the limit while observing how the motor handles the heat, particularly in stalled situations such as braking or direct drive modes.
experimentally determines the Poles Number. Phase Ohm The phase-to-phase electrical resistance parameter should be taken from the Resistance motor's datasheet, or it can be measured using the controller itself. Even if the (Line-to-Line) parameter is provided in the motor's datasheet, it is still recommended to measure it and re-confirm the value. FLOAT32, 0x2000, 0x04, rw 4 Electrical resistance generally increases as the temperature of the motor increases.
with a tool that helps with that. To summarize, as the Back-Emf Constant (Ke) is something that can be easily misunderstood or misconfigured, it is better to rely on the controller's own capabilities to properly measure and auto-configure the parameter. Payload: Viscous Damping Constant Nm/ Viscous damping refers to forces of friction that are proportional to the motor's FLOAT32, Hz speed of rotation. An example of viscous damping would be water giving 0x2000, mechanical resistance to a pump's motor.
Inertia (Rotor and Payload) Control (ESC) mode. If the moment of inertia is not measured correctly, the electric drive might experience vibrations or noise whenever operated in a speedcontrolled mode. It is not required to be very precise in determining the moment of inertia. It is enough to be "about right" since the control laws have significant stability margins. 0x08, rw The controller can measure the Moment of Inertia directly.
stalled. This is not the case with "sensorless" motors. If a motor does not have Hall sensors or an encoder (or the sensors are not yet wired to the controller), the controller operates the motor in a so-called "sensorless" mode. An issue with "sensorless" mode is that it only works whenever the motor reaches a certain speed. Getting a motor to that speed requires the controller to employ a special technique called "Kickstart" (configured and enabled separately).
into the same electric drive. For configuration purposes, the encoders are identified as a "Motor Encoder" and a "Servo Encoder". The encoders play different roles as explained below: • A "Motor Encoder" is an encoder rigidly connected to the motor's rotor or built into the motor itself. The place of mechanical installation must be chosen in such a way that no gearbox or a belt could introduce a backlash in the linkage between the rotor and the encoder.
introduce complexity into the controller's configuration. Note that even if a motor is equipped with an encoder, it is possible to run it as a plain sensorless brushless motor. CAUTION: If you enable a "motor encoder" here, make sure the configuration parameter "encoder bias vs. electrical position" of the corresponding encoder peripheral is properly set. The parameter defines an angular offset of the rotor vs. motor encoder readings.
a fractional number. Use this number as the reduction ratio here. If an electric drive does not have a "Servo Encoder", a gearbox or a belt, just set this parameter to 1.0. Configuration - Control Laws The "Control Laws" section defines settings for various control laws implemented in the firmware of the controller. The "Control Laws" section defines how the drive responds to commands given by a parent control system.
commanded speed. NOTE: An initial value for this parameter is automatically computed by the "Spreadsheet" tool or by an auto-configuration procedure of the controller. The initial value may turn out to be just right, or may require manual tuning during a drive commissioning process. Field Oriented Control (FOC): Kp 2 V/A The term "Field Oriented Control (FOC)" refers to an efficient method of FLOAT32, controlling brushless motors.
• The controller automatically measures the "Moment of Inertia" during an auto-configuration procedure, and uses the measurement to compute a correct value for ESC Kp parameter. Note that measuring the moment of inertia requires that "Viscous Damping Constant" is measured first. Since ESC Kp parameter depends on a combined "Moment of Inertia of Rotor and Payload", it is important that the moment is properly measured, estimated, or even guessed.
Servo: Kp Hz/ The "Servo: Kp" parameter defines a proportional relationship between a FLOAT32, rad speed of servo motion and a distance to a target position the servo is 0x2002, commanded to move to. The closer the servo approaches the target 0x32, position, the slower it moves. This proportional relationship is governed by rw the "Servo: Kp" parameter. The speed becomes 0.0 whenever the target position is reached, and the motor stops. Example: lets assume that "Servo: Kp" is configured as 20 Hz/rad.
Micro-Speeding: Speed Limit (Electrical Frequency) controller switches between Field Oriented Control (FOC) and Direct Drive Control algorithms. If a commanded speed is less than the limit, the controller uses Direct Drive algorithm. Otherwise, it uses Field Oriented Control (FOC) method. 0x2002, 0x72, rw The reason this parameter exists is that Field Oriented Control (FOC) algorithm does not work well at low speeds.
initiating a motion of the rotor in a way that does not require any knowledge of the rotor's position. Once the rotor starts moving under Kickstart Control, then the physics behind the "Sensorless Observer" kicks in, and the controller switches into the efficient Field Oriented Control (FOC) method to proceed with acceleration of the rotor. It typically takes a fraction of a second for the Kickstart Control to do its thing, and hand over the control to Field Oriented Control (FOC) function.
generator). A physical phenomena behind this effect is called "Back-Emf". The phenomena is a foundation for the "sensorless" sensing of the rotor's position. The controller continuously measures the Back-Emf voltages using its electronic circuits, and applies some math to the measurements to derive a position of the rotor. The math is what is actually called the "Sensorless Observer" method. The method works well at medium and high speeds.
precise, but at the same time not as energy efficient. Note that more heat is generated by a motor under Direct Drive Control, than the same motor under Field Oriented Control (FOC). This is not a problem in many applications where energy efficiency can be traded for high precision and mechanical simplicity of Direct Drive Control.
not immediately obvious why it is so, but just know that it is so due to some laws of physics: input voltage limits maximum reachable speed. The permanent magnets of the rotor come with a magnetic field attached to them, the one that interacts with coils and produces the Back-Emf voltage (as well as torque).
As that might not be the case during initial phases of controller configuration, the feature is disabled by default, so that it does not cause random oscillations or a noise early on. The feature needs to be enabled at later phases to improve performance of the electrical drive once an initial pass of configuring its controller has been completed, and the drive is already operational.
Backlash Threshold shaft from a braking position. The "Brake: Backlash Threshold" parameter, expressed in electrical radians, specifies how far the shaft of the motor is allowed move under the influence of external forces before the controller applies a maximum countering electromagnetic force to bring the shaft back to its original braking position.
mechanism does not hit itself or anything else. The "Work Zone" is applicable to both ROTARY and LINEAR servo drives. The work zone is a "multi-turn" one when a ROTARY encoder is used. In other words, the work zone is not limited to just 360 degrees of the rotary encoder's resolution. Instead, it logically spans in both positive or negative directions as many encoder counts as needed.
7A*4=28A. Configuration - Peripheral: GPIO # Parameter Emergency Stop Units Description CANopen GPIO This parameter specifies which GPIO pin is to be used as an Emergency Stop UINT16, input. 0x3020, 0x10, rw Refer to datasheet for a list of avaiable input GPIO pins. If this parameter is set to 0, this means Emergency Stop function is disabled. Limit Switch (Negative Speed) GPIO This parameter specifies which GPIO pin is connected to a limit switch acting in NEGATIVE speed direction.
1 2 3 physical sensor for logical sensor 0 physical sensor for logical sensor 1 physical sensor for logical sensor 2 Hall signals inverted 4 0/1/2 If phase "A" is positively energized, and phases "B" and "C" are negatively UINT16, energized, this logical sensor reads as "1", while others read as "0". 0x3004, 0x06, rw 0/1/2 If phase "B" is positively energized, and phases "A" and "C" are negatively UINT16, energized, this logical sensor reads as "1", while others read as "0".
# Parameter counts per revolution Units Description CANopen counts The parameter defines a maximum resolution of the quadrature encoder. The UINT32, resolution is defined in quadrature edge counts per revolution. This parameter is 0x3011, 1 to be taken from the encoder's datasheet. 0x02, rw encoder bias vs. counts This parameter needs to be set only if the encoder is used for motor control (a UINT32, electrical "Motor Encoder"). Otherwise, keep this parameter as 0.
speed. UNIT DISTANCE: Divider CCPS 0-7 This parameter is used in "UNIT DISTANCE" method of computing speed. When computing speed using the UNIT DISTANCE method, the controller has to precisely measure time as explained above. The way the controller's silicon peripheral measures the time is by counting ticks of the CPU clock using a 16bits counter. The ticks arrive at the frequency of CPU which is 90 MHz (double-check this for your controller).
Configuration - Peripheral: SSI/BISS-C Encoder This section needs to be configured only if either "Motor Encoder" or "Servo Encoder" parameter in the "Datasheet" section is set to "SSI/BISS-C Encoder". Otherwise leave this section unchanged. The controller reads out data from an SSI/BISS-C encoder by sending a train of pulses via CLOCK line. The encoder sends a single bit of data back to the controller via DATA line each time it receives a pulse from the controller.
divider controller to the encoder via CLOCK line. Note that the encoder sends a single bit of data back to the controller via DATA line each time it receives a pulse from the controller. By sending a train of pulses, the controller reads out all the data bits (a packet) from the encoder. 0x10, rw The parameter specifies a divider for the controller's sampling frequency.
CLOCK line. The parameter is rarely changed. Leave the default setting unless an application-specific need arises. clock phase 7 total number of bits in packet 0 or 1 The parameter tells the controller to delay the moment when the DATA line is sampled vs. output pulse on the CLOCK line. The parameter is rarely changed. Leave the default setting unless an application-specific need arises.
taken from the encoder's datasheet. 15 CRC field: is inverted CRC input: start bit 0 or 1 This parameter defines a format of the data packet. The parameter needs to be taken from the encoder's datasheet. - 16 The CRC is computed over a particular portion of the packet as specified in the encoder's datasheet. For the purpose of this configuration procedure, the portion is called "CRC input". The CRC input may span multiple data fields across the packet.
taken from the encoder's datasheet. 0x2F, rw Configuration - Peripheral: SPI Encoder This section needs to be configured only if either "Motor Encoder" or "Servo Encoder" parameter in the "Datasheet" section is set to "SPI Encoder". Otherwise leave this section unchanged. The controller reads out data from the encoder by sending a train of pulses via SCK line. This line is sometimes called SCLK or CLOCK.
this parameter helps correct the mismatch. request frequency: divider - The parameter defines how often the controller reads out data from the encoder. Specifically, this parameters specifies how often pulse trains are sent by the controller to the encoder via SCK line. This line is sometimes called SCLK or CLOCK. Note that the encoder sends a single bit of data back to the controller via MISO line each time it receives a pulse from the controller.
• The higher the frequency, the better (lower latency). clock polarity 0 or 1 The parameter tells the controller to electrically invert output signals on the SCK UINT16, line. This line is sometimes called SCLK or CLOCK. 0x3014, 0x12, 6 rw Leave the default setting unless an application-specific need arises. clock phase 0 or 1 The parameter tells the controller to delay the moment when the MISO line is sampled vs. output pulse on the SCK line.
length 15 CRC field: is inverted CRC input: start bit taken from the encoder's datasheet. 0 or 1 This parameter defines a format of the data packet. The parameter needs to be taken from the encoder's datasheet. - 16 The CRC is computed over a particular portion of the packet as specified in the encoder's datasheet. For the purpose of this configuration procedure, the portion is called "CRC input". The CRC input may span multiple data fields across the packet.
inverted taken from the encoder's datasheet. 0x3014, 0x2F, rw Configuration - Peripheral: PWM Encoder This section needs to be configured only if either "Motor Encoder" or "Servo Encoder" parameter in the "Datasheet" section is set to "PWM Encoder". Otherwise leave this section unchanged. Absolute encoders with PWM output deliver position information to the controller by increasing or decreasing duty cycle of continuously sent PWM pulses.
encoder's datasheet. 6 min pulse width (angle=0 deg) sec or clocks pulse exit width sec or clocks polarity inversion 0 or 1 7 8 0x11, rw This parameter specifies the duty cycle that corresponds to ZERO position FLOAT32, reported by the encoder. This parameter should be taken from the encoder's 0x3012, datasheet. 0x12, rw This parameter is specific to AMS encoders. The value should be taken from FLOAT32, the encoder's datasheet. Otherwise, keep as 0.0.
An initial Node ID is automatically generated. The value can be changed here to ensure uniqueness of the Node ID within a CANopen network. CANopen: heartbeat timeout sec If the controller does not receive any messages via either CANbus or USB interfaces within this time period, the device assumes that there is a problem with a parent control system. Upon detecting a heartbeat timeout event, the controller executes the following actions: 3 FLOAT32, 0x3000, 0x04, rw 1.
Telemetry Parameters Telemetry - System Status # Parameter Fault Bits Units bits 1 Description • • • • • • • • • • • • • CANopen UINT16, 0x4000, 0x03, ro 0: No fault 1: Driver Chip Fault 2: Driver Chip Overheating 4: Overheating Protection 8: Overcurrent Protection 16: Thermistor Overheating 32: Hall Sensors Fault 64: Quadrature Encoder Fault 128: SSI Encoder Fault 256: SPI Encoder Fault 512: PWM Encoder Fault 16384: Emergency Stop 32768: Activation Key is Missing Whenever a fault is detected, the co
• 17: Testing - Servo Wave • 18: BLDC Commutation • 19: Brushed Motor or Solenoid Control (1-2 motors) This parameter tells what control law the controller is currently using to drive the motor. Commutation method 3 - • • • • 1: None (Kickstart) 2: Sensorless 3: Hall Sensors 4: Encoder UINT16, 0x4000, 0x15, ro This parameter tells which method the controller is currently using to determine electrical position of the rotor.
encoder's resolution and then multiplying it by (2*PI) rad. For example, if a servo encoder has a resolution of 65536 counts, and the encoder's output is 1000 counts, then the normalized position is 1000 / 65536 * (2*PI) = 0.095873799 rad. 10 Servo Encoder counts This is an ABSOLUTE POSITION read out from an encoder that plays the Counts "Servo Encoder" role.
FOC: Uq integral V This is an integral sum of a PI controller that commands Uq voltage to stabilize Iq current. FOC: Ud voltage V This is a Ud voltage, an output of a FOC control law. FOC: Ud integral V This is an integral sum of a PI controller that commands Ud voltage to stabilize Id current. 6 7 8 9 10 Moment of Inertia (Rotor and Payload) kg*m This is an estimated (measured) "Moment of Inertia of Rotor and 2 Payload".
Sensorless Observer: Speed (Electrical Frequency) Hz 2 This telemetry parameter tells an estimated speed of the "sensorless" motor. FLOAT32, 0x4007, 0x03, ro The speed is defined in electrical revolutions per second (Hz). To convert electrical revolutions per second (Hz) to motor shaft's revolutions per second, just divide it by the number of pole pairs.
electrical revolutions per second (Hz) to motor shaft's revolutions per second, just divide it by the number of pole pairs. ro For example, assuming the speed is 20 Hz (electrical), and Poles Number is 8, then the corresponding speed in motor shaft's revolutions per second is 20 / (8/2) = 5.0 Hz (revolutions per second), which is 5 * 60 = 300 RPM. Hall Observer: Electrical Position FLOAT32, 0x4002, 4 0x05, ro Hall Observer: samples This is a counter that is reset each time a Hall code changes.
0x05, ro Current: Phase B (Ib) A Measured electric current flowing through phase B FLOAT32, 0x5001, 3 0x06, ro Current: Phase C (Ic) A Measured electric current flowing through phase C FLOAT32, 0x5001, 4 0x07, ro CPU Temperature C Measured temperature of the controller's CPU UINT16, 0x5001, 5 0x0C, ro Ia calibration offset A Result of an ADC calibration procedure FLOAT32, 0x5001, 6 0x09, ro Ib calibration offset A Result of an ADC calibration procedure FLOAT32, 0x5001, 7 0x0A, ro ADC mode 0 or 1 • 0: Calibr
Telemetry - Peripheral: Quadrature Encoder # Parameter Quadrature: count CANopen UINT32, 0x500A, 1 0x06, ro Quadrature: 0 or 1 The direction of the rotation of the encoder's disk BOOL, direction 0x500A, 2 0x05, ro Quadrature: encoder Hz The speed of quadrature disk rotation expressed in revolutions per second FLOAT32, speed (Hz). This speed is estimated using "UNIT TIME" or "UNIT DISTANCE" 0x500A, method (see "Peripheral: Quadrature Encoder" configuration section for 0x08, 3 details).
errors counter 0x500A, 0x0B, ro Telemetry - Peripheral: SSI/BISS-C Encoder # 1 Parameter SSI/BISS-C Encoder: packets counter SSI/BISS-C Encoder: count 2 3 SSI/BISS-C Encoder: is count valid SSI/BISS-C Encoder: error bit 4 SSI/BISS-C Encoder: warn bit 5 6 7 8 9 SSI/BISS-C Encoder: extracted CRC SSI/BISS-C Encoder: computed CRC SSI/BISS-C Encoder: CRC mismatch error SSI/BISS-C Encoder: CRC mismatch counter Units Description - This is a counter of data packets received by the controller from th
counter SPI Encoder: count encoder. counts This is the latest ABSOLUTE POSITION reported by the encoder. 2 3 SPI Encoder: is count valid 0 or 1 This bit tells if the latest absolute position is valid, meaning there is no ERROR bit and no CRC error. SPI Encoder: error bit 0 or 1 This is a value of latest ERROR bit reported by the encoder. SPI Encoder: warn bit 0 or 1 This is a value of latest WARN bit reported by the encoder.
PWM Encoder: count counts This is the latest ABSOLUTE POSITION reported by the encoder.
Limit Switch (Positive Speed) 0 or 1 Status of Limit Switch in POSITIVE speed direction. 3 Generic Input 0 or 1 Latest value read out from a dedicated GPIO input.
Telemetry - Networking # 1 Parameter CANbus: received packets CANbus: sent packets 2 USB: status 3 USB: received packets 4 USB: sent packets 5 USB: sending errors 6 7 8 USB2CAN: can->usb packets USB2CAN: usb->can packets Units Description - This counter is incremented each time the device receives a CANbus packet. CANopen UINT32, 0x5010, 0x02, ro - This counter is incremented each time the device sends a CANbus UINT32, packet.
3 Firmware Serial Number Sampling Frequency - Hz The serial number is used when ACTIVATING the device. Please send this number to SERVOSILA to obtain an activation key. This is the sampling frequency of the controller. 4 5 6 7 8 Inverter PWM Period CPU This is a period of the inverter's PWM signals of the controller.
Commands Command - Electronic Speed Control (ESC), Hz The "Electronic Speed Control (ESC), Hz" command instructs the controller to drive a brushless/brushed motor at a constant speed. The controller automatically increases or decreases torque to maintain the constant speed. Note that the speed here is defined in electrical revolutions per second (Hz). To convert the electrical revolutions per second (Hz) to motor shaft's revolutions per second, just divide it by the number of pole pairs.
Parameter Units Work Zone Position 1 Description counts This parameter specifies a target position the servo drive is going to move to. Note that the position is defined in Work Zone "multi-turn" counts meaning that the servo might make multiple revolutions to reach the target position. The position can be a positive or a negative value. Position in Payload FLOAT32 4 Data type The RPDO COB-ID is 0x200. The Command Code is 0x30.
Command - Electronic Torque Control (ETC) This commands instructs the controller to drive a brushless motor in such a way that the motor generates a specific constant torque. Use this command to directly control torque of a brushless motor. Note that the command might cause the motor to continuously accelerate. Under the hood the controller converts the torque reference into an electrical current reference, and issues itself a "Field Oriented Control (FOC)" command.
Speed Hz This parameter defines a speed with which the controller rotates the magnetic field created inside the motor using the coils of the motor. 2 (Electrical Frequency) The RPDO COB-ID is 0x200. FLOAT32 4 The Command Code is 0x40. This command should be sent CONTINUOUSLY at regular intervals to avoid heartbeat timeout on the device side.
Parameter Speed (Electrical 1 Frequency) Units Description Data type Hz This parameter defines a target speed. The speed is expressed FLOAT32 in electrical revolutions per second (Hz). Position in Payload 4 The RPDO COB-ID is 0x200. The Command Code is 0x58. This command should be sent CONTINUOUSLY at regular intervals to avoid heartbeat timeout on the device side.
opposite direction. This is like applying a brake to the shaft, but without an actual physical braking device. If there is no external force, the "Brake" command does not trigger any countering electromagnetic forces, and thus does not draw energy from the power supply. For the braking function to work efficiently, the controller uses Hall sensors or a "Motor Encoder" to detect that the shaft is moving due to external forces, and to dynamically apply a countering electromagnetic force.
1.0 be a real number between 0.0 (fully open) and 1.0 (fully closed). For example, Duty Cycle=0.40 means 40% duty cycle of the output PWM signal. The RPDO COB-ID is 0x200. The Command Code is 0xA4. It is generally not required to continuously send this command to the device. Command - Testing: Field Oriented Control (FOC) This command initiates a load test of "Field Oriented Control (FOC)" function of the controller.
This command should be sent CONTINUOUSLY at regular intervals to avoid heartbeat timeout on the device side. Command - Testing: Servo Control This command initiates a load test of "Servo Control" and "Direct Drive Control" functions of the controller. The load test is typically run to verify that the relevant control laws are configured properly.
Command - Autoconfiguration: Brushless Motor Use this command when commissioning a new brushless motor. The command launches an auto-configuration procedure that automatically measures various characteristics of a brushless motor, computes optimal parameters for relevant control laws, and updates stored configuration of the controller. The updated configuration is saved to a persistent storage of the controller (Flash).
is what burns electric motors. This means that making a mistake and setting this parameter too high might have a fatal consequences for the motor. Setting this parameter too low would mean that the motor is not used to its full capacity in terms of torque. In short, it is important to set this parameter right. Note that if a particular application does not require all the torque the motor can produce, it would be wise to set the limit lower than a nominal value suggested by the manufacturer.
is. On the other hand, driving more current through the motor means generating more heat in the motor's winding. The heat is what burns electric motors. This means that making a mistake and setting this parameter too high might have a fatal consequences for the motor. Setting this parameter too low would mean that the motor is not used to its full capacity in terms of torque. In short, it is important to set this parameter right.
Telemetry Mappings (TPDO) Telemetry Message with COB-ID 0x180 Name Units Position in Payload (byte #) Data type 1 Fault Bits bits 0 UINT16 2 Voltage: DC bus (Udc) V 2 FLOAT16 3 Speed (Electrical Frequency) Hz 4 FLOAT32 Index Subindex 0x4000 0x03 0x5001 0x04 0x4000 0x10 Telemetry Message with COB-ID 0x280 Name Units Position in Payload (byte #) Data type Index Subindex 1 Electrical Position rad 0 FLOAT32 0x4000 0x11 2 Work Zone Count counts 4 FLOAT32 0x4000 0x18 Telemetry Message with COB-ID 0x380 Name U