DANFOSS serie FC102 frekvensomformare
Detaljer
- Typ
- Drivrutin
- Upplaggd av
- Ove Jansson, Abelko Innovation
- Version
- 5
- Uppdaterad
- 2015-06-26
- Skapad
- 2013-08-27
- Kategori
- Frekvensomformare, Övriga protokoll
- Visningar
- 3464
Beskrivning
Drivrutin för DANFOSS serie FC102 frekvensomformaremed deras egna protokoll.
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
% Device driver för DANFOSS serie FC102 frekvensomformare
% till IMSE WebMaster Pro
% MW, ABELKO AB
% OBS protokoll Danfoss special
DEVICETYPE Danfoss_FC100 NAMED "Danfoss FC100" TYPEID 22002 IS
PARAMETER
Addr: "Adress" INT;
Mpow: "Motoreffekt" ["kW"];
Mcurr: "Motorström" ["A"];
MNomRpm: "Nom varvtal" ["rpm"];
Fmin: "Min utfrekvens" ["Hz"];
Tru: "Uppramptid" ["s"];
Trd: "Nedramptid" ["s"];
Nostop: "Får ej stanna" ["0=falskt"];
PUBLIC
Running: "Drift";
StatW: "Status";
Err: "Felkod" INT;
Warning: "Varning" INT;
Freq: "Frekvens" ["Hz"] DEC1;
Power: "Effekt" ["kW"] DEC2;
Volt: "Motorspänning" ["V"] DEC1;
Curr: "Motorström" ["A"] DEC2;
Temp: "Temp VLT" ["ºC"] INT;
TLoad: "TempLast" ["%"] INT;
PRIVATE
State;
RefFreq;
AK;
PKE;
PNU;
IND;
PWEhigh;
PWElow;
Reset;
Styrord;
Tripp;
LastFmin;
hErr;
hWarning;
TripTimer;
BAUDRATE 9600;
PARITY EVEN;
CHECKSUM XOR8;
TELEGRAM Update NAMED "Uppdatera" IS
QUESTION
DATA[0] := HEX(02); % STX, startbyte 02h
DATA[1] := HEX(0E); % LEN, meddelande längd
DATA[2] <- BYTE(DATA := Addr;); % ADR, address till enhet
DATA[3] <- RWORD( % PKE, parameterkommando
% PKE
% ---------------------------------------
% AK | PNU
% 15 14 13 12 | 11 10 9 8 7 6 5 4 3 2 1 0 (bit)
% ---------------------------------------
% exempel:
% Parameter 4-14 blir till parameternummer(PNU) 414
%
IF State = 0 THEN State := 100; ENDIF; % Skriv inställningar vid uppstart
IF (RefFreq > 0) AND (State > 93) THEN State := 93; ENDIF; %Det går ändå inte att skriva till dom vid drift
IND := 0; %Den ska nästan alltid vara 0
PWEhigh := 0;
PWElow := 0;
% följande inställningar state 100-94 kan ej ställas under drift
IF State = 100 THEN
AK := HEX(E000);
PNU := 100; % Parameter: 1-00 Konfigurationläge
PWElow := 0; % 0 = Utan återkoppling
ELSIF State = 99 THEN
AK := HEX(E000);
PNU := 103; % Parameter: 1-03 Momentkurva
PWElow := 3; % 3 Automatisk energioptimering VT
ELSIF State = 98 THEN
AK := HEX(E000);
PNU := 120; % Parameter: 1-20 Motoreffekt
PWElow := Mpow * 100; % ? W
ELSIF State = 97 THEN
AK := HEX(E000);
PNU := 122; % Parameter: 1-22 Motorspänning
PWElow := 400; % 400 V
ELSIF State = 96 THEN
AK := HEX(E000);
PNU := 123; % Paramter: 1-23 Motorfrekvens
PWElow := 50; % 50 Hz
ELSIF State = 95 THEN
AK := HEX(E000);
PNU := 124; % Paramter: 1-24 Motorström
PWElow := Mcurr * 100; % ? A
ELSIF State = 94 THEN
AK := HEX(E000);
PNU := 125; % Parameter: 1-25 Nominellt varvtal
PWElow := MNomRpm; % ? RPM
% följande inställningar kan ställas under drift
ELSIF State = 93 THEN
AK := HEX(E000);
PNU := 412; % Parameter: 4-12 Min utfrekvens
PWElow := Fmin * 10; % ? Hz
LastFmin := Fmin;
ELSIF State = 92 THEN
AK := HEX(E000);
PNU := 341; % Paramter: 3-41 Uppramptid
PWElow := Tru*100; % ? s
ELSIF State = 91 THEN
AK := HEX(E000);
PNU := 342; % Parameter: 3-42 Nedramptid
PWElow := Trd*100; % ? s
%? %ELSIF State = 90 THEN %208 Automatisk nedrampning 1 Aktiv
% AK := HEX(E000);
% PNU := 208;
% PWElow := 1;
ELSIF State = 89 THEN
AK := HEX(E000);
PNU := 173; % Parameter 1-73 Flygande start
PWElow := 1; % 1 aktiv
% ELSIF State = 88 THEN %411 Funktion vid överhettning 0 eller 1 (1 för rökgasfläkten)
% AK := HEX(E000);
% PNU := 411;
% IF Nostop > 0 THEN
% PWElow := 1;
% ELSE
% PWElow := 1;
% ENDIF;
ELSIF State = 87 THEN
AK := HEX(E000);
PNU := 850; % Paramter: 8-50 Utrullningsstop
PWElow := 1; % 1 = seriekom
ELSIF State = 86 THEN
AK := HEX(E000);
PNU := 852; % Parameter: 8-52 DC-broms
PWElow := 1; % 1 = seriekom
ELSIF State = 85 THEN
AK := HEX(E000);
PNU := 508; % Parameter: Referensvarvtal
PWElow := 1; % 1 = seriekom
ELSIF State = 84 THEN
AK := HEX(E000);
PNU := 803; % Parameter: 8-03 tidsgräns för styrord(bus timeout)
PWElow := 5*10; % 5 s
ELSIF State = 83 THEN
AK := HEX(E000);
PNU := 804; % Parameter: 8-04 funktion vid timeout
IF Nostop > 0 THEN
PWElow := 1; % fryser motor
ELSE
PWElow := 2; % stoppar motor
ENDIF;
ELSIF State = 82 THEN %555 Bus timeout ? s
AK := HEX(E000);
PNU := 803; % Parameter: 8-03 tidsgräns för styrord(bus timeout)
PWElow := 5*10; % 5 s
ENDIF;
IF (State < 82) AND (State > 9) THEN State := 9; ENDIF;
IF State = 1 THEN
AK := HEX(1000);
PNU := 1613; % Parameter: 16-13 Frekevens
ELSIF State = 2 THEN
AK := HEX(1000);
PNU := 1614; % Parameter: 16-14 motorström
ELSIF State = 3 THEN
AK := HEX(1000);
PNU := 1610; % Paramter: 16-10 motoreffekt
ELSIF State = 4 THEN
AK := HEX(1000);
PNU := 1612; % Parameter: 16-12 motorspänning
ELSIF State = 5 THEN
AK := HEX(1000);
PNU := 1690; % Parameter: 16-90 Larmord
ELSIF State = 6 THEN
AK := HEX(1000);
PNU := 1635; % Parameter: 16-35 växelriktare termisk last
ELSIF State = 7 THEN
AK := HEX(1000);
PNU := 1639; % Paramter: 16-39 styrkortets temperatur
ELSIF State = 8 THEN
AK := HEX(1000);
PNU := 1692; % Parameter: 16-92 Varningsord
ELSIF State = 9 THEN
AK := HEX(1000);
PNU := 1690; % Parameter: 16-90 Larmord
ENDIF;
DATA := AK | PNU;
);
DATA[5] <- RWORD(DATA := IND;);
DATA[7] <- RWORD(DATA := PWEhigh;);
DATA[9] <- RWORD(DATA := PWElow;);
DATA[11] <- RWORD( %Styrord
IF RefFreq > 2 * Fmin THEN % RefFreq is %, Fmin is Hz -> On when RefFreq > 0
Styrord := HEX(7C);
ELSIF Nostop > 0 THEN
Styrord := HEX(7C);
ELSE
Styrord := HEX(34); %off
ENDIF;
IF Reset > 0 THEN
Styrord := Styrord + HEX(80);
ENDIF;
DATA := HEX(400) + Styrord;
);
DATA[13] <- RWORD(DATA := RefFreq * 163.84;);
ANSWER SIZE 16
DATA[0] = HEX(02); % STX
DATA[1] = HEX(0E); % LGE
DATA[2] = BYTE(Addr); % address
DATA[3] -> RWORD( PKE := DATA;);
DATA[7] -> RWORD(
IF State = 5 THEN % Larm
hErr := DATA;
ELSIF State = 8 THEN % Varning
hWarning := DATA;
ELSIF State = 9 THEN % Larm
hErr := DATA;
ENDIF;
);
DATA[9] -> RWORD(
% PRINT("State ",State);
% IF ((PKE & HEX(7000)) = HEX(7000)) THEN
% PRINT("Error: PWE_låg ", DATA);
% ENDIF;
IF State = 1 THEN % Frekvens
Freq := DATA / 10;
ELSIF State = 2 THEN % Ström
Curr := DATA / 100;
ELSIF State = 3 THEN % Effekt
Power := DATA / 100;
ELSIF State = 4 THEN % Spänning
Volt := DATA / 10;
ELSIF State = 5 THEN % Larm
Err := DATA;
ELSIF State = 6 THEN % TLoad
TLoad := DATA;
ELSIF State = 7 THEN % Temp
Temp := DATA;
ELSIF State = 8 THEN % Varning
Warning := DATA;
ELSIF State = 9 THEN % Larm
Err := DATA;
ENDIF;
);
DATA[11] -> RWORD(
Tripp := DATA & HEX(08);
IF DATA & HEX(0800) THEN
Running := 1;
ELSE
Running := 0;
ENDIF;
StatW := DATA;
State := State -1;
IF (State = 0) AND (Running = 1) THEN
State := 9;
IF LastFmin = Fmin THEN %Updatera vid ändring
State := 93;
ENDIF;
ENDIF;
);
TIMEOUT 150
END;
END;
% till IMSE WebMaster Pro
% MW, ABELKO AB
% OBS protokoll Danfoss special
DEVICETYPE Danfoss_FC100 NAMED "Danfoss FC100" TYPEID 22002 IS
PARAMETER
Addr: "Adress" INT;
Mpow: "Motoreffekt" ["kW"];
Mcurr: "Motorström" ["A"];
MNomRpm: "Nom varvtal" ["rpm"];
Fmin: "Min utfrekvens" ["Hz"];
Tru: "Uppramptid" ["s"];
Trd: "Nedramptid" ["s"];
Nostop: "Får ej stanna" ["0=falskt"];
PUBLIC
Running: "Drift";
StatW: "Status";
Err: "Felkod" INT;
Warning: "Varning" INT;
Freq: "Frekvens" ["Hz"] DEC1;
Power: "Effekt" ["kW"] DEC2;
Volt: "Motorspänning" ["V"] DEC1;
Curr: "Motorström" ["A"] DEC2;
Temp: "Temp VLT" ["ºC"] INT;
TLoad: "TempLast" ["%"] INT;
PRIVATE
State;
RefFreq;
AK;
PKE;
PNU;
IND;
PWEhigh;
PWElow;
Reset;
Styrord;
Tripp;
LastFmin;
hErr;
hWarning;
TripTimer;
BAUDRATE 9600;
PARITY EVEN;
CHECKSUM XOR8;
TELEGRAM Update NAMED "Uppdatera" IS
QUESTION
DATA[0] := HEX(02); % STX, startbyte 02h
DATA[1] := HEX(0E); % LEN, meddelande längd
DATA[2] <- BYTE(DATA := Addr;); % ADR, address till enhet
DATA[3] <- RWORD( % PKE, parameterkommando
% PKE
% ---------------------------------------
% AK | PNU
% 15 14 13 12 | 11 10 9 8 7 6 5 4 3 2 1 0 (bit)
% ---------------------------------------
% exempel:
% Parameter 4-14 blir till parameternummer(PNU) 414
%
IF State = 0 THEN State := 100; ENDIF; % Skriv inställningar vid uppstart
IF (RefFreq > 0) AND (State > 93) THEN State := 93; ENDIF; %Det går ändå inte att skriva till dom vid drift
IND := 0; %Den ska nästan alltid vara 0
PWEhigh := 0;
PWElow := 0;
% följande inställningar state 100-94 kan ej ställas under drift
IF State = 100 THEN
AK := HEX(E000);
PNU := 100; % Parameter: 1-00 Konfigurationläge
PWElow := 0; % 0 = Utan återkoppling
ELSIF State = 99 THEN
AK := HEX(E000);
PNU := 103; % Parameter: 1-03 Momentkurva
PWElow := 3; % 3 Automatisk energioptimering VT
ELSIF State = 98 THEN
AK := HEX(E000);
PNU := 120; % Parameter: 1-20 Motoreffekt
PWElow := Mpow * 100; % ? W
ELSIF State = 97 THEN
AK := HEX(E000);
PNU := 122; % Parameter: 1-22 Motorspänning
PWElow := 400; % 400 V
ELSIF State = 96 THEN
AK := HEX(E000);
PNU := 123; % Paramter: 1-23 Motorfrekvens
PWElow := 50; % 50 Hz
ELSIF State = 95 THEN
AK := HEX(E000);
PNU := 124; % Paramter: 1-24 Motorström
PWElow := Mcurr * 100; % ? A
ELSIF State = 94 THEN
AK := HEX(E000);
PNU := 125; % Parameter: 1-25 Nominellt varvtal
PWElow := MNomRpm; % ? RPM
% följande inställningar kan ställas under drift
ELSIF State = 93 THEN
AK := HEX(E000);
PNU := 412; % Parameter: 4-12 Min utfrekvens
PWElow := Fmin * 10; % ? Hz
LastFmin := Fmin;
ELSIF State = 92 THEN
AK := HEX(E000);
PNU := 341; % Paramter: 3-41 Uppramptid
PWElow := Tru*100; % ? s
ELSIF State = 91 THEN
AK := HEX(E000);
PNU := 342; % Parameter: 3-42 Nedramptid
PWElow := Trd*100; % ? s
%? %ELSIF State = 90 THEN %208 Automatisk nedrampning 1 Aktiv
% AK := HEX(E000);
% PNU := 208;
% PWElow := 1;
ELSIF State = 89 THEN
AK := HEX(E000);
PNU := 173; % Parameter 1-73 Flygande start
PWElow := 1; % 1 aktiv
% ELSIF State = 88 THEN %411 Funktion vid överhettning 0 eller 1 (1 för rökgasfläkten)
% AK := HEX(E000);
% PNU := 411;
% IF Nostop > 0 THEN
% PWElow := 1;
% ELSE
% PWElow := 1;
% ENDIF;
ELSIF State = 87 THEN
AK := HEX(E000);
PNU := 850; % Paramter: 8-50 Utrullningsstop
PWElow := 1; % 1 = seriekom
ELSIF State = 86 THEN
AK := HEX(E000);
PNU := 852; % Parameter: 8-52 DC-broms
PWElow := 1; % 1 = seriekom
ELSIF State = 85 THEN
AK := HEX(E000);
PNU := 508; % Parameter: Referensvarvtal
PWElow := 1; % 1 = seriekom
ELSIF State = 84 THEN
AK := HEX(E000);
PNU := 803; % Parameter: 8-03 tidsgräns för styrord(bus timeout)
PWElow := 5*10; % 5 s
ELSIF State = 83 THEN
AK := HEX(E000);
PNU := 804; % Parameter: 8-04 funktion vid timeout
IF Nostop > 0 THEN
PWElow := 1; % fryser motor
ELSE
PWElow := 2; % stoppar motor
ENDIF;
ELSIF State = 82 THEN %555 Bus timeout ? s
AK := HEX(E000);
PNU := 803; % Parameter: 8-03 tidsgräns för styrord(bus timeout)
PWElow := 5*10; % 5 s
ENDIF;
IF (State < 82) AND (State > 9) THEN State := 9; ENDIF;
IF State = 1 THEN
AK := HEX(1000);
PNU := 1613; % Parameter: 16-13 Frekevens
ELSIF State = 2 THEN
AK := HEX(1000);
PNU := 1614; % Parameter: 16-14 motorström
ELSIF State = 3 THEN
AK := HEX(1000);
PNU := 1610; % Paramter: 16-10 motoreffekt
ELSIF State = 4 THEN
AK := HEX(1000);
PNU := 1612; % Parameter: 16-12 motorspänning
ELSIF State = 5 THEN
AK := HEX(1000);
PNU := 1690; % Parameter: 16-90 Larmord
ELSIF State = 6 THEN
AK := HEX(1000);
PNU := 1635; % Parameter: 16-35 växelriktare termisk last
ELSIF State = 7 THEN
AK := HEX(1000);
PNU := 1639; % Paramter: 16-39 styrkortets temperatur
ELSIF State = 8 THEN
AK := HEX(1000);
PNU := 1692; % Parameter: 16-92 Varningsord
ELSIF State = 9 THEN
AK := HEX(1000);
PNU := 1690; % Parameter: 16-90 Larmord
ENDIF;
DATA := AK | PNU;
);
DATA[5] <- RWORD(DATA := IND;);
DATA[7] <- RWORD(DATA := PWEhigh;);
DATA[9] <- RWORD(DATA := PWElow;);
DATA[11] <- RWORD( %Styrord
IF RefFreq > 2 * Fmin THEN % RefFreq is %, Fmin is Hz -> On when RefFreq > 0
Styrord := HEX(7C);
ELSIF Nostop > 0 THEN
Styrord := HEX(7C);
ELSE
Styrord := HEX(34); %off
ENDIF;
IF Reset > 0 THEN
Styrord := Styrord + HEX(80);
ENDIF;
DATA := HEX(400) + Styrord;
);
DATA[13] <- RWORD(DATA := RefFreq * 163.84;);
ANSWER SIZE 16
DATA[0] = HEX(02); % STX
DATA[1] = HEX(0E); % LGE
DATA[2] = BYTE(Addr); % address
DATA[3] -> RWORD( PKE := DATA;);
DATA[7] -> RWORD(
IF State = 5 THEN % Larm
hErr := DATA;
ELSIF State = 8 THEN % Varning
hWarning := DATA;
ELSIF State = 9 THEN % Larm
hErr := DATA;
ENDIF;
);
DATA[9] -> RWORD(
% PRINT("State ",State);
% IF ((PKE & HEX(7000)) = HEX(7000)) THEN
% PRINT("Error: PWE_låg ", DATA);
% ENDIF;
IF State = 1 THEN % Frekvens
Freq := DATA / 10;
ELSIF State = 2 THEN % Ström
Curr := DATA / 100;
ELSIF State = 3 THEN % Effekt
Power := DATA / 100;
ELSIF State = 4 THEN % Spänning
Volt := DATA / 10;
ELSIF State = 5 THEN % Larm
Err := DATA;
ELSIF State = 6 THEN % TLoad
TLoad := DATA;
ELSIF State = 7 THEN % Temp
Temp := DATA;
ELSIF State = 8 THEN % Varning
Warning := DATA;
ELSIF State = 9 THEN % Larm
Err := DATA;
ENDIF;
);
DATA[11] -> RWORD(
Tripp := DATA & HEX(08);
IF DATA & HEX(0800) THEN
Running := 1;
ELSE
Running := 0;
ENDIF;
StatW := DATA;
State := State -1;
IF (State = 0) AND (Running = 1) THEN
State := 9;
IF LastFmin = Fmin THEN %Updatera vid ändring
State := 93;
ENDIF;
ENDIF;
);
TIMEOUT 150
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.