<?xml version="1.0" encoding="utf-8"?>
<Templates format="2" protocolVersion="83">
  <Template id="a3f7c2d1-84b5-4e9a-b6d3-2c1f8e5a7b04" revision="1.0">
    <SuggestedCCUParameters>
      <Baudrate>9600</Baudrate>
      <Parity>None</Parity>
      <StopBits>One</StopBits>
      <DataBits>8</DataBits>
      <UseAsciiCommunication>False</UseAsciiCommunication>
      <DelayBetweenRequests>-1</DelayBetweenRequests>
      <ReadWriteTimeout>1000</ReadWriteTimeout>
    </SuggestedCCUParameters>
    <Name>Eliwell EWRC 300/500/5000 NT</Name>
    <CcuModel>ModbusRtuCCU</CcuModel>
    <Producer>Eliwell</Producer>
    <Model>EWRC 300/500/5000 NT</Model>
    <Description>Regulátor chladenia Eliwell EWRC NT — teplotné sondy, stavové bity, príkazy a alarmové limity cez Modbus RTU.</Description>
    <Category>5</Category>
    <ImportParameters>
      <Parameter>
        <Id>SlaveId</Id>
        <Name>Modbus Slave ID</Name>
        <Value>1</Value>
      </Parameter>
    </ImportParameters>
    <Module>
      <Name>Eliwell EWRC NT</Name>
      <Id>-1</Id>
      <Model>ModbusModule</Model>
      <DeviceProperties>
        <SlaveId>$[SlaveId]</SlaveId>
        <MaxPrefetchGroupSize>16</MaxPrefetchGroupSize>
        <PrefetchModeId>0</PrefetchModeId>
        <ReadScript>var alarmReg85 := MODBUSR(H, 33085, UInt16);
var alarmReg84 := MODBUSR(H, 33084, UInt16);
IF(GETBIT(alarmReg85, 5))
ADDERROR(0, &quot;HA1: Prekročenie horného limitu teploty sondy 1&quot;);
END
IF(GETBIT(alarmReg85, 6))
ADDERROR(1, &quot;LA1: Prekročenie dolného limitu teploty sondy 1&quot;);
END
IF(GETBIT(alarmReg85, 4))
ADDERROR(2, &quot;EAL: Externý alarm&quot;);
END
IF(GETBIT(alarmReg85, 7))
ADDERROR(3, &quot;OPd: Alarm — otvorené dvere&quot;);
END
IF(GETBIT(alarmReg85, 1))
ADDERROR(4, &quot;E1: Chyba sondy 1&quot;);
END
IF(GETBIT(alarmReg85, 2))
ADDERROR(5, &quot;E2: Chyba sondy 2&quot;);
END
IF(GETBIT(alarmReg84, 5))
ADDERROR(6, &quot;E3: Chyba sondy 3&quot;);
END
IF(GETBIT(alarmReg84, 7))
ADDERROR(7, &quot;PA: Alarm tlakového spínača&quot;);
END
IF(GETBIT(alarmReg84, 4))
ADDERROR(8, &quot;ALd: Únik chladiva&quot;);
END
IF(GETBIT(alarmReg84, 6))
ADDERROR(9, &quot;E10: Chyba hodín&quot;);
END</ReadScript>
        <ServiceActionsScripts>[{&quot;ActionDefinition&quot;:{&quot;Name&quot;:&quot;Zapnúť zariadenie&quot;,&quot;NumericParameters&quot;:[],&quot;BoolParameters&quot;:[],&quot;EnumParameters&quot;:[]},&quot;Script&quot;:&quot;MODBUSW(H, 33057, UInt16, 64)&quot;},{&quot;ActionDefinition&quot;:{&quot;Name&quot;:&quot;Vypnúť zariadenie&quot;,&quot;NumericParameters&quot;:[],&quot;BoolParameters&quot;:[],&quot;EnumParameters&quot;:[]},&quot;Script&quot;:&quot;MODBUSW(H, 33057, UInt16, 128)&quot;},{&quot;ActionDefinition&quot;:{&quot;Name&quot;:&quot;Zapnúť úsporný režim&quot;,&quot;NumericParameters&quot;:[],&quot;BoolParameters&quot;:[],&quot;EnumParameters&quot;:[]},&quot;Script&quot;:&quot;MODBUSW(H, 33057, UInt16, 4)&quot;},{&quot;ActionDefinition&quot;:{&quot;Name&quot;:&quot;Vypnúť úsporný režim&quot;,&quot;NumericParameters&quot;:[],&quot;BoolParameters&quot;:[],&quot;EnumParameters&quot;:[]},&quot;Script&quot;:&quot;MODBUSW(H, 33057, UInt16, 8)&quot;},{&quot;ActionDefinition&quot;:{&quot;Name&quot;:&quot;Ručné rozmrazovanie&quot;,&quot;NumericParameters&quot;:[],&quot;BoolParameters&quot;:[],&quot;EnumParameters&quot;:[]},&quot;Script&quot;:&quot;MODBUSW(H, 33058, UInt16, 2)&quot;},{&quot;ActionDefinition&quot;:{&quot;Name&quot;:&quot;Potvrdenie alarmu&quot;,&quot;NumericParameters&quot;:[],&quot;BoolParameters&quot;:[],&quot;EnumParameters&quot;:[]},&quot;Script&quot;:&quot;MODBUSW(H, 33058, UInt16, 1)&quot;}]</ServiceActionsScripts>
      </DeviceProperties>
      <Devices>
        <Device>
          <Name>Teplota – sonda 2</Name>
          <Id>-2</Id>
          <Model>ModbusTemperatureSensor</Model>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>15000</InternalPollInterval>
            <ReadTemperature>MODBUSR(H, 347, Int16) / 10</ReadTemperature>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>Stav zariadenia</Name>
          <Id>-3</Id>
          <Model>ModbusSwitch</Model>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>5000</InternalPollInterval>
            <IsReadOnly>True</IsReadOnly>
            <OnStateIconId>60</OnStateIconId>
            <OffStateIconId>61</OffStateIconId>
            <OnStateName>Zapnuté</OnStateName>
            <OffStateName>Vypnuté</OffStateName>
            <ReadSwitchState>GETBIT(MODBUSR(H, 33089, UInt16), 1)</ReadSwitchState>
            <ReadScript>var stav := MODBUSR(H, 33089, UInt16);
