<?xml version="1.0" encoding="UTF-8"?>        <rss version="2.0"
             xmlns:atom="http://www.w3.org/2005/Atom"
             xmlns:dc="http://purl.org/dc/elements/1.1/"
             xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
             xmlns:admin="http://webns.net/mvcb/"
             xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
             xmlns:content="http://purl.org/rss/1.0/modules/content/">
        <channel>
            <title>
									Interpolating Motion with SMIEngine - Communications				            </title>
            <link>https://www.animatics.com/forum/communications/interpolating-motion-with-smiengine/</link>
            <description>Animatics Distributor Locator Discussion Board</description>
            <language>en-US</language>
            <lastBuildDate>Tue, 18 Aug 2026 20:02:48 +0000</lastBuildDate>
            <generator>wpForo</generator>
            <ttl>60</ttl>
							                    <item>
                        <title>Interpolating Motion with SMIEngine</title>
                        <link>https://www.animatics.com/forum/communications/interpolating-motion-with-smiengine/#post-1297</link>
                        <pubDate>Wed, 06 Feb 2019 18:44:11 +0000</pubDate>
                        <description><![CDATA[I would recommend writing more positions before issuing a go command.

Also, do not use the terminator bytes after non-ASCII commands. See code:

 

buf = 0x81;
buf = 0x20;
Wri...]]></description>
                        <content:encoded><![CDATA[I would recommend writing more positions before issuing a go command.

Also, do not use the terminator bytes after non-ASCII commands. See code:

<pre> 

buf = 0x81;
buf = 0x20;
WriteFile(Port,buf,2,&amp;BytesWritten,0)
  
command.Format(_T("EIGN(2) "));
WriteFile(Port,command,8,&amp;BytesWritten,0)

command.Format(_T("EIGN(3) "));
WriteFile(Port,command,8,&amp;BytesWritten,0)

command.Format(_T("ZS "));
WriteFile(Port,command,3,&amp;BytesWritten,0)

command.Format(_T("MD "));
WriteFile(Port,command,3,&amp;BytesWritten,0)
      
command.Format(_T("MDCFG(1) "));
WriteFile(Port,command,9,&amp;BytesWritten,0)
  
buf = 0xFB;
buf = 0x40;          
buf = 0x1f;          // 0x1f40 = 1 sec, 0x3e80 = 2sec, 0xfa00 = 8sec 
WriteFile(Port,buf,3,&amp;BytesWritten,0)
  
buf = 0xFA;
buf = 0x00;
buf = 0x00;
buf = 0x00;
buf = 0x00;
WriteFile(Port,buf,5,&amp;BytesWritten,0)

WriteFile(Port,buf,5,&amp;BytesWritten,0)

command.Format(_T("G "));
WriteFile(Port,command,2,&amp;BytesWritten,0)
</pre>]]></content:encoded>
						                            <category domain="https://www.animatics.com/forum/communications/">Communications</category>                        <dc:creator>mmeyer</dc:creator>
                        <guid isPermaLink="true">https://www.animatics.com/forum/communications/interpolating-motion-with-smiengine/#post-1297</guid>
                    </item>
				                    <item>
                        <title>Interpolating Motion with SMIEngine</title>
                        <link>https://www.animatics.com/forum/communications/interpolating-motion-with-smiengine/#post-1277</link>
                        <pubDate>Thu, 17 Jan 2019 17:15:51 +0000</pubDate>
                        <description><![CDATA[You&#039;re right -- I forgot to include those commands!  Unfortuantely, even when they are included, I have no action from the motor.  The program I&#039;ve been trying is:


  myPort.write(0x81);...]]></description>
                        <content:encoded><![CDATA[You're right -- I forgot to include those commands!  Unfortuantely, even when they are included, I have no action from the motor.  The program I've been trying is:

<pre>
  myPort.write(0x81);
  myPort.write("MD" + " ");
  myPort.write("MDCFG(3)" + " "); // tell motor 1 to be the master clock and use spline mode
  
  myPort.write(0xFB); // command 0xFB: Write Time Delta
  myPort.write(0xFF); // LSB: 0xFF
  myPort.write(0xFF); // MSB: 0xFF -- total is 0xFFFF (65,535)
  myPort.write(0x20); // terminator byte
  
  myPort.write(0xFA); // command 0xFA: Write Position Data
  myPort.write(0x00); // LSB
  myPort.write(0x00);
  myPort.write(0x00);
  myPort.write(0x00); // MSB; total is 0x00000000 (0.0)
  myPort.write(0x20); // terminator byte
  
  myPort.write("G ");</pre>

I've browsed through the example; it's a bit confusing as it contains many more wrapper functions C++-specific code than is strictly necessary for me to simply send bytes over RS-232.  However, looking at the example, it doesn't look like I'm missing any commands.]]></content:encoded>
						                            <category domain="https://www.animatics.com/forum/communications/">Communications</category>                        <dc:creator>morphogencc</dc:creator>
                        <guid isPermaLink="true">https://www.animatics.com/forum/communications/interpolating-motion-with-smiengine/#post-1277</guid>
                    </item>
				                    <item>
                        <title>Interpolating Motion with SMIEngine</title>
                        <link>https://www.animatics.com/forum/communications/interpolating-motion-with-smiengine/#post-1276</link>
                        <pubDate>Thu, 17 Jan 2019 16:53:31 +0000</pubDate>
                        <description><![CDATA[You&#039;re right; I do.  I&#039;ve reviewed the sample code, but it&#039;s a bit obtuse when I already have another library that&#039;s able to send multi-byte packets.

I&#039;ve tried adding the MD and MDCFG co...]]></description>
                        <content:encoded><![CDATA[You're right; I do.  I've reviewed the sample code, but it's a bit obtuse when I already have another library that's able to send multi-byte packets.

I've tried adding the MD and MDCFG commands:
<pre>
  myPort.write(0x81);
  myPort.write("MD" + " ");
  myPort.write("MDCFG(3)" + " "); // tell motor 1 to be the master clock and use spline mode
  
  myPort.write(0xFB); // command 0xFB: Write Time Delta
  myPort.write(0xFF); // LSB: 0xFF
  myPort.write(0xFF); // MSB: 0xFF -- total is 0xFFFF (65,535)
  myPort.write(0x20); // terminator byte
  
  myPort.write(0xFA); // command 0xFA: Write Position Data
  myPort.write(0x00); // LSB
  myPort.write(0x00);
  myPort.write(0x00);
  myPort.write(0x00); // MSB; total is 0x00000000 (0.0)
  myPort.write(0x20); // terminator byte
  
  myPort.write("G ");</pre>

but the motor doesn't move when I run this short program.]]></content:encoded>
						                            <category domain="https://www.animatics.com/forum/communications/">Communications</category>                        <dc:creator>morphogencc</dc:creator>
                        <guid isPermaLink="true">https://www.animatics.com/forum/communications/interpolating-motion-with-smiengine/#post-1276</guid>
                    </item>
				                    <item>
                        <title>Interpolating Motion with SMIEngine</title>
                        <link>https://www.animatics.com/forum/communications/interpolating-motion-with-smiengine/#post-1275</link>
                        <pubDate>Thu, 17 Jan 2019 16:46:40 +0000</pubDate>
                        <description><![CDATA[There is an example program provided in the SMI Engine help file. This is included when you download SMI. The path on my machine is...
C &gt; Program Files (x86) &gt; Animatics &gt; SMIEngi...]]></description>
                        <content:encoded><![CDATA[There is an example program provided in the SMI Engine help file. This is included when you download SMI. The path on my machine is...
C &gt; Program Files (x86) &gt; Animatics &gt; SMIEngine.  

In the help file, see Serial Interpolation &gt; Host Mode Example

You likely need to give the MD, MDCFG commands before]]></content:encoded>
						                            <category domain="https://www.animatics.com/forum/communications/">Communications</category>                        <dc:creator>swalters</dc:creator>
                        <guid isPermaLink="true">https://www.animatics.com/forum/communications/interpolating-motion-with-smiengine/#post-1275</guid>
                    </item>
				                    <item>
                        <title>Interpolating Motion with SMIEngine</title>
                        <link>https://www.animatics.com/forum/communications/interpolating-motion-with-smiengine/#post-357</link>
                        <pubDate>Thu, 17 Jan 2019 16:20:02 +0000</pubDate>
                        <description><![CDATA[Hello --

I have a SM23165DT motor that I&#039;m trying to program with SMIEngine and Java.  So far, I am able to control the motor by using the Serial Commands.  For example, I can home the mo...]]></description>
                        <content:encoded><![CDATA[Hello --

I have a SM23165DT motor that I'm trying to program with SMIEngine and Java.  So far, I am able to control the motor by using the Serial Commands.  For example, I can home the motor to zero by the following sequence:

<pre>  // send to all motors
  myPort.write(0x80);
  // configure environment
  myPort.write("AMPS=" + str(pow) + " ");
  myPort.write("VT=" + str(vel) + " ");
  myPort.write("ADT=" + str(acc) + " ");

  // reset position
  myPort.write("PT=" + str(0.0) + " ");
  
  myPort.write("G ");</pre>

Similarly, I can continually update the motor's position by looping:

<pre>  myPort.write(0x80);
  float velocity = someValue;
  myPort.write("VT=" + str(int(velocity)) + " ");
  float position = someOtherValue;
  myPort.write("PT=" + str(int(position)) + " ");
  myPort.write("G ");</pre>

However, this isn't ideal because writing position data frame-by-frame results in chunky motion, as the motor moves, stops, waits, and then moves to the next point the next frame.  I'd like to use the Serial Interpolation features in order to smoothly move to the next position with a specific time delta.

However, I've tried to use the following code:
<pre>
  myPort.write(0x80);
  myPort.write(0xFB); // command 0xFB: Write Time Delta
  myPort.write(0xFF); // LSB: 0xFF
  myPort.write(0xFF); // MSB: 0xFF -- total is 0xFFFF (65,535); should be about 8 seconds
  myPort.write(0x20); // terminator byte
  
  myPort.write(0xFA); // command 0xFA: Write Position Data
  myPort.write(0x00); // LSB
  myPort.write(0x00);
  myPort.write(0x00);
  myPort.write(0x00); // MSB; total is 0x00000000 (0.0)
  myPort.write(0x20); // terminator byte
  
  myPort.write("G ");</pre>

And this has no effect.  No motion in the motor, not even at a specific speed.

How can I program the motor to move smoothly to the next position at a specific time?

thanks!]]></content:encoded>
						                            <category domain="https://www.animatics.com/forum/communications/">Communications</category>                        <dc:creator>morphogencc</dc:creator>
                        <guid isPermaLink="true">https://www.animatics.com/forum/communications/interpolating-motion-with-smiengine/#post-357</guid>
                    </item>
							        </channel>
        </rss>
		