<?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"
	>

<channel>
	<title>Galil Tech Talk</title>
	<atom:link href="http://www.galilinmotion.com/techtalk/feed" rel="self" type="application/rss+xml" />
	<link>http://www.galilinmotion.com/techtalk</link>
	<description></description>
	<pubDate>Tue, 28 Oct 2008 21:59:51 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>Creating Solid Models of Galil Controllers</title>
		<link>http://www.galilinmotion.com/techtalk/galil-news/creating-solid-models-of-galil-controllers</link>
		<comments>http://www.galilinmotion.com/techtalk/galil-news/creating-solid-models-of-galil-controllers#comments</comments>
		<pubDate>Tue, 28 Oct 2008 21:57:57 +0000</pubDate>
		<dc:creator>Galil_JohnM</dc:creator>
		
		<category><![CDATA[Inside Galil]]></category>

		<guid isPermaLink="false">http://www.galilinmotion.com/techtalk/?p=43</guid>
		<description><![CDATA[Integrating Galil motion controllers into a physical system takes both electrical and physical considerations.  To electrically integrate the Galil into the system, wiring schematics can be developed which show how to handle and route all electrical signals.  Physical integration can be done by allowing for the maximum dimension envelope in the layout and in the [...]]]></description>
			<content:encoded><![CDATA[<p>Integrating Galil motion controllers into a physical system takes both electrical and physical considerations.  To electrically integrate the Galil into the system, wiring schematics can be developed which show how to handle and route all electrical signals.  Physical integration can be done by allowing for the maximum dimension envelope in the layout and in the desired location on the machine.  However, as the design of many machines has become more precise, machines have become more compact and the world of CAD and 3-D modeling has evolved, representing a Galil controller as a virtual 3-D object in a system has been made possible.  This can be done down to the fine details of the controller, allowing for integration of the controller into even tighter envelopes, and specification of things like mounting points, wire harness locations, etc.Although Galil does not make models of their controllers readily available, upon request, and depending on availability, Galil&#8217;s Applications staff can provide you with models, and 3-D solids of many of their controllers.  These 3-D solids, typically provided in .dxf format, can be converted into many other formats using tools provided by the 3-D modeling software.</p>
<p>The following example shows how to convert the Galil .dxf file of a DMC-2143, with an AMP-20540 sandwiched on top, to the very common .slw format used by the popular modeling program, SolidWorks.</p>
<p>1) The first step is to obtain the .DXF solid from Galil.</p>
<p><!--   [if gte vml 1]&amp;gt;                    &amp;lt;![endif]--><!--   [if !vml]--><img src="http://www.galilinmotion.com/techtalk/wp-content/uploads/2008/10/20540.jpg" alt="" width="123" height="132" /> <!--   [endif]--></p>
<p>2) The next step is to open the file through Solidworks.</p>
<p>You will be prompted by a screen seen below, giving you many options as to how to import the file.  To import Galil-generated files, select the option to import as a new part.  Select the radio button next to &quot;Import a new part&quot; and click next.</p>
<p><!--   [if gte vml 1]&amp;gt;  &amp;lt;![endif]--><!--   [if !vml]--><img src="http://www.galilinmotion.com/techtalk/wp-content/uploads/2008/10/conversion.jpg" alt="" width="667" height="434" /> <!--   [endif]--></p>
<p>3) The next screen to appear will be the following.  This allows you to import selected layers as a 2-D drawing, or to import the file as a 3-D model.  Select the tab that is labeled &quot;Model&quot; (located under the preview window).  This should automatically check the &quot;Import sheet as&quot; check box and fill in the text box next to the check box with &quot;Model.&quot;  This indicates to the program that you wish to import the file as a solid, 3-D model and not a 2-D drawing.  Click next.</p>
<p><!--   [if gte vml 1]&amp;gt;  &amp;lt;![endif]--><!--   [if !vml]--><img src="http://www.galilinmotion.com/techtalk/wp-content/uploads/2008/10/layers.jpg" alt="" width="667" height="433" /> <!--   [endif]--></p>
<p>4) The final screen can be seen below.  To import the file as a 3-D solid and not a 2-D sketch, select the radio button labeled &quot;as 3D curves/model.&quot;  This should automatically populate the check box next to the radio button labeled &quot;Import this sheet:.&quot;  The option to change import dimensions is also given in the upper left corner drop down menu.</p>
<p><!--   [if gte vml 1]&amp;gt;  &amp;lt;![endif]--><!--   [if !vml]--><img src="http://www.galilinmotion.com/techtalk/wp-content/uploads/2008/10/settings.jpg" alt="" width="667" height="435" /> <!--   [endif]--></p>
<p>5) After selecting 3-D model click on &quot;Finish.&quot;  Solidworks will automatically render the part as a 3-D solid within design space.  This can be imported into an assembly or other modeling documents.  Solidworks also allows you to save the model as many other different CAD formats in case another is desired.</p>
<p><!--   [if gte vml 1]&amp;gt;  &amp;lt;![endif]--><!--   [if !vml]--><img src="http://www.galilinmotion.com/techtalk/wp-content/uploads/2008/10/solid.jpg" alt="" width="666" height="445" /> <!--   [endif]--></p>
<p class="MsoNormal">
<p><img src="/DOCUME~1/johnm/LOCALS~1/Temp/moz-screenshot-24.jpg" alt="" /></p>
<p><img src="/DOCUME~1/johnm/LOCALS~1/Temp/moz-screenshot-23.jpg" alt="" /></p>
<p><img src="/DOCUME~1/johnm/LOCALS~1/Temp/moz-screenshot-22.jpg" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.galilinmotion.com/techtalk/galil-news/creating-solid-models-of-galil-controllers/feed</wfw:commentRss>
		</item>
		<item>
		<title>Switching Network Configuration on Windows</title>
		<link>http://www.galilinmotion.com/techtalk/software/switching-network-configuration-on-windows</link>
		<comments>http://www.galilinmotion.com/techtalk/software/switching-network-configuration-on-windows#comments</comments>
		<pubDate>Tue, 07 Oct 2008 21:25:42 +0000</pubDate>
		<dc:creator>Galil_DJR</dc:creator>
		
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.galilinmotion.com/techtalk/?p=41</guid>
		<description><![CDATA[With one network card in their PC or laptop, Galil users often wish to choose between two different network setups: DHCP for their Internet Connection, and a Static, Closed network for Galil Application development.  Below is a Windows batch file which helps to make this transition easily.  Install GalilTools first, and then copy [...]]]></description>
			<content:encoded><![CDATA[<p>With one network card in their PC or laptop, Galil users often wish to choose between two different network setups: DHCP for their Internet Connection, and a Static, Closed network for Galil Application development.  Below is a Windows batch file which helps to make this transition easily.  Install GalilTools first, and then copy the code text below to a file called GalilNetworkConfig.bat.  Double clicking a batch (bat) file runs the contained script.</p>
<p>Here&#8217;s what the script does:</p>
<p>1.) Saves a copy of the current network configuration to a file<br />
2.) Sets &#8220;Local Area Connection&#8221; to static, 192.168.1.1, with a subnet  of 255.255.255.0<br />
3.) Launches GalilTools<br />
4.) Once GalilTools process ends, it restores the network connections  saved in 1</p>
<pre>@Echo Off
Color F0
title LEAVE OPEN to restore network after GalilTools

