0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

西門子S7-200SMART中局部變量的類型以及使用方法

1bGT_GKYXT1508 ? 來源:lq ? 2018-12-14 16:56 ? 次閱讀

局部變量(Local variables)指在程序中只在特定過程或函數(shù)中可以訪問的變量。局部變量是相對(duì)于全局變量而言的。在PLC中局部變量應(yīng)用不是很多,西門子PLC則引入局部變量,成為PLC中獨(dú)具特色的功能。

局部變量是分配給每個(gè)子程序的臨時(shí)存貯區(qū)。當(dāng)子程序被調(diào)用時(shí),系統(tǒng)分配局部變量區(qū)給子程序;子程序執(zhí)行完成后,該局部變量區(qū)被釋放。釋放時(shí)其中存貯的值也同時(shí)丟失,不能再下一掃描周期再被子程序使用。

局部變量區(qū)的大小為64個(gè)字節(jié),其中最后4個(gè)字節(jié)被系統(tǒng)所占用,實(shí)際可供子程序使用的為60個(gè)字節(jié)。由于局部變量區(qū)的數(shù)據(jù)不能帶到下一掃描周期,因此只能用于存儲(chǔ)程序運(yùn)算中的中間值,可以減少對(duì)全局變量區(qū)的占用。

由于局部變量區(qū)在子程序被調(diào)用時(shí)才被分配,且分配時(shí)并不對(duì)數(shù)據(jù)區(qū)進(jìn)行初始化,所以其初始值是不確定的。因此在程序中用到這些存貯區(qū)的值的指令前,必須有對(duì)該存貯區(qū)地址的賦值操作,否則可能會(huì)出現(xiàn)錯(cuò)誤的執(zhí)行結(jié)果。尤其在子程序中存在大量的跳轉(zhuǎn)指令時(shí),很容易出現(xiàn)漏掉對(duì)局部變量賦值的情況,要格外注意。

每個(gè)子程序調(diào)用的輸入/輸出參數(shù)的最大限制是16,如果您嘗試下載的程序超過此一限制,IN和out加起來共16個(gè)超過16個(gè)就會(huì)出錯(cuò)。使用過程中應(yīng)注意以下幾點(diǎn):

1、子程序或者中斷程序不能訪問分配給主程序的局部存儲(chǔ)器。子程序不能訪問分配給主程序、中斷程序或者其他子程序的局部存儲(chǔ)器。同樣的,中斷程序也不能訪問分配給主程序或子程序的局部存儲(chǔ)器。

2、S7-200 SMART有64個(gè)字節(jié)的局部存儲(chǔ)器,其中60個(gè)可以用作臨時(shí)存儲(chǔ)器或者給子程序傳遞參數(shù)。

3、IN、OUT、IN_OUT變量都會(huì)與外部進(jìn)行數(shù)據(jù)交換,所以不需要數(shù)據(jù)交換時(shí)應(yīng)使用TEMP變量。

下面講述西門子S7-200SMART中局部變量的類型以及使用方法。

S7-200 SMART提供了四種類型的局部變量,用L表示。

IN:輸入變量。將外部指定位置的參數(shù)傳入子程序。

OUT:輸出變量。將子程序的運(yùn)算結(jié)果傳出到外部指定參數(shù)位置。

IN_OUT:輸入輸出變量。將指定位置的外部參數(shù)傳導(dǎo)子程序,再由子程序修改后再將結(jié)果返回到同樣的地址。

TEMP:臨時(shí)保存在局部數(shù)據(jù)堆棧中的臨時(shí)變量。一旦POU完全執(zhí)行,臨時(shí)變量數(shù)值

則無法再用。在兩次POU執(zhí)行之間,臨時(shí)變量不保持其數(shù)值。

創(chuàng)建方法為:打開每個(gè)子程序都會(huì)彈出對(duì)應(yīng)的變量表,如下圖:

在變量表中選擇要?jiǎng)?chuàng)建的變量類型,輸入符號(hào)(英文/中文都行),再選擇正確的數(shù)據(jù)類型,系統(tǒng)將自動(dòng)分配對(duì)應(yīng)的變量,局部變量地址是系統(tǒng)根據(jù)前面的地址及數(shù)據(jù)類型自動(dòng)分配,不可自行修改。盡量把所有變量創(chuàng)建好后再開始根據(jù)分配的變量地址進(jìn)行編程。萬一在編程過程中需要再添加變量,一定要把顯示方式切換成:“僅符號(hào)”否則插入變量后地址全部變化,程序中原本使用的地址將報(bào)錯(cuò)。

