Dynalite DyNet (Serial) - Version 2.5.1#

Module Summary#

Integrates the Controller with Philips Dynalite Systems allowing it to communicate with DyNet Devices over an RS232 / RS485 Serial connection.

Module Status#

This IO Module is stable and has been tested internally.

If you encounter any issues with this module, or have any feedback regarding its operation, please contact our support team.

Release Notes#

Version 2.5.1#

  •  Added support for DyNet v2

  •  Added new Actions:

    •  Request DALI Ballast Status

    •  Report device online

  •  Added new Triggers:

    •  DALI Ballast Status Reported

    •  Online Reported

Version 2.4#

  •  Removed out of spec fade time for “Increment Area Level” OpCode 5 (0x05)

  •  Removed out of spec fade time for “Decrement Area Level” OpCode 6 (0x06)

  •  Minor precision fixes relating to internal level and time handling

  •  Added missing support for OpCode 113 (0x71) to trigger “Set Channel Level”

  •  “Custom Logical Command” No longer limited to supported OpCodes

  •  Renamed Action “Set Channel Level” to “Fade Channel to level”

  •  Support for OpCodes 128-131 (0x80-0x83)

  •  Added new Actions:

  •   Set Channel to Level with Fade

  •  TCP Client reconnection improvements

  •  TCP Server fixed

  •  Correctly report preset number from “Reply with Current Preset, OpCode 98 (0x62)

Version 2.3#

  •  Updated documentation.

Version 2.2#

  •  General updates and improvements.

  •  Updated documentation.

Version 2.1#

  •  Added new Triggers:

    •  Set Area Level.

    •  Set Channel Level.

    •  Increment Area Level.

    •  Decrement Area Level.

    •  Request Channel Level.

    •  Channel Level Reported.

    •  Request Current Preset.

    •  Current Preset Reported.

  •  Added new Actions:

    •  Set Area Level.

    •  Set Channel Level (in seconds).

    •  Set Channel Level (in minutes).

    •  Increment Area Level.

    •  Decrement Area Level.

    •  Custom Logical Command.

    •  Request Channel Level.

    •  Channel Level Reported.

    •  Request Current Preset.

    •  Report Current Preset.

Version 2.0#

  •  Added Status Variables.

Minor point releases (eg. 1.1.x) will be for small fixes and may not be listed here.

Requirements#

In order for the Controller to be able to communicate with a DyNet Network, and its DyNet Devices, a connection must be made using the Controller’s RS232/RS485 Serial Port.

Note that if you wish to communicate via IP with the DyNet Network, you will need to use the twin IO Module named Philips DyNet IP.

Configuration#

Operation#

This IO Module uses a fixed set of OpCodes, the most common ones, from the DyNet protocol. However, by using the Custom Logical Command Action, you can use any OpCode that is not currently supported by this IO Module’s Actions. This requires that you understand the DyNet Message Protocol, and the desired DyNet Command / OpCode you wish to send. Refer to both the Custom Logical Command Action, and the DyNet Reference for more information on OpCodes.

For your information and convenience, Triggers and Actions specify the OpCode(s) used.

This IO Module is also capable of both sending, and receiving status requests to, and from, the DyNet Network. By using request-type Triggers the Controller can receive status requests from the DyNet Network, and can respond using report-type Actions; conversely the Controller can use request-type Actions to make status requests from the DyNet Network, and use report-type Triggers to receive the response. These Actions and Triggers contain either Request or Report in their names.

Note when using Preset OpCodes this IO Module only works with the Preset number directly, and deals with the DyNet Command bytes requirements for the Preset Bank internally (except for the Custom Logical Command Action). Please see the Further Notes section at the bottom for more details.

Instance Properties#

The Instance Properties cover all the details for communicating with the DyNet Network over Serial. You can also specify a default Area of the DyNet Network for each instance you create. This will make it easier to manage Triggers and Actions for a specific Area of the DyNet Network with which the Controller will be communicating. It is thus recommended that each Area (of the DyNet Network) is dealt with by a separate instance of this IO Module, please read below for more details.

Select the Local option from the Serial Port drop down to specify the port is communicating with the DyNet Network. The settings for communication with the DyNet Network over serial need to be set for the Controller from the Interfaces tab within the Network view of Designer. Use the following settings:

  •  Protocol: RS485.

  •  Baud Rate: 9600.

  •  Start and Stop Bits: 1.

  •  Parity: None.

  •  Data Bits: 8.

