Skip to main content
Version: 4.1

ComelitFire

Comelit Logifire 41CPE118 and 41CPE212 are addressable fire detection panels, with up to 8 loops of 250 devices each and up to 200 zones.

The integration with HSYCO is accomplished via a standard MODBUS TCP/IP connection. This I/O Server was developed following the Comelit documentation "Description of the modbus registers - Logifire 41CPE118, 41CPE212", version 1.10.1, and tested with panel firmware 1.1.9.

note

Panel firmware 1.1.9 or later is required.

Communication​

The panel must be connected to the ethernet network and a valid IP address must be assigned to it. The panel listens to TCP port 502 for MODBUS requests. Please refer to the panel manual for detailed instructions about the network configuration.

The MODBUS base address of the panel must be set to 0.

The panel closes the connection after every single MODBUS command, so the time needed to read the panel status is dominated by the network round trip time rather than by the number of registers read. To keep each polling cycle short on large systems, the I/O Server reads the panel in blocks, within a time budget per cycle, and completes the reading of the loop devices over the following cycles.

HSYCO Configuration​

Add a ComelitFire I/O Server in the I/O Servers section of the Settings and set its parameters:

Communication​

  • Address: IP address of the Comelit Logifire panel
  • Port: TCP/IP port for MODBUS communication (default 502)

High Availability​

  • Shutdown when inactive: defaults to true.

Options​

IDDefaultValuesDescription
guitruetrueenable the UISET actions
falsedisable UI support
startupeventstruetruegenerate IO events also during the driver’s start-up phase
falsestart generating events only after HSYCO is aligned with the current status of the system, that is after the first complete read of the panel status, zones and loop devices
unitid10 ... 255MODBUS unit id of the panel
zonesnumber2001 ... 200set to the highest zone number configured in the panel
devicesnumber2501 ... 250set to the highest device address configured on any loop. Devices are not necessarily at contiguous addresses, so the value must be the highest address in use, not the number of devices. E.g. if loop 1 has devices at addresses 2, 3 and 65, and loop 2 has a device at address 10, set devicesnumber = 65
detectorstruetrueread the status of the loop devices
falsedo not read the status of the loop devices. As the device status is the only information that reports which devices are present, the inputsoutputs, dust and temperature options are ignored and handled as false
inputsoutputstruetrueread the status of the inputs and outputs of the loop devices
falsedo not read the inputs and outputs
dustfalsetrueread the dust level of the optical detectors
falsedo not read the dust level
temperaturefalsetrueread the temperature of the thermal and multi-criteria detectors
falsedo not read the temperature
pollinterval2500100 ... 30000time interval in milliseconds added at the end of each driver loop cycle, when there are no pending reads. At each cycle the I/O Server checks if the panel status changed: the panel requires this check every 3 seconds, and the time taken by the check itself adds to this interval, so values above the default are not recommended. While reading the loop devices the check is repeated at this same interval, limited to 2500 ms
readpause00 ... 1000time interval in milliseconds added after each MODBUS read. Use this parameter carefully: on systems with many loops, setting a value close to 1000 ms may significantly extend the time needed to read the whole system
refreshinterval605 ... 3600time interval in seconds between two complete reads of the panel status, zones and loop devices, performed even when the panel does not report any change
slowinterval60030 ... 86400time interval in seconds between two reads of the dust level and temperature
maxlooptime50001000 ... 15000maximum time in milliseconds spent reading the panel in each driver loop cycle. The reads that do not fit in a cycle are continued in the following ones
blocksize501 ... 125maximum number of MODBUS registers requested with a single read
swapbytesfalsetrueswap the two bytes of each MODBUS register. Only to be used if the panel returns the registers with the least significant byte first, a condition reported in the log as an unexpected value of register 596
falsestandard MODBUS byte order
note

When the panel reports a status change, the I/O Server reads the panel status and all the zones first, before continuing with the loop devices. The connection datapoint is set to online as soon as the panel status and all the zones have been read, while the loop devices of a large system may take a few more cycles to be read for the first time.

After a communication error the connection datapoint is set to offline, and it goes back to online only after the panel status and all the zones have been read again. A complete read of the panel always follows.

note

All the zones up to zonesnumber and all the devices found on the loops generate datapoints: a fully loaded panel, with 8 loops of 250 devices and 200 zones, generates around 29000 datapoints. Use the zonesnumber, devicesnumber, inputsoutputs, dust and temperature options to limit them to what is actually needed.

Datapoints​

In the following table, <n> is the zone number (1 ... 200), <l> the loop number (1 ... 8), <d> the device address on the loop (1 ... 250) and <c> the input or output channel (1 ... 4).

