案例一:种植蘑菇
程序说明:
整个例子基于一个简单的物理规则:一个元的直径小于圆周长。因此开发一种机器,他能吧蘑菇种植在一个圆柱体的圆周上,这样种植的庄稼大约3倍于机器所产生的量。
这里有一个问题需要克服,如果植物沿一个圆柱体种植,那些不在圆柱体顶部的,不在太阳直射下的植物,它们的生长速度会慢一些,同时会力图接近光源。所以,蘑菇可能会‘弯曲’或“绞结“。另一种可能是:圆柱体下部的蘑菇会完全不生长。
解决方法是旋转这个圆柱体。因此,开发了下面的程序,可以每小时改变旋转方向,这样就能产生除直而健康的蘑菇了。另外,每小时内一个规定时间中,对旋转圆柱体里面浇水。
最后一个主要困难时机器必须能切换到人工模式,使耕种者坚持和收割生长的庄稼。一个按钮交替切换自动人工模式(PB1),在人工模式下,灯LP1亮,操作者可以按点动控制按钮,使圆柱体旋转。
从编程角度来看,使用条件跳转对每个相关部分作跳转控制的方法使非常实用的。最后部分的以P3指针标记的程序用于人工和自动模式,自动模式跳到指针P3,而人工模式时,把它卓伟一般顺序的程序处理。
案例二:上下移动
从擦窗吊车程序选择的者部分程序控制吊车在建筑面上垂直运动,尽管这只是一个大型程序的一小部分,但它仍有许多有意义的编程要点。
程序说明:
可以注意到本程序是以梯形图或STL形式编写的,这对于下面要讲的两点来说时非常重要的。如果研究STL步S20和S30的内容,可看到它们都包含Y3输出,在标准编程技术中,这叫做双线圈输出,是绝对不允许的。在正常编程中,如果一次出现的输出Y3接通,而在同一次扫描中第二次出现时复位此输出,从而导致一种很危险的情况。不过,因为STL编程每一个STL步的程序相对独立,输出线圈在许多STL块中的使用是很安全的,从而使编程更简单。
值得注意的第二点实际上也是出于与第一点同样的原因。检查STL步S21和S30,可注意到实际上存在2个PWM指令,如果查看编程手册,可知每一个程序只能使用一次PWM指令。STL步根据其自身特性实际上市一个程序,所以“每程序一个PWM“规则实际上仍没被破坏。
本程序语序吊车在正常时以两种不同速度升高或降低,如果风速超过一定限值,吊车会被限制在低速运行,如果风力过强,吊车会自动以“爬行“速度降到地面。用以表示风速变化的标志是:M32,M36,和M37。
案例三:左右移动
下面的程序是控制一个擦窗器的大型程序的一小部分,本程序控制在一个建筑面上的左右转向。
程序说明
本程序只是一个大程序的一小部分,不过它仍有一些值得注意的特别之处。对一个擦窗车的控制者来说,最大的危险之一是风,这个影响在本例程序中已考虑到。最初的步检测存在数据寄存器D027中的值,事实上是检测风速是否在安全范围内。要注意的是这里只有2个ZCP指令,然而它们包含了5个风速范围,这通过检测2个ZCP指令之间的范围来实现。
其结果是,如果风力稍强,则水平速度限定为一个较低的值;如果风力过强,则所有水平运动都停止,并给出警报信号。另一注意点是在STL步S10的第一行,可看到S11是在X20断开时才被置位,这是很重要的,因为X20用于检测输出X7所控制的刹车的位置。
将要发生的是程序将允许对已完全完成的输出Y7做复位操作,即在程序继续之前X20被删除。对一个编程者来说,很容易犯简单地说“我已做了”的错误,因为所期望的动作被控制了一段时间,而这段时间对于完全完成操作来说可能太短了。
案例四:监测风向
用可编程控制器很容易做基本的检测和计算,这类应用中的一例是小型气象站,这对于高层办公室的窗户清洁是极其重要的,它可以用来判断风是否大到有危险的程度。
程序说明:
本例程序包括两个功能,它计算相对风速,并指出风向。风向标是老式的机械结构,但其数据被电子存储和控制。首先看测风速功能,风速每5分钟计算一次,这由定时器T000控制,这种计算方法能给出一个较好的平均风速,但是它不能报告阵风的速度。
由风驱动的旋轴直径必须输入到数据寄存器D12中,它应以mm为单位输入,即0.1m=100mm:输入100至D12.旋轴的旋转次数由高速计数器C235来计数,数据输入由X000输入。
先计算旋轴运动轨迹圆的圆周长,再乘以旋转次数,就计算出经过的距离。因为运行时间固定为5分钟,答案除以5,就得到一个每分钟鱼洞距离的答案。
为了得到更高精度,本例的计算中加入了比例缩放项。最后答案应该除以10³,从而得到米/分钟为单位的风速。对于一个200mm直径的旋轴,可以测量计算0.628到10,000m/min的风速。
程序第二部分包括风向的检测。使用8个检测器,而只有4个输入,检测器在正向指向之间的位置时与2个输入连接。一些编程者会说,用以指示风向的四个输出灯的逻辑并步重要。但其实这是一个好主意:可用他们进行安全检测、程序互锁、从而防止意外时间的发生。在某些情况下,对象不是生物或危险的机器,则可以自行处理,但是编程者不应该与安全进行赌博。本例中,程序进行检测以预防风刮起的垃圾和想在风向标上栖息的鸟。
案例五:复位回水平位置
在顾客利益日益增强的当今现代世界里,可以看到很多长途汽车、公共汽车、电车公司正提供给顾客更好的座椅设备,其中的一种时可调整靠背的座椅。
程序说明:
正如上面所提到的,大量公司正在提供这些座位的附加优点,其中许多公司,在每次旅游开始时,将座位复位到垂直位置,这会使外观整齐有序。用手复位所有的椅子,需费很多的时间,本节给出的例子用以复位两节相邻车厢的座位。操作人员使用两位旋转开关(RTSW1)选择要复位座位的车厢,选择要复位的座位组,且任何一个时间只能选中一个组,选择的座位组用接通相应的灯表示,接着复位按钮闪烁,等待被按下。接下来开始座位复位操作,这个挫折持续一段预定时间,而不检查是否都已复位。如果旅客梦都仍在座位上而进行该操作,这样做会更安全些。旅客不会从位子上弹出,而是每觉擦有上面事发生,这是因为弹簧力一般不会大到足以弹起椅背和旅客体重的总重量。
案例六:有呼必应的侍者
在很多娱乐场所,比如旅馆,体育馆等,按钮和铃将很快成为常见的东西了。当提供的设备被按,敲或拉时,很难知道是否有人听到这次呼叫,下面使用控制器技术方案能解决这个问题。
程序说明:
本例可以成为远程顾客和服务员间的信息传送系统,PC卓伟调度和传送器。远程顾客要求某种服务,通过一个输入(如:X000)给服务员发信号,这个输入驱动一个信号灯,灯高速顾客和服务员已经发出一个请求。服务员知道请求来于哪里,因为用以接通信号灯的输出对应于一个位置(如:Y000)。当服务员注意到这个请求,一个应答信号送回至顾客(如X001,Y001),顾客就能确信服务员已收到请求,服务员也会知道哪位顾客正在请求。当服务员满足了顾客要求时,复位应答信号(如X002)。此过程可为下一个顾客所重复(如:X003-005,Y002-003)。所以,当前等待顾客能知道轮到他们得花多少时间,一个7段显示表示现在排队得顾客数。本例只列出两个呼叫台,当然还可以增加。
案例七:保温
程序说明:
编程者经常违背得规则中有一条是”简单化原则“。如果程序简单,则是容易写出,容易检查,而且是很少会出错。不是所有情况都要求7位精度或好的控制,本页给出的大棚说明了一个在学校中学到的基本原理是如何用来有效而廉价地解决问题地。本例中,双金属条用来检测周围温度,这可以是一个控制所有窗户地大型商业绿棚,或是有一个窗户的花园绿棚。本例是控制四扇窗户,每扇窗户有一个检测温度的双金属条,对每个双金属条,存在两个输入,一个对应金属条冷的情况,这可以认为是常闭的,另一个对应金属条热的情况(即它变形时),可认为时一个常开接点。这些输入与窗户状态有直接联系,如果过热,双金属条弯曲,触点接通,于是窗户打开。当大棚部分变冷时,双金属条伸直,窗户关上。
要注意的是只用到一个PLSY指令,这是因为它的输出如所要求的那样,直接与四个电机中的每个相连(一个电机对应于一个窗户)。还需检测窗户位置位全开或全关,如果其中一个条件满足,与它对应的控制电机就关断。PLSY指令被开或关窗户的请求接通。这部分程序可做改进:请求检查窗户状态-可以检测全开全关的检测器。
案例八:维护电梯
理想的编程技术是建立许多标准程序,这些程序能转换使用到别的程序中。这就像把微型程序压缩在一起,并把他们放入一个更大的程序中,这也能使每个较小的程序在不同时候被多次调用。这是STL编程最大优点之一。
程序说明:
本例围绕一台移动平台编写。每个操作或每方面操作写入到自己的STL步中。这确实给编程者提供了一个模板程序,此程序能传送入别的程序中。而且这种做法提供了安全性,并鼓励了通用程序的重复合用。下面程序说明了这点。对于平台上移,其基本条件之一使当平台升起,它就不能在任何其他平面上移动。可以从下面方式看到这一点:升高和降低平台(STL步S8)的程序完全孤立于在XY平面上移动平台(STL步S6)的程序,当其中一种模式有效,另一模式就不能工作。为了说明共享程序的使用方法和好处,看一下STL步S50会明白,当存在一个错误状态时,STL步S6和S8调用这个程序。STL步S55也被前面的多路STL所调用,主要是S5,7,30,40和50,在这个特殊情况中,S55只用来复位和返回程序控制。另外一个要点是使用主控指令选择要被接通的模式或功能,当选择确定,标志M50用以锁定所有别的选择,知道当前选择完成。
案例九:有趣的喷泉
为了得到一个解决方法,有时需要反向地思考问题。通过每个喷嘴使用一个独立泵,可能很容易地解决下面地喷泉问题,泵压变化会使喷泉高低变化。但,这真的使最有效的方法吗?
程序说明:
本例目的是控制和改变喷泉的高低。为了做到这一点,从不同喷嘴中喷出的水需要变化以创造一种预期的模式。一个简单方法是使用多路泵并且控制泵运行的压力。然而,压力是力/面积的函数。如果压力保持为常数,而流过的水面积变化,力和由此导致的水“喷射”距离会变化,其方式与改变泵压力引起的变化相同。
从一个不同的角度来考虑这个问题,就能找到一个完全不同的想法。下面给出的程序以一个工作程序形式说明这个想法。
喷嘴每半个小时改变它的模式,一个通过程序扫描执行PLSY指令的回路控制每组阀门。
两个数据寄存器被处理,从而得到两个不同的喷泉模式。每个数据寄存器库包含所要求得用PLSY指令输出得脉冲数,目的是设定选择得阀门再正确位置上。
因为数据寄存器通过变址寄存器Z得递增来选择,这种方法也用于独立地选择每个阀门。是这么实现的:移动Z中的数据进入位模式,接着有效位元件用来驱动所选择的阀门,也可使用多路比较指令来完成。通过接通阀门选择输出Y5到Y10中的一个,PLSY指令(Y000)的单脉冲输出一次重定向至每个阀门。
案例十:交通指示灯
一般而言当提出一个问题时,解法看似相当简单。然而,当开始建立必要的安全性和操作性时,会马上使那个简单问题成为一个噩梦,比如轻便交通信号灯……
程序说明:
交通信号灯的工作在世界各地略有不同,不过其基本原理是一样的:
1、 司机原地不动等待,知道一条安全路线出现。
2、 对正在穿越马路的车辆,为了避开车辆相撞或障碍物,允许短暂停顿。
3、 当所有可能危险路线暂停时,允许原地等待的司机前行。
对一盏交通灯来说,这不是个复杂的过程。但是,他们常常是多路一起出现的,所以要求完全互锁和控制。本例中,情况更为复杂化,正在使用这组灯的工作人员在执行某项工作或某个操作时,任何车辆经过都会导致灾难,所以此时允许工作人员停止所有方向的交通,此时最简单的方法时用步进梯形图或STL编程。要考虑每个时间并把它转换成为一个STL步,确保没有遗漏任何步,因为每一个STL步都可以认为时一个微型的完整程序,编程人物就变得简单多了。