TIA 1500er SPS und Block_DB_TO_WORD

Aksels

Level-2
Beiträge
257
Reaktionspunkte
9
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,

ich habe hier eine SPS 1511 und Programmiere im TIA V13 (ich weiß, ich bin masochistisch!).

Die 1500er unterstützen den Befehl Bloc_DB_To_Word nicht.
Dafür muss man jetzt DB_ANY_TO_UINT nehmen.
Gibt es eigentlich eine Tabelle, in der solche 300er auf 1500er Bausteinänderungen drinstehen? Für TOF auf TOF_TIME hab ich nämlich auch ein graues Haar dazu bekommen.

Nun die Frage:

Dies hier wird übersetzt:
Code:
[
#T_Ret := ATTR_DB(REQ := "M_True", DB_NUMBER := DB_ANY_TO_UINT("DB_Fehler"), DB_LENGTH => #T_Temp, ATTRIB => #T_Attri);
#T_DB_Len:=WORD_TO_INT(#T_Temp);
#T_FDBs:=(#T_DB_Len / 38)-1;
/CODE]

Dies hier nicht:
[CODE]
#T_Ret := ATTR_DB(REQ := "M_True", DB_NUMBER := DB_ANY_TO_UINT("DB_Parkdeck"), DB_LENGTH => #T_Temp, ATTRIB => #T_Attri);
//#T_Ret:=TEST_DB(DB_NUMBER:=BLOCK_DB_TO_WORD("DB_Fehler"), DB_LENGTH=>#T_Temp, WRITE_PROT=>#T_DB_RO);
#T_DB_Len := WORD_TO_INT(#T_Temp);
#T_FDBs := (#T_DB_Len / 38);

Beim zweiten wird DB_Parkdeck unterkringelt und diese Fehlermeldung ausgegeben:
2,Eine implizite Konvertierung von Datentyp 'Block_DB' nach 'DB_ANY' ist nicht möglich.,1,0,09:52:06

Ich bin etwas ratlos. DB_Fehler und DB_Parkdeck DBs sind ganz normale DBs.

Code:
DATA_BLOCK "DB_Fehler"
{ S7_Optimized_Access := 'FALSE' }
VERSION : 0.1
   STRUCT 
      Fehler : Array[0..7] of "DT_Fehler";
   END_STRUCT;

BEGIN
END_DATA_BLOCK

Code:
DATA_BLOCK "DB_Parkdeck"
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
NON_RETAIN
   VAR 
      Nr : Array[1..7] of Struct
         AnzFZ : Int;
         MaxAnzFZ : Int;
         AnzFZAmpelRot : Int;
         I_BewMeld : Bool;
         I_LichtStufe : Int;
         LichtStufe : Array[1..2] of Struct
            LichtImmerAn : Bool;
            LichtAnAbFzAnz : Int;
            LichtAnAbFzAnzUndLF : Int;
            LichtAnBewMeld : Bool;
            LichAnBewMeldZeit : Int;
            LichtAnSpindel : Bool;
            LichtAnSpindelZeit : Int;
            LichtAnVorhSpindel : Bool;
            LichtAnVorhSpindelZeit : Bool;
            Q_LichtIstAn : Bool;
         END_STRUCT;
      END_STRUCT;
   END_VAR

BEGIN
END_DATA_BLOCK


Woran liegt das?
Gruß,
Aksels
 
Super!
So sieht man es direkt.
{ S7_Optimized_Access := 'TRUE' }
Nur ins Forum schreiben und schon wird es klar!

Vielleicht hat jemand aber eine Info zu der "Übersetzungs"-Tabelle.
Oder einen Tip, wie man das eleganter Programmiert?
Ich brauche die Dimension der Arrays, also von 0 bis 7 im ersten oder von 1 bis 7 im zweiten Baustein.

Gruß,
Aksels
 
Zurück
Oben