chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

PLC中Static和Temp變量的區(qū)別

工控論壇 ? 來源:阿偉碼控 ? 2025-09-24 14:51 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

大家好,收到粉絲投稿,讓博主講下Static變量和Temp變量的區(qū)別,新入行的兄弟可能會對這兩個概念不太能理解。

那么本期通過幾個簡單的小示例,并且配合PLC程序執(zhí)行函數(shù)功能塊的工作原理,來講透Static和Temp的區(qū)別,為什么會有這兩種類型的變量,分別用于解決什么樣的問題,以及使用時的注意事項(xiàng)。

第一個例子,功能非常非常簡單,輸入?yún)?shù)req為True時,將變量自增一下,也就是加1,在Static區(qū)和Temp區(qū)分別建立了UDINT類型的變量來存儲總共收到了多少次有效請求。

004158c8-9174-11f0-8c8f-92fbcf53809c.png

來測試一下,可以看到,隨著請求信號req的變化,tempCounter一直是0,而statCounter則一直在累加。

00a169d4-9174-11f0-8c8f-92fbcf53809c.gif

這是為什么呢?同樣都是在FB功能塊內(nèi)部定義的變量,只是一個在Static區(qū),一個在Temp區(qū),為什么結(jié)果會不同?其實(shí)tempCounter會在短暫的一段時間里面,值是為1的,可以這樣試一下。

00feb742-9174-11f0-8c8f-92fbcf53809c.png

這恰好正是它們的區(qū)別所在,我們來從名稱上看,Temp的意思是臨時的,臨時也就意味著定義在它下面的變量,這些變量只是臨時存在的,只會在有限的時間內(nèi)存在,這個有限的時間是多少呢?那就是當(dāng)前這個塊的執(zhí)行時間,也就是當(dāng)程序執(zhí)行到這個塊時,才會將Temp區(qū)的變量創(chuàng)建出來,當(dāng)程序執(zhí)行完這個塊以后,就會將Temp區(qū)的變量銷毀。

而Static的意思是靜態(tài),靜態(tài)也就意味著它是一直存在的,而不是程序執(zhí)行時創(chuàng)建出來的,Static區(qū)的變量,在你將程序下載到PLC時就創(chuàng)建出來,并且一直存在了。

這也正是我們常常說的,Static區(qū)的變量是有記憶的,而Temp區(qū)的變量是沒有記憶。

Temp的人生是在不停的輪回,就像喝了孟婆湯,是沒有前世的記憶。而Static是長生不老的,是永恒的。

我們再從工作原理上看一下功能塊的執(zhí)行過程發(fā)生了什么?當(dāng)程序在Main OB中執(zhí)行到我們定義的功能塊時,會在通常叫做棧的存儲區(qū)給它分配一片區(qū)域,標(biāo)記為給它使用,在這片區(qū)域上將Temp區(qū)的變量創(chuàng)建出來,然后執(zhí)行功能塊程序,如果這個功能塊內(nèi)部還有函數(shù)或是功能塊時,在執(zhí)行到它的時候,同樣會在棧的區(qū)域上創(chuàng)建Temp區(qū)的變量,而在相應(yīng)的函數(shù)或是功能塊執(zhí)行結(jié)束時,會將棧上為它分配的區(qū)域標(biāo)記為未使用。

這也正是為什么說Temp區(qū)變量在使用時要初始化,因?yàn)槟瞧鎯^(qū)域已經(jīng)被使用過,臟了,是不干凈的,你不知道上次留在里面的值是100還是0。

01579d8a-9174-11f0-8c8f-92fbcf53809c.png

再來看第二個例子,比如我們有幾個FB和FC,互相間存在調(diào)用,然后我們在資源中的調(diào)用結(jié)構(gòu)就可以發(fā)現(xiàn),局部數(shù)據(jù),也就是臨時變量,是在調(diào)用執(zhí)行期間才會占用空間,而Static區(qū)數(shù)據(jù)是存在DB數(shù)據(jù)塊上的。

01b6b05e-9174-11f0-8c8f-92fbcf53809c.png

0212d974-9174-11f0-8c8f-92fbcf53809c.png

026f3638-9174-11f0-8c8f-92fbcf53809c.png

那為什么要有Temp變量,我全使用Static變量行不行?

當(dāng)然可以,但這會帶來兩個問題。我們來看這段程序

02c95104-9174-11f0-8c8f-92fbcf53809c.png

很簡單的一段統(tǒng)計(jì)產(chǎn)品良率的程序,這只是一小段程序,用了3個Temp變量,當(dāng)然可以將它們都定義成Static,不影響功能,但是會占用Static區(qū)的空間,我們知道PLC的工作空間是有限的,這是第一個問題,會不必要的增加空間占用。第二個問題是,我們?nèi)タ催@個DB數(shù)據(jù)塊時,會多很多這種用于臨時計(jì)算使用的變量,顯得不夠簡潔,特別是當(dāng)程序量比較大時。

所以,對于這類只是臨時中間計(jì)算使用,就把它存到Temp中去。

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

    關(guān)注

    5038

    文章

    14249

    瀏覽量

    480857
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4399

    瀏覽量

    66325
  • 變量
    +關(guān)注

    關(guān)注

    0

    文章

    615

    瀏覽量

    29276

原文標(biāo)題:一文講透PLC中Static和Temp變量的區(qū)別

