收藏 分享(赏)

基于Siemens S7 FIFO功能的得实现.doc

上传人:HR专家 文档编号:5594238 上传时间:2019-03-09 格式:DOC 页数:11 大小:1.04MB
下载 相关 举报
基于Siemens S7 FIFO功能的得实现.doc_第1页
第1页 / 共11页
基于Siemens S7 FIFO功能的得实现.doc_第2页
第2页 / 共11页
基于Siemens S7 FIFO功能的得实现.doc_第3页
第3页 / 共11页
基于Siemens S7 FIFO功能的得实现.doc_第4页
第4页 / 共11页
基于Siemens S7 FIFO功能的得实现.doc_第5页
第5页 / 共11页
点击查看更多>>
资源描述

1、1基于 Siemens S7-300/400 PLC 的 FIFO 功能实现摘要:本文详细介绍了基于西门子 S7-300/400 PLC 中的 FIFO 功能,并利用西门子 S7系列 PLC 编程软件 Simatic STEP7 开发实现多字节的 FIFO 功能。Abstract:This paper introduces FIFO function based Siemens S7-300/400 PLC,and achieves several byte FIFO function by making use of Siemens PLC Programming software Sima

2、tic STEP7 development.关键词 西门子 S7-300/400 PLC ;FIFO ;Simatic STEP7Keywords:Siemens S7-300/400 PLC ;FIFO ;Simatic STEP7主要内容:1、前言,提出为什么要介绍 Siemens PLC 中的 FIFO 功能2、首先介绍 Siemens 公司提供的专用功能块,FC84 与 FC85,并分别举例3、说明在设备间数据通讯,多余 1 个字节的数据需要同时进行 FIFO Buffer,然后在下一工序中弹出来。介绍多字节 FIFO 功能的实现4、Siemens PLC 编程开发软件 Simatic

3、 STEP7 的介绍,编程开发同时 20 字节 FIFO 的程序,相关数据块结构的说明,在程序中的调用 FIFO 功能块。此外可以通过Simatic Simulation 进行模拟确认。5、总结。 一、前言FIFO 功能即 First Input First Output 先进先出,在很多情况下要用到此功能。以前此技术主要在计算机高级语言开发和数据结构设计中应用,但随着 PLC 技术的日益突飞猛进,需要通过 PLC 进行数据传送、缓存存储的事件越来越多,尤其是在数据缓存过程中,对 FIFO 功能使用场合越来越多。西门子 S7-300/400 PLC 是德国西门子公司的中型、大型 PLC,也是当

4、今世界上工控行业的主流产品。在 Siemens S7 系列 PLC 开发软件 Simatic STEP7 工具中,Siemens 公司提供了两个专用功能 FC84 ATT 和 FC85 FIFO,通过这两个 FC 功能完成对 FIFO 功能数据的写入和导出,但是每次只能允许一字,也就两字节长的数据。为了实现每次多字节的 FIFO 功能,需要用户自己开发相应的功能块 FB 来实现,在本文中就介绍了实现每次 20 字节 FIFO 功能 FB200 功能块的代码,以及实际应用举例。二、Siemens FC84 ATT 和 FC85 FIFO 功能的介绍1、FC84 ATT1.1、 FC 84 ATT

5、 功能和构成介绍FC 84 ATT 是实现增加数据到 FIFO 功能的数据存储区中,通过每次执行此指令实现把一字的数据增加到 FIFO 功能数据存储区中,FIFO 功能存储区中以字为单位,具体组成如下: 存储区表中第一字为 FIFO 存储区允许的最大数据存储个数,即最多可以存储多少个字的数据。 存储区表中第二字为 FIFO 存储区当前已经存储数据的个数,即已经存储了多少个字的数据。 存储区表中从第三字开始为 FIFO 存储区实际存储的数据。1.2、 FC 84 ATT 功能参数说明2通过 Simatic STEP7 进行程序开发时,调用 FC84 ATT 功能,出现如下图:从图 21 中可以看

