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
3461

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;

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.