黑河西门子模块一级代理商黑河西门子模块一级代理商黑河西门子模块一级代理商
浔之漫智控技术上海有限公司 具备以下产品优势,西门子可编程控制器,西门子触摸屏,西门子工业以太网,
西门子数控系统,西门子高低压变频器,西门子电机驱动等等。西门子S7-1500 6ES7510-1SK03-0AB0。西门子S7-1500 6ES7512-1SM03-0AB0
西门子S7-1500 6ES7511-1FL03-0AB0西门子S7-1500 6ES7513-1FM03-0AB0
西门子S7-1500 6ES7515-5FN03-0AB0
1 TEMP区的问题
在《本地数据TEMP》这篇文章中我们用一个简单的加法程序向大家演示了TEMP区的使用,但是我们在主程序OB1中只调用了1次,当我们多次调用这个程序的时候大家就会发现一个问题,无论我们调用几次,做几次加法运算都只能算出一个结果,如图 1-1所示我们在主程序中调用了三次FC1,虽然只是在次的调用中激活了加法运算,但是可以发现程序段2和程序段3虽然并没有进行计算但是却得出了和程序段1相同的结果。
图 1-1
那么问题出在哪里呢,其实问题的关键就出在了本地数据TEMP区,让我们一起来回顾一下FC1的程序吧。
接口
图1-2
接口数据类型
接口 | 数据类型 |
add1 | INT |
add2 | INT |
add3 | INT |
add3_3 | INT |
start | BOOL |
表1
FC1
图 1-3
在这个程序中我们可以看到,加法的运算结果是先存放到本地数据add3中然后再由add3传送到输出接口add3_3
图1-4
这里我们可以看到本地数据add3的起始地址是0.0由于是Int数据类型,因此add3占用的是FC1的本地数据LW0这个存储空间,由FC1程序可以看出只要add3被赋值,那么FC1就一定会将add3中的内容进行输出,因此当我们在主程序OB1中激活了段的加法,第二第三段在没有激活的情况下就跟着将段的结果一起输出了。
2 先赋值后使用
那么该如何避免这种情况的发生呢?这里我们就一定要用到先赋值后使用的方法,来避免这种情况的发生。那么怎么使用才算是先赋值后使用呢?其实非常简单,就是一定要保证建立好的本地数据时时刻刻都被占用,这个方法让我总结就是一个萝卜一个坑,先来先占,后到的萝卜PLC会自动给他分配别的本地数据区的位置,这样就不会出现上面那种相互干扰的情况出现了。那么TEMP区的本地数据怎么才算被时时刻刻都被占用呢?下面我们还是用这个加法的程序给大家举例。我们要做的只是把图 1-3中的常开触点start和接口start一并删除即可,删除后如图 2-1所示。
图 2-1
那么为什么我们只需要将段加法指令前面的常开触点删除就可以达到先赋值后使用的效果呢?其实大家可以仔细想一想,当加法指令前有常开触点的时候,如果当这个常开触点是断开的时候我们这个加法指令是不进行计算的,当不进行计算的时候本地数据add3就不处于被占用的状态,达不到时时刻刻都被占用的效果,而当我们把这个常开触点删除后add3就不存在不被占用的情况了,换句话说就是现在add3已经达到了被时时刻刻占用的效果了,这就是先赋值后使用,由图 2-2可见使用了先赋值后使用以后就不会再出现输出结果相互干扰的情况了。
图 2-2
- 漳州西门子CPU代理商 2023-11-04
- 蚌埠西门子S7-1500代理商 2023-11-04
- 西门子电机|南平PLC模块代理商 2023-11-04
- 汕头回收西门子软启动器 2023-11-04
- 芜湖西门子S7-1200模块供应 2023-11-04
- 西门子CPU|漳州PLC模块代理 2023-11-04
- 广东回收西门子软启动器 2023-11-04
- 西门子代理|泉州PLC模块总代理 2023-11-04
- 合肥西门子S7-1200代理商 2023-11-04
- 泉州西门子CPU代理商 2023-11-04