REM create a file for the backup.  Use a random number suffix for semi-unique filename
Set GalilFile= GalilNet%random%.txt
CLS

Echo *** Backing Up Current Network Settings to %GalilFile% ***
Echo Current Settings:

REM display network data to screen and backup to dump file (for debugging)
ipconfig
Echo %date% %time% &gt;&gt; ipconfigDump.txt
ipconfig &gt;&gt; ipconfigDump.txt

REM dump current network config to backupfile
netsh -c interface dump &gt; %GalilFile%
REM create a restore batch file in case this script is exited before restoration. Just run this batch and the old settings will restore
ECHO netsh -f %GalilFile% &gt; RELOAD-LAST.bat

Echo.
Echo *** Preparing Network Connection for GalilTools ***
REM setup for Galil Controller
netsh interface ip set address name="Local Area Connection" source=static addr=192.168.1.1 mask=255.255.255.0
Echo.
Echo *** Network changed ***
Echo New Settings:

REM display network data to screen again
ipconfig

REM launch GalilTools
Echo *** Launching GalilTools ***
"c:\program files\galil\galiltools-x86\bin\galiltools"

REM when the GalilTools process exits, the old settings will be reset
Echo *** Loading Settings from %GalilFile% ***
Netsh -f %GalilFile%
Echo Current Settings:
ipconfig

REM leave the config file, but delete the restore batch file
REM del %GalilFile%
del RELOAD-LAST.bat</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.galilinmotion.com/techtalk/software/switching-network-configuration-on-windows/feed</wfw:commentRss>
		</item>
		<item>
		<title>Host PC as Slave</title>
		<link>http://www.galilinmotion.com/techtalk/software/host-pc-as-slave</link>
		<comments>http://www.galilinmotion.com/techtalk/software/host-pc-as-slave#comments</comments>
		<pubDate>Mon, 06 Oct 2008 22:21:30 +0000</pubDate>
		<dc:creator>Galil_DJR</dc:creator>
		
		<category><![CDATA[DMC Programming]]></category>

		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.galilinmotion.com/techtalk/?p=40</guid>
		<description><![CDATA[Usually in a Galil application, the Host pc serves as the master/client by establishing a connection to the controller.  It can be handy, however, to do the opposite.  By running a simple program that listens to a specific network card on a specific port, your PC can be turned into a slave/server.  [...]]]></description>
			<content:encoded><![CDATA[<p>Usually in a Galil application, the Host pc serves as the master/client by establishing a connection to the controller.  It can be handy, however, to do the opposite.  By running a simple program that listens to a specific network card on a specific port, your PC can be turned into a slave/server.  This way a Galil controller can connect to the PC.  From there the PC and controller can exchange data.  This allows for asynchronous connections from a controller to one or multiple PCs.  Possible applications:</p>
<p>1.) asynchronous dumps of controller data, arrays, variables, etc.  Backup of controller EEPROM to central server.</p>
<p>2.) Controller &#8220;pushing&#8221; events to pc, perhaps allowing the PC to invoke email, SMS, or other higher-level functions.</p>
<p>3.) Fully DMC-code-centric application design for Galil language fans.</p>
<p>The below code as a minimal VB example of how to create a PC server.</p>
<pre><span style="#3366ff;">&#8216;minimal code to sart listening to a port on the host.  Allows the Galil Controller to be the master (client) over the PC (slave/server)
&#8216;IHB=&gt;-2
&#8216;WT100
&#8216;IHB=192,168,1,10&lt;13000&gt;2
&#8216;WT100
&#8216;CFB
&#8216;CW2
&#8216;c=0
&#8216;#LOOP
&#8216;MGTIME
&#8216;WT1000
&#8216;c=c+1
&#8216;JP#LOOP,c&lt;10
&#8216;IHB=&gt;-2
&#8216;EN

Imports System
Imports System.IO
Imports System.Net
Imports System.Net.Sockets
Imports System.Text
Imports Microsoft.VisualBasic

