[西门子] 200SMART 功能参数子程序讲解(附程序)

[复制链接]
查看54 | 回复0 | 3 天前 | 显示全部楼层 |阅读模式
200SMART带功能参数子程序最通俗的讲解示例

要想玩转 200SMART 编写带功能参数子程序块,关键在于了解变量表中的接口类型和局部存储区 L。


带功能参数子程序块,其实就是可多次重复使用的功能程序块。西门子提供的这一功能,让实际功能应用编写变得更加轻松,就如同小时候玩积木,能按需拼出各种造型。


今天,我们通过两个示例来详细介绍。首先来看起保停功能块。在编写功能参数子程序时,有一点务必明确:子程序中首先要使用的必须是局部地址 L。


这个局部地址 L 是专门用于子程序内部的地址,且必须通过变量表来创建,如此才能实现多次重复调用。因为经变量表创建的地址,PLC 会在程序多次运行时自动分配不同地址,确保多个程序调用时不会冲突。

具体情况可参考下图


     


    



由上图我们得出了结果,对于IN或者IN_OUT的地址PLC都会为其每个程序分配不同的地址,并且保证每次使用都要读取自己外部的状态然后拿去做程序的运行,这就双重保证了多个子程序调用的时候不会发生重复使用并相互受影响的情况。


下面我们再验证OUT输出接口类型特点及使用注意事项。





看到这里,大家是不是顿时茅塞顿开了呢;原来,PLC的输出变量的地址,由于没有读取这个功能,所以它只管输出结果,而且PLC不会为该接口的地址分配不同地址去使用,这就更尴尬了

大家都知道,PLC的扫描周期是由上到下执行,所以,OUT管脚直接把它第一个程序段地址的状态直接传递给了其它的程序;那么我们如何解决这个问题呢?下图给出最完美的解释。

通过上图试验得出结论,使用OUT接口类型地址时,必须前面加IN或者IN_OUT接口类型地址做辅助


因为OUT接口类型地址本身没有读取外部状态功能,它读到的只是程序里面上次执行状态,IN或者IN_OUT读取的是每个程序外部地址状态后才拿到各自程序里面执行


这就是所谓的先赋值后使用,其实就是先从程序外部获取自己按钮状态后,再拿到程序内部执行,执行完的结果同样只给自己的输出点


因为IN或IN_OUT的地址PLC会为其每个程序都分配不同属于自己的地址,上面也给大家强调演示过了。


最后一个验证临时变量TEMP,临时变量地址一般用于程序处理中间结果的时候用,但是它的特点和我们上述OUT变量的特点是一模一样的


PLC不会为其每个TEMP接口变量分配不同的地址,验证如下图所示:



      



解决方法和OUT接口类型的地址同样,对于开关量就一种处理办法,而对于数据可以有两种方法解决,如下图所示:

     


从上述图片可知,对于开关量和数据运算程序,将 TEMP 变量类型的地址置于 IN_OUT 类型地址之后,可解决程序相互影响的问题。


跟在 IN_OUT 类型地址后,能确保程序读取自身结果与状态,如第二幅图的数据类型地址那样保持时刻占用,PLC 就会为后续程序分配其他地址。


本次分享就到这里,满满干货,相信你收获颇丰!学会这些,编写 200SMART 功能块程序再也不难,还能提升工程项目的水准与效率。 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则