技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國(guó)傳動(dòng)網(wǎng) > 技術(shù)頻道 > 技術(shù)百科 > 基于Siemens S7-300/400 PLC的FIFO功能實(shí)現(xiàn)

基于Siemens S7-300/400 PLC的FIFO功能實(shí)現(xiàn)

時(shí)間:2014-04-22 15:39:07來(lái)源:傳動(dòng)網(wǎng)

導(dǎo)語(yǔ):?在Siemens S7系列PLC開(kāi)發(fā)軟件Simatic STEP7工具中,Siemens公司提供了兩個(gè)專用功能FC84 ATT和FC85 FIFO,通過(guò)這兩個(gè)FC功能完成對(duì)FIFO功能數(shù)據(jù)的寫(xiě)入和導(dǎo)出,但是每次只能允許一字,也就兩字節(jié)長(zhǎng)的數(shù)據(jù)。

摘要:本文詳細(xì)介紹了基于西門(mén)子S7-300/400PLC中的FIFO功能,并利用西門(mén)子S7系列PLC編程軟件SimaticSTEP7開(kāi)發(fā)實(shí)現(xiàn)多字節(jié)的FIFO功能。

Abstract:ThispaperintroducesFIFOfunctionbasedSiemensS7-300/400PLC,andachievesseveralbyteFIFOfunctionbymakinguseofSiemensPLCProgrammingsoftwareSimaticSTEP7development.

關(guān)鍵詞:西門(mén)子S7-300/400PLC;FIFO;SimaticSTEP7

Keywords:SiemensS7-300/400PLC;FIFO;SimaticSTEP7

主要內(nèi)容:

1、前言,提出為什么要介紹SiemensPLC中的FIFO功能

2、首先介紹Siemens公司提供的專用功能塊,F(xiàn)C84與FC85,并分別舉例

3、說(shuō)明在設(shè)備間數(shù)據(jù)通訊,多余1個(gè)字節(jié)的數(shù)據(jù)需要同時(shí)進(jìn)行FIFOBuffer,然后在下一工序中彈出來(lái)。介紹多字節(jié)FIFO功能的實(shí)現(xiàn)

4、SiemensPLC編程開(kāi)發(fā)軟件SimaticSTEP7的介紹,編程開(kāi)發(fā)同時(shí)20字節(jié)FIFO的程序,相關(guān)數(shù)據(jù)塊結(jié)構(gòu)的說(shuō)明,在程序中的調(diào)用FIFO功能塊。此外可以通過(guò)SimaticSimulation進(jìn)行模擬確認(rèn)。

5、總結(jié)。

一、前言

FIFO功能即FirstInputFirstOutput先進(jìn)先出,在很多情況下要用到此功能。以前此技術(shù)主要在計(jì)算機(jī)高級(jí)語(yǔ)言開(kāi)發(fā)和數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)中應(yīng)用,但隨著PLC技術(shù)的日益突飛猛進(jìn),需要通過(guò)PLC進(jìn)行數(shù)據(jù)傳送、緩存存儲(chǔ)的事件越來(lái)越多,尤其是在數(shù)據(jù)緩存過(guò)程中,對(duì)FIFO功能使用場(chǎng)合越來(lái)越多。西門(mén)子S7-300/400PLC是德國(guó)西門(mén)子公司的中型、大型PLC,也是當(dāng)今世界上工控行業(yè)的主流產(chǎn)品。在SiemensS7系列PLC開(kāi)發(fā)軟件SimaticSTEP7工具中,Siemens公司提供了兩個(gè)專用功能FC84ATT和FC85FIFO,通過(guò)這兩個(gè)FC功能完成對(duì)FIFO功能數(shù)據(jù)的寫(xiě)入和導(dǎo)出,但是每次只能允許一字,也就兩字節(jié)長(zhǎng)的數(shù)據(jù)。為了實(shí)現(xiàn)每次多字節(jié)的FIFO功能,需要用戶自己開(kāi)發(fā)相應(yīng)的功能塊FB來(lái)實(shí)現(xiàn),在本文中就介紹了實(shí)現(xiàn)每次20字節(jié)FIFO功能FB200功能塊的代碼,以及實(shí)際應(yīng)用舉例。

