您现在所在的是:

施耐德电气论坛

回帖:3个,阅读:4017 [上一页] [1] [下一页]
* 帖子主题:

请教:功能块和函数有啥区别?

[已结贴]
3254
wangtaotao
文章数:951
年度积分:48
历史总积分:3254
品牌积分(施耐德):48
注册时间:2003/12/8
发站内信
发表于:2020/2/23 19:46:28
#0楼
请教:功能块和函数有啥区别啊,一个朋友说,两个基本一样,也说不出有啥不同。
通过仿真,在功能块中定义的VAR类型的中间量,是可读可写的。
在函数中就不行。
请老师帮助!
附件 1.jpg

附件 2.jpg

附件 3.jpg

附件 4.jpg



8132
0aguang0
文章数:1636
年度积分:255
历史总积分:8132
品牌积分(施耐德):2046
注册时间:2010/10/21
发站内信
发表于:2020/2/23 20:50:26
#1楼
http://bbs.gkong.com/archive.aspx?id=471874
看看我之前的帖子..下面有大神回复的
水平一般,能力有限.如有错误之处.欢迎并感谢指出.我一定认真学习积极改正.请勿DISS.
2021
381250356
文章数:233
年度积分:50
历史总积分:2021
品牌积分(施耐德):4
注册时间:2011/6/21
发站内信
发表于:2020/2/23 21:04:25
#2楼
从楼主的描述,看来是刚接触模块化编程遇到很多人都有过的问题。

FB:IEC611131-3 全称 FUNCTION_BLOCK ,具有静态变量能存储运算结果,前提是多地调用需声明不同的存储区(当然也有将FB
   当做FC用的)当本次扫描【A:=A+1; 执行完成A=2】 ,再次扫描到该FB时,还能取出上一次存储的运算结果【A:=A+1,这时执
   行完成A=3】参与本次扫描继续运算。

FC:IEC611131-3 全称 FUNCTION ,具我以前书本中了解的是没有静态区域只有临时区域(Temp),但现在基于Codesys平台很多
   是可以声明静态变量。
   FC的静态变量用途还是比较有限,比临时变量(Temp)要用途大,它能等到你的第二次扫描不至于执行到其它的FC时扔掉静态
   变量。
   但是你说的定时器在FC中为什么多次调用就会出错,就是因为你再多个地方调用了它,但是它又不能存储上一次被调用值。
   如果它上一个地方调用的时候条件TON(EN)为TRUE,这个地方调用时的输入条件TON(FALSE),那么定时器的时间就被刷新成0
   了,也就可以解释为什么会出错了。如果你硬要用FC做,那只能在一个地方调用。
   当本次扫描1完成【TON 当前时间为 10ms ,扫描2 因为条件不满足TON 当前时间变为 0ms,再次回到扫描1完成时与目标值比
   较,目标值:20ms,当前值:10ms,所以第一个调用时间到了为什么却不输出。
附件 0223210441.jpg
[此贴子已经被作者于2020/2/23 21:20:38编辑过]
3254
wangtaotao
文章数:951
年度积分:48
历史总积分:3254
品牌积分(施耐德):48
注册时间:2003/12/8
发站内信
发表于:2020/2/24 10:07:21
#3楼
感谢0aguang0老师和381250356老师的解答!

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

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

46.8003