{心中有空間,夢(mèng)想就有可能}
{西門子與客戶攜手,讓關(guān)鍵所在,逐一實(shí)現(xiàn)}
聯(lián) 系 人: 黃勇《黃工》 24小時(shí)聯(lián)系手機(jī): 13701633515
直線銷售 電 話: 021-31660605 在 線 商 務(wù) QQ: 77956468
單位:臺(tái) 產(chǎn)品單價(jià):電議
供貨數(shù)量:不限 最小定量:1
包裝說(shuō)明:齊全 產(chǎn)品規(guī)格:全新原裝
在S7-200編程中,子程序想必大家都用過(guò),使用子程序可以更好地組織程序結(jié)構(gòu),便于閱讀和調(diào)試,也可以縮短程序代碼。但是使用子程序也有一些需要注意的地方,除了子程序在同一周期內(nèi)被多次調(diào)用時(shí),不能使用上升沿、下降沿、定時(shí)器和計(jì)數(shù)器之外,還有子程序中局部變量的特點(diǎn),在編程多次調(diào)用帶參數(shù)子程序時(shí)要特別注意。下面就是前些天熱線上遇到的一個(gè)Case,非常有代表性,在這里跟大家分享。
E:您好,西門子技術(shù)支持。
C:您好,我想問(wèn)下,200子程序是不是多次調(diào)用時(shí)會(huì)不好使?
E:不會(huì)啊,您是不是在子程序里使用了沿指令或者定時(shí)器?
C:沒(méi)有啊,我就編了一句很簡(jiǎn)單的開(kāi)關(guān)程序,開(kāi)關(guān)閉合,線圈導(dǎo)通,然后主程序里調(diào)用了兩次這個(gè)子程序,結(jié)果第一個(gè)I點(diǎn)閉合了,兩個(gè)Q點(diǎn)都導(dǎo)通了。
E:(心里活動(dòng):看來(lái)是和子程序的局部變量有關(guān)了,估計(jì)客戶程序邏輯有問(wèn)題)那請(qǐng)您描述一下您的子程序吧,我?guī)湍纯础?/span>
于是客戶描述了一下自己的程序,大致了解了之后告知客戶我這邊測(cè)試下,稍后回復(fù)。
客戶的程序是這樣的:
子程序:是個(gè)常見(jiàn)的自保持邏輯,接口參數(shù)如紅框所示。
圖. 01
主程序:調(diào)用了兩次上面的子程序,實(shí)現(xiàn)I0.0和I0.1控制Q0.0的閉合和斷開(kāi),I0.2和I0.3控制Q0.1的閉合和斷開(kāi)。
圖. 02
那么在線測(cè)試下程序執(zhí)行情況,發(fā)現(xiàn)果然如客戶所描述的,I0.0為1后,Q0.0和Q0.1都為1了。見(jiàn)下圖.03所示。而如果閉合I0.2,則Q0.0和Q0.1都斷開(kāi)。
圖. 03
為什么會(huì)這樣呢?首先我們先明確子程序局部變量的特點(diǎn)。局部變量的變量類型分為四種:IN,IN_OUT,OUT和TEMP,局部變量存儲(chǔ)區(qū)是在子程序調(diào)用時(shí)開(kāi)辟的,子程序調(diào)用完成,局部變量占用的存儲(chǔ)空間釋放。
我們來(lái)分析下客戶的子程序。
在主程序第一次調(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í),開(kāi)辟臨時(shí)存儲(chǔ)空間,但是此時(shí)的存儲(chǔ)空間與第一次調(diào)用時(shí)開(kāi)辟的不一定一致。可是,也有可能由于程序簡(jiǎn)單,仍然使用第一次調(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)客戶反映的那種問(wèn)題。
那么該如何避免這種情況呢?
大家是否還記得剛剛介紹局部變量參數(shù)類型時(shí)除了IN, OUT類型外,還有一種類型叫IN_OUT,這種類型的參數(shù)是先讀入,然后再寫(xiě)出,這里我們就可以利用它的特點(diǎn)解決上面的問(wèn)題。
下面對(duì)子程序的參數(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ì)在開(kāi)始被Q點(diǎn)的狀態(tài)所修改,就不存在兩次調(diào)用相互影響的情況了。
另外,如果在子程序一開(kāi)始就添加一條指令,對(duì)局部變量#CC進(jìn)行賦初值(如圖.08),也可以避免臨時(shí)變量區(qū)數(shù)值不定的問(wèn)題,您可以嘗試測(cè)試下。
圖.08
所以,在編寫(xiě)200子程序時(shí)要特別注意局部變量的特點(diǎn),一旦出現(xiàn)多次調(diào)用不正常的情況,就可以從局部變量的特點(diǎn)出發(fā)分析,看看是不是存在隱患。善加利用IN_OUT變量也許可以解決許多問(wèn)題。
設(shè)備 | TP177micro |
顯示 | STN LCD |
·尺寸 | 5.7英寸 |
·分辨率(寬×高,象素) | 320×240(豎型為240×320) |
·顏色 | 藍(lán)屏,4級(jí)灰度顯示 |
·背景光的平均亮度壽命( 25℃) | 大約 50000小時(shí) |
操作員控制 | 觸摸屏幕 |
·可編程的功能鍵 | |
·系統(tǒng)鍵 | |
·數(shù)字輸入 /字母輸入 | 有 /有 |
存儲(chǔ) | Flash/RAM |
·用戶數(shù)據(jù)可用內(nèi)存 | 256KB |
接口 | 1×RS485 |
與控制器的連接 | S7-200 |
電源 | 24V DC(+18V~+30V DC) |
·額定電流 | 0.24A |
時(shí)鐘 | 軟件時(shí)鐘 |
防護(hù)等級(jí) | |
·前面板 | IP65, NEMA4, NEMA4x, NEMA12 |
·后面板 | IP20 |
認(rèn)證 | FM, cULus, CE, C-Tick, EX Zone2/22 |
尺寸 | |
·前面板尺寸寬×高( mm) | 212×156 |
·安裝開(kāi)孔尺寸寬×高( mm) | 198×142 |
·安裝深度 (mm) | 42 |
重量 | 0.7kg |
環(huán)境條件 | |
·安裝角度 | |
-無(wú)外部通風(fēng)的最大允許傾斜角 | ± 35° |
·溫度 | |
-操作(垂直安裝) | 0℃~+50℃ |
-操作(最大傾斜角度) | 0℃~+40℃ |
-運(yùn)輸和存儲(chǔ) | - 20℃~+60℃ |
·最大相對(duì)濕度 | 85% |
功能 | |
消息系統(tǒng) | |
·消息的數(shù)目 | 500個(gè) |
·消息長(zhǎng)度(行數(shù)×字符數(shù)) | |
·每條消息的過(guò)程值數(shù)目 | 8個(gè) |
·消息緩沖器 | 循環(huán)緩沖, 128個(gè)消息 |
過(guò)程畫(huà)面 | 250個(gè) |
·文本對(duì)象 | 500個(gè)文本元素 |
·每個(gè)畫(huà)面的變量 /域 | 20/20 |
·圖形對(duì)象 | 位圖 ,圖標(biāo),背景圖畫(huà) |
·動(dòng)態(tài)對(duì)象 | 柱形統(tǒng)計(jì)圖表 |
-庫(kù) | 有 |
變量 | 250個(gè) |
用戶訪問(wèn)保護(hù)(密碼保護(hù)) | 用戶組專用權(quán)限 (多達(dá)32個(gè)權(quán)限) |
在線語(yǔ)言 | 5種 |
字符集 | 支持亞洲字符集 |
幫助系統(tǒng) | 有 |
組態(tài)工具 | WinCC flexible |
·傳送組態(tài) | 串行 |
訂貨號(hào) | |
TP 177 micro | 6AV6 640-0CA11-0AX0 |
WinCC flexible 2004 SP1亞洲標(biāo)準(zhǔn)版本 | 6AV6 612-0AA11-0AA0 |
設(shè)備 | TP177micro |
顯示 | STN LCD |
·尺寸 | 5.7英寸 |
·分辨率(寬×高,象素) | 320×240(豎型為240×320) |
·顏色 | 藍(lán)屏,4級(jí)灰度顯示 |
·背景光的平均亮度壽命( 25℃) | 大約 50000小時(shí) |
操作員控制 | 觸摸屏幕 |
·可編程的功能鍵 | |
·系統(tǒng)鍵 | |
·數(shù)字輸入 /字母輸入 | 有 /有 |
存儲(chǔ) | Flash/RAM |
·用戶數(shù)據(jù)可用內(nèi)存 | 256KB |
接口 | 1×RS485 |
與控制器的連接 | S7-200 |
電源 | 24V DC(+18V~+30V DC) |
·額定電流 | 0.24A |
時(shí)鐘 | 軟件時(shí)鐘 |
防護(hù)等級(jí) | |
·前面板 | IP65, NEMA4, NEMA4x, NEMA12 |
·后面板 | IP20 |
認(rèn)證 | FM, cULus, CE, C-Tick, EX Zone2/22 |
尺寸 | |
·前面板尺寸寬×高( mm) | 212×156 |
·安裝開(kāi)孔尺寸寬×高( mm) | 198×142 |
·安裝深度 (mm) | 42 |
重量 | 0.7kg |
環(huán)境條件 | |
·安裝角度 | |
-無(wú)外部通風(fēng)的最大允許傾斜角 | ± 35° |
·溫度 | |
-操作(垂直安裝) | 0℃~+50℃ |
-操作(最大傾斜角度) | 0℃~+40℃ |
-運(yùn)輸和存儲(chǔ) | - 20℃~+60℃ |
·最大相對(duì)濕度 | 85% |
功能 | |
消息系統(tǒng) | |
·消息的數(shù)目 | 500個(gè) |
·消息長(zhǎng)度(行數(shù)×字符數(shù)) | |
·每條消息的過(guò)程值數(shù)目 | 8個(gè) |
·消息緩沖器 | 循環(huán)緩沖, 128個(gè)消息 |
過(guò)程畫(huà)面 | 250個(gè) |
·文本對(duì)象 | 500個(gè)文本元素 |
·每個(gè)畫(huà)面的變量 /域 | 20/20 |
·圖形對(duì)象 | 位圖 ,圖標(biāo),背景圖畫(huà) |
·動(dòng)態(tài)對(duì)象 | 柱形統(tǒng)計(jì)圖表 |
-庫(kù) | 有 |
變量 | 250個(gè) |
用戶訪問(wèn)保護(hù)(密碼保護(hù)) | 用戶組專用權(quán)限 (多達(dá)32個(gè)權(quán)限) |
在線語(yǔ)言 | 5種 |
字符集 | 支持亞洲字符集 |
幫助系統(tǒng) | 有 |
組態(tài)工具 | WinCC flexible |
·傳送組態(tài) | 串行 |
訂貨號(hào) | |
TP 177 micro | 6AV6 640-0CA11-0AX0 |
WinCC flexible 2004 SP1亞洲標(biāo)準(zhǔn)版本 | 6AV6 612-0AA11-0AA0 |