60 verschiedene Programme mit 10 Positionen

Zuviel Werbung?
-> Hier kostenlos registrieren
Super Jungs ich glaube es hat klick gemacht und ich habe es geschnallt zumindestens was das auslesen angeht.
nur wie kriege ich bei geänderten daten den einelnen dint wieder an die richtige stelle ??
Jedesmal über blockmove umkopieren also jenden Zyklus ??
Oder geht das schonender habe nur ne 313CDP
Gruss micha
 
Änderungen

Hi,
Super Jungs ich glaube es hat klick gemacht und ich habe es geschnallt zumindestens was das auslesen angeht.

nur wie kriege ich bei geänderten daten den einelnen dint wieder an die richtige stelle ??​
meinst du, wenn der User am OP/Visu die Programmdaten ändert?
Kannst genauso machen, wie beim lesen:
so als Idee:
am OP gibt es ein Bild "Programmdaten", da ist die Programmnummer (1..60) und so und soviel Eingabevariablen(sagen wir 10 DBDs). Und von mir aus eine Taste "Daten speichern".
So, wenn der User da was ändert, und "speichern" betätigt, schreibst du die Variablen vom OP an die richtige Rezept-Stelle in deienm DB, über die Pointergeschichte, wie beim lesen weiter oben. Zyklisch - muss nicht sein.
D.h., es gibt drei DB Bereiche: OP Variablen für Programmdaten(1 Satz), aktiv Programmtyp(1 Satz, die Anlage läuft damit), und DB mit 60x Satz, für alle Programme.
Beantwortet das deine Frage?

Vladi
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen Vladi,

ja so ungefähr wenn ich mich doch mehr mit AWL beschäftigt hätte bin Graph freak und KOP.
Daher mache ich es im Kop wenn am OP einer die daten ändert über Move
Also ändere ich die Daten im DB wo ich meine Positionen reinkopiert habe und
sage dann
zB
U M10.0
L Datendoppelwort im Speicher doppel wort
T über Pointer ?
Gruss Michael
 
Ich versuchs nochmal:

Nimm den FC, dann brauchst du keine Pointer.
Mach dir eine Flanke für Laden, eine für Speichern. Damit rufst du den FC112 (Blk_Move) jeweil mit der Flanke auf. Also, bei Flanke "Laden" Sprung zu LOAD, bei Flanke "Speichern" Sprung zu SAVE.

Code:
Quelldaten: INT
Zieldaten: INT
Ret_Value: INT
Code:
      U     "DATA_TP270_IFACE".TASTE_TP.ACHSE_Laden           //Flanke
      SPB   LOAD
      U     "DATA_TP270_IFACE".TASTE_TP.ACHSE_Speichern      //Flanke
      SPB   SAVE

      BEA
Speichern:

Code:
 SAVE: NOP   0
//         ***Zieladresse***
//    Datenbank Typ beginnt bei DW40 und ist 40 Byte lang Offset 40 Byte zum nächsten
      L     "DATA_TP270_IFACE".TYP  //INT 1..60, der angewählte Typ   
      L     1
      -I    
      L     40                         //Länge pro Typ 10 DD --> 40Byte
      *I    
      L     40                         //1. Speicherbereich
      +I                                //Offset
      T     #Zieldaten

//         ***Quelle***
      L     0
      T     #Quelldaten

      CALL  "BLK_MOVE"  //FC112 !!!
       AnzahlDBB:=40
       QuellDB  :=12
       QuellDW  :=#Quelldaten
       ZielDB   :=12
       ZielDW   :=#Zieldaten
       RET_VAL  :=#Ret_Value


      SPA   ENDE
Laden:

Code:
LOAD: NOP   0

//         ***Quelladresse***
//    Datenbank Typ beginnt bei DW40 und ist 40 Byte lang Offset 40 Byte zum nächsten
      L     "DATA_TP270_IFACE".TYP
      L     1
      -I    
      L     40                         //Länge pro Typ 
      *I    
      L     40                         //Offset
      +I    
      T     #Quelldaten

//         ***Ziel***
      L     0
      T     #Zieldaten


      CALL  "BLK_MOVE"   //FC112 !!!
       AnzahlDBB:=40
       QuellDB  :=12
       QuellDW  :=#Quelldaten
       ZielDB   :=12
       ZielDW   :=#Zieldaten
       RET_VAL  :=#Ret_Value


      SPA   ENDE

...

ENDE: NOP 0
 
Zuletzt bearbeitet:
Danke Ralle
solangsam komme ich mit aber der DB ist der selbe ?? Quelle Und ziel ??
Steht beides mal 12 drin
Gruss MIchael
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke Ralle
solangsam komme ich mit aber der DB ist der selbe ?? Quelle Und ziel ??
Steht beides mal 12 drin
Gruss MIchael

Nun, das kann du machen, wie du möchtest. Ich habe bei mir im DB12 DBD 0-9, also in den ersten 40 Byte die aktuell zu bearbeitenden Daten stehen. Auf diese greift dein Programm, wie auch das TP zu. Ab DBD10 (Byte40) stehen dann Typ 1-60, daher der Offset 40! für den 1. Speicherbereich. Du kannst aber auch unterschiedliche DB nutzen, dann nur die Varibalen für Ziel- und Quellbereich entsprechend angepaßt berechnen.
 
Hallo Ralle
und wo nimmst du die Daten 1-60 her ??
Gruss micha

Versteh nicht ganz deine Frage, aber ich versuchs mal ;)!

Der DB 12 hat 61x10DBD als Eintrag.

Bereich 1 ist der aktuelle Aarbeitsbereich, 2-61 sind die Typdaten.
Wenn du über das TP einen Typ anwählst, ist das ein INT 1-60. Mit diesem angewählten Typ (-nummer) kannst du dann rechnen, um den Darenblock umzukopieren.
 
Zurück
Oben