Baustein für PC-Worx Bibliothek

simonhu

Level-1
Beiträge
13
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich möchte mit der Inlineklemme IB IL PWM/2-PAC (http://www.phoenixcontact.com/online/portal/de?uri=pxc-oc-itemdetailid=2861632&library=dede&tab=1) 12 Schrittmotoren unabhängig steuern. Die Schrittmotoren sollen 2 Jobs haben: Job1: Geschwindigkeit X, Position Y, Drehrichtung Z, Job2: Geschwindigkeit XX, Position YY, Drehrichtung ZZ. Das heisst, dass der Schrittmotor bespielsweise 1 Sekunde schnell dreht und dann auf die langsame Geschwindikeit wechsel und dann stoppt. Also keine Hexerein. Im Prizip ergibt dies 2xDWORD und fertig.

Diese Klemme hat 4 verschiedene Betriebsmodi. Die vierte davon ist eine Puls-Richtungsmöglichkeit zur Ansteuerung von Schrittmotoren. Die Klemme generiert Impulssignale, welche eine Verstärkerstufe ausliest und dann den Impulsstrom für die Schrittmotoren generiert. Es gibt von Phoenix Contact verschiedene Bausteine zu den ersten 3 Modis aber genau für den vierten Modus nicht, da gemäss offizieller Auskunft dies nur selten gemacht wurde und dementsprechend dieser Baustein noch nicht zur Verfügung steht.
Natürlich kann man die Klemme auch ganz "einfach" ansteuern, indem man über eine komplizierte Formel ein DWORD berechnet, welches dann die richtig Position, Frequenz, Richtung und Betriebsmodus bestimmt. Um meine 12 verschiedenen Schrittmotoren einfacher zu programmieren, möchte ich deshalb ein Bibliotheksbaustein für PC Worx erstellen, wo ich meine Werte vereinfacht eingeben kann und mir den Baustein das DWORD generiert. Im Anhang ist eine kleine Übersicht zu finden, wie ich das geplant habe.

Ich bin leider nicht so der grosse Programmierspezialist und deshalb erfrage ich euch um Hilfe und Tipps. Wie kann ich genau eine solche 32bit Binärzahl einfach definieren mit den verschiedenen Eingängen?

Vielen Dank für eure Tipps!
simonhu
Anhang anzeigen Bibliotheksbaustein.pdf
 
Zuletzt bearbeitet:
Hallo,

Versuch es mal so:
Code:
dwTmp.W0 := INT_TO_WORD(Frequency);
dwTmp.W1 := INT_TO_WORD(Position);
dwTmp.X11 := False;
dwTmp.X12 := Direction;
dwTmp.X13 := True;
dwTmp.X14 := False;
dwTmp.X15 := True;
Out := dwTmp;
Direction ist als VAR_INPUT und BOOL.
Frequency ist als VAR_INPUT und INT.
Position ist als VAR_INPUT und INT.
Out ist als VAR_OUTPUT und DWORD.
dwTmp ist als VAR und DWORD.

Und das ganze dann als FB.
 
Zurück
Oben