Step 7 Datenbaustein schützen gegen Änderungen oder dauernd mit einem DB überschreiben?

Zuviel Werbung?
-> Hier kostenlos registrieren
Wielange die CPU zum kopieren braucht kann man pauschal nicht sagen. Einfach Zykluszeit beobachten ohne den Kopiervorgang (EN auf FALSE) und mit. Sieht man da keine deutliche Differenz macht es der CPU nix. SFC20 wird in einem Zyklus komplett fertig bearbeitet. Alle 12000 Byte werden in diesem Zyklus kopiert. Dauert das Kopieren zu lange, spricht die Zykluszeitüberwachung der CPU an.
 
okay danke, also das heisst, sfc20 kopiert immer..und wenn es große dateimengen sind, wird meine Zykluszeit dadurch verlängert, erst wenn das kopieren fertig ist, dann startet ein neuer Zyklus,
das heisst ich kann den enable am SFC20 auch als kurzen Impuls starten und muss ihn nicht eine bestimmte zeit anstehen lassen.

werde das mal testen mit der Zykluszeit morgen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
okay danke, also das heisst, sfc20 kopiert immer..und wenn es große dateimengen sind, wird meine Zykluszeit dadurch verlängert, erst wenn das kopieren fertig ist, dann startet ein neuer Zyklus,
das heisst ich kann den enable am SFC20 auch als kurzen Impuls starten und muss ihn nicht eine bestimmte zeit anstehen lassen.
Richtig, eine Flanke am EN reicht für einen vollen Kopiervorgang. Wenn es der Zykluszeit nichts macht würde ich immer kopieren. Eine ständig etwas längere Zykluszeit ist eventuell besser als eine „sporadisch“ längere.
 
da der bediener die daten bisher nur in Grundstellung der Maschine ändern konnte, aber nicht während die auto Schrittkette läuft, reicht es wohl aus, wenn ich die Grundstellung abfrage, solange diese 1 ist, wird kopiert und eventuelle Änderungen am Display überschrieben,
sobald die Maschine gestartet ist, kann der Bediener am display nichts mehr ändern und das hat dann den Vorteil, dass die CPU während dem Automatikablauf nicht durch das Kopieren belastet wird, da die Daten da ja sowieso unverändert sind.
 
Auch meine Meinung: Wenn schon kopieren, dann in jedem Zyklus kopieren.
Dann gibt es keine Überraschungen, wenn mehrere "selten" vorkommenden länger dauernden Vorgänge mal zufällig im selben Zyklus auftreten.
Außerdem sind meistens ungefähr gleich lange Zyklen besser als stark schwankende Zykluszeiten.
Außerdem weiß die SPS nicht, wann am HMI ein Bediener unberechtigt eingeloggt ist und seine Änderungen durch das Überkopieren verhindert werden sollen.

PS: OK, wenn in bestimmten Betriebsarten garantiert ist, daß vom HMI keine Änderungen kommen können, dann braucht man da das Überschreiben theoretisch nicht verhindern. Ich würde aber nicht davon ausgehen, daß sich alle HMI-Panele und Simulationen und PGs/Programmierer und ... daran halten. Da bei Kommunikation Zeit vergeht, kann man es drauf anlegen, zu eigentlich "unmöglichen" Zeiten trotzdem Werte-Änderungen in die SPS zu schmuggeln.

Harald
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
ich hab noch eine Frage zum blkmove sfc20:
ich habe mich etwas vertan, sind doch ein paar Bytes mehr.. nämlich knapp 12000bytes. die von DB2 in DB1 kopiert werden.
Quelle: p# DB2.DBX0.0 Byte 12000
Ziel: p# DB1.DBX0.0 Byte 12000
Wenn du aktuell in der SPS nur mit dem DB 2 arbeitest, dann dient das Kopieren von Db2 nach Db1
eigentlich nur dazu Bedienerirritationen zu vermeiden. D.h. das Kopieren des DB's verhindert nur
dass Eingaben die am OP zwischenzeitlich getätigt werden nicht scheinbar aktiv bleiben!
Daher ist ein Takt von 1s durchaus ausreichend. Wird ein größerer Takt gewählt, so bleibt der Wert
im Display einfach länger stehen.

Sollte dir die Laufzeit des SFC20 zu lang sein (Ist übrigens viel schneller als SCL oder andere Schleifen
da Assembler-Systemfunktion), so könnte man die Übertragung auch aufteilen z.B. 2 Aufrufe a 6000 Byte
Zyklusversetzt.

@alle TIA Experten
Den SFC 20 nicht verwechseln mit der Funktion Move_Block im TIA (1200/1500er)!


Gruß

A.
 
danke euch,
hat alles wie gesagt super geklappt mit dem SFC20
die Zykluszeit verlängert sich von 10ms auf ca 44-49ms wenn der kopiervorgang von 12000bytes läuft.
deshalb hab ich es so geschaltet, dass SFC20 nur in Grundstellung der Anlage andauernd enabled ist und somit Eingaben am OP17 sofort wieder zurückgeschrieben werden durch die Werte aus DB2.
Läuft die Anlage im Zyklus wird das Eingabebild am OP17 sowieso durch Zustandsmeldungen der Anlage dauernd überblendet, somit sind keine Eingaben möglich.
Sobald die Maschine fertig ist und in GS wird SFC20 wieder aktiv. In GS sind längere Zykluszeiten auch nicht relevant.
funktioniert sehr gut.
 
Zurück
Oben