登录
首页 PLC论坛 施耐德电气PLC
回帖 发帖
正文

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

点击:4007 回复:3

楼主
请教:功能块和函数有啥区别啊,一个朋友说,两个基本一样,也说不出有啥不同。
通过仿真,在功能块中定义的VAR类型的中间量,是可读可写的。
在函数中就不行。
请老师帮助!
附件 1.jpg
附件 2.jpg
附件 3.jpg
附件 4.jpg
20-02-23 19:46
http://m.gkong.com/bbs/471874.ashx
看看我之前的帖子..下面有大神回复的
20-02-23 20:50
从楼主的描述,看来是刚接触模块化编程遇到很多人都有过的问题。
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
20-02-23 21:04
感谢0aguang0老师和381250356老师的解答!
20-02-24 10:07

工控新闻

更多新闻资讯