登录
首页 PLC论坛 西门子SIEMENS
回帖 发帖
正文

主题:FC功能里的临时变量TEMP应用请教

点击:14636 回复:10

针对下面的一段程序想请教以下几个问题:
1、FC105功能的输入BIPOLAR端和输出RET_VAL端为什么要用TEMP临时变量呢?
2、程序里用到好多FC105功能,如果要求有的功能需要单极性输入,而有的要求双极性输入的话,怎么办?
3、#TEMP1的参数怎么进行赋值,在哪里赋值 呢?
附件 QQ图片20150203142401.jpg
15-02-03 14:35
1、因为对于FC105,FC106来说,RET_VAL返回的是功能块的状态代码,所以无关紧要,如果使用M点或者DB的话,势必浪费资源。
2、BIPOLAR引脚可以连接不同的变量,这样就可以解决你的问题了。
3、临时变量的赋值与普通变量的赋值方法相同,不同的时,临时变量是公用变量,也就是说,1#功能块用过的临时变量,可能被2#功能块使用,这样,会造成功能块使用上的一些混乱,为了避免这种混乱,一般临时变量都是先赋值,后使用的。
15-02-03 15:11

引用 fujifa 在 2015/2/3 15:11:45 发言【内容省略】

1楼说的我懂些了,就是在应用每个功能FC105前都要先赋值 。可是还是没弄明白,在我手里的例程里没有看到给临时变量TEMP赋值的程序段呢?这是为什么?
15-02-03 15:27
如果程序员能确保临时变量的值能符合要求的话,不赋值也无所谓。
15-02-03 16:07

引用 fujifa 在 2015/2/3 16:07:55 发言【内容省略】

那我们怎么知道每个FC105的BIPOLAR端是什么数值呢?也即是怎么知道它是单极性输入还是双极性输入呢?
最后修改:2015/2/3 16:47:42
15-02-03 16:46

引用 liuxd6909 在 2015/2/3 16:46:48 发言【内容省略】

作为程序员你竟然不知道FC105的输入侧信号的数据范围,那还怎么编写程序呢?
Good Luck~
15-02-03 20:40

引用 cvlsam 在 2015/2/3 20:40:16 发言【内容省略】

不,我的意思还是怎么给BIPOLAR赋值的问题。
15-02-03 21:15

引用 liuxd6909 在 2015/2/3 21:15:43 发言【内容省略】

TEMP1的值是什么好像对程序并没有影响,版主说的是这个意思!如果需要,程序中会先赋值的!
15-02-03 22:36

引用 xuhuifox 在 2015/2/3 22:36:26 发言【内容省略】

另一种情形,如果不给TEMP赋值,程序是否按单极性运算呢?多谢!
15-02-03 22:57

引用 liuxd6909 在 2015/2/3 22:57:44 发言【内容省略】

前面的回帖我都一直强调,临时变量是一个不确定的值,需要遵守先赋值后使用的原则,除非程序员可以保证临时变量的值。
临时变量是在L区域中分配地址的,之所以会变成不确定值,是因为PLC的操作系统只负责临时变量存储区域的重新分配,不进行清零的工作。
如果TEMP1的L区域地址是0.0,当程序中没有其他临时变量使用的区域,那么TEMP1的值是确定的,但是,当拥有其他的临时变量,此时,TEMP的值是不确定的,可能存在TEMP在L区域中地址存储被分配给其他临时变量使用的状况。
正因为存在此种可能性,所以临时变量一般都遵守先赋值后使用的原则,这样程序员可以确保临时变量存储区内的值就是需要的值。
就你目前的状况,TEMP1如果没有被其他临时变量使用过,那么其值为初始值0。但是这种编程方式是非常不好的,也为将来的程序修改以及程序扩展带来隐患。
所以,我们一般评价程序员的程序质量并不是看能不能正常完成工艺,而是从其他各个方面来综合评价的。
纠结于这个程序员为何这样写毫无意义,而是应纠结于如何编写优质的程序。
15-02-04 10:26

上一页下一页

工控新闻

更多新闻资讯