熟女人妻水多爽中文字幕,国产精品鲁鲁鲁,隔壁的少妇2做爰韩国电影,亚洲最大中文字幕无码网站

技術頻道

娓娓工業
您現在的位置: 中國傳動網 > 技術頻道 > 技術百科 > 基于Siemens S7-300/400 PLC的FIFO功能實現

基于Siemens S7-300/400 PLC的FIFO功能實現

時間:2014-04-22 15:39:07來源:傳動網

導語:?在Siemens S7系列PLC開發軟件Simatic STEP7工具中,Siemens公司提供了兩個專用功能FC84 ATT和FC85 FIFO,通過這兩個FC功能完成對FIFO功能數據的寫入和導出,但是每次只能允許一字,也就兩字節長的數據。

摘要:本文詳細介紹了基于西門子S7-300/400PLC中的FIFO功能,并利用西門子S7系列PLC編程軟件SimaticSTEP7開發實現多字節的FIFO功能。

Abstract:ThispaperintroducesFIFOfunctionbasedSiemensS7-300/400PLC,andachievesseveralbyteFIFOfunctionbymakinguseofSiemensPLCProgrammingsoftwareSimaticSTEP7development.

關鍵詞:西門子S7-300/400PLC;FIFO;SimaticSTEP7

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

主要內容:

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

2、首先介紹Siemens公司提供的專用功能塊,FC84與FC85,并分別舉例

3、說明在設備間數據通訊,多余1個字節的數據需要同時進行FIFOBuffer,然后在下一工序中彈出來。介紹多字節FIFO功能的實現

4、SiemensPLC編程開發軟件SimaticSTEP7的介紹,編程開發同時20字節FIFO的程序,相關數據塊結構的說明,在程序中的調用FIFO功能塊。此外可以通過SimaticSimulation進行模擬確認。

5、總結。

一、前言

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

二、SiemensFC84ATT和FC85FIFO功能的介紹

1、FC84ATT

1.1、FC84ATT功能和構成介紹

FC84ATT是實現增加數據到FIFO功能的數據存儲區中,通過每次執行此指令實現把一字的數據增加到FIFO功能數據存儲區中,FIFO功能存儲區中以字為單位,具體組成如下:

l存儲區表中第一字為FIFO存儲區允許的最大數據存儲個數,即最多可以存儲多少個字的數據。

l存儲區表中第二字為FIFO存儲區當前已經存儲數據的個數,即已經存儲了多少個字的數據。

l存儲區表中從第三字開始為FIFO存儲區實際存儲的數據。

1.2、FC84ATT功能參數說明

通過SimaticSTEP7進行程序開發時,調用FC84ATT功能,出現如下圖:

從圖2-1中可以看到,FC84ATT共有四個參數,分別為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區域指針

1.3、舉例說明

如果信號M100.0的狀態為1(即被激活),FC84ATT功能被執行。在下面的例子中,增加的數據寫到FIFO表中的第五行,FIFO的容量也就是FIFO表中第二行由4變為5。如果FC84ATT被執行而且沒有錯誤發生,那么使能輸出ENO置為1,具體如下:

2、FC85FIFO

2.1、FC85FIFO功能和構成介紹

FC85FIFO是完成把FIFO表中的數據按照先進先出原則,依次讀出,以供使用,與FC84ATT配合使用,完成FIFO的寫進與讀出功能。通過每次執行此指令實現把一個字的數據從FIFO功能數據存儲區中讀出,FIFO功能存儲區中以字為單位,具體組成如下:

l存儲區表中第一字為FIFO存儲區允許的最大數據存儲個數,即最多可以存儲多少個字的數據。

l存儲區表中第二字為FIFO存儲區當前已經存儲數據的個數,即已經存儲了多少個字的數據。

l存儲區表中從第三字開始為FIFO存儲區實際存儲的數據,也是FIFO指針所指向的數據。

2.2、FC85FIFO功能參數說明

通過SimaticSTEP7進行程序開發時,調用FC85FIFO功能,出現如下圖:

圖2-2

從圖2-1中可以看到,FC85FIFO共有四個參數,分別為EN、ENO、TABLE和RET_VAL,在西門子資料中對其描述如下表2-2:

參數

聲明

數據類型

內存區域

功能描述

