登录

行业资讯

西门子S7-400*处理器CPU416F-2

西门子S7-400*处理器CPU416F-2

西门子触摸屏代理商西门子S7-400*处理器CPU416F-2西门子CPU代理商


西门子S7-400*处理器CPU模块416F-2西门子S7-400*处理器CPU模块416F-2

一、子程序调用(CALL、SRET)

所谓子程序,顾名思义,它是程序的孩子,啊呸,它是区别于主程序而存在的独立程序段,只能呆在副程序区的可怜瓜娃子。就像我之前说的,妈叫你打酱油,有苹果就顺便买几个,这里的打酱油是主程序,买苹果是子程序。

酱油是必须要打的,但苹果买不买取决于你CALL不CALL,如果你想把买苹果的钱拿去买辣条,此时买苹果这个子程序就不会被驱动(CALL),不过,妈会不会赏你一个鞋饼就另说了。



调用子程序和条件跳转一样,都是PLC的瞬移特异功能,但CJ主要是在主程序区蹦跶,怎么跳转,都逃不过主程序区这五指山,但调用子程序就不一样了,它一跳就直接跳到副程序区去了,就跟孙猴子的筋斗云似的。那么,这个筋斗云怎么用呢?我们接着往下看。

 

1、子程序调用指令CALL、SRET



要想在PLC梯形图中跳出主程序这个牢笼,召唤子程序,就必须要用到子程序调用指令CALL,而且还要捎带上CALL的媳妇SRET。



和CJ不一样的是,子程序调用指令CALL必须要和子程序返回指令SRET成对使用。但又和CJ指令一样,CALL的适用软元件也是分支指针P0~P127,且P63不能用于CALL。

 

所以,在编程时要注意分支指针P的使用,同一标号的P不能同时被CJ指令和CALL指令共用,例如CALL P5中的P5就不能用于CJ P5。

 

从编程手册中可以看到,CALL指令仅用于16位,且具有连续执行型和脉冲执行型两种。连续执行型和脉冲执行型的区别于CJ差不多,在此不再赘述。

 

SRET指令和FEND指令一样无驱动条件,仅用于子程序的返回。在子程序中,执行到子程序返回指令SRET时,立即返回到主程序调用指令的下一行继续往下执行。



如上图所示,当驱动条件X0接通(X0=ON),执行CALL P5,程序跳转到副程序区中子程序的入口地址P5处往下执行,执行到SRET指令时,立即返回到主程序区CALL P5的下一行继续往下执行。

 

所以,我们在使用CALL指令时,千万不要忘了它的媳妇SRET指令哦,所谓“宁拆十座庙 ,不毁一桩婚”,可不要做了那棒打的坏人。

 

2、子程序嵌套

子程序嵌套,是指子程序中再应用子程序调用指令去调用其他子程序,所谓“三十六计计中计”,一环扣一环,一套嵌一套。当然,这个再次调用的过程类同于主程序调用子程序的过程。



如上图所示就是2层嵌套的程序流程图,当驱动条件X0接通,调用子程序1,在执行子程序1的过程中,驱动条件X1接通,调用子程序2,执行完子程序2后,返回到子程序1中调用指令CALL P6的下一行继续执行完子程序1,直到执行到子程序1的返回指令后返回到主程序中调用指令CALL P5的下一行继续往下执行。

 

这就好比你打酱油,途中去买苹果,买苹果的途中看到辣条忍不住,然后跑去买辣条,卖完辣条再去买苹果,后才去买酱油,后回家。这里打酱油是主程序,买苹果是子程序1,买辣条是子程序2。

在三菱PLC2N中,调用子程序的嵌套层数,对主程序而言多有5层,显然,对子程序而言就要少一层,就是4层。如上图的子程序嵌套流程图,子程序2中还可以有3,3中有4,4中有5,5中就不能有6了。



3、子程序的软元件使用

按理来说,主程序和子程序的软元件是通用的,也就是说,三菱PLC2N中的软元件,可以用于主程序,也可用于子程序,但有一个比较特殊,那就是定时器。

 

所有定时器均可用于主程序,但子程序要用定时器的话,就没这么简单了,它只能是T192~T199、T246~T249这10个。

 

另外,在子程序调用过程中被驱动的软元件,其状态在子程序调用结束后,会保持在后一次调用时候的状态不变。哪怕这些软元件的驱动条件在子程序调用结束后发生了改变,软元件的状态也不会发生改变。

 

