找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3827|回复: 12

西门子PLC中如何使用FB、FC

 火.. [复制链接]
  • 打卡等级:常驻代表
  • 打卡总天数:34
  • 打卡月天数:6
  • 打卡总奖励:9027
  • 最近打卡:2025-12-17 23:15:51

2823

主题

541

回帖

2万

积分

管理员

积分
22569
发表于 2020-11-29 17:19:52 | 显示全部楼层 |阅读模式

FC,功能。因为是一个功能,如果这个功能在多处都能用到,那么这段FC就具有通用性。我们在程序的其他地方就可以调用,简化代码,这个是FC的模块式的作用。当然,FC也可以作为我们被调用的一个子程序,用OB1去调用他,以实现结构化编程。因此,得出结论,FC可以干两个事:第一,实现功能化编程。比如,我们有大车,小车,起升3个结构。我们就可以定义3个FC,跟这3个机构一一对应,然后用OB1依次调用。为什么这样做,为什么不都放在OB1里。你也可以放OB1里,对段数比较少,很简单的项目就把代码都放在OB1里。如果功能,机构多了,最好还是分开来,这样有利于程序的可读可调,更符合规范。否则一个小故障都会导致你把OB1翻个遍,会很麻烦的。找准故障机构,在相应的FC里再去找会少看很多代码。这个道理比较简单。第二个事,就是我上面说的模块化编程,我的描述不是很准确,因为是自己的总结。这个意思就是我们平常讨论说的,把所有功能都写到一个块里,然后去调用整个块。FC可以干这个事(当然,FB也可以干,区别后面说),新建好FC,确定好输入,输出接口,然后编写逻辑,一个FC就搞定了。大家可以写一些简单的功能,来感受下FC。写好FC之后,在主程序OB1或者其他FC里就可以调用该块,程序界面右边“FC BLOCK”里就有该块,相信做到这里的话大家都应该知道怎么做了。我这里要说明其他问题。关于FC的编写,这里就不得不说一些概念性的东西,FC是不带背景数据块的,就这句话。因为FC是不带背景数据块,所以我们在调用FC时,关于FC这些逻辑的计算完全靠的是我们输入输出接口上的这些地址位,给FC提供数据来源。我们在编写FC的时候,需要注意的是,如果需要中间变量,考虑使用temp,临时变量满足需要。但是使用临时变量需要注意的是,在一个周期没有完成扫描时,A段程序调用FC1,使用了临时变量X,改变了其值。那么B段程序再次调用FC1时,X的值已经被改变了。在下个周期,才会释放。这点要非常小心。这就是跟FB无法比的,没有地址来存放数据。编程的时候,尽量多考虑使能。同样,M寄存器也要慎用,比如,你FC里用了M2.0这个位表示中间状态。现在第一次调用FC时,改变了M2.0的值,为ON。现在又第二次调用FC,M2.0的值已经为ON了,显然这不是我们想要的。虽然你调用了两次,分别赋了两组输入输出变量,但是你FC内的M终究是内存里的那个M,你调用无数次都是跟这个M打交道。不知道我说清楚了没。所以一般不要用这样呀的中间变量,一定要用时,多考虑通过使能来改变调用时序。同样,像定时器啊什么的,如果我们要使用,都需要定义一个in接口,为FC内的定时器提供一个实实在在的通道。第一次调用,我们用T21输入。第二次调用,我们用T22输入。这样就不会出错。否则就会像M那样出错。这个部分很重要。如果没听懂,不要紧。继续听FB。两个比较下,应该就很更清楚了。FB,功能块。可以干的事,就是FC能干的第二个事。只能干这个事,为什么要特别些呢,干嘛不让FC一个人搞定就行了。是因为FB功能更强悍些,每次调用他都需要一个DB来供他为逻辑计算存放数据。而不像我之前说的FC,需要输入输出接口地址来作为数据来源。每次调用FB时,需要指明一个DB,两个相互配合。而DB中存放的数据,也可以供全局享用。比如,有一个电机的加速功能块,作用是调节电机的加速。我们需要输入的参数是加速时间,最高速度两个参数,然后计算得出速度给定。这个时候我们最好用FB。现有电机1,输入加速时间2,最高速度20。那么2,20这个值放在哪呢,我们调用FB时,就可以放到DB电机1里去了。现有电机2,加速时间3,最高速度30,。我们仍然调用这个FB,3和30放DB电机2里就可以了。如果用FC,也可以做这个块。但是,没有DB来存放这些数据,就很不方便,也就失去了通用性。记住一点,简单的功能集合用FC,复杂的用FB。保准不错。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
工控课堂 www.gkket.com

11

主题

437

回帖

2823

积分

高级会员

积分
2823
发表于 2020-11-29 17:26:34 | 显示全部楼层
楼主加油,我们都看好你哦。
工控课堂 www.gkket.com

0

主题

85

回帖

340

积分

注册会员

积分
340
发表于 2020-11-30 08:23:01 | 显示全部楼层
真是被感动的痛哭流涕……
工控课堂 www.gkket.com

0

主题

62

回帖

82

积分

新手上路

积分
82
发表于 2025-11-13 06:46:03 | 显示全部楼层
蹲个后续,楼主记得更新呀,在线等挺急的~
工控课堂 www.gkket.com

0

主题

85

回帖

119

积分

新手上路

积分
119
发表于 2025-11-18 18:51:45 | 显示全部楼层
我先占个楼,等下再慢慢看~
工控课堂 www.gkket.com

0

主题

65

回帖

89

积分

新手上路

积分
89
发表于 2025-11-18 19:05:20 | 显示全部楼层
哈哈哈哈笑不活,楼主这脑洞绝了!
工控课堂 www.gkket.com

0

主题

121

回帖

252

积分

注册会员

积分
252
发表于 2025-11-18 19:08:16 | 显示全部楼层
楼主太会说了,字字句句都在理~
工控课堂 www.gkket.com

0

主题

94

回帖

264

积分

注册会员

积分
264
发表于 2025-11-18 19:12:18 | 显示全部楼层
水个经验,支持楼主,加油呀
工控课堂 www.gkket.com

0

主题

128

回帖

510

积分

中级会员

积分
510
发表于 2025-11-18 19:13:04 | 显示全部楼层
来凑个热闹,为楼主增加点人气!
工控课堂 www.gkket.com

0

主题

80

回帖

121

积分

新手上路

积分
121
发表于 2025-11-18 19:16:15 | 显示全部楼层
已转发给朋友,一起感受这份快乐~
工控课堂 www.gkket.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|手机版|免责声明|本站介绍|工控课堂 ( 沪ICP备20008691号-1 )

GMT+8, 2025-12-22 13:50 , Processed in 0.119036 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表