Port Type defines the default DyNet version to use for transmission of messages. For further details see “DyNet 1 vs DyNet 2” below.

Checking the Extended Logging checkbox will provide more detailed log messages for fired Triggers and Actions as well as responses from the DyNet Network.

Using the Default Area#

Within the Default Area specify the value for the Area within the DyNet Network that you wish to be considered the default Area for the given instance of this IO Module. Most Triggers and Actions have an Area property which can be set to Instance Default, meaning it will take the value given in the IO Module’s Instance Properties. This means all the Triggers and Actions can be remapped onto different Areas from this one property. If, however, the Area property is set to any other value, the Triggers and Actions will use that given value over the default one.

All Areas#

DyNet devices are contained within isolated areas, however a commands can be directed to all areas by using the special area “0”. Devices must specifically setup to operate with area 0; please consult device documentation regarding this.

DyNet 1 vs DyNet 2#

Support for DyNet 2 is included with this module, while retaining compatibility with DyNet 1.

DyNet 2 expands the allowable ranges for Area and Preset numbers. Setting a value outside of the allowable range for DyNet 1 will result in the message being logged and dropped.

DyNet 1: Areas 1 to 255
Channels 1 to 255
Fade Time 0 to
  • 21 Min 50 Sec (OpCode 0x00, 0x01, 0x02, 0x03)
  • 25.5 Sec (OpCode 0x71)
  • 4 Min 15 Sec (OpCode 0x72)
  • 4 Hrs 15 Min (OpCode 0x73)
  • 5.1 Sec (OpCode 0x80, 0x81, 0x82, 0x83)
Presets 1 to 2048
DyNet 2: Areas 1 to 65535
Channels 1 to 65535
Fade Time 0 to 23.3 Hours
Presets 1 to 65519

Some actions, trigger, et cetera; are only appropriate for DyNet 1 or DyNet 2. If the selected port type is not support by the action or trigger, then the supported port type will be used in place. e.g. If Set Area Level had only support for DyNet 1, but DyNet 2 was selected as the instances Port Type, then the DyNet 1 would still be used to send the Set Area Level message. Support status will be noted below.

While the configuration requires that either DyNet 1 or DyNet 2 is selected for transmission, the controller will allow reception of both DyNet 1 and DyNet 2 concurrently.


Triggers#

Online Reported#

DyNet 1: OpCodes 0 (0x00)
DyNet 2: Not yet supported

This Trigger fires when the controller receives an OpCode reporting the online status (signon) for a specified Device Code and Box Number on the DyNet Network.

The variables this Trigger receives and passes onto the Action are:

  1.  Device code (integer): Reported Device code.

  2.  Box number (integer): Reported Box number.

Set Area to User Preset#

DyNet 1: OpCodes*
1 (0x01), 2 (0x02), 3 (0x03), 4 (0x04)
10 (0x0A), 11 (0x0B), 12 (0x0C), 13 (0x0D)
DyNet 2: OpCode 1 (0x01)

*The OpCode for this Trigger is variable as it specifies the Preset number, please see the Further Notes section at the bottom for more details.

This Trigger fires when the controller receives an OpCode to set an Area of the DyNet Network to a user Preset.

Set the Trigger to fire for the desired Area that can either be the Instance Default specified one, or any desired (integer) value.

Using Preset specify whether you wish the Trigger to fire for Any Preset, or a specific one using a value (integer).

The variables this Trigger receives and passes onto the Action are:

  1.  Area (integer): Specified affected Area of the DyNet Network.

  2.  Preset (integer): Specified Preset for the given Area.

  3.  Fade time (seconds as integer): Time over which the change to the specified Preset will occur, usually set to 0.

Set Area Level#

DyNet 1: OpCode 121 (0x79)
DyNet 2: OpCode 16 (0x10) SubOpCode 2 (0x02)

This Trigger fires when the Controller receives the OpCode to change the level for a specified Area of the DyNet Network.

Set the Trigger to fire for the desired Area that can either be the Instance Default specified one, or any desired (integer) value.

