inc指令汇编(inc指令为什么不影响CF标志)

哈喽,大家晚上好呀!

上次给大家分享了我们的学员陆冯在智控教育阶段性的学习的分享,广受好好评~今天我们继续带来他的技术分享第二篇。大家一起来学习吧!

常州智控教育成长营——阶段学习分享2

【技术分享】 作者:陆冯

主要内容:

注意:本文是只针对(智控教育新北校区的分拣设备)的技术总结,不针对其它设备。

1.分拣设备的硬件认知

2.分拣设备的编程思路和具体操作方法

3.机构简化、暂停、预停、信号锁存、产品计数、预设产量—等等一招鲜战术的原理

各位同学大家好!

很荣幸用word文档形式来进行技术分享,这也次我首次进行word版本的项目工程讲解,如有错误之处,请各位指正!

inc指令汇编(inc指令为什么不影响CF标志)

(设备总体视图)

首先我们明确一点,我们要做的,是让这个设备安全、正确、高效地运作起来。这是我们的唯一目的!那么为了这个目的去进行PLC编程调试。一个好的电气工程师编写出来的程序,应当具有:安全性、正确性、高效性、移植性和扩展性。

PLC程序其实就是人的意志的延伸,你的思维和意识基本决定了这台设备是个傻瓜,还是聪慧过人,当然,这个世界上不可能有完美的程序…….

1.分拣设备的硬件认知

硬件包括所有机械部分、电气部分,工作原理和工作现象,是你必须要搞清楚的。

inc指令汇编(inc指令为什么不影响CF标志)

电磁阀视图)

本设备重点要说的,是上图这7个电磁阀,其中有一个备用;那么剩下的6个,其中有4个(蓝色的)是具有弹簧复位功能的单电控电磁阀:

inc指令汇编(inc指令为什么不影响CF标志)

说白了,给电就是气缸伸出,不给电就是气缸缩回,没电弹簧就推回去了,这个很好理解;

但是,有2个(红色的)电磁阀,是没有弹簧复位的双电控电磁阀:

PLC I/O表中 也是使用了 4个输出,才控制住了这 2个电磁阀。

inc指令汇编(inc指令为什么不影响CF标志)

inc指令汇编(inc指令为什么不影响CF标志)

说白了,左边给电一次,就跑左边不回家了,右边给电一次就跑右边不回家了,左右两家哪家给电,往哪家跑。有趣的解释:【它是一个“热爱电的家伙”,且“极度轻浮”,比如:左边电磁线圈只要给一次电,就可以把它骗回来,并且不需要一直给电;但是,如果此时右边来给了电,而此时,恰巧左边又没在给电,那么它就会跑到右边..】

重点:我们的“摆动气缸”和“移动气缸”,就是两个没有弹簧复位的双电控电磁阀!

我们在实际操作中出现了很多不一样的初始状态,摆动气缸和移动气缸分别具有两种位置,从而可以得出,我们所有同学,只可能出现4种初始位置状态(都是正确的):

1.移动气缸取料位(左边)+摆动气缸取料位(左边);

2.移动气缸取料位(左边)+摆动气缸放料位(右边);

3.移动气缸放料位(右边)+摆动气缸取料位(左边);

4.移动气缸放料位(右边)+摆动气缸放料位(右边);

当然,我们的单电控带弹簧复位电磁阀的初始位置也很重要,一般我们认为断电状态下,它所处于的位置为“初始位置”。

那么搞清楚了以上电磁阀的硬件认知,很多人就应当知道自己错在了哪里,被这个搞昏头的不少吧?我当年也被搞过,搞不清楚或者是无法正确控制它的初始位置,所谓的后面的自动运行程序,就是没有一楼的二楼!

除了上面的这个难点,你还要搞清楚,各个传感器分别检测的是哪个执行机构的哪个位置,我们这个项目里其实就是:6个气缸的各自的2个端部磁性开关。

装在任何一个气缸上的2个传感器,必然只可能有1个得电——因为气缸,只存在两个工作位置中的一个,它不可能既在左限位,又在右限位。

那么,到这里,这台分拣设备编程之前所要了解的,已经基本说完了。

2.分拣设备的编程思路和具体操作方法

解决了上面的硬件认知问题,我们在程序编写过程中就胸有成竹了!

下面介绍第一种编程方式:

