PROFIBUS: S7 -> Simodrive 611U FRAGE Zykluszeit

STEP7_NEWBEE

Level-2
Beiträge
107
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo!

Ich wollte euch kurz eine Frage zur Profibus Kommunikation stellen und zwar:
(Arbeite leider noch nicht so lange mit Feldbussen ) und habe folgendes Problem:

Wenn ich einen Befehl an den Umrichter sende und eine Achse so lange im UZS lange
drehen lasse, bis sie die vorgegeben Endposition erreich hat, dann schreibe
ich das Programm momentan so: (Verwendung von Schrittwerken in AWL)


schritt1: Vorgabe Drehrichtung
TIMER 500ms
WENN Zeit abgelaufen, so springe in Schritt 2

schritt2: Position erreicht?
Dann Achse stoppen

Den Timer mit den 500ms verwende ich deshalb, da wenn ich zunächst schreibe Achse in Drehrichtung starten und anschließend
sofort kontrollieren würde, ob die Achse bereits ihr Ziel erreicht hat, so bleibt die Achse stehen, da es ja Zeit benötigt, um
das Steuerwortes und anschließend das Zustandsworte zu übertragen.
Also ohne Timer würde die Achse ja gar nicht wegfahren, weil im noch vorhandenen Statuswort steht, "ich bin auf meiner Zielposition".

Jetzt wollt ich fragen: kann mir jemand eine bessere Lösung für mein Problem sagen, oder weiß jemand einen Siemens Baustein, mit dem ich
dieses Problem umgehen kann? -> das ich ohne Timer arbeiten kann?

Ich hoffe das Problem ist einigermaßen klar formuliert..

Würde mich über eine Anregung / Empfehlung / Hilfestellung freuen

LG
 
Zuletzt bearbeitet:
Als erstes könnte man die Abfrage ob in Position (nach Fahranforderung) mit einer Pos. Flanke abfragen ...
Bzw.

Code:
u  Auftrag
un inPosition
s  Achse_fährt

u inPosition
fp hm_inPos
u Achse_fährt
s in_Pos
r Achse_fährt

Das soll jetzt nur ein Gedankenansatz sein, habe jetzt schon ewig keine 611U mehr gemacht und habe keine Vorlage hier bei mir ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ok Zunächst einmal vielen Dank für die Antwort!

Mir ist nur nicht ganz klar, wie du bzw ob man überhaupt auf "Achse_fährt" und inPosition zugreifen kann,
denn "Achse_fährt" ist ja rein ein Statusbit oder?.. bzw bzw wenn ich einen Auftrag schreibe, dass sich der Motor
nach rechts drehen soll und im Anschluss sofort eine Abfrage schreibe, "Un inPosition" dann würde man meiner Meinung
nach eben einen Timer zwischen diesen beiden Abfragen brauchen, da man ja sonst auf das alte "Zustandswort" zugreift?

LG
 
Hat noch jemand anderer Vorschläge bzw wie schreibt ihr eure Programme?
Mit Timern? oder gibt es eventuell bessere Möglichkeiten? ;)

Mit freundlichen Grüßen
 
Z.b.
schritt1: Vorgabe Drehrichtung
springe in Schritt 2

schritt2: UN Position erreicht?
Springe in Schritt 3

schritt3: U Position erreicht
Dann Achse stoppen
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Beim 611U ist - soweit ich das noch weiß - das Problem, dass Position erreicht erst nach dem Start aktualisiert wird.
Wir verwenden deshalb immer zusätzlich eine Funktion in der wir prüfen, ob sich die aktuelle Istposition in einem Fenster um die aktuelle Sollposition befindet.
Damit entfallen zusätzliche Verrenkungen wie Flanken oder Timer.

Gruß
Dieter
 
Ok! Vielen Dank schon einmal für eure Hilfe ;)
Werd ich demnächst gleich einmal ausprobieren und mich
dann noch einmal melden!

Schönen Sonntag noch!

LG
 
Zurück
Oben