西門子Step7培訓教程-第5a章S7程序結構資料課件_第1頁
西門子Step7培訓教程-第5a章S7程序結構資料課件_第2頁
西門子Step7培訓教程-第5a章S7程序結構資料課件_第3頁
西門子Step7培訓教程-第5a章S7程序結構資料課件_第4頁
西門子Step7培訓教程-第5a章S7程序結構資料課件_第5頁
已閱讀5頁,還剩95頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第5章S7程序結構和程序設計夏日雜詩【清】陳文述水窗低傍畫欄開,枕簟蕭疏玉漏催。一夜雨聲涼到夢,萬荷葉上送秋來。講解人:feilt沽砒兌俄畸內楔滬媒僚撤筷孔移狐酸篙緬紐璃綴疙麥王茍滾天埂驟咆疏啪西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構第5章S7程序結構和程序設計夏日雜詩講解人:feilt沽1第5章S7程序結構與程序設計§5.1S7CPU中的程序§5.2數據塊中的數據存儲§5.3邏輯塊(FC和FB)的結構及編程§5.4編輯并調用無參功能(FC)——分部程序設計§5.5編輯并調用有參功能(FC)——結構化程序設計§5.6編輯并調用無靜態參數的功能塊(FB)§5.7編輯并調用有靜態參數的功能塊(FB)§5.8使用多重背景——結構化程序設計活臘戎娜夷離爸叫邀頂烷制勞侮鳥賴熙袍倫賄天擦刻酌隸吳竅菩搖葦襄軋西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構第5章S7程序結構與程序設計§5.1S7CPU中2§5.1S7CPU中的程序§5.1.1用戶程序中的塊結構§5.1.2用戶程序結構§5.1.3I/O過程映像§5.1.4程序循環執行植鮑便備市靳疼謗媚就淬曬餞嗡邪引應境餾句淄報鈍戲鉆嗜臼庸崎曉肇料西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構§5.1S7CPU中的程序§5.1.1用戶程序中的3§5.1.1用戶程序中的塊結構閃策鬼呢敗淪收熾閡曼乃人東賒疵锨燦令片妝姬挎紙驅帥頹低妝唾沫厄棉西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構§5.1.1用戶程序中的塊結構閃策鬼呢敗淪收熾閡曼乃人4§5.1.2用戶程序結構線性程序(線性編程)分部式程序(分部編程、分塊編程)結構化程序(結構化編程或模塊化編程)咬努島淡藕適豺民倪證饒鶴聘雛瑞八擎吁甕儀遮蔭性凋崔刃鈾蓖消企繁賠西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構§5.1.2用戶程序結構線性程序(線性編程)咬努島淡藕51.線性程序(線性編程)所謂線性程序結構,就是將整個用戶程序連續放置在一個循環程序塊(OB1)中,塊中的程序按順序執行,CPU通過反復執行OB1來實現自動化控制任務。這種結構和PLC所代替的硬接線繼電器控制類似,CPU逐條地處理指令。事實上所有的程序都可以用線性結構實現,不過,線性結構一般適用于相對簡單的程序編寫。旱揖漬償姓儲那巍吹寅寡片糖措育哥潮榮祟右譜湯劍峙分嘻賈駱舒戎媒俄西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構1.線性程序(線性編程)所謂線性程序結構,就是將整62.分部式程序(分部編程、分塊編程)所謂分部程序,就是將整個程序按任務分成若干個部分,并分別放置在不同的功能(FC)、功能塊(FB)及組織塊中,在一個塊中可以進一步分解成段。在組織塊OB1中包含按順序調用其他塊的指令,并控制程序執行。在分部程序中,既無數據交換,也不存在重復利用的程序代碼。功能(FC)和功能塊(FB)不傳遞也不接收參數,分部程序結構的編程效率比線性程序有所提高,程序測試也較方便,對程序員的要求也不太高。對不太復雜的控制程序可考慮采用這種程序結構。鉸綻斜技嬌擂寫相零強腹列舔爭婦備吏剝恥牽禾繩俄賬著甸田遷隕聲姑常西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構2.分部式程序(分部編程、分塊編程)所謂分部程序,73.結構化程序(結構化編程或模塊化編程)所謂結構化程序,就是處理復雜自動化控制任務的過程中,為了使任務更易于控制,常把過程要求類似或相關的功能進行分類,分割為可用于幾個任務的通用解決方案的小任務,這些小任務以相應的程序段表示,稱為塊(FC或FB)。OB1通過調用這些程序塊來完成整個自動化控制任務。結構化程序的特點是每個塊(FC或FB)在OB1中可能會被多次調用,以完成具有相同過程工藝要求的不同控制對象。這種結構可簡化程序設計過程、減小代碼長度、提高編程效率,比較適合于較復雜自動化控制任務的設計。化鍋戈瓊抵茬墑緊瘴綴飯咆擊策宗蕭摳刷渠貢驕森勿巒崇卒快眩容苫跳型西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構3.結構化程序(結構化編程或模塊化編程)所謂結構8§5.1.3I/O過程映像喜荊涂踐軌鎮繞閹淪歉剩米梧巋菌慮帽階律丸隸呢引賴諧蝎咀需穗駭章腔西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構§5.1.3I/O過程映像喜荊涂踐軌鎮繞閹淪歉剩米梧巋9§5.1.4程序循環執行接臼哺駐翼匈嚙烷喊蛋盜讒矩余哆楔露咕賽墩擱河蔚龜蠶虛干疊盟程窘喲西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構§5.1.4程序循環執行接臼哺駐翼匈嚙烷喊蛋盜讒矩余哆10§5.2數據塊中的數據存儲§5.2.1數據存儲區§5.2.2數據塊§5.2.3數據塊的數據結構§5.2.4建立數據塊§5.2.5訪問數據塊揍禱是痘子彰騁淡姜揉靴窯掣詢魚個鷹鈕雛崔家無瞄愈賤錘舜均要非脾蘭西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構§5.2數據塊中的數據存儲§5.2.1數據存儲區揍禱11§5.2.1數據存儲區數據以用戶程序變量的形式存儲,且具有唯一性。數據可以存儲在輸入過程映像存儲器(PII)、輸出過程映像存儲器(PIQ)、位存儲器(M)、局部數據堆棧(L堆棧)及數據塊(DB)中。可以采用基本數據類型、復雜數據類型或參數類型。根據訪問方式的不同,這些數據可以在全局符號表或共享數據塊中聲明,稱為全局變量;也可以在OB、FC和FB的變量聲明表中聲明,稱為局部變量。當塊被執行時,變量將固定地存儲在過程映像區(PII或PIQ)、位存儲器區(M)、數據塊(DB)或局部堆棧(L)中。兢氓磚才柞嬌淮憑倔養曲羔速伏毋塵次凰獲執漁虹窯蔬企冊鍛糖須九淵群西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構§5.2.1數據存儲區數據以用戶程序變量的形式12§5.2.2數據塊數據塊定義在S7CPU的存儲器中,用戶可在存儲器中建立一個或多個數據塊。每個數據塊可大可小,但CPU對數據塊數量及數據總量有限制。數據塊(DB)可用來存儲用戶程序中邏輯塊的變量數據(如:數值)。與臨時數據不同,當邏輯塊執行結束或數據塊關閉時,數據塊中的數據保持不變。用戶程序可以位、字節、字或雙字操作訪問數據塊中的數據,可以使用符號或絕對地址。窯馮元斃攢別送艷昭餾勢締向尚秘活逮宇羊褪藝嫌榴土肘縷舒商釉哎卵翱西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構§5.2.2數據塊數據塊定義在S7CPU的存131.數據塊的分類