启动后自动运行–单流程循环程序–能够启动、停止、复位,三位互锁。

首先,建议大家如果没有多少编程经验,请不要贸然使用FB\FC的形参和实参调用。其实在主程序里面,哪怕3000行程序,只要你实现了功能,就是王道。

我那天下午刚接完线,用时不到10分钟,就完成了:“启动按钮按下一次,搬运并且分拣一个工件”的单周期不循环流程。其实用的就是主程序+PLC I/O变量表,没有任何FC、FB、DB,不需要嵌套、调用、形式参数的间接寻址,可以有效避开很多不必要的,因为对软件不熟悉而产生的错误。

inc指令汇编(inc指令为什么不影响CF标志)

(流程图)

这张流程图,基本阐述了这个设备最基本功能的流程框架

注意:以上流程图中的任何一个方框都在步态存储器中有自己独立的数字(就是状态),至少是单独的一步,甚至是多步。提醒各位不要在一个步里面想干太多的事情,简单点,一步就干一件事情,然后检测一下干完没有,如果ok就去下一步,多写几步而已,可以避免好多信号不保持,而带来的离奇错误。

提示:

IF (“First scan”=1) THEN

{

步态存储器”:=1;

}

END_IF;

IF (“步态存储器”=1) THEN

{

复位程序”:=1;

IF (“复位完成”=1)THEN

{

步态存储器”:=2;

}

END_IF;

}

END_IF;

所有运行程序必须被关在,步态存储器的笼子里!!!想换笼子,只能是主令电器/上位机的指令。

流程解析:

上电之后,1200 PLC会在第一个扫描周期内置位Firstscan系统标志位,我们用它来进行系统复位。

复位程序:

关闭所有单电控电磁阀的输出,并且将双电控电磁阀设置在一边有电、一边没电的状态,将设备初始位置设为自己想要的那个位置。

如果已经执行复位程序成功,那么这台设备,6个气缸,都应当拥有的自己的传感器信号输出了,比如升降气缸应当是上升到位,而双电控电磁阀控制的气缸上面,是哪个传感器得电,就得看你选的设备初始位置是什么了。

然后,我们如果满足(所有传感器常开触点串联)这个条件,那么我们将进入复位完成状态,等待启动按钮的启动。

而接下来的自动程序,无非是,顺序控制。你用SET\RST成对配合也好,还是MOVE+比较指令也好,都是一样的。

步态条件满足——去执行什么——执行好了——去下一步。

很容易就能实现程序的单流程循环自动运行。

当然,停止按钮和复位按钮,是怎么分配权限的?我们一般这么干:

1.停止按钮高于一切,任何情况下按下停止,都将进入停止状态;

2.启动按钮按下时,必须在设备复位完成状态,在设备初始位置时,才有效;

3.复位按钮按下时,设备必须处于停止状态,才有效,才会去执行复位程序;

(就算用三个开关量表示设备状态,这事也很简单)

三位互锁——设备3个状态只能存在于1种状态中,遵循以上原则。

上面所描述的这种,单流程循环+三位互锁的运行方式,不涉及大量的标志位调用,不需要什么多深的编程思想和工程经验,甚至不考虑设备运行节拍,完全是巷子里面扛木头,直来直去。

但是这是基础,是每个人必须去走的一关,没有一步登天,没有功德圆满。

启动-保持-停止,6个“字”已经讲完了PLC。可是——何时启动?何时保持?何时停止?如何启动?如何保持?如何停止?这6个“问”,你能回答为:“启动-保持-停止”这6个字吗???

当遇到,某位操作员按着启动按钮不放、手动模式下按启动、设备启动中按复位、复位中按停止或者启动、手动模式下已经改了很多机构的初始位置—-再切换为自动,等等等等,你的程序能经受住考验吗?

唯有把程序关进“设备状态的笼子”里面,才有回答上面这些问题的“可能性”!

下面介绍第二种编程方式:

inc指令汇编(inc指令为什么不影响CF标志)

(流程图)

看到这里,突然发现,多了“选择结构”和“并行结构”。我水平有限,也说不清楚。但是还是尝试着解释一下吧!解释如下:

手/自动切换会自动进入设备复位程序,引起设备自动复位(当然你可以设置为进入停止状态,等人工按下复位按钮,进行复位);这样就确保了手/自动切换,无论哪种进入哪种模式,最开始的那一刻,设备均处于“初始位置状态”,不会因为手动模式下的操作被保留,带回到自动模式下。

