<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent posts to Ansteuerung mehrerer Servomotoren</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/7f3c636a03/" rel="alternate"/><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/7f3c636a03/feed.atom" rel="self"/><id>https://forge.codesys.com/forge/talk/Deutsch/thread/7f3c636a03/</id><updated>2020-02-28T03:46:07.769000Z</updated><subtitle>Recent posts to Ansteuerung mehrerer Servomotoren</subtitle><entry><title>Ansteuerung mehrerer Servomotoren</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/7f3c636a03/?limit=25#6a05" rel="alternate"/><published>2020-02-28T03:46:07.769000Z</published><updated>2020-02-28T03:46:07.769000Z</updated><author><name>eschwellinger</name><uri>https://forge.codesys.com/u/eschwellinger/</uri></author><id>https://forge.codesys.comf8ce939615aa42b5a5681bb8d6979e37b4f21d13</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hi,&lt;br/&gt;
die Bedingungen für die Verwendung der Motion FB's sind:&lt;br/&gt;
Sie müssen einmal pro Zyklus aufgerufen werden sonst kommt ne Fehlermeldung. (-&amp;gt;die Trajektorie wird ja in den Motion&lt;br/&gt;
FB's gerechnet, daher ist das eine Überwachung)&lt;br/&gt;
Wenn du die FB's (Instanzaufruf) in dem Case oben aufrufst ist das ja nicht gewährleistet das Sie einmal pro Zyklus dran kommen,&lt;br/&gt;
sondern eben nur wenn man sich in dem jeweiligen CASE befindet.&lt;/p&gt;
&lt;p&gt;Grüße&lt;br/&gt;
Edwin&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Ansteuerung mehrerer Servomotoren</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/7f3c636a03/?limit=25#7120" rel="alternate"/><published>2020-02-28T03:46:05.793000Z</published><updated>2020-02-28T03:46:05.793000Z</updated><author><name>heldus</name><uri>https://forge.codesys.com/u/heldus/</uri></author><id>https://forge.codesys.coma2f53e3dc01e2f12174d9d09fe9f4c3272fba36a</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hi Edwin,&lt;/p&gt;
&lt;p&gt;danke für die schnelle Hilfe es funktioniert jetzt so wie gewollt.&lt;/p&gt;
&lt;p&gt;Ich hätte noch eine Frage bezüglich der Motion FBs die ich jetzt verschoben habe, funktioniert dies im Case nicht weil wir in einen neuen Schritt springen und dann die Eingänge für die Bausteine quasi nicht mehr gesetzt sind oder was ist der Grund dafür dass diese im Case nicht so funktionieren wie gewollt?&lt;/p&gt;
&lt;p&gt;Gruß&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Ansteuerung mehrerer Servomotoren</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/7f3c636a03/?limit=25#3975" rel="alternate"/><published>2020-02-28T03:46:00.233000Z</published><updated>2020-02-28T03:46:00.233000Z</updated><author><name>eschwellinger</name><uri>https://forge.codesys.com/u/eschwellinger/</uri></author><id>https://forge.codesys.com80351f0e0226e0252de235185b77c817b38cbcf7</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;ruf die Motion fb's nach der Statemachine auf:&lt;/p&gt;
&lt;p&gt;.&lt;br/&gt;
.&lt;br/&gt;
.&lt;br/&gt;
END_CASE&lt;br/&gt;
mcp_01(Enable := TRUE,bRegulatorOn := TRUE,bDriveStart:= TRUE, Axis := SM_Drive_Servo_01);&lt;br/&gt;
mcp_02(Enable := TRUE,bRegulatorOn := TRUE,bDriveStart:= TRUE, Axis := SM_Drive_Servo_02);&lt;br/&gt;
mcma_01(Axis := (SM_Drive_Servo_01));&lt;br/&gt;
mcma_02(Axis := (SM_Drive_Servo_02));&lt;/p&gt;
&lt;p&gt;dann sollte es gehen...denke ich.&lt;/p&gt;
&lt;p&gt;Grüße&lt;br/&gt;
Edwin&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>Ansteuerung mehrerer Servomotoren</title><link href="https://forge.codesys.com/forge/talk/Deutsch/thread/7f3c636a03/?limit=25#868c" rel="alternate"/><published>2020-02-28T03:45:58.188000Z</published><updated>2020-02-28T03:45:58.188000Z</updated><author><name>heldus</name><uri>https://forge.codesys.com/u/heldus/</uri></author><id>https://forge.codesys.comf580f81ebc404b761283563cecde84cae378d085</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;Hallo,&lt;/p&gt;
&lt;p&gt;wir versuchen momentan über Codesys und Raspberry Pi mit Hilfe des PWM-Drivers PCA 9685 16-Channel mehrere Servomotoren (2 oder noch mehr) anzusteuern. &lt;/p&gt;
&lt;p&gt;Folgendes Problem hat sich bei uns ergeben und zwar lässt sich ein Servomotor mit unserem Code ansteuern, also seine Position ändern. Sobald wir aber einen zweiten Servomotor und optional noch mehrere Servomotoren ansteuern möchten bekommen wir das im Programm, als strukturierten Text, nicht mehr umgesetzt. &lt;br/&gt;
Hardwaretechnisch ist mit den Servomotoren soweit alles in Ordnung, lassen sich also einzeln über den PWM-Controller ansteuern.&lt;/p&gt;
&lt;p&gt;Jetzt wäre die Frage, ob sich schon mal jemand damit auseinandergesetzt hat und uns evtl. einen Tipp geben kann wie der Programmverlauf bei zwei oder mehreren Servomotoren aussehen muss.&lt;/p&gt;
&lt;p&gt;Danke für Eure Hilfe&lt;/p&gt;
&lt;p&gt;Programmcode stellt den Versuch da, einen zweiten Servomotor mit einzubinden.&lt;/p&gt;
&lt;p&gt;PROGRAM SoftMotion&lt;br/&gt;
VAR&lt;br/&gt;
    uiError: UINT;&lt;br/&gt;
    mcp_01 : MC_Power;&lt;br/&gt;
    mcp_02 : MC_Power;&lt;br/&gt;
    mcma_01 : MC_MoveAbsolute;&lt;br/&gt;
    mcma_02 : MC_MoveAbsolute;&lt;br/&gt;
    MotionStep: UINT := 0;&lt;br/&gt;
    lrSpeed_01: LREAL;&lt;br/&gt;
    lrSpeed_02 : LREAL;&lt;br/&gt;
    rlAngle_01: LREAL;&lt;br/&gt;
    rlAngle_02 : LREAL;&lt;/p&gt;
&lt;p&gt;END_VAR&lt;/p&gt;
&lt;p&gt;CASE MotionStep OF&lt;br/&gt;
0:&lt;br/&gt;
mcp_01(Enable := TRUE,bRegulatorOn := TRUE,bDriveStart:= TRUE, Axis := SM_Drive_Servo_01);&lt;br/&gt;
    mcma_01.Acceleration := 1000;&lt;br/&gt;
    mcma_01.Deceleration := 1000;&lt;br/&gt;
 mcp_02(Enable := TRUE,bRegulatorOn := TRUE,bDriveStart:= TRUE, Axis := SM_Drive_Servo_02);&lt;br/&gt;
    mcma_02.Acceleration := 1000;&lt;br/&gt;
    mcma_02.Deceleration := 1000;&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nv"&gt;lrSpeed_01&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;lrSpeed_02&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;

&lt;span class="nv"&gt;mcma_01&lt;/span&gt;.&lt;span class="nv"&gt;Velocity&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;lrSpeed_01&lt;/span&gt;&lt;span class="c1"&gt;; &lt;/span&gt;
&lt;span class="nv"&gt;mcma_02&lt;/span&gt;.&lt;span class="nv"&gt;Velocity&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;lrSpeed_02&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;IF&lt;/span&gt; &lt;span class="nv"&gt;mcp_01&lt;/span&gt;.&lt;span class="nv"&gt;Status&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;TRUE&lt;/span&gt; &lt;span class="nv"&gt;AND&lt;/span&gt; &lt;span class="nv"&gt;mcp_02&lt;/span&gt;.&lt;span class="nv"&gt;Status&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;TRUE&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt;
    &lt;span class="nv"&gt;MotionStep&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;ELSE&lt;/span&gt;
    &lt;span class="nv"&gt;uiError&lt;/span&gt; :&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="c1"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;END_IF&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;5:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;    &lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="n"&gt;mcma_01&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;Execute&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;TRUE&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;mcma_01&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;Position&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;rlAngle_01&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="n"&gt;mcma_02&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;Position&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;rlAngle_02&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="n"&gt;mcma_01&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Axis&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;SM_Drive_Servo_01&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
    &lt;span class="n"&gt;mcma_02&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Axis&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;SM_Drive_Servo_02&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;END_CASE&lt;/p&gt;&lt;/div&gt;</summary></entry></feed>