modelPartialUartDevice
Extends from PartialUartPins (Electrical side of a serial device: TX output and RX input on two pins, common ground, optional VCC pin - shared by the serial devices and the radio modems).
Information
Base class of the external serial devices. It cannot be instantiated directly: a concrete device extends it and sets its parameters — see Peripherals.UartEchoDevice, UartTemperatureSensor, UartGpsModule, UartLcd20x2, or Peripherals.UartGenericDevice for a device entirely described by its parameters.
The device is connected electrically to two GPx pins of an MCU: it receives real frames and transmits real ones, at its own baud rate and in its own format (dataBits, parity, stopBits: 8N1 by default, same choices as machine.UART). A baud rate or format mismatch with the microcontroller therefore produces wrong bytes, as on a real circuit; a received byte with a wrong parity bit or a low stop bit is kept, with a warning in the log (the first ten, then a total at the end of the simulation).
Two transmission modes, which can be combined, feeding the same queue:
- Request / response: the received bytes accumulate up to
terminator, the complete line is matched againstcommandTable, and the reply leaves afterresponseDelay. - Periodic:
periodicTemplateis transmitted spontaneously everyperiodseconds, without being asked.
Quantities exchanged with the rest of the model. {v1}…{vN} insert valueIn into a transmitted frame (with an optional precision, {v1:.1f}); {o1}…{oN}, placed in a command, capture a number of the received frame into valueOut. The same device can therefore be both sensor and actuator, which lets a control loop be closed inside the model.
The two dots of the icon light up during a transmitted frame (amber) or a received one (cyan) — visible while replaying a result with animation in OMEdit, not on a static rendering. Each received line and each transmitted payload also produce a line in the simulation log, prefixed with the component name.
Parameters
| Type | Name | Default | Description |
|---|---|---|---|
| Electrical › Supply | |||
| Boolean | useSupplyPin (from PartialSupplyPin) | false | Show the VCC supply pin: the peripheral is supplied by the circuit (its high levels follow VCC, its consumption IQ is drawn from VCC) - unchecked: ideal internal supply VOH, nothing to wire |
| Modelica.Units.SI.Voltage | VOH (from PartialSupplyPin) | Interfaces.VOH | Logic high voltage: ideal internal supply, high level of the outputs and of the pull-ups - with the VCC pin, the voltage of VCC is used instead |
| Modelica.Units.SI.Current | IQ (from PartialSupplyPin) | 1e-3 | Current drawn from VCC by the peripheral (quiescent consumption, outputs excluded) |
| Boolean | useGroundPin (from PartialSupplyPin) | true | Show the GND pin - unchecked: the peripheral is referenced to the simulation ground (0 V), nothing to wire |
| Electrical › Levels | |||
| Modelica.Units.SI.Voltage | VOL (from PartialUartPins) | Interfaces.VOL | Logic low voltage |
| Modelica.Units.SI.Voltage | VIH (from PartialUartPins) | Interfaces.VIH | Threshold above which an input reads high |
| Modelica.Units.SI.Voltage | VIL (from PartialUartPins) | Interfaces.VIL | Threshold below which an input reads low |
| Electrical › Impedances | |||
| Modelica.Units.SI.Resistance | ROut (from PartialUartPins) | Interfaces.ROut | Output series resistance |
| Modelica.Units.SI.Resistance | RPullUp (from PartialUartPins) | 1e6 | Pull-up of the RX input to the supply |
| Electrical › Pins | |||
| Boolean | useTxPin (from PartialUartPins) | true | Show the TX pin - unchecked for a device that never transmits (its output stage then stays unconnected) |
| Behaviour | |||
| Interfaces.UartBehaviour | behaviour | Interfaces.UartBehaviour.Table | Origin of the behaviour: command table or Python script |
| String | scriptPath | "" | Script .py describing the behaviour of the device (Script mode) |
| Serial link | |||
| Integer | baudrate | 1200 | Link speed, in baud |
| Integer | dataBits | 8 | Number of data bits of a frame (5 to 8, as machine.UART bits=) |
| Interfaces.UartParity | parity | Interfaces.UartParity.None | Parity of a frame (as machine.UART parity=: None, 0 = even, 1 = odd) |
| Integer | stopBits | 1 | Number of stop bits (1 or 2, as machine.UART stop=) |
| String | terminator | "\n" | Character marking the end of a received command (only the first character is kept) |
| Simulation | |||
| Modelica.Units.SI.Time | tickPeriod | 0.1 | Period of the minimal sync point: a safety net, the actual pace comes from the engine's deadlines |
| Table › Request / response | |||
| Boolean | respondEnabled | true | Reply to the recognised commands |
| String | commandTable | "" | Table "CMD=>REPLY|CMD=>REPLY"; "|" and "=>" are reserved. {vN} inserts valueIn[N] into the reply, {oN} captures a number of the command into valueOut[N] |
| Modelica.Units.SI.Time | responseDelay | 0.002 | Delay between the recognition of a command and the start of the reply |
| Boolean | echoEnabled | false | Send back every received byte unchanged |
| Table › Periodic transmission | |||
| Boolean | periodicEnabled | false | Transmit spontaneously, without being asked |
| Modelica.Units.SI.Time | period | 1 | Period of the spontaneous transmission (in Script mode: call period of on_tick) |
| String | periodicTemplate | "" | Template of the periodically transmitted frame ({vN} inserts valueIn[N]) |
| Inputs / outputs › Inputs ({vN}, inserted into transmitted frames) | |||
| Boolean | useValueInput | false | Take the quantities from the valueIn connector rather than from a constant |
| Integer | nIn | 1 | Number of quantities received from the model |
| Real | fixedValue | 0 | Value used when valueIn is not connected |
| Inputs / outputs › Outputs ({oN}, captured from received frames) | |||
| Boolean | useValueOutput | true | Show the valueOut connector - unchecked for a device that returns nothing to the model |
| Integer | nOut | 1 | Number of quantities returned to the model - leave the connector unconnected if unused |
| Real | valueOutStart | 0 | Value of valueOut before any capture |
Connectors
| Type | Name | Default | Description |
|---|---|---|---|
| Modelica.Electrical.Analog.Interfaces.NegativePin | GND (from PartialSupplyPin) | Common reference (ground), to be connected to the microcontroller's one - shown when useGroundPin is checked | |
| Modelica.Electrical.Analog.Interfaces.PositivePin | VCC (from PartialSupplyPin) | Supply of the peripheral (e.g. 3V3(OUT) of a Raspberry Pi Pico) - shown when useSupplyPin is checked | |
| Modelica.Electrical.Analog.Interfaces.PositivePin | TX (from PartialUartPins) | Transmission of the device - to be connected to the receive pin of the microcontroller - shown when useTxPin is checked | |
| Modelica.Electrical.Analog.Interfaces.PositivePin | RX (from PartialUartPins) | Reception of the device - to be connected to the transmit pin of the microcontroller | |
| Modelica.Blocks.Interfaces.RealInput[nIn] | valueIn | Quantities supplied by the model, inserted into the transmitted frames by {v1}..{vN} | |
| Modelica.Blocks.Interfaces.RealOutput[nOut] | valueOut | Quantities extracted from the received frames by {o1}..{oN} - the device then becomes an actuator |
Components
| Type | Name | Default | Description |
|---|---|---|---|
| Boolean | txActive | A frame is being transmitted | |
| Boolean | rxBusy | A frame is being received | |
| String | lastRx | Last complete line received | |
| String | lastTx | Last payload transmitted |