也就是保证了,设备会因为“模式切换”,而进行自我归零,不产生累计误差。

至于并行架构,我是这么理解的:

供料部分说:我只负责供料,只要放料位没料了,我就去取料;并且我会告诉分拣部分,我这次抓的是什么料(SET料识别标志位);而且要是我发现没料了,我就不干了,然后大声说:“没料了,人类来给我加料!”(SET缺料标志位,而人加完料,按下启动按钮后,会RST缺料标志位);

运料部分说:我只负责运料,只要供料部分把料送到了(料送到的信息是靠电容传感器),我就去抓取,然后送给分拣部分,但是!我在把料给分拣部分时,我得问他一下,他准备好了没有?如果没有,可不能给他(这里是指检查分拣部分准备完成标志位);

分拣部分说:我只根据供料部分SET的料识别标志位,决定我咋干,如果是金属的,我就把它放在左边,如果不是,就把它放在右边;对了,我还要给运料部分那个兄弟说一声:我已经准备好了(SET分拣部分准备完成标志位);

这很像美国的总统制度,三只狗互相制约。

好了,我想我已经说的很形象了………

我给我女朋友讲故事,都没这么形象。

3.机构简化、暂停、预停、信号锁存、产品计数、预设产量—等等一招鲜战术的原理

首先给各位普及相关思想,这些玩意儿都是建立在之前的基础上,这些功能,说实话只是“一片叶子”,没有合适的程序架构和遵守相关原则,是做不出来的。我们的树干,必须又粗又壮,这“叶子”才会多,这些吸引人眼球的的“一招鲜”,才能被展现出来。

一个个讲过去吧!

A.机构简化:

双电控电磁阀和单电控电磁阀,在程序中如果比较的话,为了不出错,基本上,双控会比单控多一行程序,因为双电控电磁阀要用两个输出,那么这个时候想办法啊!怎么把它变成和单电控电磁阀一样,一行搞定,还不出错???

FC块不带参调用 就是答案。

inc指令汇编(inc指令为什么不影响CF标志)

把SET/RST配合起来,变成一个块调用,方便、快速、还正确。

B.暂停:

暂停功能,其实就是记住当前设备状态,按下停止之后设备不再动,保持当前位置,再次按下启动,继续去执行未完成的任务。

很简单,做到本文第2点讲的,并且程序中每一个动作都与传感器条件相关联;禁止使用普通线圈,必须只使用SET/RST指令进行顺序控制编程;禁止使用定时器(信号滤波除外);必须使用IO映射,并且分为监视机构和执行机构两种,在暂停按钮按下,暂停标志位启动时,执行机构的IO映射:=NOT(“暂停标志位”)就行了。启动按钮复位暂停标志位就OK了。

C.预停:

停止按钮按下时,置位预停标志位,在自动流程,最后一步时,设置选择结构,是回第一步,还是停止(根据预停标志位决定),如果停止,顺便把预停标志位自己也RST掉,以便于下次使用。

D.信号锁存、产品计数、预设产量

其实,在我们这套设备里面,供料机构分辨的“料识别标志位”,就是信号锁存,因为我检测的时候,我的分拣机构就能迅速完成料的分拣吗?不是,而是等待运料部分把料给搬运过来,典型的“秋后算账程序”,我记住你是“金属的”,还是“塑料的”,然后过了一段时间,才依靠信号锁存下来的“证据”,决定把你放到哪个仓库。

产品计数就不用说了,上面这说的内容后面加个计数器,或者ADD,或者INC指令,操作一个DINT类型的数字就行,这叫“记账本”,但是记住,为了准确,通常用上升沿来做这些加法指令/加法计数器的EN(使能)条件。

预设产量,说白了就是触摸屏设定了一个值,然后把这个值和产品计数的数值比较,当设置的数量到了之后,程序最后一步做一个选择结构,如果数量到了——进入停止程序。

当然除了这些,还有缺料报警、放料完成后按启动继续运行什么的,基本都是这个套路,本人不在赘述。

感谢各位观看,谢谢各位!

解决企业获客难题,添加 微信:hvq698  备注:获客

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 792114587@qq.com 举报,一经查实,本站将立刻删除。
如若转载,请注明出处:https://www.yuxke.com/6977.html