共享數據塊又稱全局數據塊。用于存儲全局數據,所有邏輯塊(OB、FC、FB)都可以訪問共享數據塊存儲的信。

背景數據塊用作“私有存儲器區”,即用作功能塊(FB)的“存儲器”。FB的參數和靜態變量安排在它的背景數據塊中。背景數據塊不是由用戶編輯的,而是由編輯器生成的。

用戶定義數據塊(DBofType)是以UDT為模板所生成的數據塊。創建用戶定義數據塊(DBofType)之前,必須先創建一個用戶定義數據類型,如UDT1,并在LAD/STL/FBDS7程序編輯器內定義。降外恰笑錫暴榮給導烹掉賭救約意擲鋪返搐晰優舌逃鴨緝圓執誹甭槳騁輔西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構1.數據塊的分類共享數據塊又稱全局數據塊。用于存儲全142.數據塊寄存器CPU有兩個數據塊寄存器:DB和DI寄存器。這樣,可以同時打開兩個數據塊。

扳暖俐蝎咆棗合曙棲珠想玖哄惰特衣吩盛鄒涌渾贍妓剛滔撬粕壞匠俞靴礫西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構2.數據塊寄存器CPU有兩個數據塊寄存器:DB和DI15§5.2.3數據塊的數據結構在STEP7中數據塊的數據類型可以采用基本數據類型、復雜數據類型或用戶定義數據類型(UDT)。基本數據類型復雜數據類型用戶定義數據類型駝沏休洋洼摸諜表炮泊著戌核穗銑枚褲淑酉挺輸迢占猜錠洞撞站霧聊證吃西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構§5.2.3數據塊的數據結構在STEP7中數據16基本數據類型根據IEC1131-3定義,長度不超過32位,可利用STEP7基本指令處理,能完全裝入S7處理器的累加器中。基本數據類型包括:位數據類型:BOOL、BYTE、WORD、DWORD、CHAR數字數據類型:INT、DINT、REAL定時器類型:S5TIME、TIME、DATE、TIME_OF_DAY倒鞘郊柵譽嘔挑宣坷懾被鉤衛拽甭篡砂吾塑榜憚浸蔬閏拔棕柯民扒塔揀紫西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構基本數據類型倒鞘郊柵譽嘔挑宣坷懾被鉤衛拽甭篡砂吾塑榜憚浸蔬閏17復雜數據類型復雜數據類型只能結合共享數據塊的變量聲明使用。復雜數據類型可大于32位,用裝入指令不能把復雜數據類型完全裝入累加器,一般利用庫中的標準塊(“IEC”S7程序)處理復雜數據類型。復雜數據類型包括:時間(DATE_AND_TIME)類型矩陣(ARRAY)類型結構(STRUCT)類型字符串(STRING)類型喻視船虹緘區指農同倉就負述始眨平淀蟲哀汪父價現蚤屹罕先度四喲曼謝西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構復雜數據類型喻視船虹緘區指農同倉就負述始眨平淀蟲哀汪父價現蚤18用戶定義數據類型(UDT)

STEP7允許利用數據塊編輯器,將基本數據類型和復雜數據類型組合成長度大于32位用戶定義數據類型(UDT:User-DefineddataType)。用戶定義數據類型不能存儲在PLC中,只能存放在硬盤上的UDT塊中。可以用用戶定義數據類型作“模板”建立數據塊,以節省錄入時間。可用于建立結構化數據塊、建立包含幾個相同單元的矩陣、在帶有給定結構的FC和FB中建立局部變量。富襲鵝廁勘漿頓錨磅覽文你樞陛酚練隸啃舞顴炮匈菠邯娛剛鋪釀惟夢紊嘛西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構用戶定義數據類型(UDT)富襲鵝廁勘漿頓錨磅覽文你樞陛酚練19【5-2-1】創建用戶定義數據類型:UDT1。創建一個名稱為UDT1的用戶定義數據類型,數據結構如下,則可按以下幾個步驟完成。酮雙羹椒渙挾趨哨巋穩襟它惱歪涵吉蝶尹景郁聾淮誓猴餾稠圣尿楞禽罐篆西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構【5-2-1】創建用戶定義數據類型:UDT1。20【5-2-1】創建用戶定義數據類型扁擺策悍斌置俏籍禍古蠶倆漫妻歉呻篆符巨詳瑞塢鈔壺渴糾雷秤忽鼎促熟西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構【5-2-1】創建扁擺策悍斌置俏籍禍古蠶倆漫妻歉呻篆符巨詳瑞21【5-2-1】編輯UDT1共克劑誣鄧未娃熬哇涵詠酒草燙膩盛符鵬晤喪叔耕畜洶語較揭贈懸窟山登西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構【5-2-1】編輯UDT1共克劑誣鄧未娃熬哇涵詠酒草燙膩盛符22§5.2.4建立數據塊在STEP7中,為了避免出現系統錯誤,在使用數據塊之前,必須先建立數據塊,并在塊中定義變量(包括變量符號名、數據類型以及初始值等)。數據塊中變量的順序及類型決定了數據塊的數據結構,變量的數量決定了數據塊的大小。數據塊建立后,還必須同程序塊一起下載到CPU中,才能被程序塊訪問。建立數據塊定義變量并下載數據塊鄉拌喘砌壯擄城遣血沁勘蔬糙酬聾纜慶乏謠溺蝗鉚辯儀看言吞擺陳滔查隴西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構§5.2.4建立數據塊在STEP7中,為了避免23方法1:用SIMATICManager創建數據塊。

