FC与FB应用区别浅析S7-1200系列PLC可为用户提供两种程序结构类型,根据实际应用要求,可选择一种结构类型来编写用户程序。●线性程序按顺序逐条执行用于自动化任务的所有指令。通常,线性程序将所有程序指令都放入用于循环执行程序的OB(OB1)中。●模块化程序调用可执行特定任务的特定代码块。要创建模块化结构,需要将复杂的自动化任务划分为与过程的工艺功能相对应的更小的次级任务。每个代码块都为每个次级任务提供程序段。通过从另一个块中调用其中一个代码块来构建程序。S7-1200系列PLC的用户程序可以有两个结构供用户选择OB块在调用FB或FC块执行特定的功能时,就相当于在调用处展开被调用模块。那么,在S7-1200系列PLC的用户程序当中,有两种代码块,FB和FC,在编程当中如何选择呢?下面我就结合一个小小的控制要求,来讲解一下FB和FC的选择问题。函数(FC)功能(FC)是通常用于对一组输入值执行特定运算的代码块。FC将此运算结果存储在存储器当中。例如,可使用FC执行标准运算和可重复使用的运算(例如数学计算)或者执行工艺功能(如使用位逻辑运算执行独立的控制)。FC也可以在程序中的不同位置多次调用。重复使用,简化了对经常重复发生控制任务的编程。FC不具有相关的背景数据块(DB)。对于参与该运算的临时数据,FC采用了局部数据堆栈。不保存临时数据。要长期存储数据,可将输出值赋给全局存储器位置,如M存储器或全局DB。函数函数块(FB)FB=FC+DB,在FB的接口当中,多了静态存储变量,静态存储变量和输入、输出、输入输出变量都在背景数据块当中进行存储,(它不保存临时变量和常量)。因此,凡是FC能实现的功能,FB都能实现。我们在编写PLC程序时也有该如何选择的问题,我们应该本着这几方面进行考虑。1.如果程序功能是简单的数据运算或逻辑运算,而且不需要保存中间结果,我们就可以使用FC。2.如果程序功能需要保存中间结果,但不需要多次调用,也可以选择FC,中间结果可使用全局变量来实现保存。3.如果需要多次调用而且还需要保存中间结果的的程序块,我们最好选择FB,下面我就通过一个简单的例子来给大家演示一下FB与FC的实际区别。这个实例是在FB或FC内部使用上升沿或下降沿的情况,我们知道使用上升沿或下降沿指令,指令需要“边沿存储位”,用来存储上一个扫描周期的检查位的状态。这个存储位需要保存上一个扫描走起,被检测位(触点)的状态,在FC内部,只可以生成临时变量,临时变量是在函数被调用时系统临时分配的存储区,这个存储区的变量是在每次调用时临时分配的,显然保存不了被检测位的上一个扫描周期的状态,这时我们可以使用外部全局变量来做“被检测位上一个扫描周期状态保存”,这时FC在程序当中只调用一次时是没有问题的,如果需要多次调用,问题就出现了,多次调用FC时,它会产生多个实例展开,这就好比在程序当中为多个上升沿或下降沿使用了一个保存位,这个问题我在2-10或2-11课的上升沿与下降沿指令当中讲解过。这时我们可以通过接口“InOut”连接外部全局变量来实现状态存储,每次调用时,我们都给他配备一个全局变量,这样就能解决多次调用的问题,但是,每次调用,都得位它配备全局变量,如果需要多个变量,会给编程制造很多不必要的麻烦。这时,FB就显得非常适合了,FB的接口当中可以建立静态变量,静态变量又会在背景数据块当中保存,利用静态变量就可以保存“被检测位的上一个扫描周期的状态”。这样,在多次调用FB时解决了存储位的问题。I/O点用途I0.0选择1I0.1选择2I0.2启动I0.3空I0.4停止I0.5接近开关Q0.0输出,控制电动机启动