Trigger/Taktgeber

Dracus89

Level-1
Beiträge
15
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,

ich versuche mich mit dem ILC 131 Starterkit ein bisschen in PC-Worx einzuarbeiten. Leider habe ich kaum Tutorials im Netz gefunden, außer einem, bei dem man mit Hilfe eines TON-Bausteins, einen Ausgang zeitverzögert auf True setzen kann.
Einige Aufgaben konnte ich mit bisschen rumprobieren lösen, aber hier komme ich einfach nicht weiter.
Für die Lösung vorgegeben sind zwei Bausteine TON_1 und TOF_1, jemand ne Idee wie ich daraus ein Taktgeber gebastelt kriege? Da muss ich ja irgendwie ne Schleife draus machen, weiss nur nicht wie.


Edit: Hab nen thread dazu gefunden, sorry... ABER ich kriege am Ausgang nur durchgehend 24V und kein Rechtecksignal, warum?
 
Zuletzt bearbeitet:
Nur mal so am Rande (aber es hilft vielleicht weiter) :
Wie hast du das denn programmiert ?
Vielleicht möchtest du mal den Code hier einstellen ...

Gruß
Larry
 
Hallo Dracus89,

schneller als 1kHz wirst du damit nicht werden können. Die schnellste Zeit mit der eine Task abgearbeitet ist 1ms und daher schafft man höchstens 500Hz mit den TON/TOF FBs.
Wenn du schneller werden willst musst du spezielle Module verwenden, z.B. IB IL PWM/2-PAC - 2861632 die kann bis zu 50 kHz.

Gruß
Mark
 
Hallo Mark,

Das mit den Mikrosekunden habe ich hin bekommen, man muss nur 0.001ms schreiben für 1us, aber danke für den Tip mit der Frequenz, habe mich schon gewundert warum sich der Motor nicht schneller dreht obwohl ich ne Höhere Frequenz vorgebe.
Werde mal schauen ob wir so eine Einheit im Labor rumfliegen haben.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das mit den Mikrosekunden habe ich hin bekommen, man muss nur 0.001ms schreiben für 1us ...

Ich kenne nun die Phoenix-Steuerung nicht wirklich - aber das mit den Mikrosekunden kann ich mir in Verbindung mit einem IEC-Timer nicht wirklich vorstellen. Ich kann mir auch nicht vorstellen, dass der Timer einen REAL als solchen am Eingang für die Laufzeit sinnvoll verwertet - eher den Wert, der sich aufgrund der beinhalteten Bit-Matrix als DINT daraus ergibt ...

Gruß
Larry
 
Hallo Leute,

nachdem ich nun im Labor am Oszilloskop meine ausgegeben Signale überprüfen konnte, hat sich herrausgestellt, dass das DO-Modul was ich hatte mit dem von mir erzeugten Schleife aus T_ON/T_OF Bausteinen nur auf eine Frequenz von ca. 66Hz kommt, also kein wunder dass der Motor da nur so rumgetuckert ist.
Ich habe mir nun ein IB IL PWM/2 Modul gekauft, aber ich bin ein bisschen überfordert mit der Erstellung eines passenden Signals.
Obwohl Laut Datenblatt zwei 24V und zwei 5V Ausgänge vorhanden sind, zeigt mir PC-Worx nur folgende Prozessdaten an: IN 32, OUT 32, ~IN 32, ~Out 32 und die haben den Datentyp DWORD, aber was mich stutzig macht ist, dass keine Anschlusspunkte angegeben werden.
Ich glaube verstanden zu haben, dass DWORD=DoubleWord eine Variable ist, welche aus zwei WORD-Variablen besteht, die erste gibt Drehrichtung ect. an, die zweite die Anzahl an Schritten, bzw. die Position (jedenfalls so wie ich es in der Betriebsart Puls-Richtungs-Signal nutzen möchte).
Das Problem ist, dass ich nicht ganz nachvollziehen kann, wie ich die Werte ausgeben soll. Im Datenblatt steht zwar wie die Binärwerte aussehen sollen, für Wort_0 und Wort_1, aber es ist doch recht verwirrend, da dort zwischen binär-, dezimal- und hexadezimal-Werten herumgesprungen wird und ich nicht verstehe welche Datentyp der von mir haben will und auf welchen Ausgang.
Ich habe nur grundlegende sachen über ein Tutorial gelernt und musste mir den kleinen Rest den ich über PC-Worx weiss selber beibringen, aber hier weiss ich nicht weiter, hat einer ne Idee wie ich da vorgehen muss?


MfG
 
Also die Klemme hat 2 Ausgänge als 5V- und 24V-Version. D.h. das Signal bei 5V ist dasselbe wie bei 24V von dem jeweiligen Ausgang/Kanal.
Für die Prozessdaten-Kommunikation nutzt du IN32 und OUT32. Wie die Bits beschaltet werden müssen für Puls-Richtung steht im Datenblatt ab Seite 19. Ob du das jetzt Binär, Dezimal oder in Hex machst bleibt dir überlassen. Das ist lediglich die Darstellung, wie auch bei andere Herstellern und Programmiersprachen. Es bleibt trotzdem DWORD.

