Regin Corrigo E selected inputs

Detaljer

Typ
Drivrutin
Upplaggd av
Ove Jansson, Abelko Innovation
Version
1
Uppdaterad
2013-08-28
Skapad
2013-08-28
Kategori
Kyla, Modbus, Värme, Ventilation
Visningar
3008

Beskrivning

Drivrutin

Bruksanvisning

Hur man installerar typdefinitionerna och driftsätter modulerna finns beskrivet i användarmanualen, kapitel 18.7.

Juridisk information

Alla skript tillhandahålls i befintligt skick och all användning sker på eget ansvar. Felaktig använding kan leda till skadad eller förstörd utrustning.

Skript kod

% History: 2010-02-19 Timeout ändrad till 2 sekunder NÖDVÄNDIGT !!!
% Neds adjustements to work properly 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Device definition for CORRIGO E Selected inputs
%
% Settings module:
%       Parity:     None
%       Baud:   9600
%       Mode:   RTU
%
% Note! Telegram for reading Selected inputs
%
% FIXA NEGATIV HANTERING TEMPERATURER
%
%
% Author:  Peter Widetun, ABELKO AB Luleå
% History: 2008-10-14 inital version
%
DEVICETYPE CorrigoSelectI NAMED "CorrigoE Input" TYPEID 21280 IS

  PARAMETER
    Id         : "Adress";

  PUBLIC
   % Holding registers (function 3)
    HR1      : "Börv. Tilluft"  ["°C"]   ;  %R,3 1   18°C Setpoint supply air
   %HR2      : "Curve1_X1"      ["°C"]   ;  %R,3 2   -20°C Outdoortemp 1 first curvepoint
   %HR3      : "Curve1_X2"      ["°C"]   ;  %R,3 3   -15°C Outdoortemp 2
   %HR4      : "Curve1_X3"      ["°C"]   ;  %R,3 4   -10°C Outdoortemp 3
   %HR5      : "Curve1_X4"      ["°C"]   ;  %R,3 5   -5°C  Outdoortemp 4
   %HR6      : "Curve1_X5"      ["°C"]   ;  %R,3 6   0°C   Outdoortemp 5
   %HR7      : "Curve1_X6"      ["°C"]   ;  %R,3 7   5°C   Outdoortemp 6
   %HR8      : "Curve1_X7"      ["°C"]   ;  %R,3 8   10°C  Outdoortemp 7
   %HR9      : "Curve1_X8"      ["°C"]   ;  %R,3 9   15°C  Outdoortemp 8
   %HR10     : "Curve1_Y1"      ["°C"]   ;  %R,3 10  25°C  Setpoint 1 first curvepoint
   %HR11     : "Curve1_Y2"      ["°C"]   ;  %R,3 11  24°C  Setpoint 2
   %HR12     : "Curve1_Y3"      ["°C"]   ;  %R,3 12  23°C  Setpoint 3
   %HR13     : "Curve1_Y4"      ["°C"]   ;  %R,3 13  23°C  Setpoint 4
   %HR14     : "Curve1_Y5"      ["°C"]   ;  %R,3 14  22°C  Setpoint 5
   %HR15     : "Curve1_Y6"      ["°C"]   ;  %R,3 15  20°C  Setpoint 6
   %HR16     : "Curve1_Y7"      ["°C"]   ;  %R,3 16  18°C  Setpoint 7
   %HR17     : "Curve1_Y8"      ["°C"]   ;  %R,3 17  18°C  Setpoint 8
    HR18     : "Börv. Frånluft" ["°C"]   ;  %R,3 18  21°C  Setpoint exhaust air
   %HR19     : "RoomSetPoint"   ["°C"]   ;  %R,3 19  21°C Room setpoint
   %HR20     : "NeedHeatStart"  ["°C"]   ;  %R,3 20  15°C Room temp start intermittent heating
   %HR21     : "NeedHeatStop"   ["°C"]   ;  %R,3 21  21°C Room temp stop  intermittent heating
   %HR22     : "NeedCoolStart"  ["°C"]   ;  %R,3 22  30°C Room temp start intermittent cooling
   %HR23     : "NeedCoolStop"   ["°C"]   ;  %R,3 23  28°C Room temp stop  intermittent cooling
   %HR24     : "SAFullPress.SP" ["Pa"]   ;  %R,3 24  500Pa Setpoint full speed supply air
   %HR25     : "SAHalfPress.SP" ["Pa"]   ;  %R,3 25  250Pa Setpoint reduced speed supply air
   %HR26     : "EAFullPress.SP" ["Pa"]   ;  %R,3 26  500Pa Setpoint full speed exhaust air
   %HR27     : "EAHalfPress.SP" ["Pa"]   ;  %R,3 27  250Pa Setpoint reduced speed exhaust air
   %HR28     : "SAFullAirFlowSP"["m3/h"] ;  %R,3 28  2000 m3/h Setpoint full speed supply air.     Scale = 1
   %HR29     : "SAHalfAirFlowSP"["m3/h"] ;  %R,3 29  1000 m3/h Setpoint reduced speed supply air.  Scale = 1
   %HR30     : "EAFullAirFlowSP"["m3/h"] ;  %R,3 30  2000 m3/h Setpoint full speed exhaust air.    Scale = 1
   %HR31     : "EAHalfAirFlowSP"["m3/h"] ;  %R,3 31  1000 m3/h Setpoint reduced speed exhaust air. Scale = 1
   %HR32     : "CO2Setpoint"    ["ppm"]  ;  %R,3 32  1000ppm Setpoint CO2
   %HR33     : "FrostProtSPStop"["°C"]   ;  %R,3 33  25°C Setpoint frost protection, Stop
   %HR34     : "FrostProtPGain" ["°C"]   ;  %R,3 34  5° P-Gain frost protection when running (alarm limit+PGain)
   %HR35     : "DeIcingSP"      ["°C"]   ;  %R,3 35  -3° Setpoint de-icing temp
   %HR36     : "DeIcingHyst"    ["°C"]   ;  %R,3 36  1°C Hysteresis for stop of de-icing
   %HR37     : "HumiditySP2     ["%RH"]   ;  %R,3 37  50%RH Setpoint humidity room
   %HR38     : "HumidityMaxDuct"["%RH"]   ;  %R,3 38  80%RH Max limit humidity duct
   %HR39     : "HumidityHyst"   ["%RH"]   ;  %R,3 39  20%RH Hysteresis to start humidity control after stop max limitation
   %                                     ;  %
   %HR40     : "TimeDp0T1"      ["HH.MM"];  %R,3 40  Start time 1 Monday (HH.MM) 2 decimaler
   %HR41     : "TimeDp0T2"      ["HH.MM"];  %R,3 41  Stop  time 1 Monday
   %HR42     : "TimeDp0T3"      ["HH.MM"];  %R,3 42  Start time 2 Monday
   %HR43     : "TimeDp0T4"      ["HH.MM"];  %R,3 43  Stop  time 2 Monday
   %HR44     : "TimeDp1T1"      ["HH.MM"];  %R,3 44  Start time 1 Tuesday
   %HR45     : "TimeDp1T2"      ["HH.MM"];  %R,3 45  Stop  time 1 Tuesday
   %HR46     : "TimeDp1T3"      ["HH.MM"];  %R,3 46  Start time 2 Tuesday
   %HR47     : "TimeDp1T4"      ["HH.MM"];  %R,3 47  Stop  time 2 Tuesday
   %HR48     : "TimeDp2T1"      ["HH.MM"];  %R,3 48  Start time 1 Wedn.
   %HR49     : "TimeDp2T2"      ["HH.MM"];  %R,3 49  Stop  time 1 Wedn.
   %HR50     : "TimeDp2T3"      ["HH.MM"];  %R,3 50  Start time 2 Wedn.
   %HR51     : "TimeDp2T4"      ["HH.MM"];  %R,3 51  Stop  time 2 Wedn.
   %HR52     : "TimeDp3T1"      ["HH.MM"];  %R,3 52  Start time 1 Thursday
   %HR53     : "TimeDp3T2"      ["HH.MM"];  %R,3 53  Stop  time 1 Thursday
   %HR54     : "TimeDp3T3"      ["HH.MM"];  %R,3 54  Start time 2 Thursday
   %HR55     : "TimeDp3T4"      ["HH.MM"];  %R,3 55  Stop  time 2 Thursday
   %HR56     : "TimeDp4T1"      ["HH.MM"];  %R,3 56  Start time 1 Friday
   %HR57     : "TimeDp4T2"      ["HH.MM"];  %R,3 57  Stop  time 1 Friday
   %HR58     : "TimeDp4T3"      ["HH.MM"];  %R,3 58  Start time 2 Friday
   %HR59     : "TimeDp4T4"      ["HH.MM"];  %R,3 59  Stop  time 2 Friday
   %HR60     : "TimeDp5T1"      ["HH.MM"];  %R,3 60  Start time 1 Saturday
   %HR61     : "TimeDp5T2"      ["HH.MM"];  %R,3 61  Stop  time 1 Saturday
   %HR62     : "TimeDp5T3"      ["HH.MM"];  %R,3 62  Start time 2 Saturday
   %HR63     : "TimeDp5T4"      ["HH.MM"];  %R,3 63  Stop  time 2 Saturday
   %HR64     : "TimeDp6T1"      ["HH.MM"];  %R,3 64  Start time 1 Sunday
   %HR65     : "TimeDp6T2"      ["HH.MM"];  %R,3 65  Stop  time 1 Sunday
   %HR66     : "TimeDp6T3"      ["HH.MM"];  %R,3 66  Start time 2 Sunday
   %HR67     : "TimeDp6T4"      ["HH.MM"];  %R,3 67  Stop  time 2 Sunday
   %HR68     : "TimeDp7T1"      ["HH.MM"];  %R,3 68  Start time 1 Holiday
   %HR69     : "TimeDp7T2"      ["HH.MM"];  %R,3 69  Stop  time 1 Holiday
   %HR70     : "TimeDp7T3"      ["HH.MM"];  %R,3 70  Start time 2 Holiday
   %HR71     : "TimeDp7T4"      ["HH.MM"];  %R,3 71  Stop  time 2 Holiday    Start/stop 72-263
   %                                     ;  %
   %HR264    : "DateHp0From"    ["HH.MM"];  %R,3 264 Start date holiday 1 (MM.DD) 2 decimaler
   %HR265    : "DateHp0To"      ["HH.MM"];  %R,3 265 End   date holiday 1  holiday 2-23
   %HR310    : "DateHp23From"   ["HH.MM"];  %R,3 310 Start date holiday 24
   %HR311    : "DateHp23To"     ["HH.MM"];  %R,3 311 End   date holiday 24
   %                                     ;  %
   %HR312    : "SAPID_P"        ["°C"]   ;  %R,3 312  33 °C   P supply air control
   %HR313    : "SAPID_I"        ["sec"]  ;  %R,3 313 100 sec  I
   %HR314    : "EAPID_P"        ["°C"]   ;  %R,3 314 100 °C   P exhaust air control
   %HR315    : "EAPID_I"        ["sec"]  ;  %R,3 315 300 sec  I
   %HR316    : "RoomPID_P"      ["°C"]   ;  %R,3 316 100 °C   P room air control
   %HR317    : "RoomPID_I"      ["sec"]  ;  %R,3 317 300 sec  I
   %HR318    : "FrostPID_P"     ["°C"]   ;  %R,3 318 100 °C   P switchdown mode
   %HR319    : "FrostPID_I"     ["sec"]  ;  %R,3 319 100 sec  I
   %HR320    : "DeIcePID_P"     ["°C"]   ;  %R,3 320 100 °C   P de-icing
   %HR321    : "DeIcePID_I"     ["sec"]  ;  %R,3 321 100 sec  I
   %HR322    : "SAPID_P"        ["Pa"]   ;  %R,3 322 500 Pa   P pressure control SAF
   %HR323    : "SAPID_I"        ["sec"]  ;  %R,3 323  60 sec  I
   %HR324    : "EAPID_P"        ["Pa"]   ;  %R,3 324 500 Pa   P pressure control EAF
   %HR325    : "EAPID_I"        ["sec"]  ;  %R,3 325  60 sec  I
   %HR326    : "SAAirFlowPID_P" ["m3/h"] ;  %R,3 326 1000m3/h P flow control SAF
   %HR327    : "SAAirFlowPID_I" ["sec"]  ;  %R,3 327  60 sec  I
   %HR328    : "EAAirFlowPID_P" ["m3/h"] ;  %R,3 328 1000m3/h P flow control EAF
   %HR329    : "EAAirFlowPID_I" ["sec"]  ;  %R,3 329  60 sec  I
   %HR330    : "HumidityPID_P"  ["%RH"]  ;  %R,3 330 100 %RH  P humidity control
   %HR331    : "HumidityPID_I"  ["sec"]  ;  %R,3 331 300 sec  I
   %                                     ;  %
   %HR332    : "SAMaxDiff"      ["°C"]   ;  %R,3 332 10 °C Max control deviation supply air temp
   %HR333    : "SAHiAlarmLimit" ["°C"]   ;  %R,3 333 30 °C High alarm limit supply air temp
   %HR334    : "SALoAlarmLimit" ["°C"]   ;  %R,3 334 10 °C Low alarm limit supply air temp
   %HR335    : "EATempHigh"     ["°C"]   ;  %R,3 335 30 °C High alarm limit exhaust air temp
   %HR336    : "EATempLow"      ["°C"]   ;  %R,3 336 10 °C Low alarm limit exhaust air temp
   %HR337    : "RoomHighLimit"  ["°C"]   ;  %R,3 337 30 °C High alarm limit room air temp
   %HR338    : "RoomLowLimit"   ["°C"]   ;  %R,3 338 10 °C Low alarm limit room air temp
   %HR339    : "FrostLimit"     ["°C"]   ;  %R,3 339  7 °C Alarm limit frost protection
   %HR340    : "SAMaxDiffPress" ["Pa"]   ;  %R,3 340 50 Pa Max control deviation pressure SAF
   %HR341    : "EAMaxDiffPress" ["Pa"]   ;  %R,3 341 50 Pa Max control deviation pressure EAF
   %HR342    : "Effic.LowLimit" ["%"]    ;  %R,3 342 50 %  Low efficiency
   %                                     ;  %
   %% Alarm delay                        ;  %
   %HR343    : "Alarm13Delay"   ["min"]  ;  %I,3 343 30 min control deviation supply air temp
   %HR344    : "Alarm15Delay"   ["sec"]  ;  %I,3 344  5 sec high supply air temp
   %HR345    : "Alarm16Delay"   ["sec"]  ;  %I,3 345  5 sec low supply air temp
   %HR346    : "Alarm21Delay"   ["min"]  ;  %I,3 346 30 min high exhaust air temp
   %HR347    : "Alarm22Delay"   ["min"]  ;  %I,3 347 30 min low exhaust air temp
   %HR348    : "Alarm19Delay"   ["min"]  ;  %I,3 348 30 min high room air temp
   %HR349    : "Alarm20Delay"   ["min"]  ;  %I,3 349 30 min low alarm room air temp
   %HR350    : "Alarm25Delay"   ["sec"]  ;  %I,3 350  0 sec frost protection
   %HR351    : "Alarm31Delay"   ["min"]  ;  %I,3 351 30 min max control deviation pressure SAF
   %HR352    : "Alarm32Delay"   ["min"]  ;  %I,3 352 30 min max control deviation pressure EAF
   %HR353    : "Alarm26Delay"   ["min"]  ;  %I,3 353 30 min low efficiency
   %HR354    : "Alarm1Delay"    ["sec"]  ;  %I,3 354 120sec malfunction SAF
   %HR355    : "Alarm2Delay"    ["sec"]  ;  %I,3 355 120sec malfunction EAF
   %HR356    : "Alarm3Delay"    ["sec"]  ;  %I,3 356  5 sec malfunction P1-Heating
   %HR357    : "Alarm4Delay"    ["sec"]  ;  %I,3 357  5 sec malfunction P1-Cooling
   %HR358    : "Alarm5Delay"    ["sec"]  ;  %I,3 358 20 sec malfunction P1-Exchanger
   %HR359    : "Alarm6Delay"    ["sec"]  ;  %I,3 359 180sec filter monitoring
   %HR360    : "Alarm7Delay"    ["sec"]  ;  %I,3 360  5 sec flow switch
   %HR361    : "Alarm8Delay"    ["sec"]  ;  %I,3 361  0 sec frost protection
   %HR362    : "Alarm9Delay"    ["sec"]  ;  %I,3 362  0 sec frost protection digital input
   %HR363    : "Alarm10Delay"   ["sec"]  ;  %I,3 363  0 sec fire alarm
   %HR364    : "Alarm12Delay"   ["sec"]  ;  %I,3 364  0 sec external alarm
   %HR365    : "Alarm23Delay"   ["sec"]  ;  %I,3 365  0 sec electric heater
   %HR366    : "Alarm27Delay"   ["sec"]  ;  %I,3 366  5 sec sensor error
   %HR367    : "Alarm29Delay"   ["sec"]  ;  %I,3 367 20 sec rotation guard exchanger
   %                                     ;  %
    HR368    : "Driftläge"      [""]     ;  %X,3 368 2  Mode air unit:       0=Man.off 1=Man.on 2=Auto
   %HR369    : "SAPIDSelect"    [""]     ;  %X,3 369 2  Supply temp ctrl mode
   %HR370    : "SAPIDManSet"    ["%"]    ;  %R,3 370 0% Supply temp ctrl output if manual on mode
   %HR371    : "SAAutoMode"     [""]     ;  %X,3 371 3  Mode SAF:            0=Man.off 1=Man.half 2=Man.full 3=Auto
   %HR372    : "EAAutoMode"     [""]     ;  %X,3 372 3  Mode EAF
   %HR373    : "SAFrequenceMode"[""]     ;  %X,3 373 3  Mode SAF frequence   0=Man.off 1=Man.half 2=Man.Full 3=Auto
   %HR374    : "SAManual"       ["%"]    ;  %R,3 374 0% SAFreguencer ctrl output if manual mode
   %HR375    : "EAFrequenceMode"[""]     ;  %X,3 375 3  Mode EAF frequence   0=Man.off 1=Man.half 2=Man.Full 3=Auto
   %HR376    : "EAManual"       ["%"]    ;  %R,3 376 0% EAFreguencer ctrl output if manual mode
   %HR377    : "HeatCoilMode"   [""]     ;  %X,3 377 2  Mode Heating:        0=Off 1=Manual 2=Auto
   %HR378    : "HeatCoilManual" [""]     ;  %R,3 378 0  Heating ctrl output if manual mode
   %HR379    : "ExchCoilMode"   [""]     ;  %X,3 379 2  Mode Exchanger:      0=Off 1=Manual 2=Auto
   %HR380    : "ExchCoilManual" [""]     ;  %R,3 380 0  Exchanger ctrl output if manual mode
   %HR381    : "CoolCoilMode"   [""]     ;  %X,3 381 2  Mode Cooling:        0=Off 1=Manual 2=Auto
   %HR382    : "CoolCoilManual" [""]     ;  %R,3 382 0  Cooling controller output if manual mode
   %HR383    : "HumidityPIDMode"[""]     ;  %X,3 383 2  Mode Humidification: 0=Off 1=Manual 2=Auto
   %HR384    : "HumidityPIDMout"[""]     ;  %R,3 384 0  Humidification ctrl output if manual mode
   %HR385    : "HeatPumpMode"   [""]     ;  %X,3 385 2  Mode P1-Heating:     0=Manual off 1=Manual on 2=Auto
   %HR386    : "ExchPumpMode"   [""]     ;  %X,3 386 2  Mode P1-Exchanger
   %HR387    : "CoolPumpMode"   [""]     ;  %X,3 387 2  Mode P1-Cooling
   %HR388    : "FireDamperMode" [""]     ;  %X,3 388 2  Mode fire damper:    0=Close 1=Open 2=Auto
   %HR389    : "Fre.AirDampMode"[""]     ;  %X,3 389 2  Mode fresh air damper
   %HR390    : "Rec.AirDampMode"[""]     ;  %X,3 390 2  Mode recirculation damper
   %HR391    : "Ext.AirDampMode"[""]     ;  %X,3 391 2  Mode extract air damper
   %HR392    : "OutDoorTemp"    [""]     ;  %R,3 392    Outdoor temperature
   %                                     ;  %
   %HR393    : "FanFullSpeed"   [""]     ;  %X,3 393 4 Manual/Auto Full Speed time channel 0=Man.Off 1=Man.On 2=Forc.Off 3=Forc.On 4=Auto
   %HR394    : "FanHalfSpeed"   [""]     ;  %X,3 394 4 Manual/Auto Half Speed time channel
   %HR395    : "ExtraTimeGroup1"[""]     ;  %X,3 395 4 Manual/Auto Timer 1
   %HR396    : "ExtraTimeGroup2"[""]     ;  %X,3 396 4 Manual/Auto Timer 2
   %HR397    : "ExtraTimeGroup3"[""]     ;  %X,3 397 4 Manual/Auto Timer 3
   %HR398    : "ExtraTimeGroup4"[""]     ;  %X,3 398 4 Manual/Auto Timer 4
   %HR399    : "ExtraTimeGroup5"[""]     ;  %X,3 399 4 Manual/Auto Timer 5
   %                                     ;  %
   %HR400    : "AlarmAcknowl."  [""]     ;  %X,3 400 255 External alarm acknowledge
   %HR401    : "AlarmBlock"     [""]     ;  %X,3 401 255 External alarm blocking
   %HR402    : "AlarmUnBlock"   [""]     ;  %X,3 402 255 External alarm unblocking
   %                                     ;  %
    HR403    : "Gräns V-pump PÅ"["°C"]   ;  %R,3 403 10°C If lower outdoortemp the heating pump is not stoped
   %HR404    : "SASetpointMax"  ["°C"]   ;  %R,3 404 Max limit of supply setpoint when cascade control
   %HR405    : "SASetpointMin"  ["°C"]   ;  %R,3 405 Min limit of supply setpoint when cascade control
   %                                     ;  %
   %HR406    : "Sekund"   ; %X,3 406 Second 0-59
   %HR407    : "Minut"    ; %X,3 407 Minute 0-59
   %HR408    : "Timme"    ; %X,3 408 Hour 0-23
   %HR409    : "Veckodag" ; %X,3 409 Day of Week 1-7, 1=Monday
   %HR410    : "Vecka"    ; %X,3 410 Week number 1-53
   %HR411    : "Datum"    ; %X,3 411 Day of month 1-31
   %HR412    : "Månad"    ; %X,3 412 Month 1-12
   %HR413    : "År"       ; %X,3 413 Year 0-99


   % Input registers (function 4)
    IR1       : "Utetemperatur"   ["°C"];     %1  Outdoor temperature
   %IR2       : "VVX effekt"      ["%"];      %2  Exch. Efficiency (%)
    IR3       : "Driftläge"       [""];       %3  (I) Run mode, 0=Stopped,
   %                                         %             1=Starting up,
   %                                         %             2=Starting reduced speed,
   %                                         %             3=Starting full speed,
   %                                         %             4=Starting normal run,
   %                                         %             5=Normal run,
   %                                         %             6=Support control heating,
   %                                         %             7=Support control cooling,
   %                                         %             8=CO2 run,
   %                                         %             9=Night cooling,
   %                                         %             10=Full speed stop,
   %                                         %             11=Stopping fan
   %IR4       : "Drifttid TF"     ["h"];      %4  Running time (h) supply air fan
   %IR5       : "Drifttid FF"     ["h"];      %5  Running time (h) exhaust air fan
   %IR6       : "Förlängd drift"  ["min"];    %6  (I) Number of minutes extended operation
    IR7       : "Temp tilluft"    ["°C"];     %7  Supply air temperature
   %IR8       : "BV tilluft"      ["°C"];     %8  Calculated setpoint supply air
    IR9       : "Temp frånluft"   ["°C"];     %9  Exhaust air temp
   %IR10      : "Temp 1 rum"      ["°C"];     %10 Room temperature 1
   %IR11      : "Temp 2 rum"      ["°C"];     %11 Room temperature 2
   %IR12      : "Drifttid Vä/Ky"  ["min"];    %12 (I) Number of minutes in ongoing support heating/cooling
   %IR13      : "Tryck tilluft"   ["Pa"];     %13 Supply air fan pressure (Pa)
   %IR14      : "Tryck frånluft"  ["Pa"];     %14 Exhaust air fan pressure (Pa)
   %IR15      : "Flöde tilluft"   ["m3/h"];   %15 Supply air fan flow (m3/h) Scale factor = 1
   %IR16      : "Flöde frånluft"  ["m3/h"];   %16 Exhaust air fan flow (m3/h) Scale factor = 1
   %IR17      : "CO2-halt"        ["ppm"];    %17 CO2 (ppm)
   %IR18      : "Drifttid CO2"    ["min"];    %18 (I) Number of minutes support run time CO2
    IR19      : "Temp frysskydd"  ["°C"];     %19 Frost protection temp
   %IR20      : "Temp frånluft"   ["°C"];     %20 Extract air temp
   %IR21      : "Temp avfrost."   ["°C"];     %21 De-icing temp exchanger
   %IR22      : "Drifttid Avis."  ["min"];    %22 (I) Number of minutes for ongoing de-icing
   %IR23      : "Fuktighet rum"   ["%RH"];    %23 Humidity room
   %IR24      : "Fuktighet TF"    ["%RH"];    %24 Humidity duct
   %IR25      : "Temp extra"      ["°C"];     %25 Additional sensor / External setpoint

    IR119     : "Styrsig VÄRME"   ["%"];    %119 Control signal heating Y1 (0-10 V)
    IR120     : "Styrsig VVX"     ["%"];    %120 Control signal exchanger Y2 (0-10 V)
    IR121     : "Styrsig KYLA"    ["%"];    %121 Control signal cooler Y3 (0-10 V)
   %IR122     : "Styrsig T.FLÄKT" ["%"];    %122 Control signal supply air fan (0-10 V)
   %IR123     : "Styrsig F.FLÄKT" ["%"];    %123 Control signal exhaust air fan (0-10 V)
   %IR124     : "Styrsig FUKT"    ["%"];    %124 Control signal humidity (0-10 V)
   %IR125     : "Styrsig SPLIT"   ["%"];    %125 Control signal split (0-10 V)
   %IR126     : "Reg.sig T.LUFT"  ["%"];    %126 Supply controller output (0-100 %)
   %IR127     : "Reg.sig F.LUFT"  ["%"];    %127 Exhaust controller output (0-100 %)
   %IR128     : "Reg.sig T.FLÄKT" ["%"];    %128 SAF controller output (0-100 %)
   %IR129     : "Reg.sig F.FLÄKT" ["%"];    %129 EAF controller output (0-100 %)
   %IR130     : "Reg.sig FROST"   ["%"];    %130 Frost protection controller, stoped (0-100 %)
   %IR131     : "Reg.sig CO2"     ["%"];    %131 CO2 controller output (0-100 %)
   %IR132     : "Reg.sig RUM"     ["%"];    %132 Room controller output (0-100 %)
   %IR133     : "Reg.sig AVIS"    ["%"];    %133 De-icing controller output (0-100 %)
   %IR134     : "Reg.sig FUKT"    ["%"];    %134 Humidity controller output (0-100 %)
   %IR135     : "Rumstemperatur"  ["°C"];   %135 Room temperature 1 and 2


   % Discrete input function 2 (status)
    DI1        : "Helfart aktiv";         %Is set if timechannel full speed is active
    DI2        : "Halvfart aktiv";        %Is set if timechannel reduced speed is active
   %DI3        : "Timer 1 aktiv";         %Is set if timer output 1 is active
   %DI4        : "Timer 1 aktiv";         %Is set if timer output 2 is active
   %DI5        : "Timer 1 aktiv";         %Is set if timer output 3 is active
   %DI6        : "Timer 1 aktiv";         %Is set if timer output 4 is active
   %DI7        : "Timer 1 aktiv";         %Is set if timer output 5 is active
   %DI8        : "Helfart extra";         %Is set if extended operation full speed
   %DI9        : "Halvfart extra";        %Is set if extended operation half speed
   %DI10       : "VärmeReglering";        %Is set if ongoing support heating
   %DI11       : "KylaReglering";         %Is set if ongoing support cooling
   %DI12       : "CO2-reglering";         %Is set if ongoing support CO2
   %DI13       : "AV-Isning";             %Is set if ongoing de-icing
    DI14       : "DI1 status";            %Value of DI1
   %DI15       : "DI2 status";            %Value of DI2
   %DI16       : "DI3 status";            %Value of DI3
   %DI17       : "DI4 status";            %Value of DI4
   %DI18       : "DI5 status";            %Value of DI5
   %DI19       : "DI6 status";            %Value of DI6
   %DI20       : "DI7 status";            %Value of DI7
   %DI21       : "DI8 status";            %Value of DI8
   %DI22       : "UDI1 status";           %Value of UDI1
   %DI23       : "UDI2 status";           %Value of UDI2
   %DI24       : "UDI3 status";           %Value of UDI3
   %DI25       : "UDI4 status";           %Value of UDI4
   %DI26       : "DO1 status";            %Value of DO1
   %DI27       : "DO2 status";            %Value of DO2
   %DI28       : "DO3 status";            %Value of DO3
    DI29       : "DO4 status";            %Value of DO4
   %DI30       : "DO5 status";            %Value of DO5
   %DI31       : "DO6 status";            %Value of DO6
   %DI32       : "DO7 status";            %Value of DO7

   % Discrete input function 2 (alarms)
    AL1        : "Fel TF Fläkt"    ;      %33               Run Error Supply Air Fan
   %AL2        : "Fel TF Fläkt"    ;      %34               Run Error Exhaust Air Fan
   %AL3        : "Fel TF Fläkt"    ;      %35               Run Error P1-Heater
   %AL4        : "Fel TF Fläkt"    ;      %36               Run Error P1-Cooler
   %AL5        : "Fel TF Fläkt"    ;      %37               Run Error P1-Exchanger
   %AL6        : "Larm Filtervakt" ;      %38               Filter guard
   %AL7        : "Larm Flödesvakt" ;      %39               Flow guard
   %AL8        : "Larm Frysskydd"  ;      %40               External frost guard
   %AL9        : "Larm Avfrost."   ;      %41               Deicing pressure guard
   %AL10       : "Larm BRAND"      ;      %42               Fire alarm
   %AL11       : "Larm Ext. relä"  ;      %43               External switch
   %AL12       : "Larm Externt"    ;      %44               External alarm
   %AL13       : "Larm TF reg."    ;      %45               Supply Air control error
   %AL14       : "Larm Avv. fukt"  ;      %46               Deviation Humidity control
   %AL15       : "Larm TF HögT."   ;      %47               High supply air temp
   %AL16       : "Larm TF LågT."   ;      %48               Low supply air temp
   %AL17       : "Larm TF Max"     ;      %49               Supply Air Fan max limit
   %AL18       : "Larm TF Min"     ;      %50               Supply Air Fan min limit
   %AL19       : "Larm Rum HögT."  ;      %51               High room temp
   %AL20       : "Larm Rum LågT."  ;      %52               Low room temp

   % Discrete input function 2 (alarms)
   %DI81       : "T.FLÄKT helfart"  ;      %81 Start full speed supply air fan
   %DI82       : "F.FLÄKT helfart"  ;      %82 Start full speed exhaust air fan
   %DI83       : "T.FLÄKT halvfart" ;      %83 Start half speed supply air fan
   %DI84       : "F.FLÄKT halvfart" ;      %84 Start half speed exhaust air fan
    DI85       : "VÄRME Pumpstart"  ;      %85 Start Heat Pump
   %DI86       : "VVX Start"        ;      %86 Start Exchanger
   %DI87       : "KYLA Pumpstart"   ;      %87 Start Cool Pump
   %DI88       : "T.FLÄKT Frekv."   ;      %88 Start frequencer supply air fan
   %DI89       : "F.FLÄKT Frekv."   ;      %89 Start frequencer exhaust air fan


  PRIVATE

  BAUDRATE 9600;

  CHECKSUM MODBUS SWAPPED;

  TELEGRAM Holdreg1 NAMED "Hold r.1-39" IS
    QUESTION
      DATA[0]  := BYTE(Id);      % Modbus unit address
      DATA[1]  := HEX(03);       % Modbus command "03h" Read registers
      DATA[2]  := RWORD(0);      % Start address register
      DATA[4]  := RWORD(39);     % Number of registers

    ANSWER SIZE 83
      DATA[0]   = BYTE(Id);      % ID
     %DATA[1]   = HEX(03);       % Modbus command "03h" Read holding registers
     %DATA[2]   = BYTE(78);      % Byte count
      DATA[3]  -> RWORD(HR1 := DATA / 10;);
     %DATA[5]  -> RWORD(HR2 := DATA / 10;);
     %DATA[7]  -> RWORD(HR3 := DATA / 10;);
     %DATA[9]  -> RWORD(HR4 := DATA / 10;);
     %DATA[11] -> RWORD(HR5 := DATA / 10;);
      DATA[3]  -> RWORD(IF (DATA>=32768) THEN HR1 :=(DATA-65536)/10; ELSE HR1 :=DATA/10; ENDIF;);
     %DATA[5]  -> RWORD(IF (DATA>=32768) THEN HR2 :=(DATA-65536)/10; ELSE HR2 :=DATA/10; ENDIF;);
     %DATA[7]  -> RWORD(IF (DATA>=32768) THEN HR3 :=(DATA-65536)/10; ELSE HR3 :=DATA/10; ENDIF;);
     %DATA[9]  -> RWORD(IF (DATA>=32768) THEN HR4 :=(DATA-65536)/10; ELSE HR4 :=DATA/10; ENDIF;);
     %DATA[11] -> RWORD(IF (DATA>=32768) THEN HR5 :=(DATA-65536)/10; ELSE HR5 :=DATA/10; ENDIF;);
     %DATA[13] -> RWORD(IF (DATA>=32768) THEN HR6 :=(DATA-65536)/10; ELSE HR6 :=DATA/10; ENDIF;);
     %DATA[15] -> RWORD(IF (DATA>=32768) THEN HR7 :=(DATA-65536)/10; ELSE HR7 :=DATA/10; ENDIF;);
     %DATA[17] -> RWORD(IF (DATA>=32768) THEN HR8 :=(DATA-65536)/10; ELSE HR8 :=DATA/10; ENDIF;);
     %DATA[19] -> RWORD(IF (DATA>=32768) THEN HR9 :=(DATA-65536)/10; ELSE HR9 :=DATA/10; ENDIF;);
     %DATA[21] -> RWORD(IF (DATA>=32768) THEN HR10:=(DATA-65536)/10; ELSE HR10:=DATA/10; ENDIF;);
     %DATA[23] -> RWORD(IF (DATA>=32768) THEN HR11:=(DATA-65536)/10; ELSE HR11:=DATA/10; ENDIF;);
     %DATA[25] -> RWORD(V12:= DATA;);
     %DATA[27] -> RWORD(V13:= DATA / 10;);
     %DATA[29] -> RWORD(V14:= DATA / 10;);
     %DATA[31] -> RWORD(V15:= DATA;);
     %DATA[33] -> RWORD(V16:= DATA;);
     %DATA[35] -> RWORD(V17:= DATA / 10;);
     %DATA[37] -> RWORD(V19:= DATA;);
     %DATA[39] -> RWORD(IF (DATA>=32768) THEN V19:=(DATA-65536)/10; ELSE V19:=DATA/10; ENDIF;);
     %DATA[41] -> RWORD(IF (DATA>=32768) THEN V20:=(DATA-65536)/10; ELSE V20:=DATA/10; ENDIF;);
     %DATA[43] -> RWORD(IF (DATA>=32768) THEN V21:=(DATA-65536)/10; ELSE V21:=DATA/10; ENDIF;);
     %DATA[45] -> RWORD(V23:= DATA;);
     %DATA[47] -> RWORD(V23:= DATA / 10;);
     %DATA[49] -> RWORD(V24:= DATA / 10;);
     %DATA[51] -> RWORD(IF (DATA>=32768) THEN V25:=(DATA-65536)/10; ELSE V25:=DATA/10; ENDIF;);
     %DATA[53] -> RWORD(HR27:= DATA / 10;);
     %DATA[55] -> RWORD(HR28:= DATA;);
     %DATA[57] -> RWORD(HR29:= DATA;);
     %DATA[59] -> RWORD(HR30:= DATA;);
     %DATA[61] -> RWORD(HR31:= DATA;);
     %DATA[63] -> RWORD(HR32:= DATA / 10;);
     %DATA[65] -> RWORD(IF (DATA>=32768) THEN HR33 :=(DATA-65536)/10; ELSE HR33 :=DATA/10; ENDIF;);
     %DATA[67] -> RWORD(HR34:= DATA / 10;);
     %DATA[69] -> RWORD(HR35:= DATA / 10;);
     %DATA[51] -> RWORD(HR36:= DATA / 10;);
     %DATA[53] -> RWORD(HR37:= DATA / 10;);
     %DATA[55] -> RWORD(HR38:= DATA / 10;);
     %DATA[55] -> RWORD(HR39:= DATA / 10;);


    TIMEOUT 2000

  END;

  TELEGRAM Holdreg2 NAMED "Hold r.368-413" IS
    QUESTION
      DATA[0]  := BYTE(Id);      % Modbus unit address
      DATA[1]  := HEX(03);       % Modbus command "03h" Read registers
      DATA[2]  := RWORD(367);    % Start address register
      DATA[4]  := RWORD(47);     % Number of registers

    ANSWER SIZE 99
      DATA[0]   = BYTE(Id);      % ID
     %DATA[1]   = HEX(03);       % Modbus command "03h" Read holding registers
     %DATA[2]   = BYTE(78);      % Byte count                                 
      DATA[3]  -> RWORD(HR368:= DATA;);                   
     %DATA[5]  -> RWORD(HR369:= DATA;);                   
     %DATA[7]  -> RWORD(HR370:= DATA / 10;);                
     %DATA[9]  -> RWORD(HR371:= DATA;);      
     %DATA[11] -> RWORD(HR372:= DATA;);      
     %DATA[13] -> RWORD(HR373:= DATA;);      
     %DATA[15] -> RWORD(HR374:= DATA / 10;);                
     %DATA[17] -> RWORD(HR375:= DATA;);      
     %DATA[19] -> RWORD(HR376:= DATA / 10;);                
     %DATA[21] -> RWORD(HR377:= DATA;);      
     %DATA[23] -> RWORD(HR378:= DATA / 10;);                
     %DATA[25] -> RWORD(HR379:= DATA;);      
     %DATA[27] -> RWORD(HR380:= DATA / 10;);                
     %DATA[29] -> RWORD(HR381:= DATA;);      
     %DATA[31] -> RWORD(HR382:= DATA / 10;);                
     %DATA[33] -> RWORD(HR383:= DATA;);      
     %DATA[35] -> RWORD(HR384:= DATA / 10;);                
     %DATA[37] -> RWORD(HR385:= DATA;);      
     %DATA[39] -> RWORD(HR386:= DATA;);      
     %DATA[41] -> RWORD(HR387:= DATA;);      
     %DATA[43] -> RWORD(HR388:= DATA;);      
     %DATA[45] -> RWORD(HR389:= DATA;);      
     %DATA[47] -> RWORD(HR390:= DATA;);      
     %DATA[49] -> RWORD(HR391:= DATA;);      
     %DATA[51] -> RWORD(HR392:= DATA / 10;);                
     %DATA[53] -> RWORD(HR393:= DATA;);      
     %DATA[55] -> RWORD(HR394:= DATA;);      
     %DATA[57] -> RWORD(HR395:= DATA;);      
     %DATA[59] -> RWORD(HR396:= DATA;);      
     %DATA[61] -> RWORD(HR397:= DATA;);      
     %DATA[63] -> RWORD(HR398:= DATA;);      
     %DATA[65] -> RWORD(HR399:= DATA;);      
     %DATA[67] -> RWORD(HR400:= DATA;);      
     %DATA[69] -> RWORD(HR401:= DATA;);      
     %DATA[71] -> RWORD(HR402:= DATA;);      
      DATA[73] -> RWORD(HR403:= DATA / 10;);                
     %DATA[75] -> RWORD(HR404:= DATA / 10;);                     
     %DATA[77] -> RWORD(HR405:= DATA / 10;);                     
     %DATA[79] -> RWORD(HR406:= DATA;);                     
     %DATA[81] -> RWORD(HR407:= DATA;);                     
     %DATA[83] -> RWORD(HR408:= DATA;);                
     %DATA[85] -> RWORD(HR409:= DATA;);                
     %DATA[87] -> RWORD(HR410:= DATA;);                
     %DATA[89] -> RWORD(HR411:= DATA;);                
     %DATA[91] -> RWORD(HR412:= DATA;);                
     %DATA[93] -> RWORD(HR413:= DATA;);                
                                                                          
    TIMEOUT 2000                                                          

  END;

  TELEGRAM AnalogSelect1 NAMED "Input r.1-25" IS
    QUESTION
      DATA[0]  := BYTE(Id);      % Modbus unit address
      DATA[1]  := HEX(04);       % Modbus command "04h" Read registers
      DATA[2]  := RWORD(0);      % Start address register
      DATA[4]  := RWORD(20);     % Number of registers

    ANSWER SIZE 45
      DATA[0]   = BYTE(Id);      % ID
      DATA[1]   = HEX(04);       % Modbus command "04h" Read registers
      DATA[2]   = BYTE(40);      % Byte count
      DATA[3]  -> RWORD(IR1 := DATA / 10;);
     %DATA[5]  -> RWORD(IR2 := DATA / 10;);
      DATA[7]  -> RWORD(IR3 := DATA;);
     %DATA[9]  -> RWORD(IR4 := DATA / 10;);
     %DATA[11] -> RWORD(IR5 := DATA / 10;);
     %DATA[13] -> RWORD(IR6 := DATA;);
      DATA[15] -> RWORD(IR7 := DATA / 10;);
     %DATA[17] -> RWORD(IR8 := DATA / 10;);
      DATA[19] -> RWORD(IR9 := DATA / 10;);
     %DATA[21] -> RWORD(IR10:= DATA / 10;);
     %DATA[23] -> RWORD(IR11:= DATA / 10;);
     %DATA[25] -> RWORD(IR13:= DATA;);
     %DATA[27] -> RWORD(IR13:= DATA / 10;);
     %DATA[29] -> RWORD(IR14:= DATA / 10;);
     %DATA[31] -> RWORD(IR15:= DATA;);
     %DATA[33] -> RWORD(IR16:= DATA;);
     %DATA[35] -> RWORD(IR17:= DATA / 10;);
     %DATA[37] -> RWORD(IR18:= DATA;);
      DATA[39] -> RWORD(IR19:= DATA / 10;);
     %DATA[41] -> RWORD(IR20:= DATA / 10;);
     %DATA[43] -> RWORD(IR21:= DATA / 10;);
     %DATA[45] -> RWORD(IR23:= DATA;);
     %DATA[47] -> RWORD(IR23:= DATA / 10;);
     %DATA[49] -> RWORD(IR24:= DATA / 10;);
     %DATA[51] -> RWORD(IR25:= DATA / 10;);

    TIMEOUT 2000

  END;

  TELEGRAM AnalogSelect2 NAMED "Input r.119-135" IS
    QUESTION
      DATA[0]  := BYTE(Id);      % Modbus unit address
      DATA[1]  := HEX(04);       % Modbus command "04h" Read registers
      DATA[2]  := RWORD(118);    % Start address register
      DATA[4]  := RWORD(17);     % Number of registers

    ANSWER SIZE 11
      DATA[0]   = BYTE(Id);      % ID
      DATA[1]   = HEX(04);       % Modbus command "04h" Read registers
      DATA[2]   = BYTE(34);      % Byte count
      DATA[3]  -> RWORD(IR119 := DATA;);
      DATA[5]  -> RWORD(IR120 := DATA;);
      DATA[7]  -> RWORD(IR121 := DATA;);
     %DATA[9]  -> RWORD(IR122 := DATA;);
     %DATA[11] -> RWORD(IR123 := DATA;);
     %DATA[13] -> RWORD(IR124 := DATA;);
     %DATA[15] -> RWORD(IR125 := DATA;);
     %DATA[17] -> RWORD(IR126 := DATA / 10;);
     %DATA[19] -> RWORD(IR127 := DATA / 10;);
     %DATA[21] -> RWORD(IR128 := DATA / 10;);
     %DATA[23] -> RWORD(IR129 := DATA / 10;);
     %DATA[25] -> RWORD(IR130 := DATA / 10;);
     %DATA[27] -> RWORD(IR131 := DATA / 10;);
     %DATA[29] -> RWORD(IR132 := DATA / 10;);
     %DATA[31] -> RWORD(IR133 := DATA / 10;);
     %DATA[33] -> RWORD(IR134 := DATA / 10;);
     %DATA[35] -> RWORD(IR135 := DATA / 10;);

    TIMEOUT 2000

  END;

  TELEGRAM DigitalSelect1 NAMED "Digital 1-32" IS
    QUESTION
      DATA[0]  := BYTE(Id);      % Modbus unit address
      DATA[1]  := HEX(02);       % Modbus command "02h" read discrete input (bit)
      DATA[2]  := RWORD(0);      % Start adress
      DATA[4]  := RWORD(32);     % Number of inputs

    ANSWER SIZE 9
      DATA[0]   = BYTE(Id);
      DATA[1]   = HEX(02);
      DATA[2]   = BYTE(3);
      DATA[3]  -> BYTE(
                       IF (DATA & 1)   THEN DI1 := 1; ELSE DI1 := 0; ENDIF;
                       IF (DATA & 2)   THEN DI2 := 1; ELSE DI2 := 0; ENDIF;
%                      IF (DATA & 4)   THEN DI3 := 1; ELSE DI3 := 0; ENDIF;
%                      IF (DATA & 8)   THEN DI4 := 1; ELSE DI4 := 0; ENDIF;
%                      IF (DATA & 16)  THEN DI5 := 1; ELSE DI5 := 0; ENDIF;
%                      IF (DATA & 32)  THEN DI6 := 1; ELSE DI6 := 0; ENDIF;
%                      IF (DATA & 64)  THEN DI7 := 1; ELSE DI7 := 0; ENDIF;
%                      IF (DATA & 128) THEN DI8 := 1; ELSE DI8 := 0; ENDIF;
                       );
      DATA[4]  -> BYTE(
%                      IF (DATA & 1)   THEN DI9 := 1; ELSE DI9 := 0; ENDIF;
%                      IF (DATA & 2)   THEN DI10:= 1; ELSE DI10:= 0; ENDIF;
%                      IF (DATA & 4)   THEN DI11:= 1; ELSE DI11:= 0; ENDIF;
%                      IF (DATA & 8)   THEN DI12:= 1; ELSE DI12:= 0; ENDIF;
%                      IF (DATA & 16)  THEN DI13:= 1; ELSE DI13:= 0; ENDIF;
                       IF (DATA & 32)  THEN DI14:= 1; ELSE DI14:= 0; ENDIF;
%                      IF (DATA & 64)  THEN DI15:= 1; ELSE DI15:= 0; ENDIF;
%                      IF (DATA & 128) THEN DI16:= 1; ELSE DI16:= 0; ENDIF;
                       );
%     DATA[5]  -> BYTE(
%                      IF (DATA & 1)   THEN DI17:= 1; ELSE DI17:= 0; ENDIF;
%                      IF (DATA & 2)   THEN DI18:= 1; ELSE DI18:= 0; ENDIF;
%                      IF (DATA & 4)   THEN DI19:= 1; ELSE DI19:= 0; ENDIF;
%                      IF (DATA & 8)   THEN DI20:= 1; ELSE DI20:= 0; ENDIF;
%                      IF (DATA & 16)  THEN DI21:= 1; ELSE DI21:= 0; ENDIF;
%                      IF (DATA & 32)  THEN DI22:= 1; ELSE DI22:= 0; ENDIF;
%                      IF (DATA & 64)  THEN DI23:= 1; ELSE DI23:= 0; ENDIF;
%                      IF (DATA & 128) THEN DI24:= 1; ELSE DI24:= 0; ENDIF;
%                      );
      DATA[6]  -> BYTE(
%                      IF (DATA & 1)   THEN DI25:= 1; ELSE DI25:= 0; ENDIF;
%                      IF (DATA & 2)   THEN DI26:= 1; ELSE DI26:= 0; ENDIF;
%                      IF (DATA & 4)   THEN DI27:= 1; ELSE DI27:= 0; ENDIF;
%                      IF (DATA & 8)   THEN DI28:= 1; ELSE DI28:= 0; ENDIF;
                       IF (DATA & 16)  THEN DI29:= 1; ELSE DI29:= 0; ENDIF;
%                      IF (DATA & 32)  THEN DI30:= 1; ELSE DI30:= 0; ENDIF;
%                      IF (DATA & 64)  THEN DI31:= 1; ELSE DI31:= 0; ENDIF;
%                      IF (DATA & 128) THEN DI32:= 1; ELSE DI32:= 0; ENDIF;
                       );

    TIMEOUT 2000

  END;
  TELEGRAM DigitalSelect2 NAMED "Digital 81-89" IS
    QUESTION
      DATA[0]  := BYTE(Id);      % Modbus unit address
      DATA[1]  := HEX(02);       % Modbus command "02h" read discrete input (bit)
      DATA[2]  := RWORD(80);      % Start adress
      DATA[4]  := RWORD(9);     % Number of inputs

    ANSWER SIZE 7
      DATA[0]   = BYTE(Id);
      DATA[1]   = HEX(02);
      DATA[2]   = BYTE(2);
      DATA[3]  -> BYTE(
%                      IF (DATA & 1)   THEN DI81 := 1; ELSE DI81 := 0; ENDIF;
%                      IF (DATA & 2)   THEN DI82 := 1; ELSE DI82 := 0; ENDIF;
%                      IF (DATA & 4)   THEN DI83 := 1; ELSE DI83 := 0; ENDIF;
%                      IF (DATA & 8)   THEN DI84 := 1; ELSE DI84 := 0; ENDIF;
                       IF (DATA & 16)  THEN DI85 := 1; ELSE DI85 := 0; ENDIF;
%                      IF (DATA & 32)  THEN DI86 := 1; ELSE DI86 := 0; ENDIF;
%                      IF (DATA & 64)  THEN DI87 := 1; ELSE DI87 := 0; ENDIF;
%                      IF (DATA & 128) THEN DI88 := 1; ELSE DI88 := 0; ENDIF;
                       );
%     DATA[4]  -> BYTE(
%                       IF (DATA & 1)   THEN DI89 := 1; ELSE DI89 := 0; ENDIF;
%                      );

    TIMEOUT 2000

  END;


END;

Användarnas noteringar

Du måste vara inloggad för att göra en notering. Bli medlem eller logga in. Vi använder en moderator som godkänner noteringarna innan de visas.