您现在所在的是:

西门子SIEMENS

回帖:10个,阅读:14523 [上一页] [1] [2] [下一页]
22485
liuxd6909
文章数:11937
年度积分:53
历史总积分:22485
注册时间:2008/7/19
发站内信
2017国庆活动(三)
2015Indusoft体验
LOGO!体验一等奖
发表于:2015/2/3 14:35:39
#0楼
针对下面的一段程序想请教以下几个问题:
1、FC105功能的输入BIPOLAR端和输出RET_VAL端为什么要用TEMP临时变量呢?
2、程序里用到好多FC105功能,如果要求有的功能需要单极性输入,而有的要求双极性输入的话,怎么办?
3、#TEMP1的参数怎么进行赋值,在哪里赋值 呢?


附件 QQ图片20150203142401.jpg

思想决定高度
8371
fujifa
文章数:2941
年度积分:57
历史总积分:8371
注册时间:2014/2/10
发站内信
2017论坛贡献奖
2016论坛贡献奖
2015论坛贡献奖
发表于:2015/2/3 15:11:45
#1楼
1、因为对于FC105,FC106来说,RET_VAL返回的是功能块的状态代码,所以无关紧要,如果使用M点或者DB的话,势必浪费资源。
2、BIPOLAR引脚可以连接不同的变量,这样就可以解决你的问题了。
3、临时变量的赋值与普通变量的赋值方法相同,不同的时,临时变量是公用变量,也就是说,1#功能块用过的临时变量,可能被2#功能块使用,这样,会造成功能块使用上的一些混乱,为了避免这种混乱,一般临时变量都是先赋值,后使用的。
精通富士POD,富士PLC的编程
有问题可以直接电邮:FUJIFA@yeah.net
22485
liuxd6909
文章数:11937
年度积分:53
历史总积分:22485
注册时间:2008/7/19
发站内信
2017国庆活动(三)
2015Indusoft体验
LOGO!体验一等奖
发表于:2015/2/3 15:27:28
#2楼
以下是引用fujifa2015/2/3 15:11:45的发言:
1、因为对于FC105,FC106来说,RET_VAL返回的是功能块的状态代码,所以无关紧要,如果使用M点或者DB的话,势必浪费资源。
2、BIPOLAR引脚可以连接不同的变量,这样就可以解决你的问题了。
3、临时变量的赋值与普通变量的赋值方法相同,不同的时,临时变量是公用变量,也就是说,1#功能块用过的临时变量,可能被2#功能块使用,这样,会造成功能块使用上的一些混乱,为了避免这种混乱,一般临时变量都是先赋值,后使用的。

1楼说的我懂些了,就是在应用每个功能FC105前都要先赋值 。可是还是没弄明白,在我手里的例程里没有看到给临时变量TEMP赋值的程序段呢?这是为什么?
思想决定高度
8371
fujifa
文章数:2941
年度积分:57
历史总积分:8371
注册时间:2014/2/10
发站内信
2017论坛贡献奖
2016论坛贡献奖
2015论坛贡献奖
发表于:2015/2/3 16:07:55
#3楼
如果程序员能确保临时变量的值能符合要求的话,不赋值也无所谓。
精通富士POD,富士PLC的编程
有问题可以直接电邮:FUJIFA@yeah.net
22485
liuxd6909
文章数:11937
年度积分:53
历史总积分:22485
注册时间:2008/7/19
发站内信
2017国庆活动(三)
2015Indusoft体验
LOGO!体验一等奖
发表于:2015/2/3 16:46:48
#4楼
以下是引用fujifa2015/2/3 16:07:55的发言:
如果程序员能确保临时变量的值能符合要求的话,不赋值也无所谓。
那我们怎么知道每个FC105的BIPOLAR端是什么数值呢?也即是怎么知道它是单极性输入还是双极性输入呢?
[此贴子已经被作者于2015/2/3 16:47:42编辑过]
思想决定高度
37605
cvlsam 版主
文章数:12429
年度积分:216
历史总积分:37605
注册时间:2001/12/22
发站内信
2018论坛贡献奖
2017论坛贡献奖
2016论坛贡献奖
2015论坛贡献奖
2013论坛贡献奖
2012论坛贡献奖
2011论坛贡献奖
2011国庆活动
2010论坛杰出贡献奖
发表于:2015/2/3 20:40:16
#5楼
以下是引用liuxd69092015/2/3 16:46:48的发言:
以下是引用fujifa2015/2/3 16:07:55的发言:
如果程序员能确保临时变量的值能符合要求的话,不赋值也无所谓。
那我们怎么知道每个FC105的BIPOLAR端是什么数值呢?也即是怎么知道它是单极性输入还是双极性输入呢?
[此贴子已经被作者于2015/2/3 16:47:42编辑过]

作为程序员你竟然不知道FC105的输入侧信号的数据范围,那还怎么编写程序呢?

Good Luck~
22485
liuxd6909
文章数:11937
年度积分:53
历史总积分:22485
注册时间:2008/7/19
发站内信
2017国庆活动(三)
2015Indusoft体验
LOGO!体验一等奖
发表于:2015/2/3 21:15:43
#6楼
以下是引用cvlsam2015/2/3 20:40:16的发言:
以下是引用liuxd69092015/2/3 16:46:48的发言:
以下是引用fujifa2015/2/3 16:07:55的发言:
如果程序员能确保临时变量的值能符合要求的话,不赋值也无所谓。
那我们怎么知道每个FC105的BIPOLAR端是什么数值呢?也即是怎么知道它是单极性输入还是双极性输入呢?
[此贴子已经被作者于2015/2/3 16:47:42编辑过]