二、SiemensFC84ATT和FC85FIFO功能的介紹

1、FC84ATT

1.1、FC84ATT功能和構(gòu)成介紹

FC84ATT是實(shí)現(xiàn)增加數(shù)據(jù)到FIFO功能的數(shù)據(jù)存儲(chǔ)區(qū)中,通過(guò)每次執(zhí)行此指令實(shí)現(xiàn)把一字的數(shù)據(jù)增加到FIFO功能數(shù)據(jù)存儲(chǔ)區(qū)中,F(xiàn)IFO功能存儲(chǔ)區(qū)中以字為單位,具體組成如下:

l存儲(chǔ)區(qū)表中第一字為FIFO存儲(chǔ)區(qū)允許的最大數(shù)據(jù)存儲(chǔ)個(gè)數(shù),即最多可以存儲(chǔ)多少個(gè)字的數(shù)據(jù)。

l存儲(chǔ)區(qū)表中第二字為FIFO存儲(chǔ)區(qū)當(dāng)前已經(jīng)存儲(chǔ)數(shù)據(jù)的個(gè)數(shù),即已經(jīng)存儲(chǔ)了多少個(gè)字的數(shù)據(jù)。

l存儲(chǔ)區(qū)表中從第三字開(kāi)始為FIFO存儲(chǔ)區(qū)實(shí)際存儲(chǔ)的數(shù)據(jù)。

1.2、FC84ATT功能參數(shù)說(shuō)明

通過(guò)SimaticSTEP7進(jìn)行程序開(kāi)發(fā)時(shí),調(diào)用FC84ATT功能,出現(xiàn)如下圖:

從圖2-1中可以看到,F(xiàn)C84ATT共有四個(gè)參數(shù),分別為EN、DATA、TABLE和ENO,在四門(mén)子資料中對(duì)其描述如下表2-1:

參數(shù)

聲明

數(shù)據(jù)類型

內(nèi)存區(qū)域

功能描述

EN

輸入

布爾

I、Q、M、D、L

使能激活信號(hào)

ENO

輸出

布爾

I、Q、M、D、L

使能輸出

DATA

輸入

Word

I、Q、M、D、L、P靜態(tài)存儲(chǔ)區(qū)域

要增加到FIFO的數(shù)據(jù)

TABLE

輸入

指針

I、Q、M、D、

FIFO區(qū)域指針

1.3、舉例說(shuō)明

如果信號(hào)M100.0的狀態(tài)為1(即被激活),F(xiàn)C84ATT功能被執(zhí)行。在下面的例子中,增加的數(shù)據(jù)寫(xiě)到FIFO表中的第五行,F(xiàn)IFO的容量也就是FIFO表中第二行由4變?yōu)?。如果FC84ATT被執(zhí)行而且沒(méi)有錯(cuò)誤發(fā)生,那么使能輸出ENO置為1,具體如下:

2、FC85FIFO

2.1、FC85FIFO功能和構(gòu)成介紹

FC85FIFO是完成把FIFO表中的數(shù)據(jù)按照先進(jìn)先出原則,依次讀出,以供使用,與FC84ATT配合使用,完成FIFO的寫(xiě)進(jìn)與讀出功能。通過(guò)每次執(zhí)行此指令實(shí)現(xiàn)把一個(gè)字的數(shù)據(jù)從FIFO功能數(shù)據(jù)存儲(chǔ)區(qū)中讀出,F(xiàn)IFO功能存儲(chǔ)區(qū)中以字為單位,具體組成如下:

l存儲(chǔ)區(qū)表中第一字為FIFO存儲(chǔ)區(qū)允許的最大數(shù)據(jù)存儲(chǔ)個(gè)數(shù),即最多可以存儲(chǔ)多少個(gè)字的數(shù)據(jù)。

l存儲(chǔ)區(qū)表中第二字為FIFO存儲(chǔ)區(qū)當(dāng)前已經(jīng)存儲(chǔ)數(shù)據(jù)的個(gè)數(shù),即已經(jīng)存儲(chǔ)了多少個(gè)字的數(shù)據(jù)。

