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

Kleinerwolf

Level-1
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

  • DE_SINUMERIK ONE STEP 7 Basic 0613_2020-03.pdf
    447,8 KB · Aufrufe: 16
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