作为程序员你竟然不知道FC105的输入侧信号的数据范围,那还怎么编写程序呢?

Good Luck~
不,我的意思还是怎么给BIPOLAR赋值的问题。
思想决定高度
15244
xuhuifox
文章数:2857
年度积分:161
历史总积分:15244
注册时间:2005/3/25
发站内信
发表于:2015/2/3 22:36:26
#7楼
以下是引用liuxd69092015/2/3 21:15:43的发言:
以下是引用cvlsam2015/2/3 20:40:16的发言:
以下是引用liuxd69092015/2/3 16:46:48的发言:
以下是引用fujifa2015/2/3 16:07:55的发言:
如果程序员能确保临时变量的值能符合要求的话,不赋值也无所谓。
那我们怎么知道每个FC105的BIPOLAR端是什么数值呢?也即是怎么知道它是单极性输入还是双极性输入呢?
[此贴子已经被作者于2015/2/3 16:47:42编辑过]

作为程序员你竟然不知道FC105的输入侧信号的数据范围,那还怎么编写程序呢?

Good Luck~
不,我的意思还是怎么给BIPOLAR赋值的问题。
TEMP1的值是什么好像对程序并没有影响,版主说的是这个意思!如果需要,程序中会先赋值的!
                 一切为了生活
22485
liuxd6909
文章数:11937
年度积分:53
历史总积分:22485
注册时间:2008/7/19
发站内信
2017国庆活动(三)
2015Indusoft体验
LOGO!体验一等奖
发表于:2015/2/3 22:57:44
#8楼
以下是引用xuhuifox2015/2/3 22:36:26的发言:
以下是引用liuxd69092015/2/3 21:15:43的发言:
以下是引用cvlsam2015/2/3 20:40:16的发言:
以下是引用liuxd69092015/2/3 16:46:48的发言:
以下是引用fujifa2015/2/3 16:07:55的发言:
如果程序员能确保临时变量的值能符合要求的话,不赋值也无所谓。
那我们怎么知道每个FC105的BIPOLAR端是什么数值呢?也即是怎么知道它是单极性输入还是双极性输入呢?
[此贴子已经被作者于2015/2/3 16:47:42编辑过]

作为程序员你竟然不知道FC105的输入侧信号的数据范围,那还怎么编写程序呢?

Good Luck~
不,我的意思还是怎么给BIPOLAR赋值的问题。
TEMP1的值是什么好像对程序并没有影响,版主说的是这个意思!如果需要,程序中会先赋值的!


另一种情形,如果不给TEMP赋值,程序是否按单极性运算呢?多谢!
思想决定高度
8371
fujifa
文章数:2941
年度积分:57
历史总积分:8371
注册时间:2014/2/10
发站内信
2017论坛贡献奖
2016论坛贡献奖
2015论坛贡献奖
发表于:2015/2/4 10:26:32
#9楼
以下是引用liuxd69092015/2/3 22:57:44的发言:
以下是引用xuhuifox2015/2/3 22:36:26的发言:
以下是引用liuxd69092015/2/3 21:15:43的发言:
以下是引用cvlsam2015/2/3 20:40:16的发言:
以下是引用liuxd69092015/2/3 16:46:48的发言:
以下是引用fujifa2015/2/3 16:07:55的发言:
如果程序员能确保临时变量的值能符合要求的话,不赋值也无所谓。
那我们怎么知道每个FC105的BIPOLAR端是什么数值呢?也即是怎么知道它是单极性输入还是双极性输入呢?
[此贴子已经被作者于2015/2/3 16:47:42编辑过]

作为程序员你竟然不知道FC105的输入侧信号的数据范围,那还怎么编写程序呢?

Good Luck~
不,我的意思还是怎么给BIPOLAR赋值的问题。
TEMP1的值是什么好像对程序并没有影响,版主说的是这个意思!如果需要,程序中会先赋值的!


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

前面的回帖我都一直强调,临时变量是一个不确定的值,需要遵守先赋值后使用的原则,除非程序员可以保证临时变量的值。

临时变量是在L区域中分配地址的,之所以会变成不确定值,是因为PLC的操作系统只负责临时变量存储区域的重新分配,不进行清零的工作。

如果TEMP1的L区域地址是0.0,当程序中没有其他临时变量使用的区域,那么TEMP1的值是确定的,但是,当拥有其他的临时变量,此时,TEMP的值是不确定的,可能存在TEMP在L区域中地址存储被分配给其他临时变量使用的状况。

正因为存在此种可能性,所以临时变量一般都遵守先赋值后使用的原则,这样程序员可以确保临时变量存储区内的值就是需要的值。

就你目前的状况,TEMP1如果没有被其他临时变量使用过,那么其值为初始值0。但是这种编程方式是非常不好的,也为将来的程序修改以及程序扩展带来隐患。

所以,我们一般评价程序员的程序质量并不是看能不能正常完成工艺,而是从其他各个方面来综合评价的。

纠结于这个程序员为何这样写毫无意义,而是应纠结于如何编写优质的程序。
精通富士POD,富士PLC的编程
有问题可以直接电邮:FUJIFA@yeah.net

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2025 Gkong.com, All Rights Reserved

93.6006