BITTE um HILFE

mike1976

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

könnt ihr mir vielleicht weiterhelfen, habe eine cpu315-2dp mit ner 258memory card. Habe nun folgendes Problem:

Da ich ein ziemlich grossen programm ablauf habe und leider nicht wirklich so auf die merkerbereiche geachtet habe, ja ich weis sollte man eigentlich schon beachten, aber jetzt ist es leider zu spät!!! Ziemlich oft stromausfälle die auch mal 2 bis 3 tage dauern können und die usv leider nur ca 1 tag hält kommt es ziemlich oft vor das mir im mitten ablauf der saft ausgeht und natürlich alle merker null sind wenn der strom wieder kommt.

Da, wie ich schon geschrieben hab, die merker bereiche ziemlich verschieden sind und ich bei der cpu nicht alle auf remanent stellen will,
hätte ich nun ne frage ob ihr eine idee hättet wie ich das lösen könnte ohne das ich das ganze programm umwürfeln muss.?!

Wäre sehr sehr dankbar über einige vorschläge da es ziemlich wichtig wäre.!!

DANKE im vorraus
Mike
 
find ich zwar sehr merkwürdig, wenn eine anlage mehrere tage ohne spannung ist aber......

du könntest das z.b. so lösen
alle merker in db's retten/wiederherstellen

ob1:
netzwerk 1
CALL SFC 20
SRCBLK :=P#DB10.DBX0.0 BYTE 255
RET_VAL:=#retval
DSTBLK :=P#M 0.0 BYTE 255

...
...

netzwerk: letztes
CALL SFC 20
SRCBLK :=P#M 0.0 BYTE 255
RET_VAL:=#retval
DSTBLK :=P#DB10.DBX0.0 BYTE 255
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Volker,
da die anlage in einem fernen land steht und die es nicht so haben mit dem strom, ist das leider so sonst wäre das eh alles kein problem gewesen und es hat mich leider auch keiner darauf aufmeksam gemacht als ich das prog zuhause vorbereitet haben wo es immer strom giebt denkt man auf so was leider auch nicht.

So wie ich dich verstanden habe eröffne ich am anfang des jeweilligen ob oder fc...... einen DB meiner wahl und speichere dann die merker in jeweiligen db oder? Da muss ich aber ein ganzes merkerbyte nehmen oder kann ich auch einzelne nehmen zb. m0.0 m1.7 m30.3 usw????
 
Hallo,

oder das ganze "hardware-seitig" lösen und die USV vergrößern.

Kannst du nicht einfach die 24V für die CPU über eine 100Ah-Batterie führen?
Das sollte ein paar Tage (für die CPU!!) reichen



MfG
 
du kannst natürlich auch alle einzeln retten/wiederherstellen. aber warum nicht direkt alle?
für dein prog ändert sich dadurch absolut nichts.
es sei denn du hast merker, die beim neustart unbedingt auf 0 stehen sollen.

das kannst du dann aber im ob100 proggen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

oder das ganze "hardware-seitig" lösen und die USV vergrößern.

Kannst du nicht einfach die 24V für die CPU über eine 100Ah-Batterie führen?
Das sollte ein paar Tage (für die CPU!!) reichen



MfG


Das wäre natürlich die beste lösung und so wie ich mir das vorstellen kann auch die einfachste wenn ich so ein "kauderwelsch" in meinen programm habe!!! Aber würde mich trozdem interresieren was ich programm technisch da machen könnte, denn ich weis leider nicht wann ich in diesem "kaff" ne battery bekommen würde!!
 
du kannst natürlich auch alle einzeln retten/wiederherstellen. aber warum nicht direkt alle?
für dein prog ändert sich dadurch absolut nichts.
es sei denn du hast merker, die beim neustart unbedingt auf 0 stehen sollen.

das kannst du dann aber im ob100 proggen.

Ja das problem ist das einige viele beim neustart null sein müssen,
und da ist´s auch wieder so, mal ein paar aus dem 0byte, 73byte, 12byte usw sonst könnte ich einfach alle remanent machen und einfach in die bytes was null sein müssen im ob100 null laden oder??
zb:
OB100:
L 0
T mw23
T mw12
........
........

und wenn ich das jetzt mit deinem vorschlag von vorhin machen würde, dann müsste ich nicht die merker sondern den DB wert null stellen oder wenn ich das richtig verstehe!!!
 
Entweder in die DB-Bytes oder du schreibst die Nullen nach dem 1. Aufruf des SFC20 in deine Merker und fertig. Dazu setzt du im OB100 einen Hilfsfmerker, der dann den Transfer im OB1, nach Aufruf des SFC20 auslöst. Den Hilfsmerker setzt du am Ende des OB1 wieder zurück.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
habe das beispiel von volker getestet das würde dem entsprechen das ich benötige. Habe nur folgendes problem:

mit dem: CALL SFC 20
SRCBLK :=P#M 160.0 BYTE 40
RET_VAL:=#ret_val_db201
DSTBLK :=DB201.DBB0

komme ich nicht ganz klar, so wie ich das verstehe nimmt er mir ab m160, 40byte´s!! So aber beim speicher db201.dbb0 habe ich laut dem befehl ja nur ein byte angegeben oder?!?! Habe es auch getestet und er beschreibt mir im db201 auch nur das erste byte.
Wie sage ich ihn jetzt aber das er dort, also im db201 auch 40bytes nimmt??
Oder geht das nur mit merker bytes?? meine den aufruf: "P#M 160.0 Byte 40"geht, aber "P#DB201.DBB0 Byte 40" geht nicht!!

mfg mike
 
Ok so gehts:Beschreiben

CALL "BLKMOV"
SRCBLK :=P#M 52.0 BYTE 3
RET_VAL:=MW400
DSTBLK :=P#DB200.DBX0.0 BYTE 3

Lesen:

CALL "BLKMOV"
SRCBLK :=P#DB200.DBX0.0 BYTE 3
RET_VAL:=MW400
DSTBLK :=P#M 52.0 BYTE 3


Den beschreiben mach ich in einem FC da ich mehrere MB in verschiedenen bereichen habe, das lesen füre ich dan im ob100 durch.


Könnte ich das so lösen oder denkt ihr eher nicht?!?!

mfg mike
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
und wenn ich das jetzt mit deinem vorschlag von vorhin machen würde, dann müsste ich nicht die merker sondern den DB wert null stellen oder wenn ich das richtig verstehe!!!
genau so ist es
Oder geht das nur mit merker bytes?? meine den aufruf: "P#M 160.0 Byte 40"geht, aber "P#DB201.DBB0 Byte 40" geht nicht!!
die anfangsadresse muss immer mit einer bit-adresse beginnen!
also P#DB201.DBX0.0 Byte 40

anfang und ziellänge sollten nach möglichkeit immer gleich sein
siehe dazu die hilfe des sfc
 
Danke an alle, habe mich für die version von Volker entschiden, schon getestet und bis jetzt funzt alles zu 100%. Hoffe ich bekomme keine bösen überraschungen!!

Super Forum, schnelle Hilfe!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Habt mir echt aus der "patsche" geholfen. DANKE

mfg mike
 
Zurück
Oben