Loop device datapoints are only generated for the devices that are present in the panel configuration. If a device, or its whole loop, is no longer reported by the panel, its status datapoint is set to 0, its description to "not present" and its alarm, fault and disabled datapoints to 0, while its inputs, outputs, dust and temperature datapoints keep their last value.

The writable datapoints only accept the values listed in the table: commands with any other value, or addressed to a zone, loop, device or channel out of range, are ignored and reported in the log.

IDValueR/WDescription
connectiononlineRconnection established
offlineRHSYCO can't connect to the panel
version<n>Rpanel version, as a decimal number
status0 ... 8Rpanel status numeric value. 0=idle, 1=scanning, 2=system error, 3=saving, 4=night mode, 5=day mode, 6=scanning, 7=first step delay, 8=second step delay
status.descriptionidleRpanel idle
scanningRpanel scanning
system errorRpanel in system error
savingRpanel saving the configuration
night modeRpanel in night mode
day modeRpanel in day mode
first step delayRfirst step delay running
second step delayRsecond step delay running
unknownRstatus value not documented
command.reset1Wpanel reset
command.evacuate1Wevacuate
command.silence.buzzer1Wsilence buzzer
command.silence.sounder1Wsilence sounders
command.delay.override1Wdelay override
command.reset.all1Wreset all
command.evacuate.all1Wevacuate all
command.silence.buzzer.all1Wsilence buzzer all
command.silence.sounder.all1Wsilence sounders all
0Rthe command datapoints are set to 1 when the panel has accepted the command, and back to 0 after 1 second
daymode1Wenable day mode
0Wdisable day mode. The current mode is reported by the status datapoint
sounder.on0 / 1Rsounders on
buzzer.on0 / 1Rbuzzer on
sounder.delay.on0 / 1Rsounder delay on
sounder.delay.started0 / 1Rsounder delay started
firebrigade.on0 / 1Rfire brigade output on
firebrigade.delay.on0 / 1Rfire brigade output delay on
firebrigade.delay.started0 / 1Rfire brigade output delay started
fireprotection.on0 / 1Rfire protection output on
fireprotection.delay.on0 / 1Rfire protection output delay on
fireprotection.delay.started0 / 1Rfire protection output delay started
fault.output.on0 / 1Rfault output on
zone.disabled0 / 1Rat least one zone disabled
sounder.disabled0 / 1Rsounder output disabled
1Wdisable sounder output
0Wenable sounder output
firebrigade.disabled0 / 1Rfire brigade output disabled
1Wdisable fire brigade output
0Wenable fire brigade output
fireprotection.disabled0 / 1Rfire protection / extinguish output disabled
1Wdisable fire protection / extinguish output
0Wenable fire protection / extinguish output
fault.output.disabled0 / 1Rfault output disabled
1Wdisable fault output
0Wenable fault output
common.fire0 / 1Rcommon fire
common.prealarm0 / 1Rcommon prealarm
common.fault0 / 1Rcommon fault
common.system.fault0 / 1Rcommon system fault
common.disable0 / 1Rcommon disable
common.test0 / 1Rcommon test
common.sounder.fault0 / 1Rcommon sounder fault
common.fireprotection.fault0 / 1Rcommon fire protection fault
common.firebrigade.fault0 / 1Rcommon fire brigade fault
system.silence0 / 1Rsystem silence
evacuate0 / 1Revacuate
ac.loss0 / 1RAC power loss
battery.low0 / 1Rbattery low
battery.loss0 / 1Rbattery loss
led.fire.alarmoff / on / blinkRfire alarm LED. All the LED datapoints are set to "unknown" if the panel returns a value that is not documented
led.prealarmoff / on / blinkRprealarm LED
led.general.faultoff / on / blinkRgeneral fault LED
led.system.faultoff / on / blinkRsystem fault LED
led.system.silenceoff / on / blinkRsystem silence LED
led.delayoff / on / blinkRdelay LED
led.disableoff / on / blinkRdisable LED
led.testoff / on / blinkRtest LED
led.technicaloff / on / blinkRtechnical LED
led.fire.confirmedoff / on / blinkRfire confirmed LED
led.fault.output.disabledoff / on / blinkRfault output disabled LED
led.fireprotection.confirmedoff / on / blinkRfire protection confirmed LED
led.fireprotection.faultoff / on / blinkRfire protection fault LED
zone.<n>.status0,1,2,5Rzone <n> status numeric value. 0=normal, 1=prealarm, 2=alarm, 5=fault. Any other value returned by the panel is reported as is, with the normal, prealarm, alarm and fault datapoints all set to 0
zone.<n>.normal0Rzone <n> is not in normal state
1Rzone <n> is in normal state
zone.<n>.prealarm0Rzone <n> is not in prealarm
1Rzone <n> is in prealarm
zone.<n>.alarm0Rzone <n> is not in alarm
1Rzone <n> is in alarm
zone.<n>.fault0Rzone <n> is not faulty
1Rzone <n> is faulty
zone.<n>.disabled0Rzone <n> is enabled
1Rzone <n> is disabled
1Wdisable zone <n>
0Wenable zone <n>
loop.<l>.status0 ... 4Rloop <l> status numeric value. 0=not present, 1=normal, 2=loop fault, 3=type error, 4=new device
loop.<l>.descriptionnot presentRno loop present at this slot
normalRnormal operation of the loop
loop faultRloop fault
type errorRa device on the loop has a wrong type selected
new deviceRa new device on the loop has not been saved
unknownRstatus value not documented
loop.<l>.devices<n>Rnumber of devices connected to loop <l>
loop.<l>.device.<d>.status<n>Rdevice status numeric value, see the description datapoint below
loop.<l>.device.<d>.descriptionnot presentRthe device was present and is no longer reported by the panel (0x00)
newRnew device, not active (0x01)
alarmRalarm or prealarm (0x02)
device faultRdevice fault (0x03)
type errorRtype error (0x04)
double addressRdouble address (0x05)
normalRnormal (0x06)
chamber faultRchamber fault (0x07)
clean me nowRthe detector needs cleaning (0x08)
drift alertRdrift alert (0x09)
signal blockageRsignal blockage (0x0A)
hi signalRhigh signal (0x0B)
input faultRinput fault (0x0C)
output faultRoutput fault (0x0D)
power faultRpower fault (0x0F)
gas alarmRgas alarm (0x10)
panic alarmRpanic alarm (0x11)
input/output faultRinput/output fault (0x12)
output type errorRoutput type error (0x13)
disabledRdevice disabled (0x80)
unknownRstatus value not documented
loop.<l>.device.<d>.alarm0Rdevice not in alarm
1Rdevice in alarm, prealarm, gas alarm or panic alarm. The panel reports alarm and prealarm of a device with the same value
loop.<l>.device.<d>.fault0Rdevice not faulty
1Rdevice in device fault, type error, double address, chamber fault, input fault, output fault, power fault, input/output fault or output type error. The clean me now, drift alert, signal blockage and hi signal conditions are only reported by the status and description datapoints
loop.<l>.device.<d>.disabled0Rdevice enabled
1Rdevice disabled
1Wdisable detector
0Wenable detector
loop.<l>.module.<d>.disabled1Wdisable module
0Wenable module
loop.<l>.device.<d>.input.<c>normalRinput <c> in normal condition
activeRinput <c> active
breakRinput <c> line break
shortRinput <c> line short circuit
loop.<l>.device.<d>.output.<c>normalRoutput <c> in normal condition
activeRoutput <c> active
breakRoutput <c> line break
shortRoutput <c> line short circuit
1Wturn output <c> on. Channel 1 is the sounder channel
0Wturn output <c> off
loop.<l>.device.<d>.dust<n>Rdust level of the optical detector, in percent. Only with dust = true
loop.<l>.device.<d>.temperature<n>Rtemperature of the thermal or multi-criteria detector, in °C. Negative values are read as signed 16 bit numbers. Only with temperature = true
note

Detectors and modules are enabled and disabled with two different MODBUS commands. The loop.<l>.device.<d>.disabled datapoint sends the command for detectors, while loop.<l>.module.<d>.disabled sends the command for modules. The module command is write only.

The value of the module command, as defined by the panel documentation, does not identify the module in a unique way for device addresses from 100 up: for instance loop 1 device 150 and loop 2 device 50 result in the same command. Verify the effect of loop.<l>.module.<d>.disabled on the panel before using it with these addresses.

User Interface​

UISET Actions​

IDAttributeValueSet to
connectionvisibletruewhen datapoint connection = offline
falsewhen datapoint connection = online
<datapoint_id>.1visibletruewhen datapoint with ID <datapoint_id> has value '1'. Applies to the normal, prealarm, alarm, fault and disabled datapoints of zones and loop devices, and to the zone.disabled datapoint
falsewhen datapoint with ID <datapoint_id> has value '0'
<datapoint_id>.0visibletruewhen datapoint with ID <datapoint_id> has value '0'. Same datapoints as above
falsewhen datapoint with ID <datapoint_id> has value '1'

Release Notes​

4.1.0​

  • initial release

Comelit and Logifire are registered trademarks of Comelit Group S.p.A.