TIA SINUMERIK ONE "Achs-DB zur Laufzeit variabel ansprechen"

Kleinerwolf

Level-2
Beiträge
13
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

da ich mich gerade versuche die Umstellung Sinumerik 840Dsl (S7-300 Step 7 classic) nach Sinumerik ONE (S7-1500 TIA-Portal) umzustellen, sind gleich bei den einfachsten Bausteinen die ersten Fragezeichen aufgetaucht :D

Problemstellung:
==========

Da unsere Achskonfiguration nicht immer der Standard-Reihenfolge von Siemens entspricht brauche ich eine Möglichkeit die PLC-Datentypen variabel anzusprechen.

d.h. Die B-Achse (Rundtisch) ist einmal die Achse 4 (DB34) und bei einem anderen Projekt die Achse 8 was dem DB38 entspricht.

Bei Step 7 classic:
===========

hat dies folgend ausgesehen
AUF DB[Variable]

// Messsystem 1
SET
= DBX1.5

Bei TIA:
=====

1. PLC-Datentyp mit den Achssignalen angelegt "LBP_typeAxisX" welche 1:1 der Siemens Nahtstelle Achssignale entspricht (Step 7 classic UDT's)

2. DB31 - 61 angelegt und dem Datentyp zugewiesen.

3. mittels IN/OUT wird der benötigte DB vom Datentyp "LBP_typeAxisX" übergeben jedoch ist dieser dann nicht flexibel (Siehe Anhang Seite 2).

4. Wie kann ich diese Übergabe symbolisch variabel gestalten? Ich habe etwas von DB_ANY gelesen was die Funktion "AUF" ersetzen soll/kann...


Ich bin für jeden Ratschlag dankbar wie so etwas aussehen könnte, in welcher Programmiersprache auch immer!
 

Anhänge

Du kannst wenn die DB Nr als INT übergeben wird so etwas bauen

Code:
tempAxisDBVariant  : Variant  
tempAxisDB : LBP_typeAxisX

#tempAxisDBVariant := DB_ANY_TO_VARIANT(in := UINT_TO_DB_ANY(INT_TO_UINT(#tempAchsDBNr)), err => #tempErrorDb); //  vom INT to Variant 
      IF TypeOf(#tempAxisDBVariant) = "LBP_typeAxisX" THEN  // ist der DB auch vom Type Axis
          VariantGet(SRC := #tempAxisDBVariant,    // kopieren nach TempAxisDB
                     DST => #tempAxisDB);
  


//     irgendwas mit dem DB machen 
          #tempAxisDB.A_ContrEnable := #Maschine_ein;


          VariantPut(SRC := #tempAxisDB,   // wieder zurück kopieren 
                     DST := #tempAxisDBVariant);
      ELSE

// fehler abhandeln


wenn dir das nicht gefällt kannst du auch mit POKE arbeiten
das ist in der Hilfe vom TIA erklärt
 
Zurück
Oben