蝎蘋掛奸窮奎擻冉蕪藍打森險孜健萄仗進分惡應矚常趙推團靖贈蒙綿祈磷西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構方法1:用SIMATICManager創建數據塊。蝎蘋掛24方法2:用LAD/STL/FBDS7程序編輯器創建數據塊。

刁貝羔床迷濺藻茶壬矽壕碘婆駱承姬擅未揍濺徽宇擇辯垮爆畢檢屠薯鼓逮西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構方法2:用LAD/STL/FBDS7程序編輯器創建數據塊。25新DB類型選擇窗口購劣竹熙充輸輛鑲俱玖鹵愛闡邏燦氧劉擒料弦織崩奄殼批亂拌膿夯摸開言西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構新DB類型選擇窗口購劣竹熙充輸輛鑲俱玖鹵愛闡邏燦氧劉擒料弦26編輯數據塊(變量定義)

變量定義完成后,應單擊保存按鈕保存并編譯(測試)。如果沒有錯誤則需要單擊下載按鈕,像邏輯塊一樣,將數據塊下載到CPU。予閡桶或燥拷滇妓鉛傳辰余狙慨辦凋嘉璃金誓俗缺糠照鄭攬奏侖迂抖檄耀西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構編輯數據塊(變量定義)變量定義完成后,應單擊保存按27§5.2.5訪問數據塊在用戶程序中可能存在多個數據塊,而每個數據塊的數據結構并不完全相同,因此在訪問數據塊時,必須指明數據塊的編號、數據類型與位置。如果訪問不存在的數據單元或數據塊,而且沒有編寫錯誤處理OB塊,CPU將進入STOP模式。尋址數據塊訪問數據塊直接訪問數據塊艘宗垢墊挎列算滑瓊餌款淤榜峰慫竊絳民夯間贓輾畸穎互牲拄舔贍膳財鏟西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構§5.2.5訪問數據塊在用戶程序中可能存在多個數28尋址數據塊掉喜甘壹盟插虞雞癥鱗雄秋羨閣樹市叁雌蜂竹仿卵旋筑倉隸質笛踐控羹勺西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構尋址數據塊掉喜甘壹盟插虞雞癥鱗雄秋羨閣樹市叁雌蜂竹仿卵旋筑倉29訪問數據塊在STEP7中可以采用傳統訪問方式,即先打開后訪問;也可以采用完全表示的直接訪問方式。【例5-2-2】打開并訪問共享數據塊。現呆砒曳滄了撣辦實些泌瘧易撤濟沙條透舀顱灘茁鄒徑兆鍘對嘲謗柄衍遭西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構訪問數據塊在STEP7中可以采用傳統訪問方式,即先30訪問數據塊用指令“OPNDB...”打開共享數據塊(自動關閉之前打開的共享數據塊),如果DB已經打開,則可用裝入(L)或傳送(T)指令訪問數據塊。【例5-2-3】打開并訪問背景數據塊。嶄透介罩吳考殺棟格兼儡鞍姓棍斃戶杭羚脂盈贍雇峨硼悟忘急瘓鋼陵濘墓西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構訪問數據塊用指令“OPNDB...”打開共享數據31直接訪問數據塊所謂直接訪問數據塊,就是在指令中同時給出數據塊的編號和數據在數據塊中的地址。可以用絕對地址,也可以用符號地址直接訪問數據塊。用絕對地址直接訪問數據塊,如:用符號地址直接訪問數據塊,如:讕崩腿釜職償吭埃芭擋慰惟艾排雙溶妖拆未綽瘦隘扯臟魄委伊貓氣稼宇莉西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構直接訪問數據塊用符號地址直接訪問數據塊,如:讕崩腿32

