Quantcast
Channel: SPS-Forum - Automatisierung und Elektrotechnik
Viewing all articles
Browse latest Browse all 46422

TIA TIA V14 SCL Problem mit Migration von S7/300 S_ODT Parameterversorgung

$
0
0
Hallo liebe Gemeinde! 8-)

Ich bin gerade dabei ein recht Umfangreiches S7/300 Pgm zu migrieren auf TIA14SP1.
Nun das meiste habe ich geschafft. Leider hänge ich jetzt an dem S_ODT fest!

In Step7 V5.5 SCL übersetzt er nachfolgendes Programm ohne Probleme.
In TIA 14 meckert er an der Parameterversorgung des zweiten S_ODT er möchte mit Parameter S: versorgt werden und dann noch mit TV:

Wo liegen hier die Unterschiede? :confused:

Code:

FUNCTION Taktzeitmessung : DINT

TITLE = 'Taktzeitmessung'
//
// Der Baustein bestimmt die Taktzeit einer Maschine und berechnet
// die Takte pro Minute bzw pro Stunde
//
VERSION : '1.0'
AUTHOR  : Ht
NAME    : name
FAMILY  : SCL
// Bausteinparameter
VAR_INPUT
  Trigger_fuer_Messung : BOOL;  // Wechsel von 0 nach 1 bestimmt Anfang
                                // und Ende der Messung
  Start: BOOL;                  // Bestimmt optional den Anfang der Messung
  _Timer    : TIMER;            // Timer für Messung
  Zeit_0_bis_10_s : BOOL;      // Zu messende Zeit liegt zwischen 0 und 9,99 s
  Zeit_0_bis_100_s : BOOL;      // Zu messende Zeit liegt zwischen 0 und 99,9 s
  Zeit_0_bis_1000_s : BOOL;    // Zu messende Zeit liegt zwischen 0 und 999 s
END_VAR

VAR_IN_OUT
  Taktzeit : DINT;              // Taktzeit in ms
  Takte_pro_Minute : INT;      // Takte pro Minute * 10
  Takte_pro_Stunde : DINT;      // Takte pro Stunde * 10
  Trigger_fuer_Messung_alt : BOOL;  // Speicher für Trigger
  Start_alt : BOOL;                // Speicher für Startsignal
END_VAR


VAR_TEMP
  Maxzeit : S5TIME;            // Zeitwert für Timer
  Abgelaufene_Zeit : S5TIME;    // Timerwert bei Ende Messung
  Flanke_Trigger : BOOL;        // Flanke des Triggersignals
  Flanke_Start : BOOL;          // Flanke des Startsignals 
END_VAR
 

// Flankebildung
  Flanke_Trigger := Trigger_fuer_Messung AND NOT Trigger_fuer_Messung_alt;
  Flanke_Start := Start AND NOT Start_alt;
// Speicher für Flanken 
  Trigger_fuer_Messung_alt := Trigger_fuer_Messung;
  Start_alt := Start;

 
  // Maximale Zeitdauer setzen
      IF Zeit_0_bis_10_s THEN
      Maxzeit := T#9s990ms;
     
      ELSIF Zeit_0_bis_100_s THEN
      Maxzeit := T#99s900ms;
     
      ELSIF Zeit_0_bis_1000_s THEN
      Maxzeit := T#999s;
      END_IF;
     
     
// Timer als Einschaltverzögerung Starten
  Abgelaufene_Zeit :=S_ODT(T_NO:=_Timer,
                    S:= NOT Flanke_Trigger AND NOT Flanke_Start,
                    TV:=Maxzeit);

// Bei Flanke Messung durchführen 
  IF Flanke_Trigger THEN
 
  Abgelaufene_Zeit := S_ODT(T_NO:=_Timer);        // ************ Ab hier happert´s **********************
 
  Taktzeit := TIME_TO_DINT (S5TI_TIM(IN :=  Maxzeit))
              - TIME_TO_DINT (S5TI_TIM(IN := Abgelaufene_Zeit));
  Takte_pro_Minute := REAL_TO_INT(600000 / Taktzeit);
  Takte_pro_Stunde := REAL_TO_DINT(36000000.0 / DINT_TO_REAL(Taktzeit));
 
  END_IF;
// Rückgabewert 
  Taktzeitmessung := Taktzeit;
  Taktzeit := Taktzeit;
END_FUNCTION


Danke im voraus

Viewing all articles
Browse latest Browse all 46422