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