Configuration
Software and Firmware
PDM Link software can be downloaded at linkecu.com/software-support/. Keep checking for updates to ensure you're using the latest release.
Firmware comes bundled with the PDMLink application - it can be accessed in the default location
To update firmware on the PDM, ensure you have downloaded the latest PDM Link software and installed this on your PC, the software contains the latest firmware.
The Software and Firmware versions can be found by selecting Menu>Help>About.
Connect the PDM to a PC using the supplied USB-C cable
Select Menu>PDM>Firmware
Click the 3 dot icon, and navigate to:
C:\Program Files (x86)\PDMLink\Resources\Firmware\razorpdm-firmware.img
Select the latest version and select Open. This will populate the Upgrade Firmware menu with all versions in the folder
Highlight the latest version and select START
Basic Configuration
Selecting View>PDM Configuration will produce the configuration tree on the left-hand side of the page.
The Basic Configuration tab contains the following settings:
PDM Name. If more than one PDM is being used this is where the user identifies them for later configuration.
PDM Output Enable. This setting is a temporary override that disables all high and low power outputs, while still allowing them to be configured in software.
PDM Setup
This provides a top level overview of the current PDM setup, pin configuration and, status.
Each PDM can be given friendly name
Each pin can be set to one of the various modes supported by that pin type.
Once the pin modes have been defined they will be available in the respective menus, Outputs Pins or Input Pins, for setup.
Once a pin has been configured all usages of the pin can be seen in the Connections box
General PDM Configuration
PDM Name | Set a friendly name for the PDM |
Global Enable | Global control of output behavior when battery is connected
|
Safety Override | The Safety Override function gives the user the ability to turn off output(s) when a parameter reaches a certain value, no matter what other function is assigned to the same pin. ⭐ Safety also needs to be enabled in the Output/ADIO settings menu for each output you wish to override. ⭐ The output Test Mode will override this function if both have been enabled/turned on. |
High Power Output Pins
High Power Output Pin Configuration
Functions | Shows the list of connected function(s). Multiple functions controlling one pin is not normally recommended. |
Mode | Sets pin mode
|
Status | Shows the current status of the pin, and may be used to control subsequent GP Logic, Math or GP Function blocks. |
Test Mode | Setting to a test mode (Active or PWM) will turn the output status to active and override any function using this pin.
|
Protection
Mode | Sets fuse mode
|
Inrush Limit + Trip Time + Duration | When the pin switches active, the 'Inrush Limit' will be used for the 'Duration' period. The output will go into a fault state if it exceeds the 'Inrush Limit' for longer than the 'Trip Time'. When configured as a half/full bridge, 'Duration' is disabled. The Inrush Limit will be continuously monitored. |
Overcurrent Limit + Trip Time | Normal fuse trip current in Amps. If a current value higher than 'Overcurrent Limit' is detected for longer than the 'Trip Time' period, the pin will enter a Fault state. If configured as a high/low side driver, the 'Overcurrent Limit' will only be used after the 'Inrush Duration' has finished. |
Retry Limit + Delay | Retry Counter. With 'Retry' Protection Mode enabled, and under fault conditions, the pin will attempt to switch Active, up to 'Retry Limit' times. After 'Retry Limit' attempts, the pin will remain Inactive until a setting is changed or the next power cycle. |
Over-Temp Limit | If the PDM reaches an internal temperature greater than the 'Over-Temp Limit', this pin will go into the Fault state. This feature is used to perform staged thermal shutdown on a pin-by-pin basis, typically activated only for low-priority output pins. |
Safety | Set whether or not this output can be turned off by the Safety Override.
|
ADIO Pins
ADIO Input Mode Configuration
ADIO Output Mode Configuration
Functions | Shows the list of connected function(s). Multiple functions controlling one pin is not normally recommended |
Mode | Sets pin mode
|
Status | The status output shows the current status of the pin, and may be used to control subsequent GP Logic, Math or GP Function blocks. |
Test Mode | Setting to a test mode (Active or PWM) will turn the output status to active and override any function using this pin.
|
Protection - Active only in Output Mode
Mode | Sets fuse mode
|
Trip Time | Fuse trip timing in seconds. When the pin switches to active, if a current value higher than 8A is detected for longer than the 'Trip Time' period, the pin will enter a Fault state |
Retry Limit | Retry counter. With 'Retry' Fuse Mode enabled, and under fault conditions, the pin will attempt to switch Active, up to 'Retry Limit' times. After 'Retry Limit' attempts, the pin will remain Inactive until a setting is changed or the next power cycle |
Delay | Retry delay. With 'Retry' Fuse Mode enabled, and under fault conditions, the pin will wait for 'Delay' seconds before trying to switch active again. |
Over-Temp Limit | If the PDM reaches an internal temperature greater than the 'Over-Temp Limit', this pin will go into the Inactive state. This feature is used to perform staged thermal shutdown on a pin-by-pin basis, typically activated only for low-priority output pins. |
Safety | Set whether or not this output can be turned off by the Safety Override.
|
Input Setup - Active only in Input Mode
Pullup | Enables an internal 4.7k pullup resistor, to sensor 5V. |
High Threshold + Duration | When the pin voltage exceeds Threshold High (V) for at least Duration (s), the pin state is set to Active. ⭐When an ADIO is set as an output, the input voltage is fixed at 0V. |
Low Threshold + Duration | When the pin voltage is less than Threshold Low (V) for at least Duration (s), the pin state is set to Inactive. ⭐When an ADIO is set as an output, the input voltage is fixed at 0V. |
Control Function Setup
This is where the configured pins are connected to each other.
This is where the pins can be turned on and off manually. You can use this to:
Test outputs, and set pins to come on and stay on when the ignition is turned on.
Simply select output pin and state. Frequency and Duty Cycle can also be adjusted.
Manual Control Configuration
Output Pin | Choose which pin to turn on. This will overwrite all settings made previously. |
State | Set to active to turn on, Inactive to turn off. |
Frequency | Set desired frequency |
Duty Cycle | Set desired duty cycle |
GP Logic
GP Logic blocks allow a pin to be controlled directly by the combination of up to 4 input parameters, according to an Expression and the resulting Status value. The expression has a 40-character limit.
If no pin is selected (Output Pin is set to None), then the Status of the GP Logic block may be used in other GP Logic, GP Function or Math Blocks to create more complex functions.
The standard "Math Block Expression Syntax" as found in the Link G4x, is used to connect the parameters. For example:
a results in logic parameter A being returned in the Status output
a&b results in the combination of logic parameters A AND B being returned in the Status output
a|b results in the combination of logic parameters A OR B being returned in the Status output
a&!b results in the combination of logic parameters A AND (NOT B) being returned in the Status output
(a&b)|(c&d) results in the combination of logic parameters (A AND B) OR (C AND D) being returned in the Status output
GP Logic Configuration
Output Pin | Choose which pin to control. If not set, the GP Logic block may be used via its Status output. |
Status | Shows the Status of the Expression |
Expression | An Expression Math Block Expression Syntax. The value of parameters below may be referenced via the variables a, b, c and d |
Parameter A | Evaluates the selected parameter, operator and value, resulting in a True/False value stored in variable a |
Parameter B | Evaluates the selected parameter, operator and value, resulting in a True/False value stored in variable b |
Parameter C | Evaluates the selected parameter, operator and value, resulting in a True/False value stored in variable c |
Parameter D | Evaluates the selected parameter, operator and value, resulting in a True/False value stored in variable d |
GP Logic Editor
Any GP Logic Expression can be edited directly using the expression box or by using this text-based editor.
The editor can be opened by clicking the button to the left of the Expression input listed above.
Expression | A Logic Block Expression Syntax. The value of parameters below may be referenced via the variables a, b, c and d. Uses the same logical syntax as a Math Block. |
+ | Add a new operator after the selected location |
- | Remove the selected operator from the expression |
GP Functions
GP Function blocks allow a pin to be controlled directly by a GP Logic, CAN Stream, CAN Keypad, or Math block via its Condition Parameters.
GP Function Configuration
Output Pin | Choose which pin to control |
Condition Parameters | Select a status variable, an operator and a value. The resulting status controls the Output pin
|
Holdoff | Sets a delay time. Waits this many seconds before changing the output State to Active. |
Pulse | The condition must evaluate to False for at least the Pulse time before the Inactive state is set on the Output |
Freq Param | When not None, sets the output PWM frequency cycle to the value set by the selected parameter. In this case, the Freq Value setting is not used. |
Freq Value | When Freq Param is None, sets a fixed frequency PWM output. |
Duty Param | When not None, sets the output PWM frequency cycle to the value set by the selected parameter. In this case, the Duty Value setting is not used. |
Duty Value | When Duty Param is None, sets a fixed Duty Cycle PWM output. Set to 100% to make the Output pin follow the Condition Status. |
Timers
Timers are used to generate low-speed output pulses or generate timing count values which may be used by GP Logic, GP Function or Math blocks to perform complex timed functions.
Timer Configuration
Output Pin | Choose which pin to control. If not set, the timer may be used via its Status output. |
Status | Timer status:
|
Mode | Sets the timer mode:
|
Time | Time in seconds since trigger. Rolls over to 0 every Holdoff + Pulse timing period. |
Trigger | When the logical expression (Parameter, Operator, Value) results in an Active status result, the timer is triggered. ⭐Edge operators function upon a parameter change. |
Holdoff | Time to wait before going to the Triggered/Active state. |
Pulse | Time to wait before going to the Inactive state after a successful trigger. |
Count | The count of pulses generated by the timer. |
Counter Reset | Select a parameter, operator and value that, when evaluated as true, reset the Timer Count |
Math Blocks
Math blocks are the most powerful Arbitrary Math and Logic Block available. The math block runs a language processor that can evaluate many C language operators and functions. The expression has a 40 character limit.
Math AND Logic expressions may be combined.
Many special functions are available. See the Math Block Expression Syntax guide below.
Math Block Configuration
Expression | A Math Block Expression Syntax. The value of parameters below may be referenced via the variables a, b, c and d |
Status | Indicates the result of the Expression. For math expressions, the Status is a number. For logical expressions, the Status is reduced to the values 0, or 1. |
Error | When the Error is not 0, the Expression has resulted in an error or cannot be computed. This happens most often when the expression is invalid. |
Parameter A | the selected parameter value is stored in variable a |
Parameter B | the selected parameter value is stored in variable b |
Parameter C | the selected parameter value is stored in variable c |
Parameter D | the selected parameter value is stored in variable d |
Math Expression Viewer
Math and Logic Expressions can be viewed in a graphic form by clicking to the left of the expression input.
Each block represents a component of the expression and allows a visual overview of any expression
Math and Logic Expression viewer
Math Block Expression Syntax
All Math and Logic blocks support the following functions set.
Parameters a, b, c and d reflect the current value of any ECU runtime value.
The equation is calculated at a rate of 1kHz.
The equation may contain any combination of math functions, up to 20 characters.
Parameters are sampled at the time of calculation.
In the tables below:
param/param1/param2 may be set to any of parameters a, b, c or d.
param/param1/param2 may be set to any number value.
Logic Operators
Function | Syntax | Example | Description |
---|---|---|---|
! (not) | !param | !1 = 0 !100.1 = 0 !0 = 1 | !a results in 0 if a is not zero, and 1 if a is zero. |
& (and) | param1¶m2 | 5&9 = 1 5&0 = 0 | a&b results in 0 if either a or b is zero, otherwise 1.
|
| (or) | param1|param2 | 5|9 = 1 5|0 = 1 | a|b results in 1 if either a or b is 1, otherwise 0. |
^ (xor) | param1^param2 | 5^9 = 0 5^0 = 1 0^1 = 1 0^0 = 0 | a^b results in 1 if one of a or b is non zero, otherwise 0 if a and b are both 0 or both non zero. |
= (equal) == (equal) | param1=param2 or param1==param2 |
| a=b results in 1 if a and b are equal a==b is equivalent to a=b |
!= (not equal) | param1!=param2 |
| a!=b results in 1 if a and b are NOT equal |
> (greater than) | param1>param2 | 5>9 = 0 5>0 = 1 | a>b results in 1 if a is greater than b, otherwise 0.
|
< (less than) | param1<param2 | 5<9 = 1 5<0 = 0 | a<b results in 1 if a is less than b, otherwise 0. |
>= (greater than or equal) | param1>=param1 | 5>=5 = 1 5>=0 = 1 5>=6 = 0 | a>=b results in 1 if a is greater than or equal b, otherwise 0.
|
<= (less than or equal) | param1<=param2 | 5<=5 = 1 5<=0 = 0 5<=6 = 1 | a<=b results in 1 if a is less than or equal to b, otherwise 0. |
Math Operators
Function | Syntax | Example | Description |
| param1*param2 | 5*9 = 45 | a*b results in the multiplication of parameters a and b. |
/ (divide) | param1/param2 | 5/9 = 0.556 | a/b results in parameter a divided by parameter b.
|
% (modulus) | param1%param2 | 4%5 = 4 5%5 = 0 6%5 = 1 | a%b results in the modulus of parameters a and b. Modulus computes the remainder of a divided by b.
if parameter a is counting up continuously, 0,1,2,3,4,5,6,7,8,9 ... then a%4 results in 0,1,2,3,0,1,2,3,0,1,2,3 ... the example (int(t)%4)+1 results in 1,2,3,4,1,2,3,4,1,2,3,4... on a count of 1 per second
|
+ (add) | param1+param2 | 5+9 = 14 | a+b results in the addition of parameters a and b. |
| param1-param2 | 5-9 = -4 | a-b results in the subtraction of parameters a and b. |
() (braces) | param1*(param2+param3) | 10*(287+1000) = 12870 10*287+1000 = 3870 | Controls the order of precedence in calculations. |
Special Functions
Function | Syntax | Example | Description |
if | if(param, then, else) | if(a>4, b, b*5) = b if a>4 =b*5 otherwise | returns the "then" value if the "param" value is true, otherwise results in the "else" value. Any number of if() statements can be added to an expression. |
peak | pk(param, timeout) | pk(a, 1.0) | Holds the peak value of parameter a. if the value of parameter a. does not change within the timeout (in seconds) the peak is set to the current value of a. If the timeout is 0, the peak is held indefinitely.
|
delta | dt(param, time) | dt(a, 1.0) | Holds the delta value of parameter a, taken over the time specified (in seconds).
|
average | av(param, time) | av(a, 1.0) | Holds the average value of parameter a, taken for 20 evenly spaced samples over the time specified (in seconds).
|
time | t |
| Holds the value of time in seconds since PDM startup. |
Counter | cnt(param) | cnt(a) | Tree running time counter. Starts counting up, once per 10 milliseconds, as long as parameter a is not 0. When parameter a is 0, the counter is reset to 0.
|
edge | ed(param1, param2) | ed(a, b) | Edge counter. Counts rising edges on parameter a, as it passes from less than 1 to greater than or equal to 1. When parameter b is 0, the counter is reset to 0.
|
Numeric Functions
Function | Syntax | Example | Description |
integer | int(param) | int(1.1) = 1 int(t) = time in seconds (without decimal) | removes the decimal places from parameter, resulting in an integer. |
bool | bool(param) | bool(2.5) = 1 bool(0) = 0 | Forces any number or result value that is not 0, to 1. otherwise returns 0. |
min | min(param1, param2) | min(a, b) | results in the value of a or b, whichever is smallest. |
max | max(param1, param2) | max(a, b) | results in the value of a or b, whichever is largest. |
compare | cmp(param1, param2) | cmp(a, b) | results in: -1 if a < b, 1 if a > b, 0 if a = b |
round | round(param, decimals) | round(1.01258, 2) = 1.01 | results in the value of the parameter, rounded to the number of decimals specified. |
Absolute value | abs(param) | abs(-25.6) = 25.6 abs(25.6) = 25.6 | abs(a) results in a positive number no matter if a is positive or negative. |
ceiling | ceil(param) | ceil(-25.6) = -25 ceil(25.6) = 26 | ceil(a) results in the smallest integer that is greater than or equal to a (i.e : rounds up to the nearest integer). |
floor | floor(param) | floor(-25.6) = -26 floor(25.6) = 25 | floor(a) results in the smallest integer that is smaller than or equal to a (i.e : rounds down to the nearest integer). |
exponential | exp(param) | exp(6) = 403.428 | exp(a) results in the value of e (Euler's number), to the power of a. |
logarithm, natural | ln(param) | ln(2) = 0.693 | ln(a) results in the natural log of a. |
logarithm, base 10 | log(param) | log(2) = 0.301 | log(a) results in the log base 10 of a. |
power | pow(param1, param2) | pow(6, 2) = 36 | pow(a, 2) results in a to the power of 2. |
square root | sqrt(param) | sqrt(25) = 5 | sqrt(a) results in the square root of a. |
cosine | cos(param) | cos(pi) = -1 | cos(a) results in the trigonometric cosine of a. |
sine | sin(param) | sin(pi) = 0 | sin(a) results in the trigonometric sine of a. |
tangent | tan(param) | tan(pi) = 0 | tan(a) results in the trigonometric tangent of a. |
power | pow(a, b) | pow(a, 2) | pow(a, 2) results in the value of parameter a being raised to the power of 2. If a=4, the result would be 16. |
constant, e | e | e = 2.71828 | Euler's number, a special constant |
constant, pi | pi | pi = 3.14159 | Pi, a special constant. |
PID Controllers
PID Controllers provide powerful position and rate control over DC motors, Linear motors, and Solenoids - applications may include Throttle body and e-Wastegate controllers.
PID Block Configuration
The output pin setting selects the output pin that is to be used.
Inputs
Feedback | PID Feedback input signal. Connect to an input pin, for example, ADIO1 State > Voltage, or a control parameter such as Math Block 1 > Result. Any PDM control parameter may be used. |
FB Value | Monitor the feedback signal value - normalized from 0-100% |
Error Value | Monitors PID target error value - from 0-100% |
Setpoint | PID Setpoint input signal. Connect to an input pin, for example, ADIO1 State > Voltage, or a control parameter such as Math Block 1 > Result. Any PDM control parameter may be used. |
SP Value | Monitors Setpoint signal error value- normalized from 0-100% |
Input Conditioning
FB Fault High | Signals a fault if the feedback input value exceeds 'FB Fault High' |
FB Fault Low | Signals a fault if the feedback input value exceeds 'FB Fault Low' |
FB Cal High | PID feedback (0-100%) is the ratio of 'FB value' as it falls between 'FP Cal High' (100%) and 'FP Cal Low' (0%) |
FB Cal Low | PID feedback (0-100%) is the ratio of 'FB value' as it falls between 'FP Cal High' (100%) and 'FP Cal Low' (0%) |
SP Max Rate | Maximal rate of change allowed on the setpoint input. If the setpoint input rises or falls at a greater rate than specified, then the rate of change is limited by the PID controller. This translates to the level of smoothing noted on the output PWM signal. |
SP Filter | The degree of filtering applied on the setpoint input. |
PID Setup
P, I, D | Proportional, Derivative and Integral gain coefficients. |
Feedforward | Feed-forward gain value |
Deadband | Setpoint deadband. No PID response will be actioned while the change in setpoint is inside the deadband. |
PWM Setup
Frequency | Frequency of PID PWM output signal (Fixed) |
Duty Max | The maximum duty cycle of PID PWM output signal from 0-100% |
Duty Min | The minimum duty cycle of PID PWM output signal from 0-100% |
CAN Setup
The Razor PDM can communicate directly with any current Link ECU and with up to 3 other Razor PDMs. Third party ECUs can be configured to communicate with a Razor PDM using the CAN Streams outlined below.
ECU Setup
When connecting to a Link ECU, set up the ECU CAN as per the PCLink helpfile. G4X ECU Tuning Functions > CAN > Link Razor PDM
Ensure the latest version of PCLink is being used (V6.23 or later) and ensure the latest firmware has been installed.
Select User Defined and in one of the channels select Link Razor PDM.
Choose an ID that is not being used and a transmit rate.
CAN Bus ID is in Decimal format.
There will be 5 IDs used. The one chosen and the four consecutive numbers following that ID.
ID = ECU transmit, ID + 1 = PDM1 IO Status, ID + 2 = PDM1 Keypad Counts, ID + 3 = PDM2 IO Status, ID + 4 = PDM2 Keypad Counts. This allows for up to 2 PDMs connected to the same Link ECU.
12 new runtimes (6 per PDM) have been added for currents, fault flags and status flags received by the ECU from the PDM.
CAN Aux 1 -16 are used to control the outputs on the PDM.
To setup a Link ECU to transmit the CAN Aux runtimes and receive basic PDM data:
Open the CAN Setup window (PCLink > ECU Controls > CAN Setup).
Select the CAN module to be used
Set the Mode to 'User Defined'.
Configure the Bit Rate to the same Bit Rate as the PDM (Often 1 Mbit/s).
Select a spare CAN channel
Select 'Link Razor PDM' from the Mode drop-down menu.
Set the CAN ID to an appropriate spare Id, the selected ID doesn't matter as long as the PDM is set to match and the next 4 CAN Ids are free (e.g. if Id 500 is used 501 to 504 must also be free and unused).
Set the Transmit Rate to 20Hz, this controls the rate at which the CAN Aux information is transmitted by the ECU, faster or slower rates can be used if desired.
Click Apply and then OK.
Make sure a Store (F4) is performed.
To setup a Link ECU to use one or more of the Razor PDM's ADIO channels or Keypad Functions as an ECU CAN input:
In PCLink connect to the ECU and open CAN -> PDM 1 in the ECU settings menu (or PDM 2, PDM 3 or PDM 4 depending on which PDM the input is coming from).
Select the appropriate ADIO or Keypad Function's setting and set it to an unused CAN Freq, CAN An or CAN DI input.
If all of the above CAN setups have been done correctly the selected CAN input should now show the status or value of the ADIO or Keypad function.
Note: Only ADIO 5-8 can be used as Frequency inputs.
Note: For CAN Keypad Functions a value of 1 or more is considered active when a CAN DI is selected.
PDM Setup
CAN Setup Configuration
Termination | Turns the PDM's terminating resistor On/Off. |
Bus Data Rate | Sets the data rate of the PDM CAN bus. The data rate needs to be the same on all devices connected to the same bus. |
CAN Channel Setup
This is the starting point when setting up CAN on the Razor PDM. Currently, these channels can be used to receive or transmit, depending on the Mode, CAN streams that are detailed below.
Label | Whatever you wish to call each CAN Channel. By default they are set as CAN Channel 1 - 10. |
Mode | Sets the CAN Channel Mode:
|
CAN ID | The CAN ID the channel will send every message on |
Transmit Rate | How often the PDM will transmit the chosen message(s). This option is not required for receive steams. |
CAN Function Setup
Setting a channel to the CAN Function mode allows the PDM to receive Status, Frequency and Duty cycle settings for an Output. The structure of the CAN stream is detailed below.
To use all of the CAN Functions, just set one CAN Channel to the CAN Function Mode. Any Output can be used with any CAN Function.
The easiest way to use CAN Functions is with a Link ECU but any device capable of transmitting over CAN can be used
CAN Function Configuration
Output Pin | The Output pin directly controlled by this CAN Function. If an Output is selected in this list, its Status, Frequency and Duty Cycle will change according to the received values. Alternatively, you can feed the received CAN values (Status, Freq, Duty) into other functions such as Math Blocks or PID control. |
Status | Status value received from the incoming CAN message. Inactive=0, Active=1, Off=2, Fault=3 |
Frequency | Frequency value received from the incoming CAN message. |
Duty Cycle | Duty Cycle value received from the incoming CAN message. |
Compound ID | The Compound ID in the first byte, used to choose which frame in the CAN stream to use. For example, the Link ECU PDM CAN stream will send CAN Aux 1 information with a compound ID of 0. |
Fault State | State the CAN Function will change to if a CAN message has not been received for 2 seconds (and at least one has been received since power up). |
Fault Frequency | Frequency the CAN Function will change to if a CAN message has not been received for 2 seconds (and at least one has been received since power up). |
Fault Duty Cycle | Duty Cycle the CAN Function will go to if a CAN message has not been received for 2 seconds (and at least one has been received since power up). |
To setup the Link Razor PDM to receive the CAN Aux information:
Open PDMLink and connect to the PDM (F3 or PDM dropdown menu -> Connect).
Open CAN Setup -> Basic CAN Configuration
Configure the Bit Rate to match the ECU (Often 1 Mbit/s).
Open CAN Setup -> CAN Channels.
Select a spare CAN channel.
Select 'CAN Function' from the Mode drop-down menu.
Set the CAN ID to match the 'Link Razor PDM' Id in the ECU CAN Setup.
Set the Transmit Rate to None, this Mode only receive's data from the ECU and doesn't transmit any data.
Make sure a Store (F4) is performed.
Further setup is required in PDMLink to assign CAN Aux's from the ECU to CAN Function's in the Razor PDM before they can be used to control outputs. See GP Functions.
To setup the Link Razor PDM to transmit Pin Status and Current flow information to a Link ECU:
Open PDMLink and connect to the PDM (F3 or PDM dropdown menu -> Connect).
Open CAN Setup -> Basic CAN Configuration
Configure the Bit Rate to match the ECU (Often 1 Mbit/s).
Open CAN Setup -> CAN Channels.
Select a spare CAN channel.
Select 'IO Status Stream' from the Mode drop-down menu.
Set the CAN ID the ECU's 'Link Razor PDM' Id +1 if this PDM 1 in the ECU, +3 if this is PDM 2 in the ECU, +5 if this is PDM 3 in the ECU or +7 if this is PDM 4 in the ECU (e.g. if the ECU's 'Generic PDM' Id is 500 use Id 501 for PDM 1, Id 503 for PDM 2, Id 505 for PDM 3 or Id 507 for PDM 4).
Set the Transmit Rate to 20Hz, faster or slower rates can be used if desired.
Make sure a Store (F4) is performed.
Current and pin status information should now show up in the ECU, these runtime values and statuses are explained more in the ECU Helpfile.
To setup the Link Razor PDM to transmit CAN Keypad states and values to a Link ECU:
Open PDMLink and connect to the PDM (F3 or PDM dropdown menu -> Connect).
Open CAN Setup -> Basic CAN Configuration
Configure the Bit Rate to match the ECU (Often 1 Mbit/s).
Open CAN Setup -> CAN Channels.
Select a spare CAN channel.
Select 'Keypad Counts' from the Mode drop-down menu.
Set the CAN ID the ECU's 'Link Razor PDM' Id +2 if this PDM 1 in the ECU, +4 if this is PDM 2 in the ECU, +6 if this is PDM 3 in the ECU or +8 if this is PDM 4 in the ECU (e.g. if the ECU's 'Generic PDM' Id is 500 use Id 502 for PDM 1, Id 504 for PDM 2, Id 506 for PDM 3 or Id 508 for PDM 4).
Set the Transmit Rate to 20Hz, faster or slower rates can be used if desired.
Make sure a Store (F4) is performed.
The PDM's keypad data can now be used via CAN DIs or CAN Analog inputs as selected in the PDM's Keypad function settings.
Keypad Setup
Keypad Settings
Up to two CAN Keypads can be used on a Razor PDM. The list of supported models are detailed below.
Keypad Settings Configuration
Keypad Model | The model of the CAN Keypad. Changing the model will allow different numbers of buttons to be used e.g. a 5 button keypad will let you choose the function on buttons 1 - 5 |
Button | Choose which Keypad Function is used to control each button on the keypad. |
Keypad Function
A Keypad Function determines how a button on the CAN keypad behaves.
There are 16 functions in total which can be used entirely on one keypad, or shared across two. Each function can have its label changed to describe its use.
Keypad Function Configuration
Max Count | This button counts up once per press and rolls over to 0 at Max Count.
|
Count | Count holds the number of presses |
Status | Status is Active only when the button is pressed. |
Rollover | Select if the count should rollover once reaching ‘Max Count’ while incrementing or 0 while decrementing |
LED Parameter | Parameter that determines which LED state to use for visual feedback. |
LED Colour | Sets the button colour/state that is shown when the LED Parameter is equal to a number from 0 to 7. |
Reset Expression | Select a parameter, operator and value that, when evaluated as true, reset the Keypad Function Count |
Set Expression | Select a parameter, operator and value that, when evaluated as true, increment or decrement the Keypad Function Count. Allows two buttons to increment/decrement a single count. |
Set Mode | Determines whether the Set Expression increments or decrements the count. |
CAN Stream Structure
The tables below describe how the data in CAN streams on the PDM are transmitted and received on the Link Razor PDM. This information is useful when interacting with a device that does not have built in Link Razor PDM functionality.
The structure used is based on the CAN Channel Mode. All data is sent/received with the most significant byte first.
CAN Function
Byte 0 (Unsigned) | Byte 1 (Unsigned) | Byte 2 & 3 (Unsigned) | Byte 4 & 5 (Unsigned x100) | Byte 6 & 7 |
---|---|---|---|---|
Compound ID | Status | Frequency (Hz) | Duty Cycle (%) | Unused |
IO Status
Frame Number | Byte 0 (Unsigned) | Byte 1 (Unsigned) | Byte 2 (Unsigned) | Byte 3 (Unsigned) | Byte 4 & 5 (x100) | Byte 6 & 7 (Signed x100) |
---|---|---|---|---|---|---|
Frame 1 | 0 | HP Output 1 Status | HP Output 1 Frequency (Hz) | HP Output 1 Duty Cycle (%) (Signed) | HP Output 1 Current (A) | |
Frame 2 | 1 | HP Output 2 Status | HP Output 2 Frequency (Hz) | HP Output 2 Duty Cycle (%) (Signed) | HP Output 2 Current (A) | |
Frame 3 | 2 | HP Output 3 Status | HP Output 3 Frequency (Hz) | HP Output 3 Duty Cycle (%) (Signed) | HP Output 3 Current (A) | |
Frame 4 | 3 | HP Output 4 Status | HP Output 4 Frequency (Hz) | HP Output 4 Duty Cycle (%) (Signed) | HP Output 4 Current (A) | |
Frame 5 | 4 | ADIO 1 Status | ADIO 1 Frequency (Hz) | ADIO 1 Duty Cycle (%) (Unsigned) | ADIO 1 Voltage (V) | |
Frame 6 | 5 | ADIO 2 Status | ADIO 2 Frequency (Hz) | ADIO 2 Duty Cycle (%) (Unsigned) | ADIO 2 Voltage (V) | |
Frame 7 | 6 | ADIO 3 Status | ADIO 3 Frequency (Hz) | ADIO 3 Duty Cycle (%) (Unsigned) | ADIO 3 Voltage (V) | |
Frame 8 | 7 | ADIO 4 Status | ADIO 4 Frequency (Hz) | ADIO 4 Duty Cycle (%) (Unsigned) | ADIO 4 Voltage (V) | |
Frame 9 | 8 | ADIO 5 Status | ADIO 5 Frequency (Hz) | ADIO 5 Duty Cycle (%) (Unsigned) | ADIO 5 Voltage (V) | |
Frame 10 | 9 | ADIO 6 Status | ADIO 6 Frequency (Hz) | ADIO 6 Duty Cycle (%) (Unsigned) | ADIO 6 Voltage (V) | |
Frame 11 | 10 | ADIO 7 Status | ADIO 7 Frequency (Hz) | ADIO 7 Duty Cycle (%) (Unsigned) | ADIO 7 Voltage (V) | |
Frame 12 | 11 | ADIO 8 Status | ADIO 8 Frequency (Hz) | ADIO 8 Duty Cycle (%) (Unsigned) | ADIO 8 Voltage (V) | |
Frame 13 | 50 | PDM Temperature (+50) | PDM Voltage (x10) | Unused | Unused | Unused |
Keypad Counts
Frame Number | Byte 0 (Unsigned) | Byte 1 (Unsigned) | Byte 2 (Unsigned) | Byte 3 (Unsigned) | Byte 4 (Unsigned) | Byte 5 (Unsigned) | Byte 6 (Unsigned) | Byte 7 |
---|---|---|---|---|---|---|---|---|
Frame 1 | 0 | Keypad Function 1 Count | Keypad Function 2 Count | Keypad Function 3 Count | Keypad Function 4 Count | Keypad Function 5 Count | Unused |
|
Frame 2 | 1 | Keypad Function 6 Count | Keypad Function 7 Count | Keypad Function 8 Count | Keypad Function 9 Count | Keypad Function 10 Count | Unused |
|
Frame 3 | 2 | Keypad Function 11 Count | Keypad Function 12 Count | Keypad Function 13 Count | Keypad Function 14 Count | Keypad Function 15 Count | Keypad Function 16 Count |
|