var komp := MODBUSR(H, 33092, UInt16);
IF(GETBIT(stav, 0))
ADDINFO(0, &quot;Úsporný režim aktívny&quot;);
END
IF(GETBIT(stav, 2))
ADDINFO(1, &quot;Osvetlenie zapnuté&quot;);
END
IF(GETBIT(stav, 4))
ADDINFO(2, &quot;Pomocný výstup aktívny&quot;);
END
IF(GETBIT(komp, 3))
ADDINFO(3, &quot;Kompresor 1 beží&quot;);
END
IF(GETBIT(komp, 4))
ADDINFO(4, &quot;Rozmrazovanie 1 aktívne&quot;);
END</ReadScript>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>Teplotný setpoint</Name>
          <Id>-4</Id>
          <Model>ModbusThermostat</Model>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>5000</InternalPollInterval>
            <IsReadOnly>False</IsReadOnly>
            <ReadCurrentTemperature>MODBUSR(H, 345, Int16) / 10</ReadCurrentTemperature>
            <ReadDesiredTemperature>MODBUSR(A, 16386, Int16)</ReadDesiredTemperature>
            <WriteDesiredTemperature>MODBUSWNE(A, 16386, Int16, Se)</WriteDesiredTemperature>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>Alarmný limit – maximum (HAL)</Name>
          <Id>-5</Id>
          <Model>ModbusVariable</Model>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>30000</InternalPollInterval>
            <IsReadOnly>False</IsReadOnly>
            <ReadState>MODBUSR(A, 16418, Int16) / 10</ReadState>
            <WriteState>MODBUSWNE(A, 16418, Int16, Va * 10)</WriteState>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>Alarmný limit – minimum (LAL)</Name>
          <Id>-6</Id>
          <Model>ModbusVariable</Model>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>30000</InternalPollInterval>
            <IsReadOnly>False</IsReadOnly>
            <ReadState>MODBUSR(A, 16420, Int16) / 10</ReadState>
            <WriteState>MODBUSWNE(A, 16420, Int16, Va * 10)</WriteState>
          </DeviceProperties>
        </Device>
        <Device>
          <Name>Alarmný limit – minimum (LAL)</Name>
          <Id>-6</Id>
          <Model>ModbusVariable</Model>
          <DeviceProperties>
            <DeviceType>0</DeviceType>
            <InternalPollInterval>30000</InternalPollInterval>
            <IsReadOnly>False</IsReadOnly>
            <ReadState>MODBUSR(A, 16420, Int16) / 10</ReadState>
            <WriteState>MODBUSWNE(A, 16420, Int16, Va * 10)</WriteState>
          </DeviceProperties>
        </Device>
      </Devices>
    </Module>
  </Template>
</Templates>