編寫好的子程序不僅可以被當(dāng)前項(xiàng)目的調(diào)用,還可以建成庫(kù)供其它項(xiàng)目調(diào)用。在以后的編程中經(jīng)常會(huì)出現(xiàn)一些經(jīng)典的應(yīng)用,或者經(jīng)常處理的類似程序,我們就可以建立成“庫(kù)”,碰到類似的用法只需要直接調(diào)用庫(kù)進(jìn)行編程即可。

那么庫(kù)應(yīng)該怎么建立呢?

1)重命名:首先把編寫好具有特殊功能(脈沖運(yùn)算、模擬量換算等)的子程序進(jìn)行重命名,避免與其它項(xiàng)目中子程序重名。我們把以上例中子程序?yàn)槔?,命名為“指示燈延時(shí)啟動(dòng)”。

2)創(chuàng)建庫(kù)文件:在左側(cè)指令樹中找到“庫(kù)”右擊彈出對(duì)話框,選擇“創(chuàng)建庫(kù)”如左下圖,彈出右下圖對(duì)話框:選擇需要建立庫(kù)的子程序“指示燈延時(shí)啟動(dòng)”,點(diǎn)擊“添加”;選擇“屬性”對(duì)庫(kù)進(jìn)行命名以及指定庫(kù)文件存儲(chǔ)位置;選擇“保護(hù)”,可以對(duì)庫(kù)文件設(shè)置一個(gè)密碼保護(hù),可以限制閱讀和修改庫(kù)程序。設(shè)置好后確定,將會(huì)在知道目錄下生成一個(gè)庫(kù)文件。

庫(kù)的創(chuàng)建如下:點(diǎn)擊創(chuàng)建庫(kù)后彈出創(chuàng)建庫(kù)對(duì)話框。

在V2.1之前版本中需要手動(dòng)添加刪除庫(kù),庫(kù)文件可以存儲(chǔ)在任何地方。從V2.2開始將庫(kù)集中管理,必須存儲(chǔ)在系統(tǒng)設(shè)定目錄下,打開新項(xiàng)目刷新即可自動(dòng)可以顯示。重新安裝軟件或重裝系統(tǒng)前請(qǐng)對(duì)庫(kù)文件進(jìn)行備份。

要消除庫(kù)和項(xiàng)目之間出現(xiàn)存儲(chǔ)器使用沖突的可能性,應(yīng)避免在用戶定義庫(kù)中使用全局存儲(chǔ)器。 可能無法完全消除庫(kù)對(duì)全局資源的使用;但是,在可能的情況下最大程度地減少此類使用是有必要的。 這里列出了最小化全局存儲(chǔ)器使用的一些方法:

1)盡量用局部存儲(chǔ)器代替全局存儲(chǔ)器。

通過使用局部存儲(chǔ)器,盡量減少庫(kù)對(duì)全局存儲(chǔ)器的依賴性。您還可以直接將局部存儲(chǔ)器指定為庫(kù)指令使用的存儲(chǔ)器。

例如:您可能有一個(gè)計(jì)算數(shù)值并將該輸出存儲(chǔ)在 V 存儲(chǔ)單元的子例程的子例程。程序的其余部分則會(huì)讀取該 V 存儲(chǔ)器位置,以便確定計(jì)算的結(jié)果。 如果您希望將該子例程放入庫(kù),考慮在子例程中增加一個(gè)輸出OUT參數(shù),并將計(jì)算結(jié)果存儲(chǔ)在該參數(shù)中。這樣就無需使用 V 存儲(chǔ)單元,并允許您決定結(jié)果的存儲(chǔ)位置。

2)使用臨時(shí)變量進(jìn)行計(jì)算。

將臨時(shí)變量用于計(jì)算和臨時(shí)結(jié)果可盡量減少指令庫(kù)對(duì)全局存儲(chǔ)器的使用。 您在子例程變量表中定義的臨時(shí)變量只對(duì)該子例程有效,不會(huì)與項(xiàng)目沖突。

3)需要V 存儲(chǔ)器時(shí),要定義符號(hào)。

