S7: Startsignal festlegen und Daten löschen

Karli

Level-1
Beiträge
46
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich hoffe, es kann mir jemand helfen. Ich bin absoluter Anfänger in der S7-Programmierung und muß in kurzer Zeit ein Programm abliefern.

Mein erstes Problem:
Ich möchte ein Startsignal festlegen, welches über einen Klick mit der Maus oder Taste oder ähnliches (im Protool) festgelegt wird. Ab diesem "Klick" soll das programm auf eine Flanke des Stroms warten und erst dann das eigentliche Programm ausführen. Meine Frage: Wie kann ich das realisieren?

Mein zweites Problem:
Nach erfolgten Messungen sind meine Datenbausteine logischerweise vollgeschrieben. Nach erfolgter Archivierung möchte ich nun eine Möglichkeit einbauen, wieder mit einem Klick die Datenbausteine mit Nullen zu überschreiben, dass bei den folgenden Messungen keine Werte falsch übernommen werden.

Kann mir jemand einen Hinweis geben, wie ich das verwirklichen kann? Ich wäre sehr dankbar.

Es grüßt
Karli
 
zum ersten problem: was haste denn bisher? kannst du das denn mit einem eingang realisieren? also liegt das problem hmi-seitig oder steuerungsseitig? ansonsten hast du ja schon alles zusammengefasst, was du brauchst: eine flanken auswertung für den start... das startsignal muß dann gespeichert werden und mit der auswertung des stromsignals (alter_wert < neuer_wert > schaltgrenze) UND verknüpft werden ... fertig

zum zweiten problem: entweder du legst einen dynamischen baustein an, der für die aufzeichnung erstellt wird und nach dem löschen-befehl wieder aus der steuerung verschwindet oder du überschreibst die werte des einen dbs halt mit null :rolleyes:
 
Erstmal danke für die schnelle Hilfe.

"zum ersten problem: was haste denn bisher?"
Ich habe bisher nur verschiedene DB`s, die von den entsprechenden FC`s aufgerufen werden. Die beiden anderen Dinge sollen nun vor- bzw. nachgelagert werden.
Im Moment sieht es so aus, dass ich im OB1 das NW1 für das Startsignal reserviert habe, NW2 und NW3 rufen die verschiedenen FC`s auf und das NW 4 soll den Speicherplatz in den DB`s wieder löschen (also mit 0 überschreiben). Zur Info: Die Daten aus den DB`s werden archiviert, gehen also nicht komplett verloren.

Ich bin kein Automatisierungstechniker, sitze zu diesem Projekt das erste mal vor einer Programmierung in S7. Ich weiß zwar, was ich will und wie es prinzipiell funktionieren könnte, aber ich kenne die Bedienung nicht und weiß nicht, wie ich das umsetzen soll.

Könnt Ihr mir bitte kurz mitteilen, ob diese Abfragen (z.Bsp. die Strom-Flanke abfragen usw) in meinem OB1 mit erfolgen muß oder wo anders? Und wie muß das verknüpft werden - also was muß an den Ausgang Q des POS geschrieben werden, wenn der OB1 nur weiter ausgeführt werden darf, wenn Q=1 gesetzt ist?


"zum zweiten problem"
Danke für den Hinweis. Kannst Du mir als blutigen Anfänger noch kurz sagen, wo das erfolgen muß? Und wie mache ich das?
Bisher habe ich nur einfache Befehle wie L PEW xxx / T DBxxx.DBDxxx. Wie mache ich im S7 klar, dass alle DBD`s im DB mit "0" überschrieben werden sollen?


Vielen Dank schonmal für Eure Hilfe.
Karli
 
aaaaaaaalso:

ich würde davon abraten, den OB1 zu unterbrechen ;)

folgende struktur ist denkbar:

OB1 +--- FC "Aufzeichnung" +--- FC "Startbedingungen"
...........................|
...........................+--- FC "Daten erfassen"
...........................|
...........................+--- FC "Daten übertragen"
...........................|
...........................+--- FC "Daten löschen"

den FC "Daten erfassen" bedingst du durch das Ergebnis des FC "Startbedingungen" - z.b. durch abschalten des EN oder durch überspringen

der FC "Startbedingung" braucht so grob folgende Variablen:

IN
Start: BOOL
Strom: REAL/DINT/INT(??)
Schaltpunkt:
REAL/DINT/INT(??)

OUT
Freigabe: BOOL

INOUT
PFlanken_HelpFlag: BOOL
Start_angewaehlt: BOOL
Alter_Strom:
REAL/DINT/INT(??)

Code:
*
      U     #Start                      //start ist angewählt
      FP    #PFlanken_HelpFlag          //zum ersten mal
      S     #Start_angewaehlt           //startsignal speichern

      U     #Start_angewaehlt           //startsignal
      SPBN  end                         //ist nicht vorhanden? dann ende..
      L     #Strom                      //ansonsten aktuellen stromwert laden
      L     #Alter_Strom                //mit alten stromwert
      >R                                //vergleichen
      SPBN  shif                        //wenn der strom nicht größer als der alte dann fast ende...
      L     #Strom                      //ansonsten strom mit
      L     #Schaltpunkt                //schaltpunkt
      >=R                               //vergleichen
      SPBN  shif                        //wenn der schaltpunkt nicht überschritten bzw. erreicht ist, dann fast ende
      =     #Freigabe                   //ansonsten freigabe geben

shif: L     #Strom                      //aktuellen strom für nächsten zyklus
      T     #Alter_Strom                //in den alten strom legen
end:  SET                               //immer
      SAVE                              //EN0 behandlung
wenn die aufzeichnung beendet ist, den Start_angewaehlt zurücksetzen ...


ich denke, damit hast du erstmal bißchen was zu kauen :D

...ist ungetestet...hatte leider keine zeit :rolleyes:

zum daten löschen mal die hilfe zum SFC21 angucken... wie du die findest?
öffne den KOP/AWL/FUP-Editor
drücke Ctrl+K -> der Katalog links erscheint ... oder verschwindet :ROFLMAO:
da dann auf Bibliotheken -> Standard Library -> System Function Blocks ... den SFC21 suchen, markieren, F1 drücken ...

 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Wow, danke für die ausführliche Hilfe. Ich werde mich durch Deinen Text mal durcharbeiten und hoffentlich das Programm fertigstellen können.
Super, danke!
Karli
 
Zurück
Oben