6、到,FC84 ATT 共有四个参数,分别为 EN、DATA、TABLE和 ENO,在四门子资料中对其描述如下表 2-1:参数 声明 数据类型 内存区域 功能描述EN 输入 布尔 I、Q、 M、D、L 使能激活信号ENO 输出 布尔 I、Q、 M、D、L 使能输出DATA 输入 Word I、Q、 M、D、L、P静态存储区域要增加到 FIFO的数据TABLE 输入 指针 I、Q、 M、D、 FIFO 区域指针表 2-1 1.3、举例说明如果信号 M100.0 的状态为 1(即被激活) ,FC84 ATT 功能被执行。在下面的例子中,增加的数据写到 FIFO 表中的第五行,FIFO 的容量也就是

7、FIFO 表中第二行由 4 变为 5。如果 FC84 ATT 被执行而且没有错误发生,那么使能输出 ENO 置为 1,具体如下:32、FC85 FIFO2.1 、FC 85 FIFO 功能和构成介绍FC85 FIFO 是完成把 FIFO 表中的数据按照先进先出原则,依次读出,以供使用,与 FC84 ATT 配合使用,完成 FIFO 的写进与读出功能。通过每次执行此指令实现把一个字的数据从 FIFO 功能数据存储区中读出,FIFO 功能存储区中以字为单位,具体组成如下: 存储区表中第一字为 FIFO 存储区允许的最大数据存储个数,即最多可以存储多少个字的数据。 存储区表中第二字为 FIFO 存储

8、区当前已经存储数据的个数,即已经存储了多少个字的数据。 存储区表中从第三字开始为 FIFO 存储区实际存储的数据,也是 FIFO 指针所指向的数据。2.2、FC 85 FIFO 功能参数说明通过 Simatic STEP7 进行程序开发时,调用 FC85 FIFO 功能,出现如下图:图 2-2从图 21 中可以看到,FC85FIFO 共有四个参数,分别为 EN、ENO 、TABLE 和RET_VAL,在西门子资料中对其描述如下表 2-2:4参数 声明 数据类型 内存区域 功能描述EN 输入 布尔 I、Q、 M、D、L 使能激活信号ENO 输出 布尔 I、Q、 M、D、L 使能输出TABLE 输

9、入 指针 I、Q、 M、D、 FIFO 区域指针RET_VAL 输出 字 I、Q、 M、D、L、P 读出的数据表 2-22.3、举例说明如果信号 M100.0 的状态为 1(即被激活) ,FC85 FIFO 功能被执行。在下面的例子中,从 FIFO 存储区域中读出的数据写到 RET_VAL 指定的地址中,FIFO 的容量也就是 FIFO 表中第二行由 5 变为 4。同时整个 FIFO 中存储的数据依次向上移动一行。如果 FC85 FIFO 被执行而且没有错误发生,那么使能输出 ENO 被置为 1。三、多字节 FIFO 功能的实现1、 从前面 FC84 ATT 和 FC85 FIFO 的说明中可

10、以看出,虽然 Siemens 提供了针对 S7系列 PLC 的 FIFO 功能模块,但是其只能每次写入或读出一个字节的数据,而实际上在很多情况下,每次均是一组数据需要运用 FIFO 功能来暂时存储起来,那么在这种情形下就不能采用Siemens 提供的标准功能 FC84 和 FC85 了,需要自己开发一可以实现多字节读出写入功能的FIFO 指令。2、Siemens Simatic STEP7 介绍Siemens Simatic S7 300/400 系列 PLC 是 Siemens 公司主推的中、大型产品,也是当5今世界上的主流产品。针对这两个系列 PLC 开发软件工件为 Simatic STE

11、P7,此软件有多个版本,目前已经发展到 V5.4,采用次软件可以实现开发、监控等功能。3、多字节 FIFO 的实现打开 Simatic STEP7 软件,新建一 FB 块,如 FB200 DB200,然后进入 FB100进行编程,本文中以 20 字节为例,介绍如何开发实现 FIFO 功能具体见如下画面:图 3-1源代码如下:FUNCTION_BLOCK FB 100TITLE =/此功能块用了完成 20 字节的 FIFO 功能AUTHOR : HylotusVERSION : 0.1KNOW_HOW_PROTECTVAR_INPUTSOURCE_DB : BLOCK_DB ;INPUT : B