Module Module1
    Sub Main()

        Dim server As TcpListener
        server = Nothing
        Try
            &#8216; Set the TcpListener on port 13000.
            Dim port As Int32 = 13000
            Dim localAddr As IPAddress = IPAddress.Parse(&#8221;192.168.1.10&#8243;) &#8216;address of host&#8217;s nic card (where to listen locally)
            server = New TcpListener(localAddr, port)

            &#8216; Start listening for client requests.
            server.Start()

            &#8216; Buffer for reading data
            Dim bytes(1024) As Byte
            Dim data As String = Nothing

            &#8216; Enter the listening loop.
            While True
                Console.Write(&#8221;Waiting for a connection&#8230; &#8220;)

                &#8216; Perform a blocking call to accept requests.
                &#8216; You could also user server.AcceptSocket() here.
                Dim client As TcpClient = server.AcceptTcpClient()
                Console.Write(&#8221;Connected to &#8221; + client.Client.RemoteEndPoint.ToString + &#8221; &#8220;)

                data = Nothing

                &#8216; Get a stream object for reading and writing
                Dim stream As NetworkStream = client.GetStream()

                Dim msg As Byte() = System.Text.Encoding.ASCII.GetBytes(Chr(18) + Chr(22) + vbCrLf) &#8217;send control R control V to display controller type
                stream.Write(msg, 0, msg.Length)

                Dim i As Int32

                &#8216; Loop to receive all the data sent by the client.
                i = stream.Read(bytes, 0, bytes.Length)
                While (i &lt;&gt; 0)
                    &#8216; Translate data bytes to a ASCII string.
                    data = System.Text.Encoding.ASCII.GetString(bytes, 0, i)
                    Console.Write(data)
                    i = stream.Read(bytes, 0, bytes.Length)
                End While

                &#8216; Shutdown and end connection
                client.Close()
            End While
        Catch e As SocketException
            Console.WriteLine(&#8221;SocketException: {0}&#8221;, e)
        Finally
            server.Stop()
        End Try

        Console.WriteLine(ControlChars.Cr + &#8220;Hit enter to continue&#8230;.&#8221;)
        Console.Read()
    End Sub &#8216;Main

End Module</span></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.galilinmotion.com/techtalk/software/host-pc-as-slave/feed</wfw:commentRss>
		</item>
		<item>
		<title>Modbus and Think &#38; Do</title>
		<link>http://www.galilinmotion.com/techtalk/io-control/modbus-and-think-do</link>
		<comments>http://www.galilinmotion.com/techtalk/io-control/modbus-and-think-do#comments</comments>
		<pubDate>Tue, 16 Sep 2008 18:27:06 +0000</pubDate>
		<dc:creator>Galil_JasonR</dc:creator>
		
		<category><![CDATA[I/O Control]]></category>

		<category><![CDATA[Miscellaneous]]></category>

		<guid isPermaLink="false">http://www.galilinmotion.com/techtalk/?p=39</guid>
		<description><![CDATA[Galil recently enhanced the feature set of the RIO-471&#215;0 to include more Modbus functionality. These new enhancements now allow the RIO to communicate seamlessly to Think &#38; Do software via Modbus TCP/IP.
Think&#38; Do is a software package offered by Entivity that allows a standard computer to act as a PLC for remote IO units. This [...]]]></description>
			<content:encoded><![CDATA[<p>Galil recently enhanced the feature set of the RIO-471&#215;0 to include more Modbus functionality. These new enhancements now allow the RIO to communicate seamlessly to Think &amp; Do software via Modbus TCP/IP.</p>
<p>Think&amp; Do is a software package offered by Entivity that allows a standard computer to act as a PLC for remote IO units. This type of software is often referred to as a &quot;soft PLC&quot;. One of the key advantages of the Think &amp; Do software suite is it&#8217;s implementation of numerous communication protocols, including Modbus TCP/IP.  Modbus TCP/IP is one of the only truly open communication protocols in the automation industry and is supported by a majority of automation devices including PLC&#8217;s, HMI&#8217;s, sensors and much more.</p>
<p>In order to take advantage of every feature that the Think &amp; Do software provides, along with numerous other Modbus TCP/IP devices, Galil has recently added to the RIO&#8217;s Modbus feature set. These features include:</p>
<p>1) Supporting Modbus function code 15 as a slave</p>
<p>2) Swap how function codes 3 and 4 work(MV command)</p>
<p>3) Set data transfers as 16 bit integers as opposed to 32-bit floating point values(MI command)</p>
<p><strong><span style="underline;"><span style="underline;">Function Code 15</span> </span> </strong></p>
<p>In RIO firmware version 1.0a function code 15 is only supported as a Modbus master. In version 1.0b(the standard version which now ships), Galil has added support for function code 15 as a Modbus slave. This allows other devices to set multiple digital outputs on the Galil at the same time</p>
<p><strong><span style="underline;"><span style="underline;">MV Command</span> </span> </strong></p>
<p>The RIO will default to answering function code 3 requests with analog input data and function code 4 requests with analog output data. By setting MV1 the RIO will then respond to function code 3 requests with analog output data and function code 4 requests with analog input data.</p>
<p><strong><span style="underline;"><span style="underline;">MI Command</span> </span> </strong></p>
<p>By default the RIO will conduct data transactions for function codes 3,4 and 16 as 32-bit floating point values . By setting MI1, the RIO will then use 16-bit integers instead.</p>
<p>For more details on all of these features please refer to the RIO user manual and command reference or talk to an Applications Engineer at Galil. 1-800-377-6329</p>
]]></content:encoded>
			<wfw:commentRss>http://www.galilinmotion.com/techtalk/io-control/modbus-and-think-do/feed</wfw:commentRss>
		</item>
		<item>
		<title>Top 10 Reasons to Choose Galil’s RIO Pocket PLC</title>
		<link>http://www.galilinmotion.com/techtalk/io-control/top-10-reasons-to-choose-galil%e2%80%99s-rio-pocket-plc</link>
		<comments>http://www.galilinmotion.com/techtalk/io-control/top-10-reasons-to-choose-galil%e2%80%99s-rio-pocket-plc#comments</comments>
		<pubDate>Fri, 08 Aug 2008 18:06:26 +0000</pubDate>
		<dc:creator>Galil_LisaW</dc:creator>
		
		<category><![CDATA[I/O Control]]></category>

		<guid isPermaLink="false">http://www.galilinmotion.com/techtalk/?p=38</guid>
		<description><![CDATA[1. Packed with Analog and Digital I/O.
Whether it’s analog inputs, analog outputs, digital inputs or digital outputs that you’re after – Galil’s RIO Pocket PLC has it all and then some.  Each RIO is loaded with I/O including 8 analog inputs, 8 analog outputs, 16 digital inputs and 16 digital outputs. Use them stand-alone [...]]]></description>
			<content:encoded><![CDATA[<p><strong>1. Packed with Analog and Digital I/O.</strong></p>
<p>Whether it’s analog inputs, analog outputs, digital inputs or digital outputs that you’re after – Galil’s RIO Pocket PLC has it all and then some.  Each RIO is loaded with I/O including 8 analog inputs, 8 analog outputs, 16 digital inputs and 16 digital outputs. Use them stand-alone or network multiple RIOs to handle all the I/O in your machine.  <span id="more-38"></span></p>
<p><strong>2. Smart</strong><br />
Combined with the I/O capability is a fast 32-bit microprocessor with a built-in 100BaseT Ethernet and 115k baud RS-232 serial port.  If you need non-volatile memory and programmable logic, it’s in there.  You can program the RIO with either Galil’s intuitive two letter command language or you have the option of using Galil’s Ladder Logic Interface software.  Download your program, burn it in, and walk away.<br />
<!--[if !supportLineBreakNewLine]--><!--[endif]--><br />
<strong> 3. Compact</strong><br />
The beauty of the RIO Pocket PLC is that its small size does not take away from its exhaustive capabilities. The RIO measures just 3.88” x 4.26” x 1.30”.</p>
<p><strong>4. Low Price</strong><br />
Galil understands that budgets are tight so why not free up some of that budget – at a price of $295 in single quantity or $195 in 100 qty for the RIO-47100– that should give you some wiggle room.</p>
<p><strong>5. Process Control Loops &amp; Pulse Counter</strong><br />
No problem.  The RIO has two independent process control loops.  Just set up your analog input and output range, adjust the PID filter values, and you’ve got Galil’s powerful control algorithm doing all the dirty work for you. However, if that’s not enough, then maybe you’re in need of a pulse counter.  The RIO has it covered – just enable it and you can count on either high or low going pulses.  Tying the Pocket PLC to your machine just got easier.</p>
<p><strong>6. Modbus/TCP Master and Slave</strong><br />
Still not enough?  If it’s because you need Modbus/TCP– well, here’s some good news – the RIO can be a Modbus Master or Slave.  Just put it on the Ethernet network and start using your Modbus Enabled devices to control the I/O remotely. Now you can easily interface to HMIs, PCs, motion controllers and other I/O devices.</p>
<p><strong>7. Data Logging</strong><br />
But does it have data-logging?  Yep.  A snapshot of the controller’s I/O is recorded internally every other sample – just hook up via Ethernet to get real-time data displayed and stored on your Windows or Linux computer.</p>
<p><strong>8. Web Interface and Email Capability</strong><br />
It doesn’t stop there though, with a web interface and email capability – you can set up event conditions to alert you via email or even send an email to a cell phone.<span> </span>You set up the conditions and the RIO monitors the machine…Automation at its best.</p>
<p><strong>9. Use Screw Terminals or D-Subs</strong><br />
Screw Terminals vs D-Subs?  It’s the age old question of convenience versus reliability.  Well, now you don’t have to choose just one.  The RIO provides D-sub connectors for cost-effective, reliable connectivity. Or, use mating ICS boards which provide screw-terminals for convenient prototyping and quick connections to I/O points.<br />
<!--[if !supportLineBreakNewLine]--><strong><br />
10. Customization</strong> <!--[endif]--><br />
And to top it off, if the RIO Pocket PLC doesn’t have it&#8230;Galil will put it in.  Galil prides itself in being flexible to customer&#8217;s needs and has a very successful track record of creating custom solutions to achieve success.  This ranges from simple firmware modifications to full-blown custom hardware.</p>
<p><strong><em>Check out Galil’s new </em><em>RIO</em><em> Pocket PLC today</em></strong><br />
Download complete specifications at <a title="RIO Pocket PLC" href="http://www.galilmc.com/pocketplc" target="_blank">www.galilmc.com/pocketplc</a>. Contact a Galil Applications Engineer today to discuss your application at 1-800-377-6329.</p>
<p class="MsoCaption" style="page-break-after: avoid;"><strong>Pocket PLC Price Comparison by Part Number</strong></p>
<p class="MsoCaption" style="page-break-after: avoid;">
<table style="height: 220px;" border="0" cellspacing="0" cellpadding="0" width="513">
<tbody>
<tr>
<td width="195" valign="bottom"></td>
<td width="130" valign="bottom">
<p align="center"><strong>RIO</strong><strong>-47100</strong></p>
</td>
<td width="132" valign="bottom">
<p align="center"><strong>RIO</strong><strong>-47120</strong></p>
</td>
<td width="132" valign="bottom">
<p align="center"><strong>RIO</strong><strong>-47120-16</strong></p>
</td>
</tr>
<tr>
<td width="195">16   Digital Inputs<br />
(5-24VDC)_________________</td>
<td width="130">
<p align="center">yes</p>
</td>
<td width="132">
<p align="center">yes</p>
</td>
<td width="132">
<p align="center">yes</p>
</td>
</tr>
<tr>
<td width="195">8 High   Power Digital Outputs<br />
(12-24VDC @ 0.5A each)_________________</td>
<td width="130">
<p align="center">yes</p>
</td>
<td width="132">
<p align="center">yes</p>
</td>
<td width="132">
<p align="center">yes</p>
</td>
</tr>
<tr>
<td width="195">8 Low   Power Digital Outputs<br />
(5-24VDC @25mA)_________________</td>
<td width="130">
<p align="center">yes</p>
</td>
<td width="132">
<p align="center">yes</p>
</td>
<td width="132">
<p align="center">yes</p>
</td>
</tr>
<tr>
<td width="195">8 Analog   Inputs_________________</td>
<td width="130">
<p align="center">0-5V<br />
(12bit Res)</p>
</td>
<td width="132">
<p align="center">
<p align="center">0-5V<br />
0-10V<br />
+/-10V<br />
(12bit Res)</p>
<p align="center">
</td>
<td width="132">
<p align="center">0-5V<br />
0-10V<br />
+/-10V<br />
(16bit Res)</p>
</td>
</tr>
<tr>
<td width="195">8 Analog   Outputs_________________</td>
<td width="130">
<p align="center">0-5V<br />
(12bit Res)</p>
</td>
<td width="132">
<p align="center">
<p align="center">0-5V<br />
0-10V<br />
+/-10V<br />
(12bit Res)</p>
<p align="center">
</td>
<td width="132">
<p align="center">0-5V<br />
0-10V<br />
+/-10V<br />
(16bit Res)</p>
</td>
</tr>
<tr>
<td width="195"></td>
<td width="130">
<p align="center">
<p align="center">$295 (qty1)<br />
$195 (qty100)</p>
</td>
<td width="132">
<p align="center">
<p align="center">$345 (qty1)<br />
$245 (qty100)</p>
</td>
<td width="132">
<p align="center">
<p align="center">$395 (qty1)<br />
$295 (qty100)</p>
</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.galilinmotion.com/techtalk/io-control/top-10-reasons-to-choose-galil%e2%80%99s-rio-pocket-plc/feed</wfw:commentRss>
		</item>
		<item>
		<title>Using Excel for Data Logging with an RIO Pocket PLC</title>
		<link>http://www.galilinmotion.com/techtalk/software/using-excel-for-data-logging-with-an-rio-pocket-plc</link>
		<comments>http://www.galilinmotion.com/techtalk/software/using-excel-for-data-logging-with-an-rio-pocket-plc#comments</comments>
		<pubDate>Wed, 16 Jul 2008 21:50:37 +0000</pubDate>
		<dc:creator>John Hayes</dc:creator>
		
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.galilinmotion.com/techtalk/?p=23</guid>
		<description><![CDATA[In this article, we’ll explore how to use Microsoft Excel for data-logging using the RIO Pocket PLC and an Ethernet connection. I’ll explain the steps necessary to get from a blank spreadsheet to a useful data logging application in about 15 minutes.
 
There are a few things needed for this to work. The first thing [...]]]></description>
			<content:encoded><![CDATA[<p class="MsoBodyText" style="text-align: justify;"><span style="font-size: 10pt;">In this article, we’ll explore how to use Microsoft Excel for data-logging using the RIO Pocket PLC and an Ethernet connection.<span> </span>I’ll explain the steps necessary to get from a blank spreadsheet to a useful data logging application in about 15 minutes.</span></p>
<p class="MsoBodyText" style="text-align: justify;"><span style="font-size: 10pt;"> </span></p>
<p class="MsoBodyText" style="text-align: justify;"><span style="font-size: 10pt;">There are a few things needed for this to work.<span> </span>The first thing is a RIO-471&#215;0 (although any DMC motion controller with Ethernet capability will also work) and the second thing is to install GalilTools($195) or GalilTools-Lite (free).</span></p>
<p class="MsoBodyText" style="text-align: justify;"><span style="font-size: 10pt;"> </span></p>
<p class="MsoBodyText" style="text-align: justify;"><span style="font-size: 10pt;">After installing GalilTools software, you should assign an IP address to the </span><span style="font-size: 10pt;">RIO</span><span style="font-size: 10pt;">.<span> </span>In this example, I’m using 10.0.6.47 but you should assign an IP address that is compliant with your network settings.<span> </span>After assigning an IP address – connect up to the controller in GalilTools to verify that communication is working.</span></p>
<p class="MsoBodyText" style="text-align: justify;"><span style="font-size: 10pt;"> </span></p>
<p class="MsoBodyText" style="text-align: justify;"><strong><span style="font-size: 10pt;">Part 1:<span> </span>A Simple Application</span></strong></p>
<p class="MsoBodyText" style="text-align: justify;"><span style="font-size: 10pt;">We’ll start with a simple example of sending a command to query the built in “TIME” variable on the controller.<span> </span>This variable is constantly updated inside the controller to reflect a running time in milliseconds.<span> </span>To get this value, we need to send down the string “MG TIME” and that tells the controller to return the value of TIME.</span></p>
<p class="MsoBodyText" style="text-align: justify;"><span style="font-size: 10pt;"> </span></p>
<p class="MsoBodyText" style="text-align: justify;"><span style="font-size: 10pt;">To do this, turn on the View -&gt; Toolbars -&gt;“Control Toolbox”</span></p>
<p class="MsoBodyText" style="text-align: justify;"><a href="http://www.galilinmotion.com/techtalk/wp-content/uploads/2008/07/control_toolbar.jpg"><img class="alignnone size-medium wp-image-24" title="control_toolbar" src="http://www.galilinmotion.com/techtalk/wp-content/uploads/2008/07/control_toolbar.jpg" alt="" width="300" height="22" /></a></p>
<p class="MsoBodyText" style="text-align: justify;"><span style="font-size: 10pt;">and make sure you are in “Design Mode” by enabling the icon on the far left.</span></p>
<p class="MsoBodyText" style="text-align: justify;"><span style="font-size: 10pt;"> </span></p>
<p class="MsoBodyText" style="text-align: justify;"><span style="font-size: 10pt;">Next, add a button to your Excel spreadsheet by clicking on the button icon and dragging it on to your spreadsheet. Right Click on the button and choose Properties.<span> </span>Modify the Properties to name the button and give it a caption.</span></p>
<p class="MsoBodyText" style="text-align: justify;"><a href="http://www.galilinmotion.com/techtalk/wp-content/uploads/2008/07/properties.png"><img class="alignnone size-medium wp-image-25" title="Properties" src="http://www.galilinmotion.com/techtalk/wp-content/uploads/2008/07/properties.png" alt="" width="273" height="214" /></a></p>
<p class="MsoBodyText" style="text-align: justify;">
<p class="MsoBodyText" style="text-align: justify;"><span style="font-size: 10pt;">Your sheet should look something like this:</span></p>
<p><a href="http://www.galilinmotion.com/techtalk/wp-content/uploads/2008/07/rio_simple.png" target="_blank"><img class="alignnone size-medium wp-image-26" title="Excel screenshot - simple" src="http://www.galilinmotion.com/techtalk/wp-content/uploads/2008/07/rio_simple.png" alt="" width="300" height="200" /></a></p>
<p class="MsoBodyText" style="text-align: justify;"><span style="font-size: 10pt;">Now, double click on the button and the Visual Basic Editor window will pop up.<span> </span>Go to Tools-References and enable the checkbox for “Galil” as shown below.<span> </span><span> </span></span></p>
<p><a href="http://www.galilinmotion.com/techtalk/wp-content/uploads/2008/07/excel_references1.png" target="_blank"><img class="alignnone size-medium wp-image-34" title="Excel Reference" src="http://www.galilinmotion.com/techtalk/wp-content/uploads/2008/07/excel_references1.png" alt="" width="300" height="256" /></a></p>
<p><span style="font-size: 10pt;">If there is no Galil checkbox, click “Browse” and choose the file C:\Program Files\Galil\GalilTools-x86\lib\IGalil.tlb.<span> </span>Click OK.</span></p>
<p class="MsoBodyText" style="text-align: justify;"><span style="font-size: 10pt;">Now add the following text to your Button Click Function:</span></p>
<p><code>Private Sub GetTIME_Click()<br />
Dim g As New Galil.Galil<br />
g.Address = "10.0.6.47"   'Connect to IP address of RIO Pocket PLC<br />
Sheet1.Cells(4, 4) = g.Command("MG TIME")   'Send Command MG TIME<br />
End Sub</code></p>
<p class="MsoBodyText" style="text-align: justify;"><span style="font-size: 10pt;">But replace the IP address with the IP address of your </span><span style="font-size: 10pt;">RIO</span><span style="font-size: 10pt;"> unit.<span> </span>Go back to Sheet1 and click the icon on the Control Toolbox to “Exit Design Mode”.<span> </span>Now click on the button and you should get a value in cell D4 like this:</span></p>
<p><a href="http://www.galilinmotion.com/techtalk/wp-content/uploads/2008/07/rio_simple_b.png" target="_blank"><img class="alignnone size-medium wp-image-27" title="Excel Screenshot 2 - simple" src="http://www.galilinmotion.com/techtalk/wp-content/uploads/2008/07/rio_simple_b.png" alt="" width="300" height="208" /></a></p>
<p class="MsoBodyText" style="text-align: justify;"><span style="font-size: 10pt;">You can build an entire application from the simple steps shown above to achieve an interactive user interface to the </span><span style="font-size: 10pt;">RIO</span><span style="font-size: 10pt;">.<span> </span>This simple example allows you to send commands and receive responses via an Excel spreadsheet.  However, for a data logging application – this just isn’t going to cut it so Part 2 of this article is going to look at some more advanced features such as accessing the internal Data Record of the controller.  So go grab a cup of coffee because you&#8217;ll want to be awake for the next part.<br />
</span></p>
<p class="MsoBodyText" style="text-align: justify;"><strong><span style="font-size: 10pt;">Part 2: Using the Data Record<br />
</span></strong></p>
<p class="MsoBodyText" style="text-align: justify;"><span style="font-size: 10pt;">Now that we’ve gotten the Excel spreadsheet communicating to the controller, its time to grab some data!<span> </span>Create a new Excel workbook and follow the same steps as Part1 to add a button named GetDataRecord and include the Reference to IGalil.tlb.  For all Galil controllers, there is a &#8220;snapshot&#8221; of all the internal values that can be sent out at a regular interval.  This snapshot is called the DataRecord and you can see exactly what values are stored by looking at Chapter 3 in the User Manual of the controller.  The code below runs a loop that grabs all the values from the DataRecord and stores them into successive rows of the Excel spreadsheet.<br />
</span></p>
<p class="MsoBodyText" style="text-align: justify;"><span style="font-size: 10pt;"> </span></p>
<p class="MsoBodyText" style="text-align: justify;"><span style="font-size: 10pt;"> </span></p>
<p class="MsoBodyText" style="text-align: justify;"><span style="font-size: 10pt;"> </span></p>
<p class="MsoBodyText" style="text-align: justify;"><span style="font-size: 10pt;">In your Code View window, add the following code:</span></p>
<p><code> Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)</code></p>
<p><code>Private Sub GetDataRecord_Click()<br />
Sheet1.Range("A1:BH100").Clear    'clear spreadsheet</code></p>
<p><code>'Make sure to add the Reference to IGalil.tlb under Tools - Add Reference<br />
'Security level in Excel should be set to Medium to allow macros</code></p>
<p><code>Dim g As New Galil.Galil<br />
g.Address = "10.0.6.47"   'Connect to IP address of RIO Pocket PLC<br />
Dim i As Integer<br />
i = 1<br />
For j = 0 To 60           'For loop to list sources and the units<br />
Sheet1.Cells(1, j + 1) = g.sources(j)<br />
Sheet1.Cells(2, j + 1) = g.sourceUnits(g.sources(j))<br />
Next j<br />
j = 0<br />
Dim DataRecord As Variant<br />
'Data starts at row 3 and we are collecting 25 samples<br />
For i = 3 To 50<br />
DataRecord = g.record<br />
For j = 0 To 60       'gets each datapoint<br />
Sheet1.Cells(i, j + 1) = g.sourceValue(DataRecord, g.sources(j))<br />
Next j<br />
DoEvents                 'allows user to do other things during loop<br />
Sleep (25)                'sleep for 25 msec<br />
Next i<br />
End Sub</code></p>
<p class="MsoBodyText" style="text-align: justify;"><span style="font-size: 10pt;"> </span></p>
<p class="MsoBodyText" style="text-align: justify;"><span style="font-size: 10pt;">The first statement just declares a Sleep function.<span> </span>The </span><span style="font-size: 10pt; font-family: Courier;">GetDataRecord_Click()</span><span style="font-size: 10pt;"> </span><span style="font-size: 10pt;">subroutine is what runs the code to grab the </span><span style="font-size: 10pt;">RIO</span><span style="font-size: 10pt;"> datarecord and display it to the screen.<span> </span>Adjust the values of the For loop to the desired number of samples and the Sleep timer can adjust the desired sample rate.</span></p>
<p class="MsoBodyText" style="text-align: justify;"><span style="font-size: 10pt;"> </span></p>
<p class="MsoBodyText" style="text-align: justify;"><span style="font-size: 10pt;">Clicking on the Button should fill up Sheet1 with data like this:</span></p>
<p class="MsoBodyText" style="text-align: justify;"><a href="http://www.galilinmotion.com/techtalk/wp-content/uploads/2008/07/excel_advanced.png" target="_blank"><img class="alignnone size-medium wp-image-28" title="Excel Screenshot - advanced" src="http://www.galilinmotion.com/techtalk/wp-content/uploads/2008/07/excel_advanced.png" alt="" width="300" height="155" /></a></p>
<p class="MsoBodyText" style="text-align: justify;">
<p class="MsoBodyText" style="text-align: justify;"><span style="font-size: 10pt;">The next step is to take advantage of the many chart &amp; report functions of Excel that display the data in a format that’s easier to read.<span> </span>Here’s an example of graphing the analog output while it is performing a sine wave.  The dmc code used to generate the sine wave on the analog output is located under the I/O section of the sample code library here: <a href="http://www.galilmc.com/support/sample_code.html" target="_blank">http://www.galilmc.com/support/sample_code.html</a> </span></p>
<p class="MsoBodyText" style="text-align: justify;"><a href="http://www.galilmc.com/ftp/pub/appnotes/excel-data-record.html" target="_blank">(Click to see video)</a></p>
<p><a href="http://www.galilmc.com/ftp/pub/appnotes/excel-data-record.html" target="_blank"><img class="alignnone size-medium wp-image-29" title="scope" src="http://www.galilinmotion.com/techtalk/wp-content/uploads/2008/07/scope.png" alt="" width="300" height="262" /></a></p>
<p>As a last step, for Excel to allow the VB code to run, the Macro Security level needs to be set to &#8220;Medium&#8221;.   To do this, go to Tools -&gt; Macro -&gt; Security&#8230;. and then click on the &#8220;Medium&#8221; level as shown here:</p>
<p><a href="http://www.galilinmotion.com/techtalk/wp-content/uploads/2008/07/security.png" target="_blank"><img class="alignnone size-medium wp-image-32" title="Security Settings" src="http://www.galilinmotion.com/techtalk/wp-content/uploads/2008/07/security.png" alt="" width="282" height="300" /></a></p>
<p>Although using Microsoft Excel does have its limitations, the big benefit of using this method to build a data-logging  application is that it is quick and easy and allows the user to be generating graphs from their I/O in just a few minutes.</p>
<p class="MsoBodyText" style="text-align: justify;">
<p class="MsoBodyText" style="text-align: justify;">
]]></content:encoded>
			<wfw:commentRss>http://www.galilinmotion.com/techtalk/software/using-excel-for-data-logging-with-an-rio-pocket-plc/feed</wfw:commentRss>
		</item>
		<item>
		<title>Simple Method for Mirroring Byte Streams from RS232 to Ethernet</title>
		<link>http://www.galilinmotion.com/techtalk/drives/simple-method-for-mirroring-byte-streams-from-rs232-to-ethernet</link>
		<comments>http://www.galilinmotion.com/techtalk/drives/simple-method-for-mirroring-byte-streams-from-rs232-to-ethernet#comments</comments>
		<pubDate>Thu, 03 Jul 2008 22:44:40 +0000</pubDate>
		<dc:creator>Galil_DJR</dc:creator>
		
		<category><![CDATA[DMC Programming]]></category>

		<category><![CDATA[Drives]]></category>

		<guid isPermaLink="false">http://www.galilinmotion.com/techtalk/?p=21</guid>
		<description><![CDATA[If you have a device that talks serially to a Galil Serial port, this code will mirror the incoming byte stream to an outgoing Ethernet Handle.
Lower baud rates may be necessary depending on the volume of data being transmitted.

CI2,1;'configure communication interrupts for DMC-21x3
CFB;'send unsolicited messages out of the B handle -- ensure that this is [...]]]></description>
			<content:encoded><![CDATA[<p>If you have a device that talks serially to a Galil Serial port, this code will mirror the incoming byte stream to an outgoing Ethernet Handle.</p>
<p>Lower baud rates may be necessary depending on the volume of data being transmitted.</p>
<hr />
<pre>CI2,1;'configure communication interrupts for DMC-21x3
CFB;'send unsolicited messages out of the B handle -- ensure that this is an
'unconnected handle or a unimportant one. Messages (error codes) sent here
'should be ignored
'
CW1;'CW2 for non-Galil receiving software, CW1 for Galil, example, g.message()
'
#LOOP;'dummy loop running, #COMINT interrupts here
JP#LOOP
'
'
REM when character comes in on RS232 port
#COMINT
MGP1CH{S1}{N}{EA}
REM Note the {EA}. This sends the character to the desired handle.
REM Every 80 characters without a carriage return will generate a ?
REM from the controller. Due to the CFB above, this is ignored.
REM The ? is generated because 80 characters is the standard command
REM line max. It doesn't matter here with serial port in CI mode.
REM Note, Carriage returns are not mirrored, so use a different delimeter
REM
REM to optimize packet traffic, concatenate chars (in array)
REM and send periodically in one MG
EN1,1 ;'return from COMINT</pre>
<hr />
]]></content:encoded>
			<wfw:commentRss>http://www.galilinmotion.com/techtalk/drives/simple-method-for-mirroring-byte-streams-from-rs232-to-ethernet/feed</wfw:commentRss>
		</item>
		<item>
		<title>ICS-48100 100pin adapter for DMC-40&#215;0</title>
		<link>http://www.galilinmotion.com/techtalk/motion-controllers/ics-48100</link>
		<comments>http://www.galilinmotion.com/techtalk/motion-controllers/ics-48100#comments</comments>
		<pubDate>Tue, 01 Jul 2008 20:23:18 +0000</pubDate>
		<dc:creator>John Hayes</dc:creator>
		
		<category><![CDATA[Motion Controllers]]></category>

		<guid isPermaLink="false">http://www.galilinmotion.com/techtalk/?p=19</guid>
		<description><![CDATA[The ICS-48100 is a breakout module that plugs directly into the D-sub connectors of the DMC-40&#215;0 and converts them into a 100pin Connector. This is especially useful for those that would like to upgrade to the DMC-40&#215;0 series from a controller with a 100pin cable (such as the DMC-22&#215;0 or DMC-18xx series) but do not [...]]]></description>
			<content:encoded><![CDATA[<p class="MsoBodyText" style="text-align: justify;"><span style="font-size: 10pt; font-family: Arial;">The ICS-48100 is a breakout module that plugs directly into the D-sub connectors of the DMC-40&#215;0 and converts them into a 100pin Connector.<span> </span>This is especially useful for those that would like to upgrade to the DMC-40&#215;0 series from a controller with a 100pin cable (such as the DMC-22&#215;0 or DMC-18xx series) but do not want to change their wiring.<span> </span>This interconnect board will allow users to keep their existing 100 pin cable &amp; interconnect module the same.</span></p>
<p class="MsoBodyText" style="text-align: justify;"><a href="http://www.galilinmotion.com/techtalk/wp-content/uploads/2008/07/ics-48100a.jpg"><img class="alignnone size-medium wp-image-20" title="ICS-48100" src="http://www.galilinmotion.com/techtalk/wp-content/uploads/2008/07/ics-48100a.jpg" alt="ICS-48100 mounted on DMC-40x0 controller" width="300" height="225" /></a></p>
<p class="MsoBodyText" style="text-align: justify;">For complete details, go to Application Note #2511 located here:</p>
<p class="MsoBodyText" style="text-align: justify;"><a href="http://www.galilmc.com/support/appnotes/accelera/note2511.pdf" target="_blank">http://www.galilmc.com/support/appnotes/accelera/note2511.pdf</a></p>
<p class="MsoBodyText" style="text-align: justify;">
]]></content:encoded>
			<wfw:commentRss>http://www.galilinmotion.com/techtalk/motion-controllers/ics-48100/feed</wfw:commentRss>
		</item>
		<item>
		<title>Automatic Subroutines with Accelera controllers</title>
		<link>http://www.galilinmotion.com/techtalk/dmc-programming/automatic-subroutines-with-accelera-controllers</link>
		<comments>http://www.galilinmotion.com/techtalk/dmc-programming/automatic-subroutines-with-accelera-controllers#comments</comments>
		<pubDate>Mon, 16 Jun 2008 16:18:49 +0000</pubDate>
		<dc:creator>Galil_AndyH</dc:creator>
		
		<category><![CDATA[DMC Programming]]></category>

		<guid isPermaLink="false">http://www.test.galilinmotion.com/techtalk/?p=15</guid>
		<description><![CDATA[Many new features were added to the Accelera product line that were not available in prior generation Galil controllers.  One of these more overlooked features is the fact that some Automatic subroutines no longer require thread 0 to be running on the controller for the routine to run.  This is extremely useful as [...]]]></description>
			<content:encoded><![CDATA[<p>Many new features were added to the Accelera product line that were not available in prior generation Galil controllers.  One of these more overlooked features is the fact that some Automatic subroutines no longer require thread 0 to be running on the controller for the routine to run.  This is extremely useful as a safety feature for the #AMPERR, #LIMSWI and #POSERR routines, a helpful diagnostic tool for #TCPERR, and it gives the programmer much more flexibility when using the #ININT routine.</p>
<p>Because prior generation controllers required thread 0 to be running in order for those routines to execute, the routines could be easily written using arrays, variables or other settings that could be initialized in something like a #AUTO program, or a the beginning of a program that is executed from a host.  With Accelera controllers, the programmer can no longer rely on the program running on the controller to initialize variables or settings, because the automatic routine has the ability to run before that program is even executed.</p>
<p>When programming Automatic subroutines on Accelera controllers, the programmer should not depend on variables or settings that are either not defaults on the controller, or are not burned into non-volatile flash.  The automatic routines should also remain in the routine until the error or reason for the routine execution is cleared.</p>
<p>Here is an example of a #AMPERR routine that will cause problems, and another that should run without problems</p>
<p><code><br />
REM Incorrect #AMPERR routine<br />
#AMPERR<br />
IF initvar=1<br />
MG"Run Init Routine"<br />
ELSE<br />
ENDIF<br />
RE<br />
</code></p>
<p>If an Amplifier Error occurs while there is no program running on the controller and the above code is in program memory, there are potentially 2 issues that could arise with the above code.  If the variable &#8220;initvar&#8221; is not defined in controller memory, an error will occur and the routine will end.  If there is no #CMDERR routine in program memory, #AMPERR will then automatically start again because there is still an amplifier error.  This is essentially an infinite loop.  If &#8220;initvar&#8221; is defined, the #AMPERR routine is a very short routine that does not address that actual amplifier error before it exits the routine.  Once the routine ends, #AMPERR will start right back up - another infinite loop.</p>
<p>Here is a #AMPERR routine that will allow the controller to deal with the amplifier error, or at least properly notify the user/host of the state of an amplifier error.  (This code is written for a DMC-40&#215;0 controller)  The routine uses no variables that are not defined in the actual #AMPERR routine, and it also checks to see if the amplifier error has cleared and only exits the routine under a cleared condition.<br />
<code><br />
#AMPERR<br />
REM mask out axes that are in brushed mode for _TA1<br />
mask=(_BRH*128)+(_BRG*64)+(_BRF*32)+(_BRE*16)+(_BRD*8)+(_BRC*4)+(_BRB*2)+_BRA<br />
mask=@COM[mask]<br />
mask=((_TA1&amp;mask)&amp;$0000FFFF)<br />
LU0;&#8217;turn off auto update of LCD<br />
REM amplifier error status on LCD<br />
MG&#8221;A-ER TA0&#8243;{L1},_TA0{L2};WT2000<br />
MG&#8221;A-ER TA1&#8243;{L1},mask{L2};WT2000<br />
MG&#8221;A-ER TA2&#8243;{L1},_TA2{L2};WT2000<br />
MG&#8221;A-ER TA3&#8243;{L1},_TA3{L2};WT2000<br />
LU1;&#8217;turn on Automatic Axis Update of LCD<br />
WT5000<br />
REM the sum of the amperr bits should be 0 with no amplifier error<br />
er=_TA0+mask+_TA2+_TA3<br />
JP#AMPERR,er0<br />
REM Notify user amperr has cleared<br />
LU0<br />
MG&#8221;AMPERR&#8221;{L1},&#8221;RESOLVED&#8221;{L2}<br />
WT3000<br />
LU1<br />
RE<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.galilinmotion.com/techtalk/dmc-programming/automatic-subroutines-with-accelera-controllers/feed</wfw:commentRss>
		</item>
		<item>
		<title>Changing deceleration value when a limit switch is triggered</title>
		<link>http://www.galilinmotion.com/techtalk/dmc-programming/changing-deceleration-value-when-a-limit-switch-is-triggered</link>
		<comments>http://www.galilinmotion.com/techtalk/dmc-programming/changing-deceleration-value-when-a-limit-switch-is-triggered#comments</comments>
		<pubDate>Thu, 12 Jun 2008 22:18:50 +0000</pubDate>
		<dc:creator>Galil_RobinR</dc:creator>
		
		<category><![CDATA[DMC Programming]]></category>

		<guid isPermaLink="false">http://www.test.galilinmotion.com/techtalk/?p=18</guid>
		<description><![CDATA[For Optima-series controllers and older, it is well documentated that the deceleration value (DC) of an axis cannot be changed while the axis is actively profiling.  Many machine designs require a low DC value for smoothest possible motion.  At the ends of the allowable travel, the mechanical layout may mean that the limit [...]]]></description>
			<content:encoded><![CDATA[<p>For Optima-series controllers and older, it is well documentated that the deceleration value (DC) of an axis cannot be changed while the axis is actively profiling.  Many machine designs require a low DC value for smoothest possible motion.  At the ends of the allowable travel, the mechanical layout may mean that the limit swithces are physically close to the hard stop.  Therefore, if the axis drives up against the limit, the controller may not have enough physical space to decelerate to a stop before coming into contact with the hard stop.</p>
<p>To account for this, the Galil controllers allow the user to change the DC value within the LIMSWI routine.  Here, you can set the DC value very high, in order to stop well before coming into contact with the hard stop.  The following figure shows a profile with the DC value left low.  The time to stop is quite long, and the distance traveled is too far into the hard stop.</p>
<p><a href="http://www.galilinmotion.com/techtalk/wp-content/uploads/2008/07/no.jpg"><img class="alignnone size-medium wp-image-30" src="http://www.galilinmotion.com/techtalk/wp-content/uploads/2008/07/no.jpg" alt="" width="300" height="239" /></a></p>
<p>The following screen shot show the result of changing the DC value when running the #LIMSWI routine.  The time to stop has been dramatically reduced.</p>
<p><a href="http://www.galilinmotion.com/techtalk/wp-content/uploads/2008/07/change.jpg"><img class="alignnone size-medium wp-image-31" src="http://www.galilinmotion.com/techtalk/wp-content/uploads/2008/07/change.jpg" alt="" width="300" height="239" /></a></p>
<p>Here is a sample DMC program that performs this change.</p>
<p>#LIMSPD<br />
NOTE EXAMPLE OF CHANGING DECEL IF A LIMIT OCCURS<br />
ACX=1024<br />
DCX=1024<br />
SPX=4096<br />
PRX=100000<br />
BGX<br />
#LOOP<br />
JP#LOOP<br />
#LIMSWI<br />
DCX=1024000<br />
STX<br />
AMX<br />
MG&#8221;LIMIT&#8221;<br />
EN</p>
]]></content:encoded>
			<wfw:commentRss>http://www.galilinmotion.com/techtalk/dmc-programming/changing-deceleration-value-when-a-limit-switch-is-triggered/feed</wfw:commentRss>
		</item>
	</channel>
</rss>