有時(shí)您必須在計(jì)劃包括在指令庫(kù)中的子例程中使用全局 V 存儲(chǔ)器。 必要時(shí),應(yīng)為所有 V 存儲(chǔ)器聲明符號(hào),并在程序中使用這些符號(hào)。 編譯該庫(kù)時(shí),編譯器將使用這些符號(hào)來決定您的庫(kù)所需的存儲(chǔ)器大小。通用規(guī)則是,將包括在庫(kù)中的子例程所占用的 V 存儲(chǔ)器分組到連續(xù)位置中。

以常用的步進(jìn)脈沖數(shù)運(yùn)算為例,因?yàn)槭褂帽容^頻繁,可以建立成庫(kù)方便以后編程過程中調(diào)用。使用全局變量運(yùn)算,程序如下:

如果要將該子程序建成庫(kù),必須給所有全局變量都定義符號(hào),否則無法建立庫(kù)。建成庫(kù)以后編程調(diào)用庫(kù)時(shí),必須要進(jìn)行庫(kù)存儲(chǔ)器分配,右擊左側(cè)項(xiàng)目樹中“程序塊”選擇“庫(kù)存儲(chǔ)器分配”,點(diǎn)擊建議地址系統(tǒng)自動(dòng)分配未使用的存儲(chǔ)器供給庫(kù)使用。如下圖:

注意:在編寫庫(kù)程序時(shí),所用到的V存儲(chǔ)區(qū)地址必須全部定義符號(hào),否則無法創(chuàng)建庫(kù)。創(chuàng)建成庫(kù)后再次調(diào)用該庫(kù)進(jìn)行編程,所用到的V存儲(chǔ)器不再是之前編寫庫(kù)程序的地址,需要重新分配V存儲(chǔ)器地址。但是會(huì)按照之前的地址進(jìn)行分配,如存儲(chǔ)器大小,數(shù)據(jù)類型及編號(hào)之間的規(guī)律,所以盡量采用連續(xù)的地址進(jìn)行編程。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 存儲(chǔ)器
    +關(guān)注

    關(guān)注

    38

    文章

    7492

    瀏覽量

    163854
  • 西門子
    +關(guān)注

    關(guān)注

    94

    文章

    3039

    瀏覽量

    115889
  • 局部變量
    +關(guān)注

    關(guān)注

    0

    文章

    14

    瀏覽量

    9050

原文標(biāo)題:S7-200SMART局部變量的應(yīng)用

