刻骨铭心的TEMP变量_第1页
刻骨铭心的TEMP变量_第2页
刻骨铭心的TEMP变量_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、本文格式为Word版,下载可任意编辑刻骨铭心的TEMP变量 2015年是我第一次使用博途软件,这一年也是小弟初入工控这行业的起点。未参与工作以前在学校里学的是西门子的step7 v5.5这个编程软件,感觉这个软件相对于同为plc厂家三菱的gx强大的不是一点半点,然而在我初次使用了西门子的tia portal之后,心中的感受用一句话来形容就是“五岳归来不看山,黄山归来不看岳”。好了扯的有点远啦,言归正传,我掉进的这个坑,还要从第一次使用博途软件说起。 那是15年的夏天,甲方上了我公司一套大型的设备,对工期督促的比较急,说是设备晚投入生产一天就会损失好几万,相应的就要扣工程款5%。于是乎为了赶进度

2、,设备还没有安装好,我和我的同事们就匆忙赶赴现场,进行调试前的预备工作。由于这是第一次使用新的软件,出厂之前对柜子进行了尤为认真的检查,相应的功能也都单独试了一遍。到了现场也如我预料的前期的各个部分的单独测试也都非常的顺当,就在当我信念满满的开头进行设备的挨次启动运行的时候,惊奇的事情发生了。开机后就发生了惊人的连续噼里啪啦的接触器断开吸合的声音,吓的我直接把总闸都拉了,WTF! 刚才发生了什么?脑子里第一个想法就是是不是一个变量给了多个输出点,然后就当心翼翼的把电上了,plc打在线监控程序。不得不说博途的查找交叉使用功能很赞,对于复用的变量可以很快查到其位置,很快都查了一遍,输出的各个规律部

3、分都正常的。这个时候我突然想到以前遇到过M点地址重叠的故障,比如说程序里用到两个变量,一个mw0另外一个MW1,这样他们有一部分地址重叠,cpu就会报错。为了防止接触器反复吸合产生巨大的响声,我把输出点全部屏蔽了,然后启动挨次运行,满心盼望cpu会报故障然而并没有。这个时候我就有点慌,心里默念冷静点、冷静点,要一步步的查,既然接触器会吸合,那么确定有输出,于是我从输出开头向前查找。(话说这个时候已经夜里11点了,早下班了,而我还蹲在现场忍受着蚊虫叮咬,还没有吃晚饭)就这样一个个的查找,突然眼前一段程序引起了我的留意,一个temp变量在FB程序中做规律输出,输入点没有得电而temp却得电了,什么

4、鬼!脑子里飞速想到了一个念头,这个temp变量在其他地方使用过,这是一个局部的临时变量查找起来倒是很快,结局是不幸的,我没有找到其他地方使用过这个变量。这个时候到了12点,我有点崩溃了,于是又没头没脑的把硬件检查了一遍,再次确定硬件没有毛病(这个时候已经糊涂了)。为了不耽搁明天的工作,我拖着疲乏的身体带着对temp变量的怀疑回宾馆了,这个时候已经凌晨一点了。 那个时候刚进入工控这个行业,不知道有西门子论坛西门子客服这好东西,不然我想我会少走一些弯路。其次天一大早我有匆忙赶往现场,在现场一待又是到了夜里10点多,全部的temp变量都被我看了几遍,想从中找出一点规律。但是却令我倍感绝望,这哪有什么

5、规律,我这个时候甚至都开头怀疑博途软件有问题了!心里暗骂博途软件太坑了,为什么step7 5.5 FB中输出变量也可以在FB内部做输入,而博途中的却需要用temp来做这中间变量的工作!这个时候突然的灵感让我想到一些什么,于是我把一个FB块中的全部temp变量全部换成static类型的,感动的把改好的块下了进去,好了!这可把我兴奋坏,虽然不知道为什么,但我还是把全部的FB块的TEMP变量都改了,编译,下载!开头启动运行,随着设备的轰鸣声,设备最终会按着程序运行了。而这两天的种种苦累也在这一刻得到了最好的回报! 后来设备正常运行后,我才有空认真的讨论关于TEMP变量的问题。“临时变量可以在组织快O

6、B、功能FC和功能块FB中使用,当块执行时它们被用来临时存储数据,一旦块执行结束,堆栈的地址将被重新安排用于其它程序块使用,此地址上的数据不会被清零,直到被其他程序块给予新值。需要遵循“先赋值,再使用”的原则“。虽然知道了原理,至今仍旧喜爱在bit类型的变量使用static,其他类型使用temp变量。虽然我遇到的这个问题是个小问题,或许大神们都不把它当问题,但这里仅为抛砖引玉。在工控行业,才刚刚入门,愿以后的日子里与大家共同进步!最终把官方关于temp变量的分析贴出来给像我一样的小白看 有常见的几种状况导致程序运行不正常: 1. 某个块程序运行时好时坏,其中某个数值或多个数值间或不正常 此问题

7、在于,肯定遵循“先赋值,再使用”。否则,TEMP的数值在每个扫描周期开头未有明确的赋值,此地址的数值将是随机的。2. 多个块使用TEMP,单独使用任意一个都正常,无法一起正常使用此问题在于,TEMP未能先赋值,再使用;程序块1的TEMP中的数值并没有清零,而是CPU运行机制调用此地址使用或直接安排给程序块2使用,导致这个TEMP地址并不为0,因此程序混乱。由于内存运行机制并不公开,因此,这一安排过程看起来是随机的。这可能导致,程序多次运行状况下正常,运行一段时间后消失问题。只要遵循“先赋值,再使用”的原则,就可避开。3. TEMP无法实现自锁此问题在于,TEMP数值无法像M点或Q点一样保持上一个周期的数值;TEMP需要在每个扫描周期有一个明确的赋值,即先赋值(写),再使用(读写)解决方式,FB可使用STAT静态变量;FC可使用M区或全局DB地址。 总结,在使用临时变量TEMP时: 1.不能先使用,再赋值2.不适用于自

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论