EN

輸入

布爾

I、Q、M、D、L

使能激活信號

ENO

輸出

布爾

I、Q、M、D、L

使能輸出

TABLE

輸入

指針

I、Q、M、D、

FIFO區域指針

RET_VAL

輸出

I、Q、M、D、L、P

讀出的數據

2.3、舉例說明

如果信號M100.0的狀態為1(即被激活),FC85FIFO功能被執行。在下面的例子中,從FIFO存儲區域中讀出的數據寫到RET_VAL指定的地址中,FIFO的容量也就是FIFO表中第二行由5變為4。同時整個FIFO中存儲的數據依次向上移動一行。如果FC85FIFO被執行而且沒有錯誤發生,那么使能輸出ENO被置為1。

三、多字節FIFO功能的實現

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

系列PLC的FIFO功能模塊,但是其只能每次寫入或讀出一個字節的數據,而實際上在很多情況下,每次均是一組數據需要運用FIFO功能來暫時存儲起來,那么在這種情形下就不能采用Siemens提供的標準功能FC84和FC85了,需要自己開發一可以實現多字節讀出寫入功能的FIFO指令。

2、SiemensSimaticSTEP7介紹

SiemensSimaticS7300/400系列PLC是Siemens公司主推的中、大型產品,也是當今世界上的主流產品。針對這兩個系列PLC開發軟件工件為SimaticSTEP7,此軟件有多個版本,目前已經發展到V5.4,采用次軟件可以實現開發、監控等功能。

3、多字節FIFO的實現

打開SimaticSTEP7軟件,新建一FB塊,如FB200DB200,然后進入FB100

進行編程,本文中以20字節為例,介紹如何開發實現FIFO功能具體見如下畫面:

圖3-1

源代碼如下:

FUNCTION_BLOCKFB100

TITLE=

//此功能塊用了完成20字節的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字節的數據從FIFO存儲區域中讀出

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字節的數據寫入FIFO存儲區表中

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、在程序中的調用

上面已經完成了FB100FIFO功能塊的編程開發,下面就是直接調用,設置

相關參數就可以使用此功能了,舉例如下:

新建FIFO數據源數據庫DB200,結構為

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程序調用功能塊和程序,均是可以通過Siemens公司提供的模擬運行軟件SiamticSimulation進行模擬PLC確認,可以正常運行沒有問題。

四、總結

通過自己開發彌補西門子廠家提供的專用功能模塊的不足,能更大限度的發揮西門子公司產品的軟件開發優勢。

標簽:

點贊

分享到:

上一篇:數控系統伺服驅動優化方法

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

中國傳動網版權與免責聲明:凡本網注明[來源:中國傳動網]的所有文字、圖片、音視和視頻文件,版權均為中國傳動網(www.hysjfh.com)獨家所有。如需轉載請與0755-82949061聯系。任何媒體、網站或個人轉載使用時須注明來源“中國傳動網”,違反者本網將追究其法律責任。

本網轉載并注明其他來源的稿件,均來自互聯網或業內投稿人士,版權屬于原版權人。轉載請保留稿件來源及作者,禁止擅自篡改,違者自負版權法律責任。

相關資訊

網站簡介|會員服務|聯系方式|幫助信息|版權信息|網站地圖|友情鏈接|法律支持|意見反饋|sitemap

傳動網-工業自動化與智能制造的全媒體“互聯網+”創新服務平臺

網站客服服務咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2025 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權所有
粵ICP備 14004826號 | 營業執照證書 | 不良信息舉報中心 | 粵公網安備 44030402000946號

主站蜘蛛池模板: 马尔康县| 无棣县| 博爱县| 遂溪县| 榆中县| 普兰店市| 甘南县| 四平市| 恩平市| 鱼台县| 阳朔县| 怀仁县| 阿拉善盟| 军事| 类乌齐县| 霍邱县| 丹阳市| 赤峰市| 高碑店市| 淮阳县| 沙河市| 江北区| 肥东县| 裕民县| 汝阳县| 鹤山市| 尼木县| 葵青区| 尼木县| 富蕴县| 峨边| 敖汉旗| 榆社县| 四平市| 洞头县| 十堰市| 宁河县| 藁城市| 西贡区| 石首市| 陈巴尔虎旗|