% 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 IMLmPI NAMED "IMLmPI" TYPEID 18948 IS PARAMETER Id : "Adress" [""]INT; V3 : "wProportional band (Xp)" ["%"]DEC1; V4 : "wIntegral time" ["s"]INT; PUBLIC V1 : "Proportional band (Xp) " ["%"]DEC1; V2 : "Integral time " ["s"]INT; PRIVATE count6; BAUDRATE 9600; CHECKSUM MODBUS SWAPPED; TELEGRAM Read3 NAMED "Read 3" IS QUESTION DATA[0] := BYTE(Id); % Enhetens Modbus adress DATA[1] := HEX(03); % Modbus kommando för att läsa register kod 03 DATA[2] := RWORD(8); % Start address DATA[4] := RWORD(2); % Antal register att läsa ANSWER SIZE 9 % (Antal register * 2) + 5 DATA[0] = BYTE(Id); DATA[1] = BYTE(03); DATA[2] = BYTE(4); % Antal Bytes DATA[3] -> RWORD(V1 := DATA/10;); DATA[5] -> RWORD(V2 := DATA;); TIMEOUT 300 END; TELEGRAM WriteRegister NAMED "Write Register" IS QUESTION DATA[0] := BYTE(Id); % Enhetens Modbus adress DATA[1] := HEX(06); % Modbus kommando för att skriva ett register DATA[2] <- RWORD( IF(count6>1) THEN count6 := 0; ENDIF; IF (count6=0) THEN DATA := 8; ELSIF (count6=1) THEN DATA := 9; ENDIF; ); % Register adress DATA[4] <- RWORD( IF (count6=0) THEN DATA := V3*10; ELSIF (count6=1) THEN DATA := V4; ENDIF; count6 := count6+1; ); ANSWER SIZE 8 DATA[0] = BYTE(Id); DATA[1] = BYTE(06); TIMEOUT 300 END; END;