S5-Datentyp KC in der S7

Woto

Level-2
Beiträge
82
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,
ich mache gerade eine Migration von S5 auf S7. Dabei habe ich folgendes Problem:
Ein S5-FB hat einen Eingangsparameter vom Datentyp KC. Wie kann man das in der S7 umsetzen und wie ist dann der Aufruf?
Hier Auszug aus dem S7-Code:
Code:
      CALL  "CODETIME"
       MODE:='CT'
       Z_DB:=
       Z_DW:=
       DAZE:=
       DAY :=
       MON :=
       YEAR:=
       HOUR:=
       MIN :=
       SEK :=

Und hier der S5-Code
Code:
 SPA FB 155 ;Startzeit eintragen
NAME: CODETIME
MODE: KC CT

Die Angabe 'CT' wird im S7-Code nicht akzeptiert. Der Eingangsparameter MODE ist als STRING deklariert.

Gruß,
Woto
 
Hallo,
das S5-Format 'KC' oder auch 'C' entspricht unter Step7 dem Typ String. Dennoch kannst du dein Vorhaben (die Konvertierung) so nicht umsetzen, da in Step7 ein FC oder FB beim IN-Parameter String bei der Daten-Übergabe keine Direkt-Eingabe zuläßt.

Gruß
LL
 
... was soll den der Sinn dieses Bausteins sein ? Irgendetwas mit der Uhrzeit ?
Wenn ja, dann werden die Hintergrund-Funktionen in der S7 auch anders gelöst, wie in der S5 ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mir geht es generell um die Frage, wie man so etwas umsetzen könnte.
Sicherlich könnte man den Baustein auch anders umsetzen, aber vielleicht braucht man mal eine Lösung für das Problem.
Könnte man wie folgt den Aufruf realisieren :confused:
Code:
      LAR1  P##ASTr
      L     2
      T     LB [AR1,P#0.0]
      T     LB [AR1,P#1.0]
      L     'C'
      T     LB [AR1,P#2.0]
      L     'T'
      T     LB [AR1,P#3.0]
      CALL  "CODETIME"
       MODE:=#AStr
       Z_DB:=
       Z_DW:=
       DAZE:=
       DAY :=
       MON :=
       YEAR:=
       HOUR:=
       MIN :=
       SEK :=
Wobei AStr als temporäre Stringvariable deklariert ist.
 
... das sollte so funktionieren, wie du es angedacht hast ... gefallen tut es mir nicht ... für dein aktuelles Problem würde ich das noch einmal überdenken ...

Gruß
LL
 
Ja, das geht so, hier mal ein definitiv laufendes Codestück.

Code:
      LAR1  P##strPB2O_Event
      L     3
      T     LB [AR1,P#0.0]
      T     LB [AR1,P#1.0]
      L     'LL'
      T     LW [AR1,P#2.0]
      L     '_'
      T     LB [AR1,P#4.0]

AUFT: SET   

      CALL  "String umkopieren"
       InString :=#strPB2O_Event
       RET_VAL  :=#RETVAL
       OutString:="PB2O_Konstanten".ZWERG

PS: Du kannst 2 Buchstaben gleichzeitig kopieren.
 
Noch eine kleine Frage dazu.
Wenn man die temporäre Stringvariable als String[2] deklariert und nicht als String, könnten dann die drei Codezeilen
Code:
      L     2
      T     LB [AR1,P#0.0]
      T     LB [AR1,P#1.0
entfallen?
 
Nein ...
der String muß für viele Funktionen initialisiert sein.
Entfallen lassen könntest du das nur, wenn in deinem Baustein nicht mit String-Funktionen gearbeitet wird, sondern der String im Prinzip als ARRAY of Byte verwendet wird. Ich würde es aber aus Gründen der systematik gar nicht erst "falsch" anfangen ...
 
String

Hallo Woto,

kannst auch den Parameter auf WORD deklarieren. Leg ein temp. Wort an und das wird mit dem "String" beschrieben.

L 'CT'
T t_WORD

CALL "CODETIME"
MODE:=t_WORD
Z_DB:=
Z_DW:=
DAZE:=
DAY :=
MON :=
YEAR:=
HOUR:=
MIN :=
SEK :=


Wenn du den Umweg über die Temp-Variable nicht machst wandelt dir S7 beim nächsten Speichern dein 'CT' in W#16#... um.

André
 
Hallo sps-concept,
das sieht gut aus und kommt dem Original (S5-Code) sehr nahe.:cool:

Aber wahrscheinlich müßte man dann im FC die Auswertung des Eingangsparameter anders gestalten, da nun der Typ WORD anstatt STRING verwendet wird.;)

Werde ich mal ausprobieren und das Ergebnis hier posten.

Also bis denne,
Woto
 
Zuviel Werbung?
-> Hier kostenlos registrieren
String

Hallo Woto,

deswegen hab ichs ja gepostet weils S5 -> S7 ist. In der S5 konnte der Parameter auch nur ein Wort gewesen sein. Theoretisch kann man sowas 1:1 übersetzen. Das einzige ist nach dem Speichern dass S7 das in W#16#.. umwandelt. Solche Sachen wurden meist für die Parametrierung von Bausteinen benutzt um die Arbeitsweise des Bausteins festzulegen. Sicher fragst du intern auch nur paar Zeichen ab..

Code:
L #MODE
L 'CT'
.
.

André
 
Zurück
Oben