The variables this Trigger receives and passes onto the Action are:

  1.  Area (integer): Specified affected Area of the DyNet Network.

  2.  Level (percentage as integer): Level to be set for the specified Area.

  3.  Fade time (seconds as integer): Time over which the change to the specified level will occur, usually set to 0.

Set Channel Level#

DyNet 1: OpCode 113 (0x71) Fade Time specified in deciseconds*
OpCode 114 (0x72) Fade Time specified in seconds
OpCode 115 (0x73) Fade Time specified in minutes*
DyNet 2: OpCode 16 (0x10) SubOpCode 2 (0x02)

*Fade Time is converted into seconds for the variable it passes onto Actions.

This Trigger fires when the Controller receives the OpCode to change the level for a Channel within an Area of the DyNet Network.

Set the Trigger to fire for the desired Area that can either be the Instance Default specified one, or any desired (integer) value.

Using Channel specify whether you wish the Trigger to fire for Any Channel, or a specific one set using a value (integer).

The variables this Trigger receives and passes onto the Action are:

  1.  Area (integer): Specified affected Area of the DyNet Network.

  2.  Channel (integer): Specified affected Channel for the given Area.

  3.  Level (percentage as integer): Level to be set for the Channel.

  4.  Fade time (seconds as integer): Time over which the change to the specified level will occur, usually set to 0.

Note if you wish to pass the Fade Time variable onto an Action, you will need to use the Set Channel Level (seconds) Action.

Increment Area Level#

DyNet 1: OpCode 6 (0x06)
DyNet 2: Not yet supported

This Trigger fires when the Controller receives the OpCode to increment the level for a specified Area of the DyNet Network.

Set the Trigger to fire for the desired Area that can either be the Instance Default specified one, or any desired (integer) value.

The variables this Trigger receives and passes onto the Action are:

  1.  Area (integer): Specified affected Area of the DyNet Network.

Decrement Area Level#

DyNet 1: OpCode 5 (0x05)
DyNet 2: Not yet supported

This Trigger fires when the Controller receives the OpCode to decrement the level for a specified Area of the DyNet Network.

Set the Trigger to fire for the desired Area that can either be the Instance Default specified one, or any desired (integer) value.

The variables this Trigger receives and passes onto the Action are:

  1.  Area (integer): Specified affected Area of the DyNet Network.

Set Area to Off#

DyNet 1: OpCode 4 (0x04)
DyNet 2: Not yet supported

This Trigger fires when the Controller receives the OpCode to set an Area of the DyNet Network to off.

The variables this Trigger receives and passes onto the Action are:

  1.  Area (integer): Specified affected Area of the DyNet Network.

  2.  Fade time (seconds as integer): Time over which the change to the specified Preset will occur, usually set to 0.

Request Channel Level#

DyNet 1: OpCode 97 (0x61)
DyNet 2: OpCode 34 (0x22) SubOpCode 0 (0x00)

This Trigger fires when the Controller receives the OpCode requesting information (by the DyNet Network) about the current set level for a specified Channel within an Area of the DyNet Network.

Set the Trigger to fire for the desired Area that can either be the Instance Default specified one, or any desired (integer) value.

Using Channel specify whether you wish the Trigger to fire for Any Channel, or a specific one set using a value (integer).

Use the Target Level Minimum & Target Level Maximum, and Current Level Minimum & Current Level Maximum to filter out the range within which the Trigger should fire.

The variables this Trigger receives and passes onto the Action are:

  1.  Area (integer): Specified affected Area of the DyNet Network.

  2.  Channel (integer): Specified affected Channel for the given Area.

Channel Level Reported#

DyNet 1: OpCode 96 (0x60)
DyNet 2: OpCode 35 (0x23) SubOpCode 0 (0x00)

This Trigger fires when the Controller receives the OpCode reporting the current level for a specified Channel within an Area of the DyNet Network.

Set the Trigger to fire for the desired Area that can either be the Instance Default specified one, or any desired (integer) value.

Using Channel specify whether you wish the Trigger to fire for Any Channel, or a specific one set using a value (integer).

The variables this Trigger receives and passes onto the Action are:

  1.  Area (integer): Specified affected Area of the DyNet Network.

  2.  Channel (integer): Specified affected Channel for the given Area.

  3.  Target Level (percentage as integer): The level the Channel is fading towards (if it is currently fading).

  4.  Current Level (percentage as integer): The current level for the Channel.