12、OOL ;OUTPUT : BOOL ;SIZE : INT ;END_VARVAR_OUTPUTDONE_IN : BOOL ;DONE_OUT : BOOL ;ERROR : BOOL ;6FULL : BOOL ;EMPTY : BOOL ;END_VARVAR_IN_OUTLOCATION : INT ;END_VARVARIN_START : BOOL ;IN_ACTIVE : BOOL ;OUT_START : BOOL ;OUT_ACTIVE : BOOL ;COUNT : INT ;RET_VAL1 : INT ;END_VARBEGINNETWORKTITLE =A #INP

13、UT; AN #IN_ACTIVE; = #IN_START; A #INPUT; = #IN_ACTIVE; A #OUTPUT; AN #OUT_ACTIVE; = #OUT_START; A #OUTPUT; = #OUT_ACTIVE; AN #INPUT; AN #OUTPUT; JC END1; NETWORKTITLE =OUTPUT FIFO/20 字节的数据从 FIFO 存储区域中读出AN #OUTPUT; O #DONE_OUT; JC IN_1; AN #OUT_START; JC OP_1; OPN #SOURCE_DB; L DW#16#0; T DBD 40; T

14、DBD 44; T DBD 48; T DBD 52; T DBD 56; 7T DBD 60; T DBD 64; T DBD 68; T DBD 72; T DBD 76; L #LOCATION; L 0; I ; JC EROR; L 0; T #COUNT; OP_1: L #LOCATION; L 0; =I ; S #FULL; JC EROR; L #LOCATION; L 2; +I ; ITD ; L P#40.0; *D ; LAR1 ; OPN #SOURCE_DB; L DBD 0; T DBD AR1,P#0.0; L DBD 4; T DBD AR1,P#4.0;

15、 L DBD 8; T DBD AR1,P#8.0; L DBD 12; T DBD AR1,P#12.0; L DBD 16; T DBD AR1,P#16.0; L DBD 20; T DBD AR1,P#20.0; L DBD 24; T DBD AR1,P#24.0; L DBD 28; T DBD AR1,P#28.0; L DBD 32; T DBD AR1,P#32.0; L DBD 36; T DBD AR1,P#36.0; L #LOCATION; L 1; +I ; T #LOCATION; SET ; S #DONE_IN; JU END2; NETWORKTITLE =

16、EROR: SET ; = #ERROR; JU END2; END1: CLR ; 10= #DONE_IN; = #DONE_OUT; = #ERROR; = #EMPTY; = #FULL; END2: NOP 0; END_FUNCTION_BLOCK4、在程序中的调用上面已经完成了 FB100 FIFO 功能块的编程开发,下面就是直接调用,设置相关参数就可以使用此功能了,举例如下:新建 FIFO 数据源数据库 DB200,结构为Address Name Type Initial value Comment0.0 STRUCT+0.0 IN_Buffer STRUCT+0.0 Stat

17、us_Word INT 0+2.0 Data1 INT 0+4.0 Data2 INT 0+6.0 Data3 INT 0+8.0 Data4 INT 0+10.0 Data5 INT 0+12.0 Data6 INT 0+14.0 Data7 INT 0+16.0 Data8 INT 0+18.0 Data9 INT 0=20.0 END_STRUCT 0+0.0 Status_Word INT+2.0 Data1 INT11+4.0 Data2 INT+6.0 Data3 INT+8.0 Data4 INT+10.0 Data5 INT+12.0 Data6 INT+14.0 Data7

18、INT+16.0 Data8 INT+18.0 Data9 INT=20.0 END_STRUCT+40 Data Array020*0.0 STRUCT+0.0 Status_Word INT 0+2.0 Data1 INT 0+4.0 Data2 INT 0+6.0 Data3 INT 0+8.0 Data4 INT 0+10.0 Data5 INT 0+12.0 Data6 INT 0+14.0 Data7 INT 0+16.0 Data8 INT 0+18.0 Data9 INT 0=20.0 END_STRUCT 0=440 END_STRUCT5、以上 FIFO 程序调用功能块和程序,均是可以通过 Siemens 公司提供的模拟运行软件 Siamtic Simulation 进行模拟 PLC 确认,可以正常运行没有问题。四、总结通过自己开发弥补西门子厂家提供的专用功能模块的不足,能更大限度的发挥西门子公司产品的软件开发优势。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 学术论文 > 大学论文

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报