Idee für Positionsregister

Daimonion

Level-1
Beiträge
79
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo

Ich bräuchte mal eine kleine Hilfestellung für einen Programmieransatz. Komme da bei meinem Problem gerade nicht weiter

In der Anlage, die ich gerade Programmiere gibt es für die Teile die gehandelt werden, verschiedene Daten die mitgeführt werden müssen. Die Teile können auf unterschiedlichen Stationen abgelegt werden wo sie dann bearbeitet werden und später wieder weiter transportiert werden. Jetzt hab ich für jede Station eine ID vergeben die mir mein Hanldingsroboter bei einem Greif - bzw. Ablegevorgang als Bytevariable übergibt und anhand derer ich feststellen kann von welcher Quellstation auf welche Zielstation ein Transport stattfindet. Ich muss dann in der SPS dafür sorgen, dass die Daten umkopiert werden. Für die Daten der Teile habe ich einen UDT Baustein angelegt, und einen DB in dem für jede Station ein Datenbereich vom Typ des UDT reserviert wurde.

Was ich aber noch brauche ist ja die Zuordnung der Stationsnummer zu der entsprechenden Startadresse in dem DB. Die Stationsnummer kommt vom Roboter in einer Bytevariable und kann Dezimal verarbeitet werden. Hab zuerst gedacht, dass ich mir eine Tabelle anlege die die Startadressen mit den Stationsnummern verknüpft, aber dazu bräuchte ich ja so was ähnliches wie eine Key/Value Beziehung.

Könnt ihr mir eine Hilfestellung beim Lösungsansatz dazu geben?

Vielen Dank schon mal im Voraus!

Grüße
Daimonion
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Was ich aber noch brauche ist ja die Zuordnung der Stationsnummer zu der entsprechenden Startadresse in dem DB. Die Stationsnummer kommt vom Roboter in einer Bytevariable

In einem DW (32 Bit). Zum Beispiel: linkes Byte (8 Bit) - für Stationsnummer;
rechte 3 Bytes (24Bit) – für Startadresse.
AWL-Operationen:SLD; SRD; OD; UD.
mfg

Michael
 
das ist leicht zu berechnen und bedarf nicht wirklich scl ;)

Code:
      L     DB20.DBW    4 //stationsnummer
      L     DB450.DBW    2 //größe des datenbereichs in byte
      *I    
      L     DB450.DBW    2
      -I    //startadresse
      SLD   3
      LAR1                              //pointer auf startadresse

wenn dein bereich klein ist kannst du die daten nun über das adressregister kopieren.
wenn er grösser ist baust du dir aus der startadresse einen anyzeiger den du an die sfc20 hängen kannst
 
Code:
      L     DB20.DBW    4 //stationsnummer
      L     DB450.DBW    2 //größe des datenbereichs in byte
      *I    
      L     DB450.DBW    2
      -I    //startadresse
      SLD   3
      LAR1                              //pointer auf startadresse

Volker, bist Du sicher?
sollte es nicht so sein:

Code:
      L     DB20.DBW    4 //stationsnummer
      L     1                   // Dekremtieren um Offset zu verhindern
      -I
      L     DB450.DBW    2 //größe des datenbereichs in byte
      *I    
      SLD   3
      LAR1                              //pointer auf startadresse

Oder bin ich auf dem falschen Dampfer?
 
Zurück
Oben