l存儲(chǔ)區(qū)表中從第三字開(kāi)始為FIFO存儲(chǔ)區(qū)實(shí)際存儲(chǔ)的數(shù)據(jù),也是FIFO指針?biāo)赶虻臄?shù)據(jù)。

2.2、FC85FIFO功能參數(shù)說(shuō)明

通過(guò)SimaticSTEP7進(jìn)行程序開(kāi)發(fā)時(shí),調(diào)用FC85FIFO功能,出現(xiàn)如下圖:

圖2-2

從圖2-1中可以看到,F(xiàn)C85FIFO共有四個(gè)參數(shù),分別為EN、ENO、TABLE和RET_VAL,在西門(mén)子資料中對(duì)其描述如下表2-2:

參數(shù)

聲明

數(shù)據(jù)類型

內(nèi)存區(qū)域

功能描述

EN

輸入

布爾

I、Q、M、D、L

使能激活信號(hào)

ENO

輸出

布爾

I、Q、M、D、L

使能輸出

TABLE

輸入

指針

I、Q、M、D、

FIFO區(qū)域指針

RET_VAL

輸出

I、Q、M、D、L、P

讀出的數(shù)據(jù)

2.3、舉例說(shuō)明

如果信號(hào)M100.0的狀態(tài)為1(即被激活),F(xiàn)C85FIFO功能被執(zhí)行。在下面的例子中,從FIFO存儲(chǔ)區(qū)域中讀出的數(shù)據(jù)寫(xiě)到RET_VAL指定的地址中,F(xiàn)IFO的容量也就是FIFO表中第二行由5變?yōu)?。同時(shí)整個(gè)FIFO中存儲(chǔ)的數(shù)據(jù)依次向上移動(dòng)一行。如果FC85FIFO被執(zhí)行而且沒(méi)有錯(cuò)誤發(fā)生,那么使能輸出ENO被置為1。

三、多字節(jié)FIFO功能的實(shí)現(xiàn)

1、從前面FC84ATT和FC85FIFO的說(shuō)明中可以看出,雖然Siemens提供了針對(duì)S7

系列PLC的FIFO功能模塊,但是其只能每次寫(xiě)入或讀出一個(gè)字節(jié)的數(shù)據(jù),而實(shí)際上在很多情況下,每次均是一組數(shù)據(jù)需要運(yùn)用FIFO功能來(lái)暫時(shí)存儲(chǔ)起來(lái),那么在這種情形下就不能采用Siemens提供的標(biāo)準(zhǔn)功能FC84和FC85了,需要自己開(kāi)發(fā)一可以實(shí)現(xiàn)多字節(jié)讀出寫(xiě)入功能的FIFO指令。

2、SiemensSimaticSTEP7介紹

SiemensSimaticS7300/400系列PLC是Siemens公司主推的中、大型產(chǎn)品,也是當(dāng)今世界上的主流產(chǎn)品。針對(duì)這兩個(gè)系列PLC開(kāi)發(fā)軟件工件為SimaticSTEP7,此軟件有多個(gè)版本,目前已經(jīng)發(fā)展到V5.4,采用次軟件可以實(shí)現(xiàn)開(kāi)發(fā)、監(jiān)控等功能。

3、多字節(jié)FIFO的實(shí)現(xiàn)

打開(kāi)SimaticSTEP7軟件,新建一FB塊,如FB200DB200,然后進(jìn)入FB100

進(jìn)行編程,本文中以20字節(jié)為例,介紹如何開(kāi)發(fā)實(shí)現(xiàn)FIFO功能具體見(jiàn)如下畫(huà)面:

圖3-1

源代碼如下:

FUNCTION_BLOCKFB100

TITLE=

//此功能塊用了完成20字節(jié)的FIFO功能

AUTHOR:Hylotus

VERSION:0.1

KNOW_HOW_PROTECT

VAR_INPUT

SOURCE_DB:BLOCK_DB;

INPUT:BOOL;

OUTPUT:BOOL;