4、子程序应用

什么时候才会用到子程序呢?显然,子程序是区别于主程序的独立程序段,这里的独立,其实就很明显的**的子程序的作用,那就是把功能模块化,不同的子程序互相独立,各自有着不同的功能,为主程序提供不同的服务。

 

所以,当系统规模很大、控制要求复杂时,可以把程序分为一块一块的子程序,使程序简化;另外,当某个功能需要多次执行时,也可以编成子程序,需要时直接调用,清晰方便,是主程序简单化。



子程序调用的实际应用,在这里我就不举例了,因为这和主程序区别也不大,只不过是功能模块化而言。打败了子程序调用后,我们乘胜追击,继续进攻PLC的FOR循环吧!

 

二、循环

PLC的循环也是程序流程转移的一种,对应的指令为FOR、NEXT。



 

和子程序调用指令一样,循环指令FOR和NEXT也是成对出现的,但不同的是,FOR指令和NEXT指令都没有驱动条件。在子程序调用指令CALL、SRET中,CALL指令是需要驱动条件的,条件跳转指令CJ 也需驱动条件。

 

从编程手册中,我们可以看到,FOR指令仅用于16位,且只有连续执行型。这是显然的,因为它没有驱动条件,哪来的脉冲执行型?

 

所谓FOR循环,指的是重复,在程序中,PLC扫描到FOR-NEXT指令时,对FOR-NEXT指令之间的程序重复执行n次。如下图所示,程序扫描到FOR K5时,在FOR K5与NEXT指令之间的程序2重复执行5次,然后再退出循环继续往下执行。



虽然FOR指令的适用软元件有很多,但常用的是常数K,也就是用常数K*程序重复执行的次数。循环指令的应用相对简单,但有几点还是需要我们注意的。

 

1、循环嵌套

从上文中我们知道了子程序可以嵌套,同样的,循环指令也可以嵌套,而且多也是5层。如下图所示为5层循环嵌套,如下图所示。



如上图所示,若这5层循环中,每层循环的次数均为10,显然,所有循环全部执行完时,*五层循环被执行了100000次,*4层执行了10000次,依次类推,*1层被执行了10次。这就跟剥洋葱似的,“一层一层剥开我的心~”咳咳,抱歉,一不小心就唱起来了,回归正题。

 

所以,我们在应用循环嵌套时,一定要注意所嵌循环的次数,因为循环次数过多会造成程序运算时间过长,使PLC的响应变慢,甚至**时。

 

另外,循环是可以并立嵌套的,如下图所示。此时两个并立的循环为一层,也就是说,下图为2层的循环嵌套。



2、循环指令使用

循环指令使用在使用时要注意以下几点:

(1)循环指令FOR必须要和NEXT指令成对使用,缺一不可,同生共死;



(2)FOR指令和NEXT指令的顺序不能颠倒;

(3)FOR指令和NEXT指令必须同时存在同一程序区,FOR指令在主程序区,对应NEXT指令也必须在主程序区,不能写在副程序区。




浔之漫智控技术(上海)有限公司专注于西门子低压电器授权代理商,西门子PLC模块总代理商,西门子模块总代理商,西门子中国一级代理商,西门子PLC一级代理商,西门子DP电缆代理商等

免责声明: 八方资源网为互联网信息服务提供者,所有的信息均有发布者提供,如您发现信息有违规/侵权,请立即投诉举报

相关资讯

查看更多
资讯分类
商务服务 污水处理 机械 传媒 机床 五金 农业 工程机械 焊接切割 泵阀 热泵 农机 汽车 汽车用品 汽配 汽修 通信 电子 暖通空调 电气 广电 印刷 纸业 丝印特印 灯饰 安防 消防 过滤 耐火材料 环保 LED 添加剂 食品机械 仪器仪表 太阳能 包装 水工业 加工 二手设备 工艺礼品 古玩 服装 美容美发 服饰 制鞋 家电 家具 运动休闲 影音 酒店 家居 办公 音响灯光 农化 水果 养殖 皮具 教育装备 玩具 零食 食品 二手 IT 建材 小家电 卫浴 陶瓷 超硬材料 化工 橡胶 塑料 钢铁 表面处理 冶金 石油 能源 纺织 房地产 皮革 涂料 石材 创业 项目 生活服务 教育 船舶 维修 广告 交通运输 医疗 代理 物流 图片 展会 咨询 库存积压
八方资源网 资讯