Requested Current Preset#

DyNet 1: OpCode 99 (0x63)
DyNet 2: OpCode 32 (0x20) SubOpCode 0 (0x00)

This Trigger fires when the Controller receives the OpCode requesting information (by the DyNet Network) about the current Preset being used for a specified Area of the DyNet Network.

Set the Trigger to fire for the desired Area that can either be the Instance Default specified one, or any desired (integer) value.

Using Preset specify whether you wish the Trigger to fire for Any Preset, or a specific one set using a value (integer).

The variables this Trigger receives and passes onto the Action are:

  1.  Area (integer): Specified affected Area of the DyNet Network.

Current Preset Reported#

DyNet 1: OpCode 98 (0x62)
DyNet 2: Not yet supported

This Trigger fires when the Controller receives the OpCode reporting the current Preset for a specified Area of the DyNet Network.

Set the Trigger to fire for the desired Area that can either be the Instance Default specified one, or any desired (integer) value.

Using Preset specify whether you wish the Trigger to fire for Any Preset, or a specific one set using a value (integer).

The variables this Trigger receives and passes onto the Action are:

  1.  Area (integer): Specified affected Area of the DyNet Network.

  2.  Preset (integer): Specified Preset for the given Area.

DALI Ballast Status Reported#

DyNet 1: Physical OpCode 76 (0x4D) SubOpCode 1 (0x01)
DyNet 2: OpCode 131 (0x83) SubOpCode 259 (0x0103)

This Trigger fires when the Controller receives the OpCode reporting the current DALI Ballast Status for a specified Channel of the DyNet Network.

Using Device code, Box number, and Channel; specify whether you wish the Trigger to fire for Any Channel, or a specific one set using a value (integer).

The variables this Trigger receives and passes onto the Action are:

  1.  Device (integer): Source device code.

  2.  Box (integer): Source box number.

  3.  Channel (integer): Specified affected Channel of the DyNet Network.

  4.  Ballast Status (integer): Status of control gear; “0” = OK.

  5.  Lamp failure (integer): Status of Lamp; “0” = OK.

  6.  Lamp arc power on (integer): Status of Lamp arc power on; “0” = OFF.

  7.  Limit Error (integer): Status of Limit Error; “0” = Last requested arc power level is between MIN and MAX LEVEL or OFF

  8.  Fade Running (integer): Status of Fade running; “0” = fade is ready; “1” = fade is running

  9.  Reset State (integer): Status of reset; 0” = “No”

  10.  Short Address Missing (integer): Missing short address? “0” = “No”

  11.  Power failure (integer): Status since power failure; “0” = “No”; “RESET” or an arc power control command has been received since last power-on.


Actions#

Report Device Online#

DyNet 1: Physical OpCode 0 (0x00)
DyNet 2: DyNet 1 is always used for this action

This Action sends a Device Identify.

Request Device Online#

DyNet 1: Physical OpCode 128 (0x80)
DyNet 2: DyNet 1 is always used for this action

This Action sends an OpCode to the DyNet Network requesting the online status of the device matching Device code and Box number.

The values / variables this Action uses are:

  1.  Device code (integer): Specified affected Device code.

  2.  Box number (integer): Specified affected Box number.

Set Area to User Preset#

DyNet 1: OpCodes*
1 (0x01), 2 (0x02), 3 (0x03), 4 (0x04)
10 (0x0A), 11 (0x0B), 12 (0x0C), 13 (0x0D)
DyNet 2: OpCode 1 (0x01)

*The OpCode for this Trigger is variable as it specifies the Preset number, please see the Further Notes section at the bottom for more details.

This Action sets an Area of the DyNet Network to a specified user Preset.

The values / variables this Action uses are:

  1.  Area (integer): Specified affected Area of the DyNet Network.

  2.  Preset (integer): Specified Preset for the given Area.

  3.  Fade time (seconds as integer): Time over which the change to the specified Preset will occur, usually set to 0.

Set Area Level#

DyNet 1: OpCode 121 (0x79)
DyNet 2: OpCode 16 (0x10) SubOpCode 2 (0x02)

This Action sets an Area of the DyNet Network to a given level.