SIZE:INT;

END_VAR

VAR_OUTPUT

DONE_IN:BOOL;

DONE_OUT:BOOL;

ERROR:BOOL;

FULL:BOOL;

EMPTY:BOOL;

END_VAR

VAR_IN_OUT

LOCATION:INT;

END_VAR

VAR

IN_START:BOOL;

IN_ACTIVE:BOOL;

OUT_START:BOOL;

OUT_ACTIVE:BOOL;

COUNT:INT;

RET_VAL1:INT;

END_VAR

BEGIN

NETWORK

TITLE=

A#INPUT;

AN#IN_ACTIVE;

=#IN_START;

A#INPUT;

=#IN_ACTIVE;

A#OUTPUT;

AN#OUT_ACTIVE;

=#OUT_START;

A#OUTPUT;

=#OUT_ACTIVE;

AN#INPUT;

AN#OUTPUT;

JCEND1;

NETWORK

TITLE=OUTPUTFIFO

//20字節(jié)的數(shù)據(jù)從FIFO存儲(chǔ)區(qū)域中讀出

AN#OUTPUT;

O#DONE_OUT;

JCIN_1;

AN#OUT_START;

JCOP_1;

OPN#SOURCE_DB;

LDW#16#0;

TDBD40;

TDBD44;

TDBD48;

TDBD52;

TDBD56;

TDBD60;

TDBD64;

TDBD68;

TDBD72;

TDBD76;

L#LOCATION;

L0;

<=I;

S#EMPTY;

JCEROR;

OPN#SOURCE_DB;

