Jump to content

Component: DALI Master (Comms: System): Difference between revisions

From Flowcode Help
No edit summary
m Text replacement - "style="background-color:#EAE1EA;"" to "class="mtx-class-propfolder""
 
(22 intermediate revisions by 3 users not shown)
Line 14: Line 14:
==DALI Master component==
==DALI Master component==
A serial based communications protocol designed for controlling lighting, specifically digitally controlled dimmable fluorescent ballasts. DALI requires the signals to be level shifted from  VCC and GND to +9.5V - +25.5V and GND.  The master component can addess up to 64 individual slaves & up to 16 groups.
A serial based communications protocol designed for controlling lighting, specifically digitally controlled dimmable fluorescent ballasts. DALI requires the signals to be level shifted from  VCC and GND to +9.5V - +25.5V and GND.  The master component can addess up to 64 individual slaves & up to 16 groups.
==Component Source Code==
Please click here to download the component source project: [https://www.flowcode.co.uk/wiki/componentsource/FC_Comp_Source_DALI_Master.fcfx FC_Comp_Source_DALI_Master.fcfx]
Please click here to view the component source code (Beta): [https://www.flowcode.co.uk/FlowchartView/?wfile=componentsource/FC_Comp_Source_DALI_Master.fcfx FC_Comp_Source_DALI_Master.fcfx]


==Detailed description==
==Detailed description==


''No detailed description exists yet for this component''
''No detailed description exists yet for this component''


==Examples==
==Examples==




DALI Master Example, reads the value of a keypad and sends out DALI commands based on the key pressed, 1 = switch on a slave's light, 2 = switch off a slave's light, 3 = read the slave's light level.
DALI Master Example, reads the value of a keypad and sends out DALI commands based on the key pressed, 1 = switch on a slave's light, 2 = switch off a slave's light, 3 = read the slave's light level.
{{Fcfile|DALI_Master.fcfx|DALI Master Example1}}
{{Fcfile|DALI_Master.fcfx|DALI Master Example1}}
DALI Slave Example, listens for DALI messages and checks that the group is correct before attempting to process the request and if required reply to the master.
{{Fcfile|DALI_Slave.fcfx|DALI Slave Example1}}


==Downloadable macro reference==
For a DALI Slave example see: [[Component: DALI Slave (Comms: System)]]
 


{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
 
 
 
 
 
 
 
 
 
==Macro reference==
 
===Initialise===
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ReceiveBackwardFrame'''
| width="90%" class="mtx-class-macrohead" | '''Initialise'''
|-
|-
| colspan="2" | Attempts to receive an 8-bit reply  0 indicates timeout or no reply 
| colspan="2" | Configures the UART serial interface. 
|-
|-
|-
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u8-icon.png]] - BYTE
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
| width="90%" style="border-top: 2px solid #000;" | ''Return''
| width="90%" style="border-top: 2px solid #000;" | ''Return''
|}
|}




{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
===ReceiveBackwardFrame===
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''TransmitForwardFrame'''
| width="90%" class="mtx-class-macrohead" | '''ReceiveBackwardFrame'''
|-
|-
| colspan="2" | Send out a 16-bit frame consisting of the 8-bit address and data bytes. After sending the controller will attempt to receive If a reply is detected then the Return value will equal to the reply. If no reply is detected then the Return value will be 0. 
| colspan="2" | Attempts to receive an 8-bit reply 0 indicates timeout or no reply 
|-
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | Address
|-
| colspan="2" | Address byte 
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | Data
|-
|-
| colspan="2" | Data Byte 
|-
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u8-icon.png]] - BYTE
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u8-icon.png]] - BYTE
Line 65: Line 117:




{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
===TransmitForwardFrame===
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''TransmitIndividualForwardFrame'''
| width="90%" class="mtx-class-macrohead" | '''TransmitForwardFrame'''
|-
|-
| colspan="2" | Sends out an individual frame containing address and data. After sending the controller will attempt to receive a reply. If a reply is detected then the Return value will equal to the reply. If no reply is detected then the Return value will be 0. 
| colspan="2" | Send out a 16-bit frame consisting of the 8-bit address and data bytes. After sending the controller will attempt to receive If a reply is detected then the Return value will equal to the reply. If no reply is detected then the Return value will be 0. 
|-
|-
|-
|-
Line 76: Line 129:
| width="90%" | Address
| width="90%" | Address
|-
|-
| colspan="2" | Individual Address 0-63 
| colspan="2" | Address byte 
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | Type
|-
| colspan="2" | 0 = Data, 1 = Command 
|-
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | Data
| width="90%" | Data
|-
|-
| colspan="2" |  
| colspan="2" | Data Byte 
|-
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u8-icon.png]] - BYTE
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u8-icon.png]] - BYTE
Line 93: Line 141:




{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
===TransmitGroupForwardFrame===
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''TransmitGroupForwardFrame'''
| width="90%" class="mtx-class-macrohead" | '''TransmitGroupForwardFrame'''
|-
|-
| colspan="2" | Sends out a group frame containing address and data. After sending the controller will attempt to receive a reply. If a reply is detected then the Return value will equal to the reply. If no reply is detected then the Return value will be 0. 
| colspan="2" | Sends out a group frame containing address and data. After sending the controller will attempt to receive a reply. If a reply is detected then the Return value will equal to the reply. If no reply is detected then the Return value will be 0. 
Line 121: Line 170:




{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
===TransmitIndividualForwardFrame===
{| class="mtx-class-macrotable wikitable"
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Initialise'''
| width="90%" class="mtx-class-macrohead" | '''TransmitIndividualForwardFrame'''
|-
|-
| colspan="2" | Configures the UART serial interface. 
| colspan="2" | Sends out an individual frame containing address and data. After sending the controller will attempt to receive a reply. If a reply is detected then the Return value will equal to the reply. If no reply is detected then the Return value will be 0. 
|-
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
| width="90%" style="border-top: 2px solid #000;" | ''Return''
|}
 
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SegShowDigit'''
|-
| colspan="2" | Displays a digit on the 7-seg display  
|-
|-
|-
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | Digit
| width="90%" | Address
|-
|-
| colspan="2" | Which of the digits to change (0 - 3) 
| colspan="2" | Individual Address 0-63 
|-
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | Value
| width="90%" | Type
|-
|-
| colspan="2" | The value to display (0 - 9) 
| colspan="2" | 0 = Data, 1 = Command 
|-
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | DecimalPoint
| width="90%" | Data
|-
|-
| colspan="2" | Decides if the decimal point is lit 
| colspan="2" |  
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
| width="90%" style="border-top: 2px solid #000;" | ''Return''
|}
 
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''RawSend'''
|-
| colspan="2" | Sends data to the LCD display 
|-
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | data
|-
| colspan="2" | The data byte to send to the LCD 
|-
| width="10%" align="center" | [[File:]] -
| width="90%" | type
|-
| colspan="2" | A boolean to indicate command type: true to write data, false to write a command 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
| width="90%" style="border-top: 2px solid #000;" | ''Return''
|}
 
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ReadAnalogAsByte'''
|-
| colspan="2" | Reads one of the analogue components as an byte value 
|-
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | Channel
|-
| colspan="2" | 0 = LDR, 1 = POT 
|-
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u8-icon.png]] - BYTE
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u8-icon.png]] - BYTE
Line 203: Line 199:




{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
==Property reference==
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ReadAnalogAsInt'''
|-
| colspan="2" | Reads one of the analogue components as an Integer value 
|-
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | Channel
|-
| colspan="2" | 0 = LDR, 1 = POT 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:]] -
| width="90%" style="border-top: 2px solid #000;" | ''Return''
|}


 
{| class="mtx-class-macrotable wikitable"
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''RemapCharacter'''
|-
| colspan="2" | Assigns a remap character allowing the PrintString function to automatically swap between pre-defined characters.  The characters can be custom (in the range 0-9) or can point to an existing character in the LCD character map. 
|-
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | RemapIdx
|-
|-
| colspan="2" | Remap Index, Range: 0 to (Remap Characters - 1) 
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-prop-icon.png]]
|-
| width="90%" class="mtx-class-macrohead" | '''Properties'''
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | SearchCharacter
|-
|-
| colspan="2" | Character to look for a replace 
|-
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="10%" align="center" class="mtx-class-propfolder" | [[File:Fc9-conn-icon.png]]
| width="90%" | ReplacementCharacter
| width="90%" class="mtx-class-propfolder" | Serial Properties
|-
| colspan="2" | New character value to use in place of the search character. 
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
| width="90%" style="border-top: 2px solid #000;" | ''Return''
|}
 
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Start'''
|-
| colspan="2" | Startup routine required by the hardware device. Automatically clears the display after initialising. 
|-
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
| width="90%" style="border-top: 2px solid #000;" | ''Return''
|}
 
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SetLEDState'''
|-
| colspan="2" | Sets the state of a single LED 
|-
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | Port
|-
| colspan="2" | 0 = PortA, 1 = PortB 
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | LED
|-
| colspan="2" | 0 = LED0, 7 = LED7 
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | State
|-
| colspan="2" |  
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
| width="90%" style="border-top: 2px solid #000;" | ''Return''
|}
 
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
| width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Initialise'''
|-
| colspan="2" | Must be called before any other CAN component macros to enable and initialise the CAN peripheral.  
|-
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
| width="90%" style="border-top: 2px solid #000;" | ''Return''
|}
 
 
 
 
==Property reference==
 
{| class="wikitable" style="width:60%; background-color:#FFFFFF;"
|-
| width="10%" align="center" style="background-color:#D8C9D8;" | [[File:Fc9-prop-icon.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Properties'''
|-
|-
|-
|-
Line 323: Line 221:
| colspan="2" |  
| colspan="2" |  
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" | [[File:Fc9-conn-icon.png]]
| width="10%" align="center" class="mtx-class-propfolder" | [[File:Fc9-conn-icon.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Connections'''
| width="90%" class="mtx-class-propfolder" | Simulation
|-
|-
| width="10%" align="center" style="background-color:#D8C9D8;" | [[File:Fc9-conn-icon.png]]
| width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Simulations'''
|-
|-
|-
|-

Latest revision as of 14:37, 13 July 2026

Author MatrixTSL
Version 1.0
Category Comms: System


DALI Master component

A serial based communications protocol designed for controlling lighting, specifically digitally controlled dimmable fluorescent ballasts. DALI requires the signals to be level shifted from VCC and GND to +9.5V - +25.5V and GND. The master component can addess up to 64 individual slaves & up to 16 groups.

Component Source Code

Please click here to download the component source project: FC_Comp_Source_DALI_Master.fcfx

Please click here to view the component source code (Beta): FC_Comp_Source_DALI_Master.fcfx

Detailed description

No detailed description exists yet for this component

Examples

DALI Master Example, reads the value of a keypad and sends out DALI commands based on the key pressed, 1 = switch on a slave's light, 2 = switch off a slave's light, 3 = read the slave's light level. DALI Master Example1

For a DALI Slave example see: Component: DALI Slave (Comms: System)






Macro reference

Initialise

Initialise
Configures the UART serial interface. 
- VOID Return


ReceiveBackwardFrame

ReceiveBackwardFrame
Attempts to receive an 8-bit reply 0 indicates timeout or no reply 
- BYTE Return


TransmitForwardFrame

TransmitForwardFrame
Send out a 16-bit frame consisting of the 8-bit address and data bytes. After sending the controller will attempt to receive If a reply is detected then the Return value will equal to the reply. If no reply is detected then the Return value will be 0. 
- BYTE Address
Address byte 
- BYTE Data
Data Byte 
- BYTE Return


TransmitGroupForwardFrame

TransmitGroupForwardFrame
Sends out a group frame containing address and data. After sending the controller will attempt to receive a reply. If a reply is detected then the Return value will equal to the reply. If no reply is detected then the Return value will be 0. 
- BYTE Address
Group Address 0-15 
- BYTE Type
0 = Data, 1 = Command 
- BYTE Data
 
- BYTE Return


TransmitIndividualForwardFrame

TransmitIndividualForwardFrame
Sends out an individual frame containing address and data. After sending the controller will attempt to receive a reply. If a reply is detected then the Return value will equal to the reply. If no reply is detected then the Return value will be 0. 
- BYTE Address
Individual Address 0-63 
- BYTE Type
0 = Data, 1 = Command 
- BYTE Data
 
- BYTE Return


Property reference

Properties
Serial Properties
TX Pin
 
RX Pin
 
Simulation
API