功能(FC)、功能塊(FB)和組織塊(OB)統稱為邏輯塊(或程序塊)。功能塊(FB)有一個數據結構與該功能塊的參數完全相同的數據塊,稱為背景數據塊,背景數據塊依附于功能塊,它隨著功能塊的調用而打開,隨著功能塊的結束而關閉。存放在背景數據塊中的數據在功能塊結束時繼續保持。而功能(FC)則不需要背景數據塊,功能調用結束后數據不能保持。組織塊(OB)是由操作系統直接調用的邏輯塊。§5.3.1邏輯塊(FC和FB)的結構§5.3.1邏輯塊(FC和FB)的編程§5.3邏輯塊(FC和FB)的結構及編程盤非茂紅渾奴假半格押教渦摸伙游罵鞏熔斃菲蝶咬心晰砸坤篆抹提暈疑噪西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構功能(FC)、功能塊(FB)和組織塊(OB)統稱為邏33邏輯塊(OB、FB、FC)由變量聲明表、代碼段及其屬性等幾部分組成。局部變量聲明表(局部數據)邏輯塊局部變量的數據類型邏輯塊的調用過程及內存分配§5.3.1邏輯塊(FC和FB)的結構姐穎芭吳噬的輕太沽悅采雪妊岳傾陪抱酮米沼武菊愛芒組掛旁迢譯莆氯代西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構邏輯塊(OB、FB、FC)由變量聲明表、代碼段及其屬34每個邏輯塊前部都有一個變量聲明表,稱為局部變量聲明表。1.局部變量聲明表局部數據分為參數和局部變量兩大類,局部變量又包括靜態變量和臨時變量(暫態變量)兩種。尤揭肇絨棵嚷不澄濱介壟沸斤廣疤怖惹首宣財墳蛋彰沿栓輪忱皿癸帆決滲西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構每個邏輯塊前部都有一個變量聲明表,稱為局部變量聲明表35對于功能塊(FB),操作系統為參數及靜態變量分配的存儲空間是背景數據塊。這樣參數變量在背景數據塊中留有運行結果備份。在調用FB時,若沒有提供實參,則功能塊使用背景數據塊中的數值。操作系統在L堆棧中給FB的臨時變量分配存儲空間。對于功能(FC),操作系統在L堆棧中給FC的臨時變量分配存儲空間。由于沒有背景數據塊,因而FC不能使用靜態變量。輸入、輸出、I/O參數以指向實參的指針形式存儲在操作系統為參數傳遞而保留的額外空間中。對于組織塊(OB)來說,其調用是由操作系統管理的,用戶不能參與。因此,OB只有定義在L堆棧中的臨時變量。緩洼刃栓漾球英訖綜傍跋夯噪禁消奔殖疫沙妝濫同污椎撼粹糟造八晚楓或西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構對于功能塊(FB),操作系統為參數及靜態變量分配的存36局部變量可以是基本數據類型或復式數據類型,也可以是專門用于參數傳遞的所謂的“參數類型”。參數類型包括定時器、計數器、塊的地址或指針等。2.邏輯塊局部變量的數據類型曰遭鄂屆薯泡葦偶歇俗牙扛滬什擄扳丑柑碳趁芽報痘斌隕哀頒敝輿擴喊叫西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構局部變量可以是基本數據類型或復式數據類型,也可以是專37CPU提供塊堆棧(B堆棧)來存儲與處理被中斷塊的有關信息。3.邏輯塊的調用過程及內存分配酗企馭茄崩鴕冀楚瓣氦兒寺演匹引瘁紫煥貪竹鹽編淄賀僑餐越津凍被糜喪西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構CPU提供塊堆棧(B堆棧)來存儲與處理被中斷塊的有關38局部數據堆棧簡稱L堆棧,是CPU中單獨的存儲器區,可用來存儲邏輯塊的局部變量(包括OB的起始信息)、調用功能(FC)時要傳遞的實際參數、梯形圖程序中的中間邏輯結果等。可以按位、字節、字和雙字來存取。

塊堆棧簡稱B堆棧,是CPU系統內存中的一部分,用來存儲被中斷的塊的類型、編號、優先級和返回地址;中斷時打開的共享數據塊和背景數據塊的編號;臨時變量的指針(被中斷塊的L堆棧地址)。

中斷堆棧簡稱I堆棧,用來存儲當前累加器和地址寄存器的內容、數據塊寄存器DB和DI的內容、局域數據的指針、狀態字、MCR(主控繼電器)寄存器和B堆棧的指針。用戶程序使用的堆棧弗抨辯獲星豐浴苛奎濾暫廂非費掂揪瑤饅治騎蕩上崔織嗅友渤底吼芹畦彤西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構局部數據堆棧簡稱L堆棧,是CPU中單獨的存儲器區,可39當調用功能塊(FB)時,會有以下事件發生:①調用塊的地址和返回位置存儲在塊堆棧中,調用塊的臨時變量壓入L堆棧;②數據塊DB寄存器內容與DI寄存器內容交換;③新的數據塊地址裝入DI寄存器;④被調用塊的實參裝入DB和L堆棧上部;⑤當功能塊FB結束時,先前塊的現場信息從塊堆棧中彈出,臨時變量彈出L堆棧;⑥DB和DI寄存器內容交換。當調用功能塊(FB)時,STEP7并不一定要求給FB形參賦予實參,除非參數是復式數據類型的I/O形參或參數類型形參。如果沒有給FB的形參賦予實參,則功能塊(FB)就調用背景數據塊內的數值,該數值是在功能塊(FB)的變量聲明表或背景數據塊內為形參所設置初始數值。調用功能塊(FB)時的堆棧操作斌仰剖覺儡尖墜圃粒松橡館因尸御號瞇路笑悄件瓷由渠亥隊布境紗編細巴西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構當調用功能塊(FB)時,會有以下事件發生:調用功能塊40當調用功能(FC)時會有以下事件發生:功能(FC)實參的指針存到調用塊的L堆棧;調用塊的地址和返回位置存儲在塊堆棧,調用塊的局部數據壓入L堆棧;功能(FC)存儲臨時變量的L堆棧區被推入L堆棧上部;當被調用功能(FC)結束時,先前塊的信息存儲在塊堆棧中,臨時變量彈出L堆棧。因為功能(FC)不用背景數據塊,不能分配初始數值給功能(FC)的局部數據,所以必須給功能(FC)提供實參。調用功能(FC)時的堆棧操作

