日本欧美一区-日本欧美一区二区三区片-日本强好片久久久久久AAA-日本-区一区二区三区A片-日本人伦一区二区三区-日本人妻A片成人免费看

電子開發(fā)網(wǎng)

電子開發(fā)網(wǎng)電子設(shè)計(jì) | 電子開發(fā)網(wǎng)Rss 2.0 會(huì)員中心 會(huì)員注冊
搜索: 您現(xiàn)在的位置: 電子開發(fā)網(wǎng) >> 電子開發(fā) >> plc工業(yè)軟件使用 >> 正文

西門子S7-200子程序,多次調(diào)用的“怪”現(xiàn)象

作者:佚名    文章來源:本站原創(chuàng)    點(diǎn)擊數(shù):    更新時(shí)間:2023/8/5

西門子S7-200子程序,多次調(diào)用的“怪”現(xiàn)象

在S7-200編程中,子程序想必大家都用過,使用子程序可以更好地組織程序結(jié)構(gòu),便于閱讀和調(diào)試,也可以縮短程序代碼。但是使用子程序也有一些需要注意的地方,除了子程序在同一周期內(nèi)被多次調(diào)用時(shí),不能使用上升沿、下降沿、定時(shí)器和計(jì)數(shù)器之外,還有子程序中局部變量的特點(diǎn),在編程多次調(diào)用帶參數(shù)子程序時(shí)要特別注意。下面就是前些天熱線上遇到的一個(gè)Case,非常有代表性,在這里跟大家分享。

E:您好,西門子技術(shù)支持。
C:您好,我想問下,200子程序是不是多次調(diào)用時(shí)會(huì)不好使?
E:不會(huì)啊,您是不是在子程序里使用了沿指令或者定時(shí)器?
C:沒有啊,我就編了一句很簡單的開關(guān)程序,開關(guān)閉合,線圈導(dǎo)通,然后主程序里調(diào)用了兩次這個(gè)子程序,結(jié)果第一個(gè)I點(diǎn)閉合了,兩個(gè)Q點(diǎn)都導(dǎo)通了。
E:(心里活動(dòng):看來是和子程序的局部變量有關(guān)了,估計(jì)客戶程序邏輯有問題)那請您描述一下您的子程序吧,我?guī)湍纯础?BR>于是客戶描述了一下自己的程序,大致了解了之后告知客戶我這邊測試下,稍后回復(fù)。
客戶的程序是這樣的:
子程序:是個(gè)常見的自保持邏輯,接口參數(shù)如紅框所示。

 

圖. 01

主程序:調(diào)用了兩次上面的子程序,實(shí)現(xiàn)I0.0和I0.1控制Q0.0的閉合和斷開,I0.2和I0.3控制Q0.1的閉合和斷開。

 

圖. 02

那么在線測試下程序執(zhí)行情況,發(fā)現(xiàn)果然如客戶所描述的,I0.0為1后,Q0.0和Q0.1都為1了。見下圖.03所示。而如果閉合I0.2,則Q0.0和Q0.1都斷開。
 

圖. 03

為什么會(huì)這樣呢?首先我們先明確子程序局部變量的特點(diǎn)。局部變量的變量類型分為四種:IN,IN_OUT,OUT和TEMP,局部變量存儲(chǔ)區(qū)是在子程序調(diào)用時(shí)開辟的,子程序調(diào)用完成,局部變量占用的存儲(chǔ)空間釋放。
我們來分析下客戶的子程序。
在主程序第一次調(diào)用子程序時(shí),如果I0.0為1,I0.1為0,它們將自身值分別傳給輸入局部變量#AA和#BB,子程序中程序邏輯執(zhí)行如下圖.04所示。此時(shí)局部變量#CC值為1,子程序完成,#CC將值傳送到輸出參數(shù)Q0.0上,使其置1。根據(jù)局部變量的特點(diǎn),子程序第一次調(diào)用完成后,局部變量存儲(chǔ)區(qū)釋放。

 
圖. 04
那么當(dāng)主程序第二次調(diào)用該子程序時(shí),開辟臨時(shí)存儲(chǔ)空間,但是此時(shí)的存儲(chǔ)空間與第一次調(diào)用時(shí)開辟的不一定一致。可是,也有可能由于程序簡單,仍然使用第一次調(diào)用時(shí)占用的存儲(chǔ)空間。如果這種情況發(fā)生了,那么第一次調(diào)用時(shí)已經(jīng)將#CC的L0.2置了1,而此值依舊存在,那么第二次調(diào)用時(shí)雖然輸入?yún)?shù)I0.2和I0.3為0 ,但是#CC(L0.2)為1,由于客戶的子程序邏輯有自保持部分,所以最后L0.2的邏輯結(jié)果仍然是1。子程序完成后,#CC將值傳送到輸出參數(shù)Q0.1上,使其置1。所以就會(huì)出現(xiàn)客戶反映的那種問題。
那么該如何避免這種情況呢?
大家是否還記得剛剛介紹局部變量參數(shù)類型時(shí)除了IN, OUT類型外,還有一種類型叫IN_OUT,這種類型的參數(shù)是先讀入,然后再寫出,這里我們就可以利用它的特點(diǎn)解決上面的問題。
下面對子程序的參數(shù)進(jìn)行修改,將原先的#CC變量類型改為IN_OUT。如下圖所示:

 
圖. 05