CALL"BLKMOV"(

SRCBLK:=P#DBX80.0BYTE40,

RET_VAL:=#RET_VAL1,

DSTBLK:=P#DBX40.0BYTE40);

L#RET_VAL1;

L0;

<>I;

JCEROR;

L0;

T#COUNT;

OP_1:L#LOCATION;

L0;

<=I;

JCEROR;

L#LOCATION;

L#COUNT;

<=I;

JCOP_3;

L#COUNT;

L2;

+I;

ITD;

LP#40.0;

*D;

LAR1;

OPN#SOURCE_DB;

LDBD[AR1,P#40.0];

TDBD[AR1,P#0.0];

LDBD[AR1,P#44.0];

TDBD[AR1,P#4.0];

LDBD[AR1,P#48.0];

TDBD[AR1,P#8.0];

LDBD[AR1,P#52.0];

TDBD[AR1,P#12.0];

LDBD[AR1,P#56.0];

TDBD[AR1,P#16.0];

LDBD[AR1,P#60.0];

TDBD[AR1,P#20.0];

LDBD[AR1,P#64.0];

TDBD[AR1,P#24.0];

LDBD[AR1,P#68.0];

TDBD[AR1,P#28.0];

LDBD[AR1,P#72.0];

TDBD[AR1,P#32.0];

LDBD[AR1,P#76.0];

TDBD[AR1,P#36.0];

L#COUNT;

L1;

+I;

T#COUNT;

L#SIZE;

L-1;

+I;

L#COUNT;

<=I;

JCOP_2;

JUEND2;

OP_2:LW#16#0;

TDBD[AR1,P#40.0];

TDBD[AR1,P#44.0];

TDBD[AR1,P#48.0];

TDBD[AR1,P#52.0];

TDBD[AR1,P#56.0];

TDBD[AR1,P#60.0];

TDBD[AR1,P#64.0];

TDBD[AR1,P#68.0];

TDBD[AR1,P#72.0];

TDBD[AR1,P#76.0];

OP_3:SET;

S#DONE_OUT;

L#LOCATION;

L-1;

+I;

T#LOCATION;

JUEND2;

NETWORK

TITLE=INPUTFIFO

//20字節(jié)的數(shù)據(jù)寫(xiě)入FIFO存儲(chǔ)區(qū)表中

IN_1:AN#IN_START;

JCEND2;

L#LOCATION;

L#SIZE;

>=I;

S#FULL;

JCEROR;

L#LOCATION;

L2;

+I;

ITD;

LP#40.0;

*D;

LAR1;

OPN#SOURCE_DB;

LDBD0;

TDBD[AR1,P#0.0];

LDBD4;

TDBD[AR1,P#4.0];

LDBD8;

TDBD[AR1,P#8.0];

LDBD12;

TDBD[AR1,P#12.0];

LDBD16;

TDBD[AR1,P#16.0];

LDBD20;

TDBD[AR1,P#20.0];

LDBD24;

TDBD[AR1,P#24.0];

LDBD28;

TDBD[AR1,P#28.0];

LDBD32;

TDBD[AR1,P#32.0];

LDBD36;

TDBD[AR1,P#36.0];

L#LOCATION;

L1;

+I;

T#LOCATION;

SET;

S#DONE_IN;

JUEND2;

NETWORK

TITLE=

EROR:SET;

=#ERROR;

JUEND2;

END1:CLR;

=#DONE_IN;

=#DONE_OUT;

=#ERROR;

=#EMPTY;

=#FULL;

END2:NOP0;

END_FUNCTION_BLOCK

4、在程序中的調(diào)用

上面已經(jīng)完成了FB100FIFO功能塊的編程開(kāi)發(fā),下面就是直接調(diào)用,設(shè)置

相關(guān)參數(shù)就可以使用此功能了,舉例如下:

新建FIFO數(shù)據(jù)源數(shù)據(jù)庫(kù)DB200,結(jié)構(gòu)為

Address

Name

Type

Initial value

Comment

0.0

 

STRUCT

 

 

+0.0

IN_Buffer

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

 

+0.0

Status_Word

INT

 

 

+2.0

Data1

INT

 

 

+4.0

Data2

INT

 

 

+6.0

Data3

INT

 

 

+8.0

Data4

INT

 

 

+10.0

Data5

INT

 

 

+12.0

Data6

INT

 

 

+14.0

Data7

INT

 

 

+16.0

Data8

INT

 

 

+18.0

Data9

INT

 

 

=20.0

 

END_STRUCT

 

 

+40

Data

Array[0..20]

 

 

*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_STRUCT

 

 

5、以上FIFO程序調(diào)用功能塊和程序,均是可以通過(guò)Siemens公司提供的模擬運(yùn)行軟件SiamticSimulation進(jìn)行模擬PLC確認(rèn),可以正常運(yùn)行沒(méi)有問(wèn)題。

四、總結(jié)

通過(guò)自己開(kāi)發(fā)彌補(bǔ)西門(mén)子廠家提供的專用功能模塊的不足,能更大限度的發(fā)揮西門(mén)子公司產(chǎn)品的軟件開(kāi)發(fā)優(yōu)勢(shì)。

標(biāo)簽:

點(diǎn)贊

分享到:

上一篇:數(shù)控系統(tǒng)伺服驅(qū)動(dòng)優(yōu)化方法

下一篇:Delta機(jī)器人在瓷磚分揀包裝自...

中國(guó)傳動(dòng)網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來(lái)源:中國(guó)傳動(dòng)網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國(guó)傳動(dòng)網(wǎng)(m.u63ivq3.com)獨(dú)家所有。如需轉(zhuǎn)載請(qǐng)與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用時(shí)須注明來(lái)源“中國(guó)傳動(dòng)網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明其他來(lái)源的稿件,均來(lái)自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請(qǐng)保留稿件來(lái)源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。

相關(guān)資訊

網(wǎng)站簡(jiǎn)介|會(huì)員服務(wù)|聯(lián)系方式|幫助信息|版權(quán)信息|網(wǎng)站地圖|友情鏈接|法律支持|意見(jiàn)反饋|sitemap

傳動(dòng)網(wǎng)-工業(yè)自動(dòng)化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務(wù)平臺(tái)

網(wǎng)站客服服務(wù)咨詢采購(gòu)咨詢媒體合作

Chuandong.com Copyright ?2005 - 2024 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權(quán)所有
粵ICP備 14004826號(hào) | 營(yíng)業(yè)執(zhí)照證書(shū) | 不良信息舉報(bào)中心 | 粵公網(wǎng)安備 44030402000946號(hào)