The values / variables this Action uses are:

  1.  Area (integer): Specified affected Area of the DyNet Network.

  2.  Level (percentage as integer): Level to be set for the specified Area.

  3.  Fade time (seconds as integer): Time over which the change to the specified level will occur, usually set to 0.

Fade Channel to Level (seconds)#

DyNet 1: OpCode 114 (0x72)
DyNet 2: OpCode 16 (0x10) SubOpCode 2 (0x02)

This Action sets a level for a Channel within an Area of the DyNet Network, the Fade Time is specified in seconds.

The values / variables this Action uses are:

  1.  Area (integer): Specified affected Area of the DyNet Network.

  2.  Channel (integer): Specified affected Channel for the given Area.

  3.  Level (percentage as integer): Level to be set for the specified Channel, usually set to 100.

  4.  Fade time (seconds as integer): Time over which the change to the specified level will occur, usually set to 0.

Fade Channel to Level (minutes)#

DyNet 1: OpCode 115 (0x73)
DyNet 2: OpCode 16 (0x10) SubOpCode 2 (0x02)

This Action sets the level for a Channel within an Area of the DyNet Network, the Fade Time is specified in minutes.

The values / variables this Action uses are:

  1.  Area (integer): Specified affected Area of the DyNet Network.

  2.  Channel (integer): Specified affected Channel for the given Area.

  3.  Level (percentage as integer): Level to be set for the specified Channel, usually set to 100.

  4.  Fade time (minutes as integer): Time over which the change to the specified level will occur, usually set to 0.

Set Channel n to Level with Fade#

DyNet 1: OpCodes*
128 (0x80), 129 (0x81), 130 (0x82), 131 (0x83)
DyNet 2: OpCode 16 (0x10) SubOpCode 2 (0x02)

*The specific OpCode used is calculated internally and depends on the channel number.

This Action sets a level for a Channel within an Area of the DyNet Network, the Fade Time is specified in seconds.

The values / variables this Action uses are:

  1.  Area (integer): Specified affected Area of the DyNet Network.

  2.  Channel (integer): Specified affected Channel for the given Area.

  3.  Level (percentage as integer): Level to be set for the specified Channel, usually set to 100.

  4.  Fade time (seconds as integer): Time over which the change to the specified level will occur, usually set to 0.

Increment Area Level#

DyNet 1: OpCode 6 (0x06)
DyNet 2: Not yet supported

This Action increments the level for an Area of the DyNet Network.

The values / variables this Action uses are:

  •  Area (integer): Specified affected Area of the DyNet Network.

  •  Fade time (seconds as integer): Time over which the change to the specified level will occur, usually set to 0.

Decrement Area Level#

DyNet 1: OpCode 5 (0x05)
DyNet 2: Not yet supported

This Action decrements the level of an Area of the DyNet Network.

The values / variables this Action uses are:

  •  Area (integer): Specified affected Area of the DyNet Network.

  •  Fade time (seconds as integer): Time over which the change to the specified level will occur, usually set to 0.

Set Area to Off#

DyNet 1: OpCode 4 (0x04)
DyNet 2: Not yet supported

This Action turns off an Area of the DyNet Network.

The values / variables this Action uses are:

  •  Area (integer): Specified affected Area of the DyNet Network.

  •  Fade time (seconds as integer): Time over which the turning off the Area will occur, usually set to 0.

Request Channel Level#

DyNet 1: OpCode 97 (0x61)
DyNet 2: OpCode 34 (0x22) SubOpCode 0 (0x00)

This Action sends an OpCode to the DyNet Network requesting information about the current level of a specified Channel within an Area.

The values / variables this Action uses are:

  1.  Area (integer): Specified affected Area of the DyNet Network.

  2.  Channel (integer): Specified affected Channel for the given Area.

Channel Level Report#

DyNet 1: OpCode 96 (0x60)
DyNet 2: OpCode 35 (0x23) SubOpCode 0 (0x00)

This Action sends an OpCode to the DyNet Network giving information about the current level of a specified Channel within an Area.

The values / variables this Action uses are:

  1.  Area (integer): Specified affected Area of the DyNet Network.

  2.  Channel (integer): Specified affected Channel for the given Area.

  3.  Level (percentage as integer): The current level for the Channel.