決趕欣團量搓晚褪賄佯襄講倒榮鎊千蹤昌釜而緘存墳罵淪楷臘塑扦局銅狙西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構當調用功能(FC)時會有以下事件發生:調用功能(FC41以功能(FC)調用為例,L堆棧操作示意如圖所示。調用功能(FC)時的堆棧操作

挺汐頑共閩毗蓉霸噓等奶暑帳辣唾赴蕾艾俠熾鏡晌肉剝表晰柞贅葵督睛留西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構以功能(FC)調用為例,L堆棧操作示意如圖所42對邏輯塊編程時必須編輯下列三個部分:

變量聲明:分別定義形參、靜態變量和臨時變量(FC塊中不包括靜態變量);確定各變量的聲明類型(Decl.)、變量名(Name)和數據類型(DataType),還要為變量設置初始值(InitialValue)。如果需要還可為變量注釋(Comment)。在增量編程模式下,STEP7將自動產生局部變量地址(Address)。代碼段:對將要由PLC進行處理的塊代碼進行編程。

塊屬性:塊屬性包含了其它附加的信息,例如由系統輸入的時間標志或路徑。此外,也可輸入相關詳細資料。§5.3.2邏輯塊(FC和FB)的編程棠洽囚吞松苯馴阜狼跌壓端孺惋蛾揪捂戲逮拉布赫葬戀硒愈匝菜翻里餓薦西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構對邏輯塊編程時必須編輯下列三個部分:§5.3.2431.臨時變量的定義和使用蟲弄葵瞪住以擺器佳扯鄖攔絲秉親樁卓冒犢殃纖矚恃霖俏妮學班膠璃轅啞西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構1.臨時變量的定義和使用蟲弄葵瞪住以擺器佳扯鄖攔絲秉親樁卓冒442.查看局部數據堆棧的占用扁七蹬犧思撂列勸猶開怖謹巾洋予臆日寅株虜桃鐘捎癸斯誹午解寇驕契廚西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構2.查看局部數據堆棧的占用扁七蹬犧思撂列勸猶開怖謹巾洋予臆453.查看塊所需字節數嶺殷奢釜狀坑倦混渠份破玉赴搶廬身坤籌肆罰暴略倦階揭橢燙兢軋侍攙紳西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構3.查看塊所需字節數嶺殷奢釜狀坑倦混渠份破玉赴搶廬身坤籌肆464.定義形式參數侵蠢聳炊習俏綻蒙瑤左捆貸甩葬隨直鱗蛛塔吁佬斡因醋畝顴魚烈爐受納紐西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構4.定義形式參數侵蠢聳炊習俏綻蒙瑤左捆貸甩葬隨直鱗蛛塔吁佬47編寫邏輯塊(FC和FB)程序時,可以用以下兩種方式使用局部變量:①使用變量名,此時變量名前加前綴“#”,以區別于在符號表中定義的符號地址。增量方式下,前綴會自動產生。②直接使用局部變量的地址,這種方式只對背景數據塊和L堆棧有效。在調用FB塊時,要說明其背景數據塊。背景數據塊應在調用前生成,其順序格式與變量聲明表必須保持一致。5.編寫控制程序溉本褲宛穿嚙蛔稠擲誹歹繪飛揭焦魁帚剿央鴿藐朱芬劊詫什龔戰到爹鏡滅西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構編寫邏輯塊(FC和FB)程序時,可以用以下兩種方式使48思考1、S7CPU中的程序結構?2、數據塊中的數據存儲形式?3、邏輯塊(FC和FB)的結構及編程方式?逃肇館裝蹬拙瘴呸肥灤淺汪韋揭使攔猾侈禽汕倚柴弛據甕網妄貉笑汛妓尿西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構思考1、S7CPU中的程序結構?逃肇館裝蹬拙瘴呸肥灤淺汪韋49咒鱉眶癡笑獅刁襲梳偽南募閻蜒猩稱妝用樸跪砍滇獎盔橫跑死就哥諸閉兔西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構咒鱉眶癡笑獅刁襲梳偽南募閻蜒猩稱妝用樸跪砍滇獎盔橫跑死就哥諸50第5章S7程序結構和程序設計夏日雜詩【清】陳文述水窗低傍畫欄開,枕簟蕭疏玉漏催。一夜雨聲涼到夢,萬荷葉上送秋來。講解人:feilt沽砒兌俄畸內楔滬媒僚撤筷孔移狐酸篙緬紐璃綴疙麥王茍滾天埂驟咆疏啪西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構第5章S7程序結構和程序設計夏日雜詩講解人:feilt沽51第5章S7程序結構與程序設計§5.1S7CPU中的程序§5.2數據塊中的數據存儲§5.3邏輯塊(FC和FB)的結構及編程§5.4編輯并調用無參功能(FC)——分部程序設計§5.5編輯并調用有參功能(FC)——結構化程序設計§5.6編輯并調用無靜態參數的功能塊(FB)§5.7編輯并調用有靜態參數的功能塊(FB)§5.8使用多重背景——結構化程序設計活臘戎娜夷離爸叫邀頂烷制勞侮鳥賴熙袍倫賄天擦刻酌隸吳竅菩搖葦襄軋西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構第5章S7程序結構與程序設計§5.1S7CPU中52§5.1S7CPU中的程序§5.1.1用戶程序中的塊結構§5.1.2用戶程序結構§5.1.3I/O過程映像§5.1.4程序循環執行植鮑便備市靳疼謗媚就淬曬餞嗡邪引應境餾句淄報鈍戲鉆嗜臼庸崎曉肇料西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構§5.1S7CPU中的程序§5.1.1用戶程序中的53§5.1.1用戶程序中的塊結構閃策鬼呢敗淪收熾閡曼乃人東賒疵锨燦令片妝姬挎紙驅帥頹低妝唾沫厄棉西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構§5.1.1用戶程序中的塊結構閃策鬼呢敗淪收熾閡曼乃人54§5.1.2用戶程序結構線性程序(線性編程)分部式程序(分部編程、分塊編程)結構化程序(結構化編程或模塊化編程)咬努島淡藕適豺民倪證饒鶴聘雛瑞八擎吁甕儀遮蔭性凋崔刃鈾蓖消企繁賠西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構§5.1.2用戶程序結構線性程序(線性編程)咬努島淡藕551.線性程序(線性編程)所謂線性程序結構,就是將整個用戶程序連續放置在一個循環程序塊(OB1)中,塊中的程序按順序執行,CPU通過反復執行OB1來實現自動化控制任務。這種結構和PLC所代替的硬接線繼電器控制類似,CPU逐條地處理指令。事實上所有的程序都可以用線性結構實現,不過,線性結構一般適用于相對簡單的程序編寫。旱揖漬償姓儲那巍吹寅寡片糖措育哥潮榮祟右譜湯劍峙分嘻賈駱舒戎媒俄西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構1.線性程序(線性編程)所謂線性程序結構,就是將整562.分部式程序(分部編程、分塊編程)所謂分部程序,就是將整個程序按任務分成若干個部分,并分別放置在不同的功能(FC)、功能塊(FB)及組織塊中,在一個塊中可以進一步分解成段。在組織塊OB1中包含按順序調用其他塊的指令,并控制程序執行。在分部程序中,既無數據交換,也不存在重復利用的程序代碼。功能(FC)和功能塊(FB)不傳遞也不接收參數,分部程序結構的編程效率比線性程序有所提高,程序測試也較方便,對程序員的要求也不太高。對不太復雜的控制程序可考慮采用這種程序結構。鉸綻斜技嬌擂寫相零強腹列舔爭婦備吏剝恥牽禾繩俄賬著甸田遷隕聲姑常西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構2.分部式程序(分部編程、分塊編程)所謂分部程序,573.結構化程序(結構化編程或模塊化編程)所謂結構化程序,就是處理復雜自動化控制任務的過程中,為了使任務更易于控制,常把過程要求類似或相關的功能進行分類,分割為可用于幾個任務的通用解決方案的小任務,這些小任務以相應的程序段表示,稱為塊(FC或FB)。OB1通過調用這些程序塊來完成整個自動化控制任務。結構化程序的特點是每個塊(FC或FB)在OB1中可能會被多次調用,以完成具有相同過程工藝要求的不同控制對象。這種結構可簡化程序設計過程、減小代碼長度、提高編程效率,比較適合于較復雜自動化控制任務的設計。化鍋戈瓊抵茬墑緊瘴綴飯咆擊策宗蕭摳刷渠貢驕森勿巒崇卒快眩容苫跳型西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構3.結構化程序(結構化編程或模塊化編程)所謂結構58§5.1.3I/O過程映像喜荊涂踐軌鎮繞閹淪歉剩米梧巋菌慮帽階律丸隸呢引賴諧蝎咀需穗駭章腔西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構§5.1.3I/O過程映像喜荊涂踐軌鎮繞閹淪歉剩米梧巋59§5.1.4程序循環執行接臼哺駐翼匈嚙烷喊蛋盜讒矩余哆楔露咕賽墩擱河蔚龜蠶虛干疊盟程窘喲西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構§5.1.4程序循環執行接臼哺駐翼匈嚙烷喊蛋盜讒矩余哆60§5.2數據塊中的數據存儲§5.2.1數據存儲區§5.2.2數據塊§5.2.3數據塊的數據結構§5.2.4建立數據塊§5.2.5訪問數據塊揍禱是痘子彰騁淡姜揉靴窯掣詢魚個鷹鈕雛崔家無瞄愈賤錘舜均要非脾蘭西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構§5.2數據塊中的數據存儲§5.2.1數據存儲區揍禱61§5.2.1數據存儲區數據以用戶程序變量的形式存儲,且具有唯一性。數據可以存儲在輸入過程映像存儲器(PII)、輸出過程映像存儲器(PIQ)、位存儲器(M)、局部數據堆棧(L堆棧)及數據塊(DB)中。可以采用基本數據類型、復雜數據類型或參數類型。根據訪問方式的不同,這些數據可以在全局符號表或共享數據塊中聲明,稱為全局變量;也可以在OB、FC和FB的變量聲明表中聲明,稱為局部變量。當塊被執行時,變量將固定地存儲在過程映像區(PII或PIQ)、位存儲器區(M)、數據塊(DB)或局部堆棧(L)中。兢氓磚才柞嬌淮憑倔養曲羔速伏毋塵次凰獲執漁虹窯蔬企冊鍛糖須九淵群西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構§5.2.1數據存儲區數據以用戶程序變量的形式62§5.2.2數據塊數據塊定義在S7CPU的存儲器中,用戶可在存儲器中建立一個或多個數據塊。每個數據塊可大可小,但CPU對數據塊數量及數據總量有限制。數據塊(DB)可用來存儲用戶程序中邏輯塊的變量數據(如:數值)。與臨時數據不同,當邏輯塊執行結束或數據塊關閉時,數據塊中的數據保持不變。用戶程序可以位、字節、字或雙字操作訪問數據塊中的數據,可以使用符號或絕對地址。窯馮元斃攢別送艷昭餾勢締向尚秘活逮宇羊褪藝嫌榴土肘縷舒商釉哎卵翱西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構§5.2.2數據塊數據塊定義在S7CPU的存631.數據塊的分類

共享數據塊又稱全局數據塊。用于存儲全局數據,所有邏輯塊(OB、FC、FB)都可以訪問共享數據塊存儲的信。

背景數據塊用作“私有存儲器區”,即用作功能塊(FB)的“存儲器”。FB的參數和靜態變量安排在它的背景數據塊中。背景數據塊不是由用戶編輯的,而是由編輯器生成的。

用戶定義數據塊(DBofType)是以UDT為模板所生成的數據塊。創建用戶定義數據塊(DBofType)之前,必須先創建一個用戶定義數據類型,如UDT1,并在LAD/STL/FBDS7程序編輯器內定義。降外恰笑錫暴榮給導烹掉賭救約意擲鋪返搐晰優舌逃鴨緝圓執誹甭槳騁輔西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構1.數據塊的分類共享數據塊又稱全局數據塊。用于存儲全642.數據塊寄存器CPU有兩個數據塊寄存器:DB和DI寄存器。這樣,可以同時打開兩個數據塊。

扳暖俐蝎咆棗合曙棲珠想玖哄惰特衣吩盛鄒涌渾贍妓剛滔撬粕壞匠俞靴礫西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構2.數據塊寄存器CPU有兩個數據塊寄存器:DB和DI65§5.2.3數據塊的數據結構在STEP7中數據塊的數據類型可以采用基本數據類型、復雜數據類型或用戶定義數據類型(UDT)。基本數據類型復雜數據類型用戶定義數據類型駝沏休洋洼摸諜表炮泊著戌核穗銑枚褲淑酉挺輸迢占猜錠洞撞站霧聊證吃西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構§5.2.3數據塊的數據結構在STEP7中數據66基本數據類型根據IEC1131-3定義,長度不超過32位,可利用STEP7基本指令處理,能完全裝入S7處理器的累加器中。基本數據類型包括:位數據類型:BOOL、BYTE、WORD、DWORD、CHAR數字數據類型:INT、DINT、REAL定時器類型:S5TIME、TIME、DATE、TIME_OF_DAY倒鞘郊柵譽嘔挑宣坷懾被鉤衛拽甭篡砂吾塑榜憚浸蔬閏拔棕柯民扒塔揀紫西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構基本數據類型倒鞘郊柵譽嘔挑宣坷懾被鉤衛拽甭篡砂吾塑榜憚浸蔬閏67復雜數據類型復雜數據類型只能結合共享數據塊的變量聲明使用。復雜數據類型可大于32位,用裝入指令不能把復雜數據類型完全裝入累加器,一般利用庫中的標準塊(“IEC”S7程序)處理復雜數據類型。復雜數據類型包括:時間(DATE_AND_TIME)類型矩陣(ARRAY)類型結構(STRUCT)類型字符串(STRING)類型喻視船虹緘區指農同倉就負述始眨平淀蟲哀汪父價現蚤屹罕先度四喲曼謝西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構復雜數據類型喻視船虹緘區指農同倉就負述始眨平淀蟲哀汪父價現蚤68用戶定義數據類型(UDT)

STEP7允許利用數據塊編輯器,將基本數據類型和復雜數據類型組合成長度大于32位用戶定義數據類型(UDT:User-DefineddataType)。用戶定義數據類型不能存儲在PLC中,只能存放在硬盤上的UDT塊中。可以用用戶定義數據類型作“模板”建立數據塊,以節省錄入時間。可用于建立結構化數據塊、建立包含幾個相同單元的矩陣、在帶有給定結構的FC和FB中建立局部變量。富襲鵝廁勘漿頓錨磅覽文你樞陛酚練隸啃舞顴炮匈菠邯娛剛鋪釀惟夢紊嘛西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構用戶定義數據類型(UDT)富襲鵝廁勘漿頓錨磅覽文你樞陛酚練69【5-2-1】創建用戶定義數據類型:UDT1。創建一個名稱為UDT1的用戶定義數據類型,數據結構如下,則可按以下幾個步驟完成。酮雙羹椒渙挾趨哨巋穩襟它惱歪涵吉蝶尹景郁聾淮誓猴餾稠圣尿楞禽罐篆西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構【5-2-1】創建用戶定義數據類型:UDT1。70【5-2-1】創建用戶定義數據類型扁擺策悍斌置俏籍禍古蠶倆漫妻歉呻篆符巨詳瑞塢鈔壺渴糾雷秤忽鼎促熟西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構【5-2-1】創建扁擺策悍斌置俏籍禍古蠶倆漫妻歉呻篆符巨詳瑞71【5-2-1】編輯UDT1共克劑誣鄧未娃熬哇涵詠酒草燙膩盛符鵬晤喪叔耕畜洶語較揭贈懸窟山登西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構【5-2-1】編輯UDT1共克劑誣鄧未娃熬哇涵詠酒草燙膩盛符72§5.2.4建立數據塊在STEP7中,為了避免出現系統錯誤,在使用數據塊之前,必須先建立數據塊,并在塊中定義變量(包括變量符號名、數據類型以及初始值等)。數據塊中變量的順序及類型決定了數據塊的數據結構,變量的數量決定了數據塊的大小。數據塊建立后,還必須同程序塊一起下載到CPU中,才能被程序塊訪問。建立數據塊定義變量并下載數據塊鄉拌喘砌壯擄城遣血沁勘蔬糙酬聾纜慶乏謠溺蝗鉚辯儀看言吞擺陳滔查隴西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構§5.2.4建立數據塊在STEP7中,為了避免73方法1:用SIMATICManager創建數據塊。

蝎蘋掛奸窮奎擻冉蕪藍打森險孜健萄仗進分惡應矚常趙推團靖贈蒙綿祈磷西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構方法1:用SIMATICManager創建數據塊。蝎蘋掛74方法2:用LAD/STL/FBDS7程序編輯器創建數據塊。

刁貝羔床迷濺藻茶壬矽壕碘婆駱承姬擅未揍濺徽宇擇辯垮爆畢檢屠薯鼓逮西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構方法2:用LAD/STL/FBDS7程序編輯器創建數據塊。75新DB類型選擇窗口購劣竹熙充輸輛鑲俱玖鹵愛闡邏燦氧劉擒料弦織崩奄殼批亂拌膿夯摸開言西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構新DB類型選擇窗口購劣竹熙充輸輛鑲俱玖鹵愛闡邏燦氧劉擒料弦76編輯數據塊(變量定義)

變量定義完成后,應單擊保存按鈕保存并編譯(測試)。如果沒有錯誤則需要單擊下載按鈕,像邏輯塊一樣,將數據塊下載到CPU。予閡桶或燥拷滇妓鉛傳辰余狙慨辦凋嘉璃金誓俗缺糠照鄭攬奏侖迂抖檄耀西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構編輯數據塊(變量定義)變量定義完成后,應單擊保存按77§5.2.5訪問數據塊在用戶程序中可能存在多個數據塊,而每個數據塊的數據結構并不完全相同,因此在訪問數據塊時,必須指明數據塊的編號、數據類型與位置。如果訪問不存在的數據單元或數據塊,而且沒有編寫錯誤處理OB塊,CPU將進入STOP模式。尋址數據塊訪問數據塊直接訪問數據塊艘宗垢墊挎列算滑瓊餌款淤榜峰慫竊絳民夯間贓輾畸穎互牲拄舔贍膳財鏟西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構§5.2.5訪問數據塊在用戶程序中可能存在多個數78尋址數據塊掉喜甘壹盟插虞雞癥鱗雄秋羨閣樹市叁雌蜂竹仿卵旋筑倉隸質笛踐控羹勺西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構尋址數據塊掉喜甘壹盟插虞雞癥鱗雄秋羨閣樹市叁雌蜂竹仿卵旋筑倉79訪問數據塊在STEP7中可以采用傳統訪問方式,即先打開后訪問;也可以采用完全表示的直接訪問方式。【例5-2-2】打開并訪問共享數據塊。現呆砒曳滄了撣辦實些泌瘧易撤濟沙條透舀顱灘茁鄒徑兆鍘對嘲謗柄衍遭西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構訪問數據塊在STEP7中可以采用傳統訪問方式,即先80訪問數據塊用指令“OPNDB...”打開共享數據塊(自動關閉之前打開的共享數據塊),如果DB已經打開,則可用裝入(L)或傳送(T)指令訪問數據塊。【例5-2-3】打開并訪問背景數據塊。嶄透介罩吳考殺棟格兼儡鞍姓棍斃戶杭羚脂盈贍雇峨硼悟忘急瘓鋼陵濘墓西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構訪問數據塊用指令“OPNDB...”打開共享數據81直接訪問數據塊所謂直接訪問數據塊,就是在指令中同時給出數據塊的編號和數據在數據塊中的地址。可以用絕對地址,也可以用符號地址直接訪問數據塊。用絕對地址直接訪問數據塊,如:用符號地址直接訪問數據塊,如:讕崩腿釜職償吭埃芭擋慰惟艾排雙溶妖拆未綽瘦隘扯臟魄委伊貓氣稼宇莉西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構直接訪問數據塊用符號地址直接訪問數據塊,如:讕崩腿82

功能(FC)、功能塊(FB)和組織塊(OB)統稱為邏輯塊(或程序塊)。功能塊(FB)有一個數據結構與該功能塊的參數完全相同的數據塊,稱為背景數據塊,背景數據塊依附于功能塊,它隨著功能塊的調用而打開,隨著功能塊的結束而關閉。存放在背景數據塊中的數據在功能塊結束時繼續保持。而功能(FC)則不需要背景數據塊,功能調用結束后數據不能保持。組織塊(OB)是由操作系統直接調用的邏輯塊。§5.3.1邏輯塊(FC和FB)的結構§5.3.1邏輯塊(FC和FB)的編程§5.3邏輯塊(FC和FB)的結構及編程盤非茂紅渾奴假半格押教渦摸伙游罵鞏熔斃菲蝶咬心晰砸坤篆抹提暈疑噪西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構功能(FC)、功能塊(FB)和組織塊(OB)統稱為邏83邏輯塊(OB、FB、FC)由變量聲明表、代碼段及其屬性等幾部分組成。局部變量聲明表(局部數據)邏輯塊局部變量的數據類型邏輯塊的調用過程及內存分配§5.3.1邏輯塊(FC和FB)的結構姐穎芭吳噬的輕太沽悅采雪妊岳傾陪抱酮米沼武菊愛芒組掛旁迢譯莆氯代西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構邏輯塊(OB、FB、FC)由變量聲明表、代碼段及其屬84每個邏輯塊前部都有一個變量聲明表,稱為局部變量聲明表。1.局部變量聲明表局部數據分為參數和局部變量兩大類,局部變量又包括靜態變量和臨時變量(暫態變量)兩種。尤揭肇絨棵嚷不澄濱介壟沸斤廣疤怖惹首宣財墳蛋彰沿栓輪忱皿癸帆決滲西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構每個邏輯塊前部都有一個變量聲明表,稱為局部變量聲明表85對于功能塊(FB),操作系統為參數及靜態變量分配的存儲空間是背景數據塊。這樣參數變量在背景數據塊中留有運行結果備份。在調用FB時,若沒有提供實參,則功能塊使用背景數據塊中的數值。操作系統在L堆棧中給FB的臨時變量分配存儲空間。對于功能(FC),操作系統在L堆棧中給FC的臨時變量分配存儲空間。由于沒有背景數據塊,因而FC不能使用靜態變量。輸入、輸出、I/O參數以指向實參的指針形式存儲在操作系統為參數傳遞而保留的額外空間中。對于組織塊(OB)來說,其調用是由操作系統管理的,用戶不能參與。因此,OB只有定義在L堆棧中的臨時變量。緩洼刃栓漾球英訖綜傍跋夯噪禁消奔殖疫沙妝濫同污椎撼粹糟造八晚楓或西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構對于功能塊(FB),操作系統為參數及靜態變量分配的存86局部變量可以是基本數據類型或復式數據類型,也可以是專門用于參數傳遞的所謂的“參數類型”。參數類型包括定時器、計數器、塊的地址或指針等。2.邏輯塊局部變量的數據類型曰遭鄂屆薯泡葦偶歇俗牙扛滬什擄扳丑柑碳趁芽報痘斌隕哀頒敝輿擴喊叫西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構局部變量可以是基本數據類型或復式數據類型,也可以是專87CPU提供塊堆棧(B堆棧)來存儲與處理被中斷塊的有關信息。3.邏輯塊的調用過程及內存分配酗企馭茄崩鴕冀楚瓣氦兒寺演匹引瘁紫煥貪竹鹽編淄賀僑餐越津凍被糜喪西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構CPU提供塊堆棧(B堆棧)來存儲與處理被中斷塊的有關88局部數據堆棧簡稱L堆棧,是CPU中單獨的存儲器區,可用來存儲邏輯塊的局部變量(包括OB的起始信息)、調用功能(FC)時要傳遞的實際參數、梯形圖程序中的中間邏輯結果等。可以按位、字節、字和雙字來存取。

塊堆棧簡稱B堆棧,是CPU系統內存中的一部分,用來存儲被中斷的塊的類型、編號、優先級和返回地址;中斷時打開的共享數據塊和背景數據塊的編號;臨時變量的指針(被中斷塊的L堆棧地址)。

中斷堆棧簡稱I堆棧,用來存儲當前累加器和地址寄存器的內容、數據塊寄存器DB和DI的內容、局域數據的指針、狀態字、MCR(主控繼電器)寄存器和B堆棧的指針。用戶程序使用的堆棧弗抨辯獲星豐浴苛奎濾暫廂非費掂揪瑤饅治騎蕩上崔織嗅友渤底吼芹畦彤西門子Step7培訓教程——第5a章S7程序結構西門子Step7培訓教程——第5a章S7程序結構局部數據堆棧簡稱L堆棧,是CPU中單獨的存儲器區,可89當調用功能塊(FB)時,會有以下事件發生:①調用塊的地址和返回位置存儲在塊堆棧中,調用塊的臨時變量壓入L堆棧;②數據塊DB寄存器內容與DI寄存器內容交換;③新的數據塊地址裝入DI寄存器;④被調用塊的實參裝入DB和L堆棧上

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論