sps Programmierung

lieuthnant

Level-2
Beiträge
109
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich brauche Hilfe. Ich muss die Länge eines Kartons in Zeiteinheit mittels eines Zählers. Meine Idee ist : Sobald der Karton vorm Lichtschrank steht, muss der Zähler beginnen zu zähler. Er muss aufhören zu zählen, wenn der Karton nicht mehr vorm Lichtschrank ist. Diese Zeit wäre also die Länge des Kartons in mS oder in Sekunden.
Wie soll ich vorgehen? Wie kann ich den Zähler programmieren? Hat jemand ein Beispielprogramm ?
Grüsse
 
schreib mal hier rein, was du schon gemacht hast und dir wird sicher geholfen.was fertiges gibt es meistens nicht hier.(wegen dem lerneffekt)
aber vielleicht hast ja glück und jemand erbarmt sich und nimmt dir das denken ab.
als ansatz. wenn ls bedeckt flanke positiv start zähler und wenn nicht mehr flanke negativ stop zähler
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ist eigentlich recht simpel:
In der S7 gibt es ein Taktmerkerbyte (Hardware-Konfiguration der CPU).
Nimm dir z.B. den 100ms-Taktmerker verknüpfe ihn per UND mit der Lichtschranke und geh damit auf den Zähleingang.
Setze aber bitte keine zu hohe Erwartungen in dieses System.
Ich verwende dafür lieber ein Impulsgeber am Förderband. Damit kann der Motor auch zwischendrin anhalten und wieder loslaufen.

Gruß
Dieter
 
Warum Taktmerker? Ich würde mit dem OB1_Prev_cycle arbeiten und die Zeit aufaddieren deutlich genauer als so ein schnöder Taktmerker.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Damit kann der Motor auch zwischendrin anhalten und wieder loslaufen.

Gruß
Dieter


Genau das ist mir als kritikpunkt aufgefallen...

ich würde auch lieber eine Lösung bevorzugen, wie sie Dieter beschreibt... Hierbei, wenn relevant, vielleicht auch die "Drehrichtung" mit einbinden.
 
Ist das nur ne theoretische Aufgabe oder willst du soetwas in eine Maschine bauen?

Beim ersteren würde ich das erstmal mit dem Taktmerker und dem Zähler machen. Wenn der Motor steht kannste entweder das Zählen stoppen oder die messung abbrechen.
Ne andere Idee wäre das über eine Zeit zu realisieren wo bei negativer flanke der aktualwert gespeichert wird.

Soll das in eine Anlage gebaut werden brauchst du am Förderband nen Messystem.. aber dann macht man soetwas auch nicht mit ner Zeit..
 
Ich würde das in einen Weckalarm einbauen.
Den kannst du zB alle 5ms aufrufen.

U #Lichtschranke
FN M10.0
SPBN =M1 //erst am Ende wird der Wert übertragen

L DB10.DBD0
T DB10.DBD4 //Zwischenspeicher = letzter Wert

M1: UN E #Lichtschranke
SPB =M2
L DB10.DBD 0//laufender Zaehler
L 5 //(ms)
+D
T DB10.DBD 0//laufender Zaehler
SPA =END

M2: L 0 //Zaehler wieder reseten
T DB10.DBD0

END: NOP 0

Jetzt steht am Ende wenn der LS nicht mehr belegt ist im DBD4 die Belegungszeit in ms.

Nicht getestet aber so ähnlich wird das funktionieren.

lG
Karl
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ach ja, falls du das Förderband mitberücksichtigen willst, schreib bei M1

M1: UN E #Lichtschranke
SPB =M2
UN #RM_Foerderband
SPB END
L DB10.DBD 0//laufender Zaehler
L 5 //(ms)
+D
T DB10.DBD 0//laufender Zaehler
SPA =END
 
Oder du holst dir bei einer positiven Flanke die Systemzeit in ms und bei negativer Flanke wieder die Systemzeit in ms.
Danach subtrahierst du die 2. Zeit mit der 1. Zeit und hast die Dauer in ms.

Wie du siehst gibt es viele Wege die nach Rom führen.

Gruß wolder
 
Zurück
Oben