西門子代理6ES7132-4BD02-0AA0
我公司主營西門子各系列PLC (S7-200 SMART S7-300 S7-400) 觸摸屏 變頻器 (MM系列 G120 G120C G110) 伺服 (V80 V60) 數控備件 (PCU50 NCU CCU 軸卡) 等 價格優勢 產品為西門子原裝正版產品 我公司售出的產品 按西門子標準質保 產品本身有質量問題 質保一年 公司秉承:以信待人 以誠待人 質量如生命 客戶至上的經營理念 竭誠為您服務 您的肯定是我們大的動力 我們將期待與您長期持久的合作
內被多次調用時,不能使用上升沿、下降沿、定時器和計數器之外,還有子程序中局部變量的特點,在編程多次調用帶參數子程序時要特別注意。下面就是前些天熱線上遇到的一個Case,非常有代表性,在這里跟大家分享。
E:您好,西門子技術支持。
C:您好,我想問下,200子程序是不是多次調用時會不好使?
E:不會啊,您是不是在子程序里使用了沿指令或者定時器?
C:沒有啊,我就編了一句很簡單的開關程序,開關閉合,線圈導通,然后主程序里調用了兩次這個子程序,結果個I點閉合了,兩個Q點都導通了。
E:(心里活動:看來是和子程序的局部變量有關了,估計客戶程序邏輯有問題)那請您描述一下您的子程序吧,我幫您看看。
于是客戶描述了一下自己的程序,大致了解了之后告知客戶我這邊測試下,稍后回復。
客戶的程序是這樣的:
子程序:是個常見的自保持邏輯,接口參數如紅框所示。
圖. 01
主程序:調用了兩次上面的子程序,實現I0.0和I0.1控制Q0.0的閉合和斷開,I0.2和I0.3控制Q0.1的閉合和斷開。
圖. 02
那么在線測試下程序執行情況,發現果然如客戶所描述的,I0.0為1后,Q0.0和Q0.1都為1了。見下圖.03所示。而如果閉合I0.2,則Q0.0和Q0.1都斷開。
圖. 03
為什么會這樣呢?首先我們先明確子程序局部變量的特點。局部變量的變量類型分為四種:IN,IN_OUT,OUT和TEMP,局部變量存儲區是在子程序調用時開辟的,子程序調用完成,局部變量占用的存儲空間釋放。
我們來分析下客戶的子程序。
在主程序次調用子程序時,如果I0.0為1,I0.1為0,它們將自身值分別傳給輸入局部變量#AA和#BB,子程序中程序邏輯執行如下圖.04所示。此時局部變量#CC值為1,子程序完成,#CC將值傳送到輸出參數Q0.0上,使其置1。根據局部變量的特點,子程序次調用完成后,局部變量存儲區釋放。
圖.04
那么當主程序第二次調用該子程序時,開辟臨時存儲空間,但是此時的存儲空間與次調用時開辟的不一定一致??墒?,也有可能由于程序簡單,仍然使用次調用時占用的存儲空間。如果這種情況發生了,那么次調用時已經將#CC的L0.2置了1,而此值依舊存在,那么第二次調用時雖然輸入參數I0.2和I0.3為0 ,但是#CC(L0.2)為1,由于客戶的子程序邏輯有自保持部分,所以后L0.2的邏輯結果仍然是1。子程序完成后,#CC將值傳送到輸出參數Q0.1上,使其置1。所以就會出現客戶反映的那種問題。
- 西門子代理6ES7132-4BB31-0AB0 2024-11-23
- 西門子代理6ES7132-4BB31-0AA0 2024-11-23
- 西門子代理6ES7132-4BB01-0AB0 2024-11-23
- 西門子代理6ES7132-4BB01-0AA0 2024-11-23
- 西門子代理6ES7131-4BF50-0AA0 2024-11-23
- 西門子代理6ES7131-4RD02-0AB0 2024-11-23
- 西門子代理6ES7131-4BD51-0AA0 2024-11-23
- 西門子代理6ES7131-4CD02-0AB0 2024-11-23
- 西門子代理6ES7131-4FB00-0AB0 2024-11-23
- 西安西門子PLC代理商 2024-11-23
- 銅川西門子PLC代理商 2024-11-23
- 寶雞西門子PLC代理商 2024-11-23
- 咸陽西門子PLC代理商 2024-11-23
- 渭南西門子PLC代理商 2024-11-23
- 延安西門子PLC代理商 2024-11-23
聯系方式
- 電 話:18717946324
- 聯系人:占雪芬
- 手 機:18717946324
- 微 信:18717946324