西门子S7-1200CPU1215C中央处理器西门子中国总代理 西门子授权代理商
西门子S7-1200CPU1215C中央处理器西门子中国总代理 西门子授权代理商
西门子S7-1200CPU1215C中央处理器西门子中国总代理 西门子授权代理商
西门子S7-1200 PLC的FC和FB程序块功能详解在西门子系列PLC中,从S7-1200PLC开始就有FC和FB程序块了,但在使用的时候,一些初学者还是不好理解,以至于不知道该如何选择。今天,我们就用大白话的方式给大家讲解FC与FB的功能。
1.FC与FB的作用
如图1所示(餐馆、厨师与食材图),有一家餐馆,餐馆家有厨师、设备等。厨师只要把“食材”买好,做饭菜,做好了之后就有“美味佳肴”享用了。那么软件中的FC和FB功能与这个“餐馆”非常类似。我们把“输入数据”给到FC或者FC程序块,程序块将数据加工,得到了“输出数据”。这个过程我们把“输入数据”比作“食材”,把“代码”比作“厨师”,把“输出数据”比作“美味佳肴”。
图1:FC与FB的作用
2. FC与FB的区别
既然我们把FC和FB都比作餐馆的话,那它们的区别在哪里呢?我们看图2,分别有“A餐馆”和“B餐馆”,A餐馆没有储藏室,A餐馆的厨师要把食材从储藏室拿出来进行加工,当加工完了,成为了“美味佳肴”之后,把这道“美味佳肴”放到“储藏室”去,当做菜量比较大,一旦多了起来,每次取食材,端菜放进储藏室要来回折返好多次,这就比较麻烦了。并且这个储藏室也是大家公用的,B餐馆也可以采用类似的方法进行菜品加工。储藏室就是“共享DB或者位存储器”。
B餐馆的话,有专门的储藏室,它就不需要折返去公用的储藏室去拿食材了。并且每新开一家B餐馆都自带储藏室,这样话就非常的方便了。B储藏室就类似于程序中的“背景DB”。
图2:FC与FB
2. FC函数
FC是什么呢?函数 (FC)是不含存储区的代码块。通过函数可在用户程序中传送参数。FB或FC在使用时,都可以使用带形式参数与不带形式参数的FB/FC,带参数的FB/FC可以实现重复调用。
带形式参数与不带形式参数的程序块有什么区别呢?我们还是以餐馆的形式举例。不带形式参数的FC:如图3所示,有两家“FC餐馆”,它们每天做的菜只能是固定的,不能根据不同的菜单而做菜。如果要做出不同的菜的话,只能再开一家餐馆,这种就是不带参数的FC程序。这种方式和我们在OB1主程序块中编程基本上一样(使用的都是全局变量),如图4所示。这种不带参数的FC编程的话,需要注意是一些状态数据的值,否则可能会造成数据错误。比如程序,如图5,当“FC1风机控制”程序块中的“Q0.4”自锁了,断开“OB1块”中的“M0.0”,这个时候的Q0.4是不会为“0”的,它还保持为“1”的状态。这个就是相当于我们厨师做好了菜,把门关了,菜仍然是在那里。如果是先把“Q0.4”断开了,再把“M0.0”断开,这个时候的“Q0.4”就是为“0”了。
图3:FC编程
图4:FC编程
图5:OB1调用FC程序
既然我们说了不带参数的FC就是不能根据菜单来做菜就很不方便,就用带参数的FC来解决这个问题。带参数的FC如图6所示。其中第一个FC3程序中的“I0.0”“I0.1”“IQ0.0”和第二FC3程序“I0.2”“I0.3”“Q0.1”这些就是不同的菜单,根据不同的输入菜单就可以很方便的做好菜。
图6:带参数的FC程序
2. 带参数的FC
要编写带参数的FC程序,需要先定义一些接口数据。其中接口类型主要分为5种,如图7所示。
图7:带参数的FC接口
1)Input接口类型:类似于餐馆往餐馆里送食材,只负责给进去,不需要拿出来。
2)Output接口类型:类似于餐馆里做好了菜,通过只负责Output接口往外送出来。
3)Inout接口类型:类似于往餐馆里送食材,还立即有人给你回复。
4)Temp接口类型:类似于小餐馆里写好的小单子(上面写了每桌客人需要做的菜送到厨房),只起中间过渡作用,后面的客人的菜单把前面人的菜单覆盖。
5)Constant接口类型:是常量,可以用符号代替数值。
①带参数的FC编程示例(起保停程序)如图8:
图8:带参数的FC程序
②使用带参数FC编写星三角启动程序,如图9和图10
图9
图10
PLC案例讲解|西门子S7-1200编写动态秤称重导读:今天为大家介绍一个用博图软件编写动态秤称重的案例,是已应用到实际工程中案例的一部分。下面对该案例的工艺要求进行描述:
物品称重根据秤的状态一般有两种方式:动态称重和静态称重。其中静态称重的秤是静止不动的,物品过秤后,即可得到重量数据。如果秤的精度高得出的数据也准确,但如用到自动产线,生产效率就太低了。而动态秤是随着自动流水线一起运动的,Zui常用的是皮带秤。物品经辊筒输送机送至动态秤,动态秤称得重量后,将数据传给上位机或PLC,随后进入输送分拣线,根据重量的不同,由PLC给出指令,物品分拣输送至不同的格口,本例以物品重量数据传送给PLC为例。因皮带秤是运动的,机械振动不可避免,得出的重量数据肯定会有误差,消出误差的一种方法就是在物品流经动态秤皮带的过程中,多次称量数据求和后取平均值。工艺流程简图如下图1所示:
图1
当物品放置到辊筒机头部时会触发光电1启动辊筒机运行,运行到尾部光电2时,触发皮带秤启动。光电3上升沿时,开始称重。假设每200MS皮带秤传一次数据给PLC,而物品经过皮带秤的时间为1.1秒,那么PLC可以得到5次数据,相加后求平均值,算出的数据就会比较准确。当然皮带秤具体传送数据时间、物品流经皮带秤的时间要根据称重传感器的型号、性能和皮带秤的转速等实际情况而定,这里只是举例。
一、 硬件配置S7-1215CPLC一台,称重传感器一套(带RJ45通信口),不同重量砝码若干。
二、 软件准备
电脑安装博图V17软件。
三、 程序编写1. 打开控制面版,新建一个名称为“动态秤称重”的项目,点击项目视图,在项目树下添加一个1215CPLC,分配IP地址。如下图2所示:
图2
2. 双击OB1,在右边指令集中选中“通信”选项下的MODBUSTCP客户端指令MB_CLIENT,将其拖拽至程序编辑区,并填写各管脚参数。此指令用于PLC和称重传感器建立MODBUSTCP通信,PLC为客户端,接收服务器(称重传感器)发送过来的物品重量数据。如下图3所示;
图3
3. 编写重量数据处理指令:双击项目树—PLC_1—程序块—添加新块,在弹出的图框中选择FB程序块,语言选择SCL。在打开的FB程序块编辑区建立输入输出变量,编写SCL代码。如下图4所示:
图4
4. SCL代码解析:当图1中光电3被触发时开始计时,每210MS接收一次重量数据并传至相应的存储区,利用间接寻址可将5次采集的数据存放到数组当中。此处时长设为210MS比上文中所说的200MS多10MS是为了保证准确接收到数据。采集完后求和并除以采集次数,得到平均数据传到触摸屏上显示。
5. 仿真程序编写:考虑到很多学员没有实物,我们可以利用博图软件强大的仿真功能通过编写仿真程序来测试是否达到功能要求。在OB1中编写的仿真程序模拟称重传感器每200MS发送一次数据,如下图5所示:
图5
四、 仿真效果因为采集周期200MS实在太短,不好观察数据的变化,将其改为2.8秒,数据的传送也相应改位3秒,采集次数也改为3次。仿真的效果如下图6所示:
图6
图6第一张图为PLC监控表中的数据,共采集了三次数据,分别是106、104、108,经FB1函数块SCL代码处理后,得到平均值为106。第二张图为触摸屏数据显示,与PLC的数据一致。
结语:本案例为实际工程案例中的一部分,并将之简单化、理想化,实际还要考虑现场诸多情况及故障报警处理,重量数据一般都是浮点数,所有关于重量的数据地址应设为浮点数类型。以上的程序仅供参考、学习,希望对广大学员有所帮助。