[西门子] 博途软件中的FC程序块是什么?如何使用?

[复制链接]
查看37 | 回复0 | 4 天前 | 显示全部楼层 |阅读模式
>

文末有55个实战案例资料

导读:在实际的项目中,作为一个初学者,我们编写的程序都是在OB1程序块中,这样当然是可以,但是如果一旦项目比较大,编程就会显得比较乱,调试起来也比较困难。那通常我们会使用FC或者FB来划分不同的功能,把一个相对大的项目拆分。比如:FC1编写“气缸”程序,FC2编写“模拟量”程序,这样调试和维护起来就比较方便。

那我们来看官方如何定义FC的:

函数FC是不带存储器的代码块。其临时变量存储在局部数据堆栈中,FC执行结束后,这些数据就丢失。可以共享数据区来存储那些在FC执行结束后需要保存的数据,不能为FC的局部数据分配初始值。

函数FC相当于子程序,当程序员希望重复执行某项功能时,可将其写成FC,在OB1或其他FC/FB中调用。这样不仅可以简化代码,缩短扫描周期,而且有利于程序调试,增强程序的可读性和移植性。

注:其实官方的定义和我“导读”中的说法差不多,只不过我们用大白话表达了一下。

那如何编写FC程序呢?

FC在使用时可选择不带参数的FC和带参数的FC。

  1. 不带参数的FC编程。这种编程方式呢,FC程序块里使用的是全局变量,什么是全局变量呢,比如:M0.0,Q0.0,I0.0等等,这些变量是在任何程序块里都可以使用,我们称为全局变量。那这种方式编程的话,是不能调用多次的,因为程序里有线圈的话,调用多次则会出现双线圈。

2.带参数的FC编程这种编程方式呢,FC程序块里使用的是局部变量,通常是在什么情况下使用呢。是在多个设备(或者多个需求一样)要实现相同的功能下使用。举个例子:比如现场有10个电机,都需要统计每个电机运行时间,那这样的话就是属于多个设备要实现相同的功能,我们可以只用带参数的FC编写一个“电机运行时间统计”程序,那些重复的,我们只需要调用即可。

其实对初学者来说,刚学习带参数的FC程序会觉得比较麻烦,尤其是不知道如何去定义局部变量。举个例子:

这是一个“起保停”程序,如何把它改造成带参数的FC呢?

因为如果使用带参数的FC编程,需要先定义接口变量,先看一下官方的接口参数描述,好像还是看明白是不?


分析:M0.0和M0.1这种呢,只有触点,通常我们是定义“只读”数据类型,比如可以换成I0.0,I0.1这种按钮型,只需要读取这个按钮有没按下即可;而Q0.0有线圈,又有触点,既要往线圈中写数据,又要读取其触点的状态,所以定位为“读写”。

那最终这个程序就是如下:

最近有很多小伙伴说要案例书籍,说是手机上看文章不是很方便,我抽时间把55个实战案例全部整理出来,案例都是比较典型的,其中包括气缸控制程序、报警程序、程序框架、运动控制程序封装、模拟量控制变频器、通信等实战案例。需要的可以加我微信:biao467524527,如果加不上可以私信我!




免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

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

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则