文章出處:【微信號:gkongbbs,微信公眾號:工控論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    static函數(shù)與普通函數(shù)有什么區(qū)別?  

    變量能否和全局變量重名?   如何引用一個已經(jīng)定義過的全局變量?  全局變量可不可以定義在可被多個.C文件包含的頭文件?為什么?
    發(fā)表于 12-03 06:15

    static的全局變量與局部變量的使用,看完你就懂了

    不能被其它文件所用;其它文件可以定義相同名字的變量,不會發(fā)生沖突。 (1)全局變量和全局靜態(tài)變量區(qū)別 1)全局
    發(fā)表于 06-27 08:54

    static作用(修飾函數(shù)、局部變量、全局變量

    詳細(xì)介紹了static作用(修飾函數(shù)、局部變量、全局變量)的用法
    發(fā)表于 11-17 10:30 ?4次下載

    c語言static的作用

    全局變量只能在本文件訪問,不能在其它文件訪問,即便是extern外部聲明也不可以。第三、static修飾一個函數(shù),則這個函數(shù)的只能在本文件
    發(fā)表于 11-03 09:36 ?1.6w次閱讀

    C語言register變量和extern及static等知識總結(jié)

    register變量必須是一個單個的值,并且其長度應(yīng)小于或等于整型的長度。但是,有些機(jī)器的寄存器也能存放浮點(diǎn)數(shù)。 register變量可能不存放在內(nèi)存,所以不能用取址符運(yùn)算符 。 只有局部
    發(fā)表于 11-21 10:20 ?5次下載

    C語言中static和extern的區(qū)別介紹

    一、在C,static主要定義全局靜態(tài)變量、定義局部靜態(tài)變量、定義靜態(tài)函數(shù)。 1、定義全局靜態(tài)變量:在全局
    發(fā)表于 11-21 10:23 ?6次下載

    基于static變量來實(shí)現(xiàn)一個模塊的封裝

    static變量的一個顯著的作用就是可以實(shí)現(xiàn)一個模塊的封裝。 static存儲類別的特性決定了static聲明的全局變量只能被本源文件
    的頭像 發(fā)表于 01-05 10:54 ?5868次閱讀
    基于<b class='flag-5'>static</b><b class='flag-5'>變量</b>來實(shí)現(xiàn)一個模塊的封裝

    什么是PLC變量

    都通過變量來操作。 為指令分配變量后,即會使用指定變量的值來執(zhí)行該指令。 變量在 TIA Portal 中集中管理。 在程序編輯器創(chuàng)建
    的頭像 發(fā)表于 10-11 11:53 ?2w次閱讀
    什么是<b class='flag-5'>PLC</b><b class='flag-5'>變量</b>

    西門子PLC變量定義變量

    。 程序多數(shù)指令都通過變量來操作。? 為指令分配變量后,即會使用指定變量的值來執(zhí)行該指令。 變量在 TIA Portal 中集中管理。?
    的頭像 發(fā)表于 12-23 16:25 ?2.2w次閱讀
    西門子<b class='flag-5'>PLC</b><b class='flag-5'>變量</b>表<b class='flag-5'>中</b>定義<b class='flag-5'>變量</b>

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

    臨時變量是臨時存儲在本地數(shù)據(jù)區(qū)的變量。只有在執(zhí)行POU時,才使用定義的臨時變量,而在執(zhí)行POU后,不再使用臨時變量的值。在主程序或中斷程序
    發(fā)表于 12-13 18:07 ?6161次閱讀

    為什么C++單例模式不能直接全部使用static變量static函數(shù)呢?

    通過getInstance()函數(shù)獲取單例對象,這種模式的關(guān)鍵之處不是在于強(qiáng)迫你用函數(shù)來獲取對象。關(guān)鍵之處是讓static對象定義在函數(shù)內(nèi)部,變成局部static變量。看下這種實(shí)現(xiàn)方式的經(jīng)典demo:
    的頭像 發(fā)表于 06-05 14:14 ?1906次閱讀

    Static變量和Local變量區(qū)別

    變量可以分為3類,即Static、Automatic、和Local。如下表所示。
    的頭像 發(fā)表于 10-12 09:35 ?1900次閱讀

    JAVAstatic、final、static final如何區(qū)分

    當(dāng)我們在使用java寫類的屬性時總會用到很多的類型去修飾它,比如字符串String,整數(shù)型int,但是我們偶爾也會遇到 static、final、static final,那么他們的區(qū)別是什么呢?
    的頭像 發(fā)表于 02-14 14:55 ?1500次閱讀
    JAVA<b class='flag-5'>中</b><b class='flag-5'>static</b>、final、<b class='flag-5'>static</b> final如何區(qū)分

    Javastatic關(guān)鍵詞的介紹

    可以說是該關(guān)鍵字最常用的一個功能,通常將用 static 修飾的成員變量稱為類成員或者靜態(tài)成員,那么靜態(tài)成員和不用 static 修飾的非靜態(tài)成員有什么區(qū)別呢? 我們先看看不用
    的頭像 發(fā)表于 10-11 15:26 ?846次閱讀
    Java<b class='flag-5'>中</b>對<b class='flag-5'>static</b>關(guān)鍵詞的介紹

    什么是變量PLC變量哪些部分組成?

    變量在 TIA Portal 中集中管理。 在程序編輯器創(chuàng)建 PLC 變量與在 PLC 變量
    發(fā)表于 10-15 11:31 ?6963次閱讀
    什么是<b class='flag-5'>變量</b>?<b class='flag-5'>PLC</b><b class='flag-5'>變量</b>哪些部分組成?