MotoHawk:Blocks:Mux PSP

From MotoHawk
Jump to navigationJump to search

Mux PSP

This MotoHawk™ block provides an interface to the MuxPSP (Periodic Synchronous Pulse) behavior in ControlCore (the operating system of the ECU).

This block is for use on 48, 80, and 128 pin modules. The Multiple PSP block is used instead on the 70 and 112 pin modules.

Block ID

Mux PSP

Library

MotoHawk_lib/Advanced Digital I/O

Description

MUX PSP.PNG

The Angle Vector Parameter specifies the scheduled firing of each pulse. The length of the vector also specifies the number of pulses that will be produced. The input ports may be scalars or vectors, but if vectors, the size must equal the number of pulses. The "Name" parameter on this block allows the use of the MuxPSP Set block. This separates the definition from the modifier of the underlying run time attributes. Due to [MuxPSP_ModuleConsiderations.html hardware resource constraints] there is some complexity when choosing pins in an application.

Typical block use might be for a mechanical ignition distributor.

No protection is provided against the application employing pulse timings that overlap. Overlapping timings will result in unexpected pulse behaviour. It is assumed that this behaviour is targeted at ignition systems and therefore should not normally experience pulse overlap.

Angle inputs are before TDC (BfTDC), in units of 1/16th of degree crank angle. Time inputs are in microseconds. Eg: 730degBfTCD == 10degBfTDC == -710degBfTDC

Angles are converted internally to Mod(angle, DegInCycle). It is therefore not possible to schedule a pulse more than one cycle into the future. When Mod(start - stop,DegInCycle) == 0, angular duration is considered to be zero. For example, this will occur on a 4-stroke when start = 720, stop = 0. To achieve a maximum angle, stop = start - DegInCycle - 1/16.

Block Parameters

Parameter Field Values Comments/Description
Name Alpha-numeric text, single-quote enclosed Name as displayed in block, for reference. No special characters, such as spaces, dashes, commas (underscore allowed).
Pin Drop-down list Select output resource for this block (target dependent).
Angle Vector (1 element per pulse, 1-8, TDC) Numeric array The input ports may be scalars or vectors, but if vectors, the size must equal the number of pulses. Example - [0 90 180].
Stop Mode Select method for Stop
Angle Controlled Control Stop Mode by Angle
Duration Controlled Control Stop Mode by Time Duration
Update Mode OS/Application Select OS to have the system update for errors. Select Application to allow the application to run without updates.
Granularity Fine or Course Fine granularity (resolution) interpolates engine position between encoder teeth. Can result in reduced maximum duty cycle for MPC5xx based modules. Course granularity does not use interpolation. Angles resolve to the closest encoder tooth. Modules besides those cores that have an MPC5xx ignore this setting and utilize fine granularity irrespective of this setting.
Minimum Duration Mode Static or Dynamic Only applicable to MPC5xx based modules. Any scheduled duration smaller than this value is considered to have zero duration when scheduled. Is a member of the mask when the static Minimum Duration Mode is selected and is a signal when dynamic is selected.
Minimum Duration (ms) Numeric Enter value for duration. Only applicable if a Static Minimum Duration Mode was selected.
Show Ports Check box (enable) Enable to show input ports on the block.



Block Inputs

How are the block inputs such as Start Angle applied?

The start angle is applied at the rate that the block executes. This is true for all PSP like behaviors. The start may not be applied directly to the TPU then.

If there is a step change to the block inputs, are missing or double pulses possible?

Double pulses are not inherently protected for and so they can occur if you step change the pulse’s start time toward TDC. This is because the PSP is always trying to schedule the pulse and it doesn’t know that the last occurrence of the pulse was not that long ago. It does not know the context of the pulse. This is only a problem for single pulse systems. A system with more than one pulse won’t have this problem because the system goes from scheduling one pulse to scheduling the other and thus won’t experience the step change double pulse. This can actually be used to protect for it.

The figure illustrates.

Pulse scheduling.png