Request Current Preset#

DyNet 1: OpCode 99 (0x63)
DyNet 2: OpCode 32 (0x20) SubOpCode 0 (0x00)

This Action sends an OpCode to the DyNet Network requesting information about the current Preset being used for a specified Area.

The values / variables this Action uses are:

  1.  Area (integer): Specified affected Area of the DyNet Network.

Report Current Preset#

DyNet 1: OpCode 98 (0x62)
DyNet 2: OpCode 33 (0x21) SubOpCode 0 (0x00)

This Action sends an OpCode to the DyNet Network giving information about the current Preset being used for a specified Area.

The values / variables this Action uses are:

  1.  Area (integer): Specified affected Area of the DyNet Network.

  2.  Preset (integer): Specified Preset for the given Area.

Request DALI Ballast Status#

DyNet 1: Physical OpCode 76 (0x4C) SubOpCode 1 (0x01)
DyNet 2: Not yet supported

This Action sends an OpCode to the DyNet Network requesting information about the current DALI ballast status for the specified Channel on device matching Device code and Box number.

The values / variables this Action uses are:

  1.  Device code (integer): Specified affected Device code.

  2.  Box number (integer): Specified affected Box number.

  3.  Channel (integer): Specified affected Channel.

This Action sends an OpCode to the DyNet Network requesting information about the current DALI ballast status for the specified Channel on device matching Device code and Box number.

The values / variables this Action uses are:

  1.  Device code (integer): Specified affected Device code.

  2.  Box number (integer): Specified affected Box number.

  3.  Channel (integer): Specified affected Channel.

Custom Logical Command#

This Action allows the user to pass any OpCode to the DyNet Network. To use this requires that an understanding of the DyNet Message Protocol, and the desired DyNet Command / OpCode you wish to send. Please refer to the DyNet Reference for more information on OpCodes.

Of the 8 bytes required to send a DyNet Command, 3 have default / automatically calculated values:

  •  1st Byte (Byte 0): this is the Logical Address or Sync Byte and has a default value of 28 (0x1C).

  •  7th Byte (Byte 6): this is the Join Code and has a default value of 255 (0xFF).

  •  8th Byte (Byte 7): this is the Checksum for the packet and is automatically calculated by this IO Module.

The remaining 5 bytes are the values / variables this Action uses:

  1.  Area: 2nd Byte (Byte 1) - this specifies the Area affected by the DyNet Command, it can be set to either be the Instance Default specified one, or any desired (integer) value.

  2.  Data 1: 3rd Byte (Byte 2) - see below*

  3.  OpCode: 4th Byte (Byte 3) - this is the OpCode byte, specify the desired OpCode (integer) for the command you wish to send.

  4.  Data 2: 5th Byte (Byte 4) - see below*

  5.  Data 3: 6th Byte (Byte 5) - see below*

* These variables carry different information depending on the OpCode being sent, please look these up. Note They can take any integer value including zero, or simply be left as 0 (Not Used) since some OpCodes do not use some of these bytes.


Support#

If you encounter any issues with this IO Module, please contact our support team.

Further Notes#

The OpCode to specify the Preset number works a little differently as it can take multiple values and works together with the Preset Bank. The Preset OpCode specifies the chosen Preset number within the specified Preset Bank of the full DyNet Command. There are only 8 possible Preset OpCodes: 0-3 and 10-13, and the Preset Bank will determine what Preset number each of these OpCodes relates to. Preset Bank = 0 holds Preset numbers 1 through 8, and Preset Bank = 1 holds Preset numbers 9 through 16, and so on. Hence the two need to be specified together to obtain the desired Preset number: a Preset OpCode = 12 and Preset Bank = 2 gives Preset number 23 (P23 for short). Below is a summary of these:

DyNet 1
OpCode
Preset Bank
0 1 2 3
(P1-8) (P9-16) (P17-24) (P25-32)
0 (0x00) P1 P9 P17 P25
1 (0x01) P2 P10 P18 P26
2 (0x02) P3 P11 P19 P27
3 (0x03) P4 P12 P20 P28
10 (0x0A) P5 P13 P21 P29
11 (0x0B) P6 P14 P22 P30
12 (0x0C) P7 P15 P23 P31
13 (0x0D) P8 P16 P24 P32