DB initialisieren und neue werte schreiben

sb9674

Level-1
Beiträge
19
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo
Ich möchte einen DB initialisieren, und jedes Mal nach die Initialisierung sollten neue werte mit in diesen DB geschrieben werden.
PS : die Initialisierung habe ich mit SFC21 BLOCK-MOVE gemacht.

Leider es werden keine neue werte drin geschrieben ,sondern nur die selben werte ,normalerweise nach die Initialisierung im Netzwerk 3 (FB), mussten eigentlich neue werte vom Netzwerk 4 im DB geschrieben werden, geht aber leider nicht ,brauche ich vielleicht ein SPA (JUMP) befehl? oder eine Schleife??......
eine IDEE vielleicht ?
danke im Voraus für ihre antworte
Gruß
Samuel
 
Hallo Samuel,

der SFC21 ist der FILL Baustein und nicht der Blockmove (SFC20).
Kann das Dein Fehler sein?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
hallo Paule
ich glaube nicht , also ich habe diesen DB geklonnt und ich benutze diesen den SFC20 um meinen DB mit 0 zu füllen (zu initialisieren ), das ist eigenlich das gleiche wie beim SFC21 (denke ich mal ) .
oder ???
 
Wenn er die Werte zum Beispiel von einem unlinked Db holt, dann geht das auch mit der SFC20.
Leider es werden keine neue werte drin geschrieben ,sondern nur die selben werte ,
Woher kommen die neuen Werte? Wenn die von einer Visu geschrieben werden und du lässt die SFC20 immer laufen, dann überschreibt der deine Eingaben natürlich wieder.
 
Verstehe ich leider nicht ganz, aber heisst das, ich soll vielleicht ein Timer einsetzen, damit den Kopiervorgang mit dem SFC20 sich nicht wiederholt??
ich wollte einfach dass die geschriebene werte in diesem DB, gelöscht werden, (deshalb SFC20) und dann geht weiter mit den weiteren neuen werten ….
Gruß
Samuel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
... ,normalerweise nach die Initialisierung im Netzwerk 3 (FB), mussten eigentlich neue werte vom Netzwerk 4 im DB geschrieben werden, geht aber leider nicht ,brauche ich vielleicht ein SPA (JUMP) befehl? oder eine Schleife??......
Hallo Samuel,
wenn Du in jedem Zyklus den DB initialisierst, muss natürlich auch sichergestellt werden dass in jedem Zyklus im NW4 die Daten neu beschrieben werden.

Kann aber schon sein das Du Online im DB nichts siehst, und trotzdem die richtigen Werte, für die nach folgenden Bausteine zur Verfügung hast.

Mir stellt sich die Frage warum machst Du so was? Jeden Zyklus alles ablöschen und neu beschreiben.

Wenn das aber nicht immer passieren soll mit dem initialisieren, ja dann natürlich drüber hüpfen. :D
 
Ich verstehe dass so, dass du deinen DB einmal initialsieren und danach mit neuen Werten beschreiben willst.
Vermutlich lässt du die Initialsierung immer laufen und überschreibst deine geänderten Werte.
Du musst den Blockmove über eine Bedingung aufrufen, oder besser gesagt mit einem bedingten Sprung (SPB oder SPBN) nach der Initialisierung nicht aufrufen.
Beispiel für eine einmalige Initialisierung:
Code:
      U     #INIT_FINISHED
      SPB   M001

      CALL  "BLKMOV"
       SRCBLK :=#SRC
       RET_VAL:=#SFC_RET_VAL
       DSTBLK :=#DST

      U     BIE 
      S     #INIT_FINISHED
M001: NOP   0
Die Variale Init_Finished darf keine Temp Variable sein.
 
Zuletzt bearbeitet:
Hallo paule
Ich tue das nicht im DB online beobachten, sondern im HMI pro (BOF), und wenn du dich interessiert warum ich sowas machen:-D
Weil jedes Mal wenn DB gelöscht wird und neu befüllt, wird das von ein SIMULATOR (Sinumerik) als maschine betrachtet, und so wird die Kommunikation der Daten Transfer immer geprüft.

Paule was meinst du mit NW4???
Gruß
Samuel
 
Das Beispiel von mir ist für eine einmalige Initialisierung ausgelegt.
Um jetzt deine Initialisierung neu zu starten, müsstest du das Bit wieder rücksetzen.
In deinem Fall wäre es vielleicht besser, ein aktives "Init" Bit zu nehmen. Also bei Init=true, die Initialisierung auszuführen (eventuell mit Flankenerkennung).
 
Zurück
Oben