Sonstiges Zählfunktion + rechnen

michi*

Level-2
Beiträge
100
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Abend,

ich habe folgende Situation:

Ich habe ein umlaufenes Seil, dass an einer Umlaufrolle angetrieben wird.
An der Umlaufrolle habe ich einen Sensor, der die Umdrehungen aufnimmt.

An der Seilklemme befindet sich ein Magnet, der von einem zweiten Sensor erkannt wird.
Jetzt würde ich gerne
1. Den Zähler mit jeder Umdrehung raufzählen lassen und beim Signal der Seilklemme wieder auf 0 setzen.
Das bekomm ich auch hin.

2. Nun würde ich gerne Signale erzeugen bei bestimmten Seilpositionen

Heißt ich müsste eine Funktion schaffen die folgende Parameter ausrechnet und als Merker oder ähnliches speichert

Seillänge : 1000 Impulse
Anzahl Teilungen :10
Offset: 0
Signallänge: 5 Impulse
Speicher Array MW 10

(Seilänge / Anzahl_Teilungen ) + Offset = Abstand

Teilung 0 = 0x Abstand =0 Impulse
Teilung 1 = 1x Abstand = 100 Impulse
Teilung 2 = 2x Abstand = 200 Impulse
...
Teilung 9= 9x Abstand = 900 Impulse


Wenn das Seil also bei 200 Impulsen steht wäre Teilung 2 Aktiv, es soll also das entsprechende MB gesetzt werde.
z.B. MB 10.2, jedoch soll es nur für z.B. 5 Impulse high stehen. Also bei 200-205 High.


Diese Berechnung würde ich gerne mit verschiedenen Offsets ausführen und so jede Position am Seil ohne Extra Sensoren erkennen können.

z.B. die gleiche Funktion nur ein Offset von -40 und ein anderer Speicherbereich

~Seillänge : 1000 Impulse
Anzahl Teilungen :10
Offset: -50
Signallänge: 5 Impulse
Speicher Array M10W

(Seilänge / Anzahl_Teilungen ) + Offset = Abstand

Teilung 0 = 0x Abstand =0 Impulse
Teilung 1 = 1x Abstand = 50 Impulse
Teilung 2 = 2x Abstand = 150Impulse
...
Teilung 9= 9x Abstand = 850Impulse

Wenn das Seil also bei 150 Impulsen steht wäre Teilung 2 Aktiv, es soll also das entsprechende MB gesetzt werde.
z.B. MB 12.2, jedoch soll es nur für z.B. 5 Impulse high stehen. Also bei 150-155 High.


Damit könnte ich dann später im Programm arbeiten.
MB12.2 kommt, Anlage fährt langsamer. damit sie bei MB 10.2 genau anhält. usw.



Hat vll jmd einen Ansatz für mich?

Schönen Abend
Michi
 
Was ist denn das generelle Problem? Programmiersprache (was hast du zur Verfügung?), Syntax, Mathematik, haltbarkeit der Variablen?

Warum verwendest du ein MW statt eines "richtigen" Arrays? Nach meinem Verständnis beschreibst du ein Bit in einem MW, welches du im nachhinein wieder ausmaskierst um Parameter für einen Antrieb zu setzen(?).
Schreib deine Parameter doch direkt in dein Array und berechne den Index.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe zu einem ein Verstädniss Problem mit einem 300er programm in Step7
kann das programm jedoch nicht in tia migrieren um es auf eine 1200er zu laden, dann gibts jedemal ein fehler:
auf der 300 läuft es aber soweit.

ich habe einen FC in scl, der genau dies macht.
nur kann ich max. 8 teilungen vornehmen, weil sonst mein array nicht mehr passt.
 
Zuletzt bearbeitet:
Die einzige Beschränkung, die ich beim Überfliegen sehe ist die größe deines Arrays. Wenn du mehr daten speichern möchtest, musst du dein Array vergrößern.

Code:
VAR_OUTPUT
    Nocken: ARRAY[1 .. [COLOR=#ff0000]16[/COLOR]] OF BOOL;
END_VAR

Da es sich um einen FC handelt, gibts auch keine Probleme mit Speicherverschiebung o.Ä..
 
Vielen Dank Christmaspoo,

dann muss ich das ganze jedoch ein MW schreiben oder?
ich werde es erstmal so weiter versuchen.
 
Zurück
Oben