Ich hab jetzt keine Lib gefunden wo der passende Baustein drin ist. Also müsstest du dir was selber zusammenstricken, wo du die passenden Werte an die richtige Bit-Stelle shiftest im DWORD.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für deine Hilfe Mobi, ich bin leider totaler Anfänger in SPS-Programmieren.
Ich wollte mir nun einen FUB selber basteln, mit ein paar Eingängen (für Frequenz, Richtung, Nullsetzen ect.), die dann in die passenden Integer-Werte zur Bit-Position umgewandelt werden, bzw. bereits als Integer eingelesen werden, diese sollen dann addiert werden, in WORD umgewandelt und dann Wort 0 und 1 in ein DWORD zusammengefasst werden. Macht das einen Sinn?
Wenn ja, dann würde ich gerne wissen wie man einen Baustein erzeugt, hab da kein Tutorial für PC-Worx gefunden, das einzige was ich rausgefunden habe ist, dass man zuerst bei "Logische POEs" auf "Einfügen" und "Funktionsbaustein..." klicken muss, da habe ich nun aus anderen FUBs was zusammengebastelt, aber wenn ich nun das ins eigentlichen Projekt hinzufüge, werden die Eingangsvariablen nicht als Eingänge visualisiert, kannst du mir sagen wie ich das machen muss oder wo ich das nachlesen kann wie das funktioniert (hab keine 700€ für nen Kurs bei PC übrig).

Gruß
Dracus
 
Bei den Eigenschaften der Variable musst du bei Verwendung VAR_INPUT oder _OUTPUT auswählen.

Wenn du was am Baustein dann änderst, musst du dort wo du ihn aufrufst über Rechtsklick ihn noch updaten.

Der Rest macht Sinn. Mit SHL machst du den gewünschten Wert an die richtige Bitposition und dann mit OR alle verknüpfen zu einem DWORD.
 
Zuletzt bearbeitet:
Hallo nochmal Mobi,

danke, habs gefunden mit dem VAR_INPUT und VAR_OUTPUT.

Habe nun was gebastelt, das sieht so aus:
PWM_2_Ausgangsworte-001.jpg
und so dann im Projekt:
Main.jpg
die werte sind jetzt so Beispielwerte aus dem Datenblatt des Moduls, "B052" ist Wort_0 und "1B43" ist Wort_1, wird doch richtig dargestellt oder ist das falschherum?
Jedenfalls krieg ich kein Signalam Ausgang... eine Idee was falsch sein könnte?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also ich hätte es jetzt so gemacht. Aber ih mach sowas lieber in ST. Da weiß ich das alles nacheinander abgearbeitet wird.
 

Anhänge

  • Unbenannt.png
    Unbenannt.png
    14,8 KB · Aufrufe: 13
Ok, habe es mal so probiert, aber kriege einen fehler für IN_Nullsetzen und IN_Richtung, Datentypproblem, welchen Datentyp sollen die beiden haben und welchen haben OUT_Prozessdaten.X11 und -.X12?
wenn ich das richtig verstehe stehen die für das 11. und 12. Bit des 0ten Wortes, aber welchen Datentyp haben sollen die haben auch DWORD?
 
X11 und X12 gehören zum dem DWORD OUT_Prozessdaten. Das ist lediglich der Zugriff auf ein einzelnes Bit vom DWORD.
Also muss IN_Nullsetzen und IN_Richtung BOOL sein.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ja hätte ich mir denken müssen... danke, jetzt kriege ich beim debugg auf dem schirm genau die werde die kommen müssen, aber auf der hardwareseite habe ich immernoch das problem das kein Signal kommt... habe das OUT_Prozessdaten auf ne Variable Schritt_Signal gegeben und das dann sowohl mal mit dem OUT 32 als auch mit dem ~DO 32 vom PWM-Modul verbunden, aber da tut sich nix :/ ... hast du schonmal mit dem IB IL PWM/2 gearbeitet?... braucht der das Positionszählersignal um zu laufen?
 
Also ich denke nicht, dass er das Signal haben möchte. Es hat ja keine Eingänge. Aber verbinden mit OUT 32, nicht mit ~DO 32.
Aber abwarten, evtl. antwortet Phoenix noch auf diesen Thread.
 
Hi Mobi, es dreht sich... habe eine andere Betriebsart probiert und dann wieder Puls-Richtung und auf einmal läufts... aber es läuft OUT1 und nicht OUT2 und die Worte waren wohl vertauscht... echt seltsam

kannst du mir vielleicht noch sagen wie ich Nullsetzen und Richtung jetzt in Wort1 schreibe?... X11 und X12 sind doch für Wort0?
 
Zuletzt bearbeitet:

Similar threads

A
Antworten
2
Aufrufe
5K
Anonymous
A
Zurück
Oben