Step 7 Datenbaustein Wert hinzufügen, Hilfe beim Programmieren

alphafiro

Level-1
Beiträge
8
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich bin noch nicht recht fortgeschritten was das Thema Simatic angeht, doch muss ich eine kleine Programmänderung vornehmen. Ich hoffe ihr könnt mir da helfen oder einen Ansatz geben.

Ist-Zustand:
Es handelt sich um einen Kappenaufrichter, dieser wird mit einem FU beschaltet. Die Kappen werden auf ein Band gegeben, welches zwei Abfragung hat, Band-voll, Band-leer, sobald das Band voll ist Stop der Motor vom Kappenaufrichter. Die Geschwindigkeit des Motors kann über die HMI bestimmt werden.

Soll-Zustand:
Es soll eine dritte Abfrage in die Mitte des Bandes gesetzt werden, damit wenn das Band Halbvoll ist der Motor in einer langsameren Geschwindigkeit läuft, diese Geschwindigkeit soll sich auch über das HMI ändern lassen.

Variablen:
E61.6 Band halbvoll
E61.2 Band voll
E61.3 Band leer
DB17.DBW146 Der Wert für ein leeres Band
DB17.DBW176 Der Wert für ein halb volles Band

Über mögliche Umsetzungstipps oder Hilfen in jeglicher Art würde ich mich sehr freuen. Ich habe noch zwei Bilder
dazugefügt die vielleicht etwas helfen.
 

Anhänge

  • HMI.1.jpg
    HMI.1.jpg
    114,6 KB · Aufrufe: 66
  • PLC.2.jpg
    PLC.2.jpg
    56,5 KB · Aufrufe: 54
hier mal ein Beispiel in AWL:
Code:
// vor deinem NW50
      L     S5T#10S                     // Verzögerungszeit
      U     E     61.3
      U     E     61.6
      SE    T      1                    // Timer einschaltverzögert

      L     DB17.DBW  146
      T     #temp_MW                    // diese Variable in der Deklaration als temporäre Variable anlegen

      U     T      1                    // Timer ist TRUE (Zeit abgelaufen)
      SPBN  weit                        // springe nicht
      L     DB17.DBW  176               // übernehme anderen Wert
      T     #temp_MW                    // in die temporäre Variable
weit: NOP   0


//im NW 50 dann 
      L     #temp_MW
      ITD   
      DTR   
      L     4.252000e+001
      *R    
      RND   
      T     DB7.DBD  280
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

ist eine einfach If Answeisung:


Wenn Betrieb freigegeben immer Startgeschwindigkeit: DB16.DBW146
Wenn (E61.6 Band halbvoll) -> Dann DB17.DBW176 Der Wert für ein halb volles Band
Wenn (E61.3 Band leer) -> Dann DB17.DBW146 Der Wert für ein leeres Band
Wenn (E61.2 Band voll) -> Stopp


Versuch das mal so in der Logik zu programmieren.
 
Wie willst du denn erkennen dass das Band halbvoll ist?
Sobald eine Kappe durch den Sensor fährt, auch wenn es die erste ist, würde der Sensor sofort auf halbe Geschwindigkeit schalten lassen
 
Zuviel Werbung?
-> Hier kostenlos registrieren
In dem ich eine Einschaltverzögerung benutze, oder klappt das nicht ?

Na klar klappt das, und den Rest machst du mit Move Befehlen wie jetzt auch.
Musst dir einfach nur überlegen wann du welchen Wert in dein
Und im HMI musst du eben ein Eingabefeld erstellen für deinen 2. Wert.

Was mir aufgefallen ist: Die Schriftgrößen passen überhaupt nicht, du muss auf einem PG IMMER die Skalierung der windows Schriftgröße auf 100% stellen sonst zerschießt du dir damit die Schriftgröße im Flexible!

Und das sieht ziemlich fürchterlich aus wenn du das so aufs Panel lädst.

Noch etwas ist mir aufgefallen:
Im Programm wird auf ein DBD 280 gerundet und von DBW 282 dann auf den Ausgang geschrieben...Also ein Teil vom DBD 280.
Und vorher wird auch der maximale Ausgangswert begrenzt...

Also so würde ich das nie programmieren! :rolleyes:

Dafür gibts fix fertige Skalierungsbausteine von Siemens. Scale und Unscale heissen die.
Findest du in der standard library

Aber am einfachsten ist es natürlich alles so zu lassen und nur den Wert im NW50 je nach gewünschter Geschwindigkeit zu ändern.
 
Danke für die zahlreichen und hilfreichen Bemerkungen, ich hab mal einen kleinen Lösungsansatz vielleicht könnt ihr den überprüfen ob der so richtig ist. Das würde mich sehr freuen.
Unbenannt.jpg
 
Du überschreibst dir damit mit der neuen Geschwindigkeit die alte...und woher nimmst du dann wieder die Hohe Geschwindigkeit? Nachdem du sie überschrieben hast?
Wird so nicht funktioneren. Bzw nur einmal ;-)



Ein kleiner Tip:
Du brauchst eine Dritte Variable, in die schreibst du dann abwechselnd deine zwei Vorgabewerte!
Die Vorgabewerte darfst du natürlich nicht überschreiben.

Und diese neue Dritte Variable verwendest du im 1. Netzwerk von deinem Eröffnungspost statt dem DBW146.
Kann eine Temp Variable sein, oder ein Merkerwort, oder auch ein Wort in einem Datenbaustein. Sei kreativ. :cool:
 
Zuletzt bearbeitet:
Zurück
Oben