<?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>Contact and Coil &#187; Automation</title>
	<atom:link href="http://www.contactandcoil.com/category/automation/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.contactandcoil.com</link>
	<description>Nearly In Control</description>
	<lastBuildDate>Thu, 02 Sep 2010 02:49:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Quick thoughts about Automation</title>
		<link>http://www.contactandcoil.com/automation/industrial-automation/quick-thoughts-about-automation/</link>
		<comments>http://www.contactandcoil.com/automation/industrial-automation/quick-thoughts-about-automation/#comments</comments>
		<pubDate>Thu, 02 Sep 2010 02:48:18 +0000</pubDate>
		<dc:creator>Scott Whitlock</dc:creator>
				<category><![CDATA[Industrial Automation]]></category>
		<category><![CDATA[deep-thoughts]]></category>

		<guid isPermaLink="false">http://www.contactandcoil.com/?p=540</guid>
		<description><![CDATA[I think that once you&#8217;ve been in this industry for a few years, you need to reach out to others to share some of the wisdom you&#8217;ve learned. Most of the knowledge we carry around can do other people a lot more good than it will do us again in the future, so sharing needs [...]]]></description>
			<content:encoded><![CDATA[<p>I think that once you&#8217;ve been in this industry for a few years, you need to reach out to others to share some of the wisdom you&#8217;ve learned.  Most of the knowledge we carry around can do other people a lot more good than it will do us again in the future, so sharing needs to be a cultural norm.  With that thought in mind, here are some quick automation-related thoughts I&#8217;d like to share:</p>
<ol>
<li>Inexperienced engineers appear to work faster, but their solutions are less maintainable. [<a href="http://twitter.com/home?status=Inexperienced engineers appear to work faster, but their solutions are less maintainable. http://bit.ly/a7VEWj" title="Click to share this post on Twitter" onclick="pageTracker._trackPageview('/outgoing/twitter.com/home?status=Inexperienced_engineers_appear_to_work_faster_but_their_solutions_are_less_maintainable._http_//bit.ly/a7VEWj&amp;referer=');">tweet this</a>]</li>
<li>Choose open systems over proprietary, when possible [<a href="http://twitter.com/home?status=Choose open systems over proprietary, when possible http://bit.ly/a7VEWj" title="Click to share this post on Twitter" onclick="pageTracker._trackPageview('/outgoing/twitter.com/home?status=Choose_open_systems_over_proprietary_when_possible_http_//bit.ly/a7VEWj&amp;referer=');">tweet this</a>]</li>
<li>Automate your own job ruthlessly before to automate anything else. It pays back. [<a href="http://twitter.com/home?status=Automate your own job ruthlessly before to automate anything else. It pays back. http://bit.ly/a7VEWj" title="Click to share this post on Twitter" onclick="pageTracker._trackPageview('/outgoing/twitter.com/home?status=Automate_your_own_job_ruthlessly_before_to_automate_anything_else._It_pays_back._http_//bit.ly/a7VEWj&amp;referer=');">tweet this</a>]</li>
<li>Beware of employers who spend 30 minutes reprimanding you about a 15 minute line on your timesheet. [<a href="http://twitter.com/home?status=Beware of employers who spend 30 minutes reprimanding you about a 15 minute line on your timesheet. http://bit.ly/a7VEWj" title="Click to share this post on Twitter" onclick="pageTracker._trackPageview('/outgoing/twitter.com/home?status=Beware_of_employers_who_spend_30_minutes_reprimanding_you_about_a_15_minute_line_on_your_timesheet._http_//bit.ly/a7VEWj&amp;referer=');">tweet this</a>]</li>
<li>If you can&#8217;t find a more powerful tool, make your own. [<a href="http://twitter.com/home?status=If you can't find a more powerful tool, make your own. http://bit.ly/a7VEWj" title="Click to share this post on Twitter" onclick="pageTracker._trackPageview('/outgoing/twitter.com/home?status=If_you_can_t_find_a_more_powerful_tool_make_your_own._http_//bit.ly/a7VEWj&amp;referer=');">tweet this</a>]</li>
<li>When estimating a project, if you&#8217;re counting in hours, you&#8217;re not being realistic. Use half-days. [<a href="http://twitter.com/home?status=When estimating a project, if you're counting in hours, you're not being realistic. Use half-days. http://bit.ly/a7VEWj" title="Click to share this post on Twitter" onclick="pageTracker._trackPageview('/outgoing/twitter.com/home?status=When_estimating_a_project_if_you_re_counting_in_hours_you_re_not_being_realistic._Use_half-days._http_//bit.ly/a7VEWj&amp;referer=');">tweet this</a>]</li>
<li>Don&#8217;t take shortcuts writing a program if it&#8217;s at the expense of readability. It doesn&#8217;t pay off. [<a href="http://twitter.com/home?status=Don't take shortcuts writing a program if it's at the expense of readability. It doesn't pay off. http://bit.ly/a7VEWj" title="Click to share this post on Twitter" onclick="pageTracker._trackPageview('/outgoing/twitter.com/home?status=Don_t_take_shortcuts_writing_a_program_if_it_s_at_the_expense_of_readability._It_doesn_t_pay_off._http_//bit.ly/a7VEWj&amp;referer=');">tweet this</a>]</li>
<li>Automation doesn&#8217;t help if you don&#8217;t understand the process you&#8217;re automating. [<a href="http://twitter.com/home?status=Automation doesn't help if you don't understand the process you're automating. http://bit.ly/a7VEWj" title="Click to share this post on Twitter" onclick="pageTracker._trackPageview('/outgoing/twitter.com/home?status=Automation_doesn_t_help_if_you_don_t_understand_the_process_you_re_automating._http_//bit.ly/a7VEWj&amp;referer=');">tweet this</a>]</li>
<li>Blame is reactive.  &#8220;What can we do differently next time?&#8221; is proactive. [<a href="http://twitter.com/home?status=Blame is reactive.  What can we do differently next time? is proactive. http://bit.ly/a7VEWj" title="Click to share this post on Twitter" onclick="pageTracker._trackPageview('/outgoing/twitter.com/home?status=Blame_is_reactive._What_can_we_do_differently_next_time?_is_proactive._http_//bit.ly/a7VEWj&amp;referer=');">tweet this</a>]</li>
<li>Innovate is a verb.  This is not a coincidence &#8211; it requires constant action. [<a href="http://twitter.com/home?status=Innovate is a verb.  This is not a coincidence - it requires constant action. http://bit.ly/a7VEWj" title="Click to share this post on Twitter" onclick="pageTracker._trackPageview('/outgoing/twitter.com/home?status=Innovate_is_a_verb._This_is_not_a_coincidence_-_it_requires_constant_action._http_//bit.ly/a7VEWj&amp;referer=');">tweet this</a>]</li>
<li>Make things of value, not emails. [<a href="http://twitter.com/home?status=Make things of value, not emails. http://bit.ly/a7VEWj" title="Click to share this post on Twitter" onclick="pageTracker._trackPageview('/outgoing/twitter.com/home?status=Make_things_of_value_not_emails._http_//bit.ly/a7VEWj&amp;referer=');">tweet this</a>]</li>
</ol>
<p>Feel free to share your own nuggets of wisdom below.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.contactandcoil.com/automation/industrial-automation/quick-thoughts-about-automation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The &#8220;Almost There&#8221; Paradox</title>
		<link>http://www.contactandcoil.com/automation/industrial-automation/the-almost-there-paradox/</link>
		<comments>http://www.contactandcoil.com/automation/industrial-automation/the-almost-there-paradox/#comments</comments>
		<pubDate>Wed, 18 Aug 2010 02:38:09 +0000</pubDate>
		<dc:creator>Scott Whitlock</dc:creator>
				<category><![CDATA[Industrial Automation]]></category>
		<category><![CDATA[quality]]></category>
		<category><![CDATA[risk]]></category>

		<guid isPermaLink="false">http://www.contactandcoil.com/?p=526</guid>
		<description><![CDATA[We&#8217;re all probably familiar with the idea that it takes half the time to get to 90% done and the other half to finish the last 10%. This is a staple of project management. I think there&#8217;s actually a narrower scope of really dangerous solutions that you only become familiar with after you experience it. [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;re all probably familiar with the idea that it takes half the time to get to 90% done and the other half to finish the last 10%.  This is a staple of project management.</p>
<p>I think there&#8217;s actually a narrower scope of really dangerous solutions that you only become familiar with after you experience it.  There&#8217;s a whole set of problems where the obvious solution gets you 95 to 98% of the way to your performance spec really quickly, but is almost impossible to reach 100% by incremental improvements.  The reason I say they&#8217;re dangerous is because the feeling of being &#8220;almost there&#8221; prevents you from going back to the drawing board and coming up with a completely parallel solution.</p>
<p>I can remember a machine vision job from years ago where the spec was &#8220;100% read rate&#8221;.  I only got it to about 94%, and someone else gave it a try.  He got it up over 96%, but 100% was out of reach given the technology we had.  </p>
<p>Experiences like that make you conservative.  Now I unconsciously filter possible solutions by their apparent &#8220;flakiness&#8221;.  I&#8217;m much more likely to add an extra prox to a solution to verify a position than to rely on timers or other kinds of internal state, because the latter are more prone to failure during system starts and stops.  I press for mechanical changes when I used to bend under the pressure to &#8220;fix it in software&#8221;.</p>
<p>Still, you have to be careful.  Its easy to discount alternatives just because they bear some passing resemblance to a bad experience you had before.  You have to keep re-checking your assumptions.  Unfortunately, rapid prototyping usually fails to uncover the &#8220;almost there&#8221; situation I&#8217;m talking about.  If you prototype something up fast, and it works in 97% of your lab tests, you&#8217;ll probably think you have a &#8220;proof of concept&#8221;, and go forward with it.</p>
<p>The best way to test new solutions is to put them into production on a low risk system.  If you&#8217;re an integrator, this means having a really good relationship with your customer (chances are you need their equipment to run your tests).  If you work for a manufacturer, you can usually find some out-of-the-way machine to test on before you go all-in.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.contactandcoil.com/automation/industrial-automation/the-almost-there-paradox/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>&#8220;Best Practices,&#8221; Indeed</title>
		<link>http://www.contactandcoil.com/automation/industrial-automation/best-practices-indeed/</link>
		<comments>http://www.contactandcoil.com/automation/industrial-automation/best-practices-indeed/#comments</comments>
		<pubDate>Mon, 16 Aug 2010 16:56:19 +0000</pubDate>
		<dc:creator>Scott Whitlock</dc:creator>
				<category><![CDATA[Industrial Automation]]></category>
		<category><![CDATA[innovation]]></category>
		<category><![CDATA[standards]]></category>

		<guid isPermaLink="false">http://www.contactandcoil.com/?p=521</guid>
		<description><![CDATA[I&#8217;ve just been reading Ken McLaughlin&#8217;s recent post Top Ten Signs an Integrator is the Real Deal #7: Best Practices and Standards and I have to say, my initial reaction is one of skepticism. I think Ken&#8217;s thinking is a little too narrow on this one. Let me explain&#8230; This isn&#8217;t the first time I&#8217;ve [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just been reading Ken McLaughlin&#8217;s recent post <a href="http://robotshift.com/2010/08/top-10-signs-an-integrator-is-the-real-deal-7-best-practices-and-standards.html" onclick="pageTracker._trackPageview('/outgoing/robotshift.com/2010/08/top-10-signs-an-integrator-is-the-real-deal-7-best-practices-and-standards.html?referer=');">Top Ten Signs an Integrator is the Real Deal #7: Best Practices and Standards</a> and I have to say, my initial reaction is one of skepticism.  I think Ken&#8217;s thinking is a little too narrow on this one.  Let me explain&#8230;</p>
<p>This isn&#8217;t the first time I&#8217;ve considered the &#8220;problem of standards&#8221; on this blog.  In an earlier post, <a href="http://www.contactandcoil.com/automation/industrial-automation/standards-for-the-sake-of-standards/">Standards for the Sake of Standards</a>, I explained how most corporate standards eventually end up being out-of-date and absurd, mostly because nobody making the standard ever things to write down <em>Why</em> the standard exists, which would allow future policy-makers to understand the reasons and change the standard when it no longer applied.  Instead, it becomes gospel.</p>
<p>However, that isn&#8217;t to say you could run a large organization without best practices and standards.  That&#8217;s the point isn&#8217;t it?  In order to become large, you need built-in efficiency, and you do that at the expense of innovation.  Big companies don&#8217;t innovate (in fact the only notable exception is Apple, and the rebuttal is always, &#8220;fine, so give one example <em>other</em> than Apple&#8221;).  Almost all innovation happens in small companies, by a tightly knit group of superstars where the chains have been removed.  Best Practices are, in fact, put in place to clamp down on innovation because innovation is risky, and investors hate risk.  It&#8217;s better to make lots of average product for average people than exceptional products for a few people (hence McDonald&#8217;s).  Paul Graham, as usual, has <a href="http://www.paulgraham.com/icad.html" onclick="pageTracker._trackPageview('/outgoing/www.paulgraham.com/icad.html?referer=');">something insightful</a> to add to this:</p>
<p><em>Within large organizations, the phrase used to describe this approach is &#8220;industry best practice.&#8221; Its purpose is to shield the pointy-haired boss from responsibility: if he chooses something that is &#8220;industry best practice,&#8221; and the company loses, he can&#8217;t be blamed. He didn&#8217;t choose, the industry did.</p>
<p>I believe this term was originally used to describe accounting methods and so on. What it means, roughly, is don&#8217;t do anything weird. And in accounting that&#8217;s probably a good idea. The terms &#8220;cutting-edge&#8221; and &#8220;accounting&#8221; do not sound good together. But when you import this criterion into decisions about technology, you start to get the wrong answers.</em></p>
<p>The reason small companies are innovative is that innovative people can&#8217;t stand corporate environments.  Imagine if you were an inspired chef&#8230; could you stand working at McDonald&#8217;s?  Could McDonald&#8217;s even stand to employ you?  You&#8217;d be too much trouble!  You&#8217;d have to work in that nice one-off restaurant called &#8220;Maison d&#8217;here&#8221; where the manager puts up with your off-beat attitude because ultimately you make good food, and you keep their small but devoted clientèle coming back.  But you can&#8217;t be franchised.  The manager of the restaurant can&#8217;t scale you up without making what you do into a procedure.  </p>
<p>So back to Ken&#8217;s topic&#8230; if you are choosing a systems integrator, you need to decide if you&#8217;re buying an accounting system (i.e. something that&#8217;s generic to all companies, and not a competitive advantage), or something that <em>is</em> a competitive advantage to you.  When you&#8217;re automating your core business processes, you <em>must</em> build competitive advantage into it, and it <em>must</em> be innovative.  If that&#8217;s the case, stay away from larger integrators with miles and miles of red tape and bureaucracy.  Go for the &#8220;boutique&#8221; integrator (somewhere in the 7 to 25 person sized company, under $10 million per year in revenue) that can show you good references.  You&#8217;re looking for a small group of passionate people.  Buzzwords are a warning sign; small companies don&#8217;t have time for corporate-speak.</p>
<p>I&#8217;m not saying you should use the two guys in their garage.  These guys are ok for your basic maintenance tasks, small changes, and local support, but you do want someone who has been around for a few years and has at least a couple of backup engineers they can pull in if there&#8217;s a problem.  Make sure they have a server, with backups, and all that.</p>
<p>On the other hand, if what you&#8217;re automating is very large and very standard, that&#8217;s when you want to go with Ken&#8217;s approach.  If you need to integrate a welding line, paint line, or whatever, there&#8217;s nothing new or innovative in that, so you want to lower the risk.  You know all the big integration companies can do this, so go and get three bids, and choose the one that&#8217;s hungriest for the work.  Make sure they have standards and best practices.  The reduction in risk is worth it if you don&#8217;t need the innovative solution.</p>
<p>You can do a hybrid approach.  Identify the parts of your process that could be key competitive advantages if you could find a better way to do it.  This is where innovation pays off.  Go out and consult with some boutique integrators ahead of time and get them working on those &#8220;point solutions&#8221;.  Then go to the bigger companies to farm out the rest of your automation needs.  How&#8217;s that for a &#8220;best practice&#8221;?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.contactandcoil.com/automation/industrial-automation/best-practices-indeed/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>The User Interface Makes the Difference, Except in Automation</title>
		<link>http://www.contactandcoil.com/automation/industrial-automation/the-user-interface-makes-the-difference-except-in-automation/</link>
		<comments>http://www.contactandcoil.com/automation/industrial-automation/the-user-interface-makes-the-difference-except-in-automation/#comments</comments>
		<pubDate>Thu, 12 Aug 2010 01:43:46 +0000</pubDate>
		<dc:creator>Scott Whitlock</dc:creator>
				<category><![CDATA[Industrial Automation]]></category>
		<category><![CDATA[hmi]]></category>
		<category><![CDATA[quality]]></category>
		<category><![CDATA[usability]]></category>

		<guid isPermaLink="false">http://www.contactandcoil.com/?p=516</guid>
		<description><![CDATA[Start by watching this video about the Aeryon Scout robot (kudos Kareem): I think what sets this aerial robot apart, as Kareem says, is the intuitive user interface. When I look at the state of automation today, I can see that good user interfaces are typically an after-thought. Custom solutions are sometimes so cobbled together [...]]]></description>
			<content:encoded><![CDATA[<p>Start by watching this video about the Aeryon Scout robot (kudos Kareem):</p>
<p><object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/0jvLMsvGKlk&#038;color1=0xb1b1b1&#038;color2=0xd0d0d0&#038;hl=en_US&#038;feature=player_embedded&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.youtube.com/v/0jvLMsvGKlk&#038;color1=0xb1b1b1&#038;color2=0xd0d0d0&#038;hl=en_US&#038;feature=player_embedded&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="385"></embed></object></p>
<p>I think what sets this aerial robot apart, as Kareem says, is the intuitive user interface.  When I look at the state of automation today, I can see that good user interfaces are typically an after-thought.  Custom solutions are sometimes so cobbled together that there isn&#8217;t enough bandwidth between one black box and the HMI, or the HMI is just a simple two line text display that ends up saying FAULT 53 (the manual with the list of faults, of course, is stuck inside the door of the panel, and it&#8217;s the only thing in the area that isn&#8217;t covered in grease because nobody bothers to look at it).</p>
<p>People frequently blame engineers for this mess, which I find a bit silly.  Certainly user interfaces are a critical component of any system, but why do you hire an electrical designer to do the electrical design, hire a programmer to write the software, but expect one of these people to magically become a usability expert, which is a field unto itself?</p>
<p>I think there used to be an idea that there was no payback on usability.  Certainly if you&#8217;re selling something like a VCR, you can only print features on the box (you can&#8217;t accurately represent the experience of using it) and people only buy one.  However, as items become more social (think iPhone), we&#8217;re starting to see great user interfaces create viral marketing for products.  I think I first saw this with the TiVo &#8211; once you saw what it could do, and how easy it was, you were hooked.  Apple&#8217;s technology seems to be the same way, and I can see how the Aeryon Scout probably has the same &#8220;shock and awe&#8221; effect when you demo it.</p>
<p>Where does that leave us with industrial automation interfaces?  Automation is <strong>always</strong> purchased based on a cost-benefit analysis because of the high capital cost.  The operators typically don&#8217;t participate in the purchasing decision at all.  I don&#8217;t think effort put into a better user interface is wasted; in fact I&#8217;m <em>certain</em> there&#8217;s a long term payback.  But it&#8217;s not a selling feature and it takes more time to do right.</p>
<p>Still, when I programmed a machine recently, it was nice to overhear someone say, &#8220;it&#8217;s pretty intuitive, isn&#8217;t it?&#8221;  So I guess I&#8217;ll keep trying, even if it&#8217;s not in my own best interest.  Engineers are <a href="http://www.contactandcoil.com/uncategorized/doing-it-right/" title="Doing it Right">weird that way</a>.</p>
<p>If you&#8217;re interested in making better user interfaces, first I recommend reading <a href="http://www.amazon.com/gp/product/0465067107?ie=UTF8&#038;tag=moms4mom00-20&#038;linkCode=as2&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0465067107" onclick="pageTracker._trackPageview('/outgoing/www.amazon.com/gp/product/0465067107?ie=UTF8_038_tag=moms4mom00-20_038_linkCode=as2_038_camp=1789_038_creative=390957_038_creativeASIN=0465067107&amp;referer=');">The Design of Everyday Things</a><img src="http://www.assoc-amazon.com/e/ir?t=moms4mom00-20&#038;l=as2&#038;o=1&#038;a=0465067107" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> by Donald Norman.  I also recommend this video called <a href="http://network.businessofsoftware.org/video/steve-krug-on-the-least-you" title="The least you can do about usability" onclick="pageTracker._trackPageview('/outgoing/network.businessofsoftware.org/video/steve-krug-on-the-least-you?referer=');">the least you can do about usability</a> by Steve Krug, author of <a href="http://www.amazon.com/gp/product/0321344758?ie=UTF8&#038;tag=moms4mom00-20&#038;linkCode=as2&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0321344758" onclick="pageTracker._trackPageview('/outgoing/www.amazon.com/gp/product/0321344758?ie=UTF8_038_tag=moms4mom00-20_038_linkCode=as2_038_camp=1789_038_creative=390957_038_creativeASIN=0321344758&amp;referer=');">Don&#8217;t Make Me Think: A Common Sense Approach to Web Usability, 2nd Edition</a><img src="http://www.assoc-amazon.com/e/ir?t=moms4mom00-20&#038;l=as2&#038;o=1&#038;a=0321344758" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.contactandcoil.com/automation/industrial-automation/the-user-interface-makes-the-difference-except-in-automation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Two Kinds of Automation Software</title>
		<link>http://www.contactandcoil.com/automation/industrial-automation/the-two-kinds-of-automation-software/</link>
		<comments>http://www.contactandcoil.com/automation/industrial-automation/the-two-kinds-of-automation-software/#comments</comments>
		<pubDate>Tue, 03 Aug 2010 01:26:02 +0000</pubDate>
		<dc:creator>Scott Whitlock</dc:creator>
				<category><![CDATA[Industrial Automation]]></category>
		<category><![CDATA[plc]]></category>
		<category><![CDATA[quality]]></category>
		<category><![CDATA[troubleshooting]]></category>

		<guid isPermaLink="false">http://www.contactandcoil.com/?p=509</guid>
		<description><![CDATA[As we all know, there are 10 kinds of people in the world. For those of you who haven&#8217;t read Zen and the Art of Motorcycle Maintenance by Pirsig, he spends at least one chapter at the beginning talking about how we naturally tend to divide things into smaller pieces in an effort to understand [...]]]></description>
			<content:encoded><![CDATA[<p>As we all know, <a href="http://www.thinkgeek.com/tshirts-apparel/unisex/frustrations/5aa9/" onclick="pageTracker._trackPageview('/outgoing/www.thinkgeek.com/tshirts-apparel/unisex/frustrations/5aa9/?referer=');">there are 10 kinds of people in the world</a>.</p>
<p>For those of you who haven&#8217;t read <a href="http://www.amazon.com/gp/product/0061673730?ie=UTF8&#038;tag=moms4mom00-20&#038;linkCode=as2&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0061673730" onclick="pageTracker._trackPageview('/outgoing/www.amazon.com/gp/product/0061673730?ie=UTF8_038_tag=moms4mom00-20_038_linkCode=as2_038_camp=1789_038_creative=390957_038_creativeASIN=0061673730&amp;referer=');">Zen and the Art of Motorcycle Maintenance</a><img src="http://www.assoc-amazon.com/e/ir?t=moms4mom00-20&#038;l=as2&#038;o=1&#038;a=0061673730" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> by Pirsig, he spends at least one chapter at the beginning talking about how we naturally tend to divide things into smaller pieces in an effort to understand them.  The novice looks at a motorcycle and sees the visible things, like a seat, handlebars, and wheels, but the expert sees a fuel system, a cooling system, and the suspension.  The same thing or system (motorcycle) can be subdivided different ways depending on what we want to do with it.</p>
<p>My tongue-in-cheek title of this post is an acknowledgement of the many ways we can categorize something like Automation Software, but for my purposes today, I&#8217;m making two categories: hammers and levels.</p>
<p><a href="http://despair.com/incompetence.html" onclick="pageTracker._trackPageview('/outgoing/despair.com/incompetence.html?referer=');"><img src="http://www.contactandcoil.com/wp-content/uploads/demotivators_incompetence.jpg" alt="" title="Demotivators: Incompetence" width="502" height="629" class="aligncenter size-full wp-image-511" /></a></p>
<p>A carpenter carries both a hammer and a level, but the two have fundamentally different failure modes.  If a hammer stops working, you&#8217;ll know it as soon as you try to use it.  As long as it hammers in a nail, it doesn&#8217;t matter if the hammer is rusty, dirty, scratched or dented, it&#8217;s a working hammer.  The level, on the other hand, is a measuring instrument.  As novices, we assume that it comes from the factory pre-calibrated, and we happily hang our shelf or picture without testing it, but a professional carpenter knows that they have to check their levels for accuracy, or else the level is useless. You could use a level for years, but if one day it stopped being accurate, you probably wouldn&#8217;t know.  This is a very different situation than the hammer.</p>
<p>Software in general, and automation software in particular, both have similar examples.  You never need to &#8220;calibrate&#8221; the <em>Axis 1 Advanced</em> proximity switch on a machine because if it doesn&#8217;t work, the machine won&#8217;t make parts (and you&#8217;ll know about it instantly, usually via a 2 am phone call).  On the other hand, testing data collection logic is surprisingly difficult because the only way to test it is to compare it with a known-good equivalent.  Assuming you created this data collection logic to automate away a manual process, the only measuring stick we can check it against is the manual process we&#8217;re replacing.  Once the system is bought off and we get rid of the paper system, how do you prove that subsequent changes don&#8217;t break the data collection system?</p>
<p>It&#8217;s tempting to brush off the problem by saying that anyone who makes a subsequent change has to do a full regression test of the system, including the data collection system, but anyone who has worked in a real factory environment knows that this is unlikely to work in practice.  Full regression tests are expensive.</p>
<p>In the greater software world, they use automated unit tests.  They take the logic being tested and they run it through a series of automated checks to make sure nothing changes.  This works well in an environment like PC programming, but is very difficult in practice for PLC programming because (a) you usually need a physical PLC to execute the logic (unless you have some kind of emulator) and (b) the people maintaining the system are likely not familiar with concepts like unit tests, and are likely to undervalue their importance.</p>
<p>This screams for a system-level solution.  Take accounting for instance.  Double-entry accounting (the use of debits and credits to force every action to be made twice) is deliberately created to help catch manual entry errors.  If your debits and credits don&#8217;t balance, you know you&#8217;ve made a mistake somewhere, and you go back and check your arithmetic.</p>
<p>In the automation world, the solution is to measure every input to the data collection system two ways, analyze and aggregate both separately, and compare the end results.  Create a system warning or fault if the results don&#8217;t match.  For instance, measure the amount of material going into the machine, and measure the amount of material exiting the machine, both as finished product, and scrap.  If the input doesn&#8217;t match the sum of the outputs over the same time period, you know you have a problem.  The system becomes self-checking (a hammer rather than a  level).</p>
<p>If you follow this route, you need to take care to avoid some common traps:</p>
<ul>
<li>Don&#8217;t re-use logic between the two sides (in fact, try to make them work differently)</li>
<li>Try to use different sensors or sensing methods (can we measure the input by speed and duration, and the output by parts and scrap weight?)</li>
<li>Record both, so if there is a discrepancy, you can check them against manual measurements</li>
</ul>
<p>It sounds like more work, but making the system self-checking actually reduces the amount of testing you have to do, so it&#8217;s not as bad as you think.  Besides, writing code is a lot more fun than testing it.  We automate everyone else&#8217;s job, why not the boring parts of ours?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.contactandcoil.com/automation/industrial-automation/the-two-kinds-of-automation-software/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SoapBox Snap: Sneak Peek</title>
		<link>http://www.contactandcoil.com/automation/soapbox-snap-sneak-peek/</link>
		<comments>http://www.contactandcoil.com/automation/soapbox-snap-sneak-peek/#comments</comments>
		<pubDate>Mon, 12 Jul 2010 14:40:56 +0000</pubDate>
		<dc:creator>Scott Whitlock</dc:creator>
				<category><![CDATA[Automation]]></category>
		<category><![CDATA[snap]]></category>

		<guid isPermaLink="false">http://www.contactandcoil.com/?p=502</guid>
		<description><![CDATA[We crossed a bit of a milestone in the development of SoapBox Snap this weekend&#8230; I was able to create an automation solution, connect to the included soft runtime, automatically detect the Phidgets 8/8/8 board I have hooked up to a USB port, and then I wrote a little ladder logic. The ladder logic executes [...]]]></description>
			<content:encoded><![CDATA[<p>We crossed a bit of a milestone in the development of SoapBox Snap this weekend&#8230; I was able to create an automation solution, connect to the included soft runtime, automatically detect the <a href="http://www.phidgets.com/products.php?category=0&#038;product_id=1018" onclick="pageTracker._trackPageview('/outgoing/www.phidgets.com/products.php?category=0_038_product_id=1018&amp;referer=');">Phidgets 8/8/8</a> board I have hooked up to a USB port, and then I wrote a little ladder logic.  The ladder logic executes in the runtime, and it&#8217;s driving an output on the Phidgets board.  Here&#8217;s a screenshot:</p>
<p><a href="http://www.contactandcoil.com/wp-content/uploads/Sneak-Peak-Screenshot.png"><img src="http://www.contactandcoil.com/wp-content/uploads/Sneak-Peak-Screenshot-300x218.png" alt="SoapBox Snap Sneak Peek Screenshot" title="Sneak Peak Screenshot" width="300" height="218" class="aligncenter size-medium wp-image-503" /></a></p>
<p>(Click on the image to enlarge it.)</p>
<p>It&#8217;s still a little rough around the edges, but it feels good to have the logic running end-to-end.  It starts to feel pretty real at this point.</p>
<h2>What is SoapBox Snap?</h2>
<p>Snap stands for <em>Snap is Not A PLC</em>.  It&#8217;s not for industrial control.  It&#8217;s for home automation enthusiasts, students, and generally anyone who likes to <a href="http://makezine.com/" onclick="pageTracker._trackPageview('/outgoing/makezine.com/?referer=');">make</a> stuff to add a little automation to their project without necessarily knowing classic computer programming.</p>
<h3>Extensibility</h3>
<p>Pretty much everything in SoapBox Snap is extensible by 3rd party programmers:</p>
<ul>
<li>Write your own library of ladder logic instructions</li>
<li>Plug in a new runtime to replace the &#8220;soft&#8221; runtime that comes with it</li>
<li>Add a new language editor for automation languages other than ladder logic</li>
<li>Write a driver for a new I/O device that you want to control from the runtime</li>
</ul>
<h3>Free</h3>
<p>SoapBox Snap will be released under the <a href="http://www.gnu.org/licenses/gpl.html" onclick="pageTracker._trackPageview('/outgoing/www.gnu.org/licenses/gpl.html?referer=');">GNU Public License</a> (GPL).  That means it&#8217;s free.  Free-as-in-beer and free-as-in-speech.</p>
<p>The data structure, file format, and communications protocol are encapsulated in a separate library called SoapBox Protocol.  It&#8217;s going to be concurrently released under the <a href="http://www.sun.com/cddl/" onclick="pageTracker._trackPageview('/outgoing/www.sun.com/cddl/?referer=');">CDDL</a> so you could build SoapBox Snap compatibility into an application without releasing your entire application under the GPL.</p>
<h2>Why SoapBox Snap?</h2>
<p>As a controls engineer I&#8217;ve loved programming machines in ladder logic.  It&#8217;s intuitive, especially to someone with any amount of electrical background, and it&#8217;s interactive, especially if you have a platform that supports online debugging and programming.  I love that you don&#8217;t have to be a programmer to &#8220;get it&#8221;.</p>
<p>I think ladder logic could be applied to many domains outside of strict industrial automation, but as I&#8217;ve <a href="http://www.contactandcoil.com/automation/industrial-automation/lowering-the-cost-of-automation-equipment/">blogged about before</a>, the existing automation equipment vendors have no reason to take ladder logic outside of their cushy niche and bring it to a larger, more mainstream, audience.  I don&#8217;t want to see the broken innovation of the industrial automation industry hold back other possibly innovative uses of some of these ideas.</p>
<h3>Creating a Framework for Innovation</h3>
<p>You need two things to get innovation going: an open standard, and an open set of tools.  That&#8217;s what SoapBox Snap is.  </p>
<p>You can try to create an open standard by getting all the stakeholders to sit around a table and creating a specification, but it usually doesn&#8217;t work.  Exhibit A: the IEC 61131-3 specification.  That standard creates little or no interoperability between various automation platforms.</p>
<p>The other way to create an open standard, the one that actually works, is just to write it and open it up under intellectual property protections like the GPL, and give it away for free.  The reason you release it under a license like the GPL is because it protects against embrace-and-extend tactics.  No single company can take the application, spend a whole bunch of money to add a bunch of features, and then release it as an incompatible version.  If they do that, they have to respect the license and release their changes in kind.  That lets the standard evolve, but prevents it from becoming proprietary.</p>
<h3>SoapBox Snap is for Me</h3>
<p>I&#8217;ve been looking for something like SoapBox Snap for almost a decade now.  A long time ago there was a small group of people who got together to create an open source Linux-based PLC called Puffin PLC.  You can still find references to it around the web, but it never came to fruition.  I now understand why.  Writing a ladder logic editor is full of challenges I didn&#8217;t expect.  While I hope the same people who were interested in making Puffin PLC will be interested in SoapBox Snap, I&#8217;m ultimately building it for me.  I&#8217;m going to build something cool with it, and it&#8217;s going to be fun.  <img src='http://www.contactandcoil.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.contactandcoil.com/automation/soapbox-snap-sneak-peek/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Sequential Function Charts in RSLogix 5000</title>
		<link>http://www.contactandcoil.com/automation/industrial-automation/sequential-function-charts-in-rslogix-5000/</link>
		<comments>http://www.contactandcoil.com/automation/industrial-automation/sequential-function-charts-in-rslogix-5000/#comments</comments>
		<pubDate>Sun, 11 Jul 2010 19:09:48 +0000</pubDate>
		<dc:creator>Scott Whitlock</dc:creator>
				<category><![CDATA[Industrial Automation]]></category>
		<category><![CDATA[rslogix-5000]]></category>
		<category><![CDATA[sfc]]></category>

		<guid isPermaLink="false">http://www.contactandcoil.com/?p=496</guid>
		<description><![CDATA[I recently wrote part 11 of the RSLogix 5000 tutorial I&#8217;ve been working on, and this part deals with the Sequential Function Chart editor. I know there&#8217;s a lot of resistance to straying away from the established usage of ladder logic everywhere, but in this part of the tutorial I present a really simple way [...]]]></description>
			<content:encoded><![CDATA[<p>I recently wrote <a href="http://www.contactandcoil.com/rslogix-5000-tutorial/create-the-automatic-sequence/" title="RSLogix 5000 Tutorial - Sequential Function Chart (SFC)">part 11</a> of the <a href="/rslogix-5000-tutorial/">RSLogix 5000 tutorial</a> I&#8217;ve been working on, and this part deals with the Sequential Function Chart editor.  </p>
<p><img src="http://www.contactandcoil.com/wp-content/uploads/Auto-Sequence-SFC-Inserted-Step1.png" alt="RSLogix 5000 - Sequential Function Chart (SFC) Editor" title="Auto Sequence - SFC Inserted Step" width="419" height="443" class="aligncenter size-full wp-image-497" /></p>
<p>I know there&#8217;s a lot of resistance to straying away from the established usage of ladder logic everywhere, but in this part of the tutorial I present a really simple way to use sequential function charts to express auto mode sequences in your RSLogix 5000 program that&#8217;s very readable, saves a lot of ladder programming, and integrates very well with your lower level machine control routines.  Even if you&#8217;re an experienced RSLogix 5000 programmer, you&#8217;ll find this SFC introduction worth the read.  <a href="http://www.contactandcoil.com/rslogix-5000-tutorial/create-the-automatic-sequence/" title="RSLogix 5000 Tutorial - Sequential Function Chart (SFC)">Check it out.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.contactandcoil.com/automation/industrial-automation/sequential-function-charts-in-rslogix-5000/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>High Speed Object Manipulation by a Robot Hand</title>
		<link>http://www.contactandcoil.com/automation/industrial-automation/high-speed-object-manipulation-by-a-robot-hand/</link>
		<comments>http://www.contactandcoil.com/automation/industrial-automation/high-speed-object-manipulation-by-a-robot-hand/#comments</comments>
		<pubDate>Fri, 02 Jul 2010 20:59:09 +0000</pubDate>
		<dc:creator>Scott Whitlock</dc:creator>
				<category><![CDATA[Industrial Automation]]></category>
		<category><![CDATA[innovation]]></category>

		<guid isPermaLink="false">http://www.contactandcoil.com/?p=474</guid>
		<description><![CDATA[I&#8217;m intrigued by the idea of using this technology to align, sort, inspect, and separate parts moving down a conveyor, or even falling down a chute:]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m intrigued by the idea of using this technology to align, sort, inspect, and separate parts moving down a conveyor, or even falling down a chute:</p>
<p><object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/-KxjVlaLBmk&amp;hl=en_US&amp;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/-KxjVlaLBmk&amp;hl=en_US&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.contactandcoil.com/automation/industrial-automation/high-speed-object-manipulation-by-a-robot-hand/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reading the ControlLogix System Time in Ladder Logic</title>
		<link>http://www.contactandcoil.com/automation/industrial-automation/reading-the-controllogix-system-time-in-ladder-logic/</link>
		<comments>http://www.contactandcoil.com/automation/industrial-automation/reading-the-controllogix-system-time-in-ladder-logic/#comments</comments>
		<pubDate>Sat, 19 Jun 2010 01:49:28 +0000</pubDate>
		<dc:creator>Scott Whitlock</dc:creator>
				<category><![CDATA[Industrial Automation]]></category>
		<category><![CDATA[plc]]></category>
		<category><![CDATA[rslogix-5000]]></category>

		<guid isPermaLink="false">http://www.contactandcoil.com/?p=469</guid>
		<description><![CDATA[Since I&#8217;m in the tutorial mind-set right now, I thought I&#8217;d mention this little gem. Here&#8217;s how you can read the ControlLogix (or CompactLogix) PLC system time into a UDT so you can use the current time value in your ladder logic program. First I created a UDT called &#8220;TIME&#8221;: Then you just need to [...]]]></description>
			<content:encoded><![CDATA[<p>Since I&#8217;m in the tutorial mind-set right now, I thought I&#8217;d mention this little gem.  Here&#8217;s how you can read the ControlLogix (or CompactLogix) PLC system time into a UDT so you can use the current time value in your ladder logic program.</p>
<p>First I created a UDT called &#8220;TIME&#8221;:</p>
<p><img src="http://www.contactandcoil.com/wp-content/uploads/TIME-UDT.png" alt="RSLogix 5000 - Read System Time - UDT" title="TIME UDT" width="522" height="364" class="aligncenter size-full wp-image-470" /></p>
<p>Then you just need to use the GSV (Get System Value) instruction with the WallClockTime class, and LocalSystemTime attribute to read the controller&#8217;s time into an instance of your UDT (here I created a new tag called LocalDateTime of type TIME).  Note that I used the Year element of the LocalDateTime tag as the parameter, because that&#8217;s the first address of the tag.  It starts writing there but fills in the entire UDT with the time values:</p>
<p><img src="http://www.contactandcoil.com/wp-content/uploads/GSV-WallClockTime.png" alt="RSLogix 5000 - Read System Time in Ladder Logic" title="GSV WallClockTime" width="376" height="170" class="aligncenter size-full wp-image-471" /></p>
<p>Now you can program your sprinklers to turn on and off in the middle of the night!  <img src='http://www.contactandcoil.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.contactandcoil.com/automation/industrial-automation/reading-the-controllogix-system-time-in-ladder-logic/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The Five Rung Logic Block</title>
		<link>http://www.contactandcoil.com/automation/industrial-automation/the-five-rung-logic-block/</link>
		<comments>http://www.contactandcoil.com/automation/industrial-automation/the-five-rung-logic-block/#comments</comments>
		<pubDate>Fri, 18 Jun 2010 03:10:24 +0000</pubDate>
		<dc:creator>Scott Whitlock</dc:creator>
				<category><![CDATA[Industrial Automation]]></category>
		<category><![CDATA[plc]]></category>

		<guid isPermaLink="false">http://www.contactandcoil.com/?p=458</guid>
		<description><![CDATA[I&#8217;m still working on my RSLogix 5000 Tutorial, and I decided to include a brief introduction to a Five Rung Logic Block. If you&#8217;re like me, the first time you saw or heard about a five rung, you thought it was was a ludicrous amount of logic just to move a cylinder from one position [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m still working on my <a href="http://www.contactandcoil.com/rslogix-5000-tutorial/">RSLogix 5000 Tutorial</a>, and I decided to include a brief introduction to a Five Rung Logic Block.  If you&#8217;re like me, the first time you saw or heard about a five rung, you thought it was was a ludicrous amount of logic just to move a cylinder from one position to another.  However, I realized most of my non-five-rung motion control logic always ended up being as complicated, or more complicated, than if I&#8217;d used a Five Rung from the beginning, so now I&#8217;m a convert.</p>
<p>A five rung block is named after the five coils that make up each block (these names differ between programmers and organizations, but they follow this pattern):</p>
<ul>
<li>Safety</li>
<li>Precondition (aka Trigger)</li>
<li>Command</li>
<li>Complete (aka &#8220;In Position&#8221;)</li>
<li>Fault</li>
</ul>
<p>Briefly, your safety rung contains all the conditions that must be present during the entire motion.  You put conditions like &#8220;no critical faults&#8221; here.  You also put conditions such as interfering axes clear here.  For instance, if axis A and axis B should never advance at the same time, then put <em>A Retracted</em> in the safety rung for the five rung that moves axis B to the Advanced position, and vice-versa.  This is your &#8220;sanity check&#8221; logic.</p>
<p>The &#8220;trigger&#8221;, or &#8220;precondition&#8221; rung is the signal that will initiate automatic motion.  You can put auto conditions directly in this rung, or you can tie in auto mode sequence logic from elsewhere.  The difference between the Safety rung and the Trigger rung is that the Safety rung has to stay on during the entire motion, but the Trigger run only has to be true to initiate the motion.</p>
<p>The Command rung is usually a sealed in coil that turns on while the machine should be trying to move this axis to this particular position.  Sometimes this is synonymous with an output itself, but in many cases the Command coil will then be used to drive one or more outputs or motion instructions.</p>
<p>The In Position (sometimes called &#8220;complete&#8221;) rung condition is the logic that interprets the sensors to tell us that we&#8217;re actually in the given position.  It&#8217;s handy to use this coil throughout your program to indicate the state of the machine, rather than looking at the inputs directly.  That allows you to invert input logic or add debounce logic later in just one place, rather than everywhere that depends on this machine state.</p>
<p>Finally, the Fault condition is normally a timeout fault.  If the command coil is on too long without seeing the In Position signal, then we determine that the motion timed out, and we stop trying.  We use this fault in our alarm logic as well.</p>
<p>Once the command condition becomes true, it&#8217;s normally sealed in until one of three things happens: the safety condition changes to false, the motion completes and the In Position signal changes to true (normal), or the motion times out and the Fault condition changes to true.</p>
<p>Here&#8217;s what a generic five rung logic block looks like.  I left an AFI in the trigger rung because you normally come back and fill in that logic later.  Note that this is only to move <em>one axis</em> to <em>one position</em>:</p>
<p><img src="http://www.contactandcoil.com/wp-content/uploads/Generic-Five-Rung-Logic-Block.png" alt="RSLogix 5000 Tutorial - Generic Five Rung Logic Block" title="Generic Five Rung Logic Block" width="630" height="586" class="aligncenter size-full wp-image-456" /></p>
<p>The &#8220;PB&#8221; bit in the command rung is the HMI pushbutton that initiates motion to this position while you&#8217;re in manual mode.  Note that both manual mode motion and auto mode motion have to follow the same safety conditions, but just have different trigger conditions.</p>
<p>You have to customize it for each situation.  The contents of the safety and trigger rungs are obviously unique, but the command rung sometimes changes depending on the scenario.  You may have more than just manual and automatic modes.  Some automatic actions may actually happen when you&#8217;re not in automatic mode.  Sometimes you may want an axis to &#8220;jog&#8221; (for instance a hydraulic axis moves slow, and you may want it only to move in manual mode if you hold your finger on the button) and in that case, you couldn&#8217;t seal in the Command bit around the manual mode pushbutton (you&#8217;d just seal it in around the trigger contact).</p>
<p>There are other variations.  I hope you find this useful.  If nothing else, when you come across this logic in someone else&#8217;s program, you&#8217;ll have a better idea of how it works.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.contactandcoil.com/automation/industrial-automation/the-five-rung-logic-block/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
