<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>AutomationSolutions, Inc. &#187; Motion Geek</title>
	<atom:link href="http://www.as-automation.com/automationupdate/category/motion-geek/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.as-automation.com</link>
	<description>Providers of automation and motion control components including servo motors, gearboxes, actuators, stages, motion controllers, PLCs, and sensors. Offices in Masschusetts, Connecticut, New Jersey, Virginia,  North Carolina and South Carolina.</description>
	<lastBuildDate>Mon, 25 Jan 2010 22:27:16 +0000</lastBuildDate>
	
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Galil adds PVT mode to Accelera Controllers</title>
		<link>http://www.as-automation.com/automationupdate/2009/galil-adds-pvt-mode-to-accelera-controllers/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=rss</link>
		<comments>http://www.as-automation.com/automationupdate/2009/galil-adds-pvt-mode-to-accelera-controllers/#comments</comments>
		<pubDate>Mon, 05 Oct 2009 09:12:38 +0000</pubDate>
		<dc:creator>AutomationSolutions, Inc.</dc:creator>
				<category><![CDATA[Motion Geek]]></category>
		<category><![CDATA[galil]]></category>
		<category><![CDATA[motion control]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.as-automation.com/?p=454</guid>
		<description><![CDATA[Galil recently added support for Position-Velocity-Time (PVT) mode to their Accelera series of motion controllers. PVT mode is a common way of specifying motion trajectories. A trajectory is created from a series of motion segments, each with a specified move time, end velocity, and end positions. The controller then uses a third-order polynomial to smoothly [...]]]></description>
			<content:encoded><![CDATA[<p>Galil recently added support for Position-Velocity-Time (PVT) mode to their <a href="http://www.galilmc.com/products/accelera.php">Accelera series</a> of motion controllers. PVT mode is a common way of specifying motion trajectories. A trajectory is created from a series of motion segments, each with a specified move time, end velocity, and end positions. The controller then uses a third-order polynomial to smoothly interpolate the velocity and position between the defined points.</p>
<p>PVT mode provides much smoother motion than Galil&#8217;s old Contour Mode (also known as PT mode). In PT mode, trajectories are defined as a series of positions and times. The controller moves between the points at a constant velocity. Because each segment has its own velocity (the segment distance divided by the segment time), the controller has to ask for infinite acceleration between each segment. This leads to noisy motion, increased wear on components, and higher power consumption.</p>
<p>The two images below show the difference between PT and PVT modes. The image on the left shows PT mode. The quick changes in velocity can be seen at the transitions between trajectory segments. On the right, PVT mode is used to move through the same positions. As the image shows, PVT mode blends the velocity smoothly between motion segments, keeping the required acceleration as low as possible.</p>
<p><img class="aligncenter size-full wp-image-459" title="Accelera PT vs PVT Mode" src="http://www.as-automation.com/wordpresstest/wp-content/uploads/2009/10/Accelera-PT-vs-PVT.jpg" alt="Accelera PT vs PVT Mode" width="550" height="211" /></p>
<p>Galil added two commands to support PVT mode. The PV command is used to define the trajectory. Its format is PVn=p,v,t where n is the axis, p is the distance for the segment, v is the velocity for the end of the segment, and t is the time for the segment. The BT (Begin Trajectory) command operates just like standard BG command and is used to start motion on multiple axes at the same time.</p>
<p>For example:</p>
<p><code>PVA=5000,15000,512<br />
PVA=5000,0,512<br />
PVA=0,0,512<br />
PVA=5000,0,200<br />
PVA=0,0,0<br />
PVB=5000,0,512<br />
PVB=-5000,0,512<br />
PVB=5000,0,512<br />
PVB=0,0,200<br />
PVB=0,0,0<br />
BTAB<br />
EN<br />
</code></p>
<p>You can read about this and other topics in the <a href="http://www.galilmc.com/support/servotrends/st_10_09.pdf">October issue</a> of Galil&#8217;s <a href="http://www.galilmc.com/support/servotrends.php">ServoTrends newsletter</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.as-automation.com/automationupdate/2009/galil-adds-pvt-mode-to-accelera-controllers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Galil firmware supports function parameters</title>
		<link>http://www.as-automation.com/automationupdate/2009/new-galil-firmware-supports-function-parameters/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=rss</link>
		<comments>http://www.as-automation.com/automationupdate/2009/new-galil-firmware-supports-function-parameters/#comments</comments>
		<pubDate>Wed, 16 Sep 2009 16:54:46 +0000</pubDate>
		<dc:creator>AutomationSolutions, Inc.</dc:creator>
				<category><![CDATA[Motion Geek]]></category>
		<category><![CDATA[galil]]></category>
		<category><![CDATA[motion control]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.as-automation.com/?p=419</guid>
		<description><![CDATA[The latest version of Galil&#8217;s firmware for their Accelera controllers has a few new features, including parameters for subroutines. This makes a big difference when trying to write compact, readable and easy to  maintain code for the Galil. Read on to learn how to pass parameters to subroutines running on the new firmware.

Galil&#8217;s controllers [...]]]></description>
			<content:encoded><![CDATA[<p>The latest version of <a href="/suppliers/galil/">Galil&#8217;s</a> firmware for their <a href="http://www.galilmc.com/products/accelera.php" target="_blank">Accelera</a> controllers has a few new features, including parameters for subroutines. This makes a big difference when trying to write compact, readable and easy to  maintain code for the Galil. Read on to learn how to pass parameters to subroutines running on the new firmware.<br />
<span id="more-419"></span><br />
Galil&#8217;s controllers use a simple but powerful two-letter command language. For example, a program to move a motor 5000 encoder counts and then set an output might look something like this:<br />
<code><br />
SH;            ' Enable servo motor<br />
PR 5000; ' Set up a 5000 count relative move<br />
BG;             ' Begin the move<br />
AM;            ' Wait for the move to complete<br />
SB 2;        ' Turn on digital output 2<br />
</code></p>
<p>The Galil language has always supported subroutines to help break complicated tasks into simpler, more reusable parts. For example, the code below puts the move code above into a routine called &#8220;MOVE&#8221;, and runs the move every time it sees digital input 1 go high.</p>
<p><code><br />
#LOOP<br />
AI 1;             ' Wait for input 1 to go high<br />
JS #MOVE; ' Jump to the return subroutine (and return when it finishes)<br />
JP #LOOP;  ' Start loop all over again<br />
#MOVE<br />
PR 5000;  ' Set up a 5000 count relative move<br />
BG;              ' Begin the move<br />
AM;             ' Wait for the move to complete<br />
SB 2;         ' Turn on digital output 2<br />
EN</code></p>
<p>That works fine as long as you&#8217;re always going to move the same distance. But now imagine you want to move 5000 counts if digital input 1 goes high, and 10000 counts if digital input 2 goes high. One solution would be to write two different functions: MOVE1 and MOVE2 for example. With the new Accelera feature for subroutine parameters, there&#8217;s a better solution: write a subroutine that takes a parameter telling it how far to move. The code might look something like this:</p>
<p><code><br />
#LOOP<br />
JS #MOVE(5000), @IN[1]=1;  ' Move 5000 counts if input 1 is high<br />
JS #MOVE(10000), @IN[2]=1;  ' </code><code>Move 10000 counts if input 2 is high<br />
JP #LOOP;                  ' Keep on looping<br />
#MOVE;  ' Move function. Parameter ^a is distance<br />
PR ^a;   ' Set up a move based on the parameter passed to the function<br />
BG;                  ' Begin the move<br />
AM;                 ' Wait for the move to complete<br />
SB 2;           ' Turn on digital output 2<br />
EN<br />
</code></p>
<p>As the code shows, the subroutine&#8217;s parameters are named ^a, ^b, etc. Eight parameters are allowed (^a through ^h). If a ^a-^h variable isn&#8217;t used as a parameter, it can be used as a local variable that is only visible in that subroutine. Variables can be passed by value or by reference.</p>
<p>To read more about the new Accelera features, check out the <a href="http://www.galilmc.com/support/servotrends/st_04_09/accelera-features.php">April edition of Galil&#8217;s ServoTrends newsletter</a> and the <a href="http://www.galilmc.com/checkreg.php?location=manuals&amp;target=com40x0" target="_blank">DMC-4000 command reference</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.as-automation.com/automationupdate/2009/new-galil-firmware-supports-function-parameters/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