主程序結(jié)構(gòu)不變,如下所示,可以看到由于#CC的類型是IN-OUT,它在子程序塊的接口位置也轉(zhuǎn)到了左側(cè)輸入側(cè)。

 

圖. 06
下面再次將I0.0置1,其他輸入都為0,監(jiān)控程序狀態(tài),如圖.07所示,可以看到只有Q0.0為1,Q0.1狀態(tài)為0。而如果將I0.1置1, Q0.0被復(fù)位,Q0.1還是0,這樣就符合客戶的控制要求了。

 

圖. 07

同樣,如果只給I0.2置1,那么也只有Q0.1會(huì)亮,不會(huì)再影響Q0.0。
了解了IN_OUT類型變量的特點(diǎn),就不難分析以上的結(jié)果。因?yàn)槊看握{(diào)用子程序時(shí),局部變量#CC都會(huì)先去讀取輸入?yún)?shù)Q0.0或Q0.1的狀態(tài),所以即使兩次調(diào)用子程序時(shí),#CC變量使用的同一區(qū)域,該區(qū)域的值也會(huì)在開始被Q點(diǎn)的狀態(tài)所修改,就不存在兩次調(diào)用相互影響的情況了。
另外,如果在子程序一開始就添加一條指令,對局部變量#CC進(jìn)行賦初值(如圖.08),也可以避免臨時(shí)變量區(qū)數(shù)值不定的問題,您可以嘗試測試下

 
圖. 08
所以,在編寫200子程序時(shí)要特別注意局部變量的特點(diǎn),一旦出現(xiàn)多次調(diào)用不正常的情況,就可以從局部變量的特點(diǎn)出發(fā)分析,看看是不是存在隱患。善加利用IN_OUT變量也許可以解決許多問題。
 


 

Tags:子程序調(diào)用,子程序,step7,S7-200  
責(zé)任編輯:admin
相關(guān)文章列表
西門子STEP 7-MicroWIN SMART軟件 交叉引用
西門子S7-200SMART PLC如何實(shí)現(xiàn)星三角降壓啟動(dòng)多次調(diào)用?子程序編
西門子PLC子程序?qū)嵗琒7-200 SMART PLC帶參數(shù)子程序應(yīng)用實(shí)例
三菱plc子程序調(diào)用,三菱FX PLC學(xué)習(xí)之子程序調(diào)用與循環(huán),CALL和S
STEP7西門子PLC S7-300程序備份步驟,程序下載備份
STEP7【步驟詳解】西門子 PLC PID組態(tài)設(shè)置及PID常見問題解答
STEP7西門子S7-200 SMART高速計(jì)數(shù)器指令向?qū)西門子smart高速計(jì)數(shù)
STEP7運(yùn)動(dòng)控制 S7-200Smart控制運(yùn)動(dòng)軸(脈沖電機(jī)/伺服)教程
S7-200運(yùn)動(dòng)控制如何移植到200smart, PTOx_CTRL指令由AXISx_CTRL指
西門子S7-200脈沖輸出指令做電機(jī)正反轉(zhuǎn)控制,PLS指令,子程序和中
其實(shí),Modbus通訊很簡單!——手把手教你,STEP7
S7-200SMARTPLC的軟件使用——西門子200plc硬件組態(tài)STEP7
STEP7-MicroWIN SMART軟件概述和界面介紹,軟件入門教程
西門子PLC:200smart(13-16章)_200smart 子程序
S7-200高速脈沖輸出應(yīng)用,HDEF、HSC、PLS
S7-200網(wǎng)絡(luò)通訊協(xié)議的選擇,CP243-1,PPI、MPI、PROFIBUS、TCP/IP
【STEP7 MicroWIN軟件】S7-200多主站連接以太網(wǎng)通訊設(shè)置說明
STEP7Micro/WIN32軟件CP243-1以太網(wǎng)通訊模塊配置說明
STEP7-MicroWIN SMART西門子smart200運(yùn)動(dòng)控制向?qū)?/a>
【STEP7】干貨 S7-200SMART局部變量的應(yīng)用,局部變量(Local var
請文明參與討論,禁止漫罵攻擊,不要惡意評(píng)論、違禁詞語。 昵稱:
1分 2分 3分 4分 5分

還可以輸入 200 個(gè)字
[ 查看全部 ] 網(wǎng)友評(píng)論
最新推薦
關(guān)于我們 - 聯(lián)系我們 - 廣告服務(wù) - 友情鏈接 - 網(wǎng)站地圖 - 版權(quán)聲明 - 在線幫助 - 文章列表
返回頂部
刷新頁面
下到頁底
晶體管查詢