文章出處:【微信號(hào):GKYXT1508,微信公眾號(hào):工控云學(xué)堂】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    西門子PLC S7-200smart程序下載錯(cuò)誤分析

    的CPU類型是否與實(shí)際CPU類型相符合,若不符合將會(huì)報(bào)錯(cuò)?! ?b class='flag-5'>西門子PLC S7-200 smart系列為用戶提供了良好的編程環(huán)境,用戶可以
    發(fā)表于 07-23 15:27 ?4697次閱讀

    西門子S7-200SMART接入BL102 PLC網(wǎng)關(guān)

    BL102 PLC網(wǎng)關(guān)設(shè)備連接設(shè)備接線示意圖如下: BL102 PLC網(wǎng)關(guān)的LAN口連接到西門子S7-200SMART的網(wǎng)口,COM口通過RS232轉(zhuǎn)RS422線連接西門子S7-200SMAR
    發(fā)表于 10-28 17:08 ?1960次閱讀
    <b class='flag-5'>西門子</b><b class='flag-5'>S7-200SMART</b>接入BL102 PLC網(wǎng)關(guān)

    PLC網(wǎng)關(guān)采集西門子S7-200SMART數(shù)據(jù)配置流程

    PLC網(wǎng)關(guān)采集西門子S7-200SMART數(shù)據(jù)配置流程
    發(fā)表于 11-04 11:37 ?4048次閱讀
    PLC網(wǎng)關(guān)采集<b class='flag-5'>西門子</b><b class='flag-5'>S7-200SMART</b>數(shù)據(jù)配置流程

    西門子S7-200SMART如何接入MQTT云平臺(tái)

    西門子S7-200SMART如何接入MQTT云平臺(tái)
    發(fā)表于 11-10 16:49 ?3391次閱讀

    西門子PLC的局部變量使用技巧

    三個(gè)變量:輸入變量、輸出變量和輸入輸出變量。 在局部變量表中賦值時(shí),只需要指定聲明的局部變量
    發(fā)表于 12-13 18:07 ?5307次閱讀

    工業(yè)智能物聯(lián)網(wǎng)網(wǎng)關(guān)鋇錸BL110網(wǎng)口LAN采集西門子PLC S7-200Smart

    工業(yè)智能物聯(lián)網(wǎng)網(wǎng)關(guān)鋇錸BL110網(wǎng)口LAN采集西門子PLC S7-200Smart
    的頭像 發(fā)表于 09-30 17:53 ?1057次閱讀

    西門子S7-200SMART系列PLC的比較和傳送、置位、復(fù)位等指令的使用

    本案例,利用液體混合控制程序設(shè)計(jì),主要讓讀者練習(xí)西門子S7-200SMART系列PLC的比較和傳送、置位、復(fù)位等指令的使用。
    的頭像 發(fā)表于 10-19 10:15 ?8464次閱讀

    西門子s7-200smarts7-1200PLC通信技術(shù)

    S7-1200與S7-200SMART S7 通訊的另外一種方法S7-200SAMRT PLC做客服端,
    發(fā)表于 11-17 20:16 ?8050次閱讀

    S7-200Smart子程序局部變量

    西門子在這方面有一個(gè)很好的解決方案。那就是通過局部變量,設(shè)計(jì)出程序框架,做成庫(kù)。后面就可以反復(fù)調(diào)用。一個(gè)電機(jī)調(diào)用一次,只需要填寫按鈕的輸入點(diǎn),接觸器的輸出點(diǎn)就可以,這樣編程效率大大提高;
    的頭像 發(fā)表于 03-12 08:47 ?1702次閱讀

    西門子S7系列如何轉(zhuǎn)換MQTT/Modbus

    西門子S7-200 S7-200Smart S7-300 S7-400 MQTT Modbus
    的頭像 發(fā)表于 11-02 09:54 ?1667次閱讀
    <b class='flag-5'>西門子</b><b class='flag-5'>S7</b>系列如何轉(zhuǎn)換MQTT/Modbus

    西門子S7-200Smart如何轉(zhuǎn)換Modbus

    西門子S7-200Smart Modbus網(wǎng)關(guān)
    的頭像 發(fā)表于 11-03 18:41 ?4064次閱讀
    <b class='flag-5'>西門子</b><b class='flag-5'>S7-200Smart</b>如何轉(zhuǎn)換Modbus

    西門子S7-200 SMART編程技巧

    【導(dǎo)讀】分享一個(gè)西門子S7-200 SMART編程技巧。
    的頭像 發(fā)表于 07-10 10:10 ?2401次閱讀
    <b class='flag-5'>西門子</b><b class='flag-5'>S7-200</b> <b class='flag-5'>SMART</b>編程技巧

    西門子S7-200smart PLC不同類型CPU的區(qū)別

    西門子S7-200smart PLC 標(biāo)準(zhǔn)CPU的代碼一般為ST XX或者SR XX,其中ST/SR表示CPU自帶的數(shù)字量輸出形式,XX為20、30、40或者60,為CPU性能參數(shù)等級(jí)。
    的頭像 發(fā)表于 11-02 17:20 ?4759次閱讀
    <b class='flag-5'>西門子</b><b class='flag-5'>S7-200smart</b> PLC不同<b class='flag-5'>類型</b>CPU的區(qū)別

    PLC西門子S7-200smartS7-1200的區(qū)別?

    PLC西門子S7-200smartS7-1200的區(qū)別? 西門子S7-200 smart
    的頭像 發(fā)表于 11-17 11:41 ?1w次閱讀

    S7協(xié)議讀取西門子S7-200 Smart PLC數(shù)據(jù)

    西門子S7-200 Smart PLC因其穩(wěn)定性和易用性而廣泛應(yīng)用。通過使用S7協(xié)議,可以實(shí)現(xiàn)對(duì)PLC數(shù)據(jù)的高效讀取和控制。本文將詳細(xì)介紹如何使用S
    的頭像 發(fā)表于 07-11 11:55 ?5825次閱讀
    <b class='flag-5'>S7</b>協(xié)議讀取<b class='flag-5'>西門子</b><b class='flag-5'>S7-200</b> <b class='flag-5'>Smart</b> PLC數(shù)據(jù)