FB SMIUp setzt Ausgangsvariable bBusy nicht

Darkghost

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

bin gerade an der Programmierung der Stop-Funktion der SMI Motoren dran.
Mein Aufbau in der Solution (TwinCAT 3) ist:

Funktionsbaustein FB_SMIUp so wie die anderen FB für SMI Kommunikation liegen in einem Programm SMI
In der Main rufe ich diese mit SMI(); auf.

smi.PNG
In dem Programm GA greife ich auf die Variablen der FB in SMI zu.
In der Main rufe ich diese mit GA(); auf.
GA.jpg

Mein Problem ist, dass beim Hoch den FB für das Stoppen aufrufen möchte.
Der FB FB_SMIUp setz die Variable upBusy beim Hochfahren leider nicht auf True.
Hätte jemand eine Idee woran das liegt?

Laut Anleitung sollte upBusy solang true sein bis komplett hochgefahren wurde.#
https://infosys.beckhoff.com/index....l6831_kl6841/html/bt_smi-overview.htm&id=5315

Grüße
Stefan
 
Laut Anleitung sollte upBusy solang true sein bis komplett hochgefahren wurde.#
Bist Du sicher dass Du das richtig interpretiert hast? In der Beschreibung des FB steht:
bBusy: Bei der Aktivierung des Bausteins wird der Ausgang gesetzt und bleibt so lange aktiv bis der Befehl abgearbeitet wurde.
Das könnte man so interpretieren dass es sich auf die reine Signal-Verarbeitung bezieht, also das Senden des Befehls.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das könnte man so interpretieren dass es sich auf die reine Signal-Verarbeitung bezieht, also das Senden des Befehls.

Ich hab mal versucht über ein TP das Signal wenn eine Signalflanke kommt es für 10 Sekunden zu halten. Aber der Ausgang wurde nie True.
Von der Beschreibung hört es sich nicht ganz eindeutig an aber ich hab sonst in der Doku auch kein andere Möglichkeit gefunden, um herauszubekommen, ob noch hoch- bzw. noch runtergefahren wird.

Grüße
Stefan
 
Geht es dir denn jetzt darum herauszufinden wann der Antrieb die obere- oder untere Endlage erreicht hat? Ich kenne das System jetzt zwar nicht aber vom lesen der FB-Dokus würde ich dafür den FB_SMIPosRead verwenden.
 
Geht es dir denn jetzt darum herauszufinden wann der Antrieb die obere- oder untere Endlage erreicht hat?
So direkt nicht, eigentlich geht es darum herauszubekommen ob aktuell der Motor noch fährt, um in dem Fall die Taste anstatt für das Hoch- bzw. Runterfahren fürs stoppen zu verwenden.
Doch theoretisch könnte ich auch solang die Taste für das Stoppen nutzen bis die Endlage erreicht ist. Beim Anfahren einer Position müsste ich dann anstatt der Endlage die Position nehmen.
Muss ich mal ausprobieren. Danke für den Tipp.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Aber der Ausgang wurde nie True.
Also ich kenne jetzt die Implementierung des konkreten Bausteins nicht, aber diese Art von Ausgang ist ja dafür gedacht, daß z.b. bei langsamen Verbindungen oder großen Datenmengen das Senden auf mehrere Zyklen aufgeteilt werden kann. Dann kann man anhand des bBusy-Ausgangs erkennen, ob man den Baustein erneut aufrufen muß, damit der seine Arbeit fortsetzen kann. Solange das innerhalb eines Zyklus abgearbeitet werden kann, wird der bBusy-Ausgang also nicht auf TRUE gesetzt, da ja mit Rückkehr der Ausführung aus dem Baustein auch der Befehl schon fertig verarbeitet war.
 
Hallo zusammen,

die Endlage je Fenster zu speichern und dann abzufragen ist recht umständlich. (ist mir gerade mal so eingefallen *g*)
Eigentlich kann man ja auch herausbekommen, ob der Motor noch fährt, wenn sich die Pos nach einem weiteren Zyklus nicht mehr ändert.

Wie kann ich den einen Wert über genau einen Zyklus am besten halten?

Grüße
Stefan
 
Zurück
Oben