% Skapad med Modbus Creator % - OBS! Användaren ansvarar själv för att samma TYPID inte används flera gånger i samma apparat. % TYPID 10000-19999 är för användardefinierade enheter DEVICETYPE AHUAlarm NAMED "AHUAlarm" TYPEID 16462 IS PARAMETER Id : "Adress"; PUBLIC V1 : "FireDampClosed" [""]; % 0=Ok, 1=Alarm V2 : "FireDampOpen" [""]; V3 : "FireDampNoMove" [""]; V4 : "SupplyFan" [""]; V5 : "CoolingDX" [""]; V6 : "HeatRecovery" [""]; V7 : "HeatPump" [""]; V8 : "HeatFrost" [""]; V9 : "SupTempDeviation" [""]; V10 : "RoomTempDeviation" [""]; V11 : "SupFilter" [""]; V12 : "ExhaustFilter" [""]; V13 : "FireAlarm" [""]; V14 : "SupTempFire" [""]; V15 : "ExhTempFire" [""]; PRIVATE BAUDRATE 9600; CHECKSUM MODBUS SWAPPED; TELEGRAM Read2 NAMED "Read 2" IS QUESTION DATA[0] := BYTE(Id); % Enhetens Modbus adress DATA[1] := HEX(02); % Modbus kommando för att läsa register kod 02 DATA[2] := RWORD(21); % Start address DATA[4] := RWORD(54); % Antal register att läsa ANSWER SIZE 12 % (Antal register / 8) avrundat uppåt + 5 DATA[0] = BYTE(Id); DATA[1] = BYTE(02); DATA[2] = BYTE(7); % Antal Bytes DATA[3] -> BYTE( IF (DATA & 1) THEN V1 := 1; ELSE V1 := 0; ENDIF; IF (DATA & 2) THEN V2 := 1; ELSE V2 := 0; ENDIF; IF (DATA & 4) THEN V3 := 1; ELSE V3 := 0; ENDIF; IF (DATA & 32) THEN V4 := 1; ELSE V4 := 0; ENDIF; ); DATA[4] -> BYTE( IF (DATA & 1) THEN V5 := 1; ELSE V5 := 0; ENDIF; ); DATA[5] -> BYTE( IF (DATA & 4) THEN V6 := 1; ELSE V6 := 0; ENDIF; IF (DATA & 128) THEN V7 := 1; ELSE V7 := 0; ENDIF; ); DATA[6] -> BYTE( IF (DATA & 2) THEN V8 := 1; ELSE V8 := 0; ENDIF; ); DATA[7] -> BYTE( IF (DATA & 8) THEN V9 := 1; ELSE V9 := 0; ENDIF; IF (DATA & 16) THEN V10 := 1; ELSE V10 := 0; ENDIF; ); DATA[9] -> BYTE( IF (DATA & 2) THEN V11 := 1; ELSE V11 := 0; ENDIF; IF (DATA & 4) THEN V12 := 1; ELSE V12 := 0; ENDIF; IF (DATA & 8) THEN V13 := 1; ELSE V13 := 0; ENDIF; IF (DATA & 16) THEN V14 := 1; ELSE V14 := 0; ENDIF; IF (DATA & 32) THEN V15 := 1; ELSE V15 := 0; ENDIF; ); TIMEOUT 300 END; END;