PLC程序邏輯“不正確”的原因分析
時間:2013-09-28 08:32 來源:未知
首先需要說明的是,這裏所說的邏輯不正確,並不是說PLC有問題了,而是我們在調試程序時遇到的一種從常理來說不符合邏輯的一種現象。有時我們在調試PLC程序時,會遇到程序邏輯不正確的情況,如下麵的這些語句所示(三菱Q係列PLC):
按理說,能流已經通過了前麵的節點,輸出線圈(B1117或B1116)就應該得電為1,為什麼會造成現在這種情況呢?有時遇到這種情況可能百思不得其解,丈二和尚摸不著頭腦。其實造成這種情況無外乎有以下二方麵的原因:
★ 輸出線圈的重複利用
★ PLC未掃描執行該部分程序
對於第一種情況,由於PLC是循環掃描的工作原理(PLC工作原理詳見《PLC基礎概念(2) 》),對於同一程序段中的多個線圈,PLC隻更新最後一個線圈的數字值(0或1),而對前麵的線圈則會不予理會,當我們監控程序時,就會發現前麵的線圈邏輯不對的情況。
解決方法:可利用編程軟件“軟元件查找”或“交叉使用表”的方法來觀察線圈在同一個程序是否重複利用,該線圈多次被使用,隻要更換其它的線圈就可以了(相關文章:《PLC雙線圈輸出的規則及在程序設計中的應用(作者:廖常初)》)。
對於第二種情況,由於PLC未執行掃描此部分程序,此時也會出現邏輯不對的情況發生。造成PLC不執行部分程序的原因有很多原因,常見原因有如2個方麵:
●在PLC中使用跳轉(JUMP)語句過多,改變了PLC的掃描順序而跳過了部分程序,導致部分程序未執行,造成該段程序內的相關語句邏輯不正確;
●部分程序未注冊。像一些PLC(如三菱PLC),你單純下載了程序還不行,你還需要注冊(需要下載PLC參數,詳見《三菱PLC程序編寫注意事項一例(原) 》),否則該部分程序不能運行,也會造成PLC程序邏輯不正確的情況發生。
使用JUMP語句造成邏輯錯誤的例子如下所示(SIEMENS PLC):
從例可以看出,當I0.0閉合時,由於PLC掃描跳過了網絡2(改變了PLC順序掃描的方向),所以PLC並不掃描網絡2,此時,網絡2中的I0.1和I0.2就是閉合了,Q0.0也不閉合。此處,僅是一個簡單說明性的例子,如果程序很大,JUMP用的過多,則很容易造成PLC邏輯“不正確”的現象發生,這種情況就不容易看出來了。因此建議在程序中要盡是少用JUMP語句,可以使用調用子程序的方法來實現同樣的功能。
看過《PLC程序邏輯“不正確”的原因分析》的人還看了以下文章
|
PLC隻有兩個輸入點實現單個電動機的啟動保 |
這是我自己做的,用的西門子smart做的,我的理解你是想一個點控製電機的啟停,並且做到啟保停,希望高手看到別笑話,但我試了是沒問題的 I0.0第一次工作時,Q0.0輸出,I0.0再一次工作時,Q0.0停止輸出! 可以把程序設計好後,停止按鈕都供外用一個輸入點x0,... |
|
如何備份s7-300plc程序 |
備份S7-300程序 1:打開Simatic manager, File>New雙擊打開; 2:點擊 Browse , 出現一個新窗口如下; 選擇一個目錄/創建一個新文件夾來保存備份。 3:接下來,進入option菜單,出現一個下拉列表,如下圖所示。 選擇PG/PC接口選項。 4:一個新的窗口將打... |
|
用這種方式編寫PLC程序很輕鬆 |
步進編程,是一種編程方法,用時髦的話來說,就是一種算法。在三菱PLC中,有一種步進梯形圖,它其實就是特殊的梯形圖,為什麼?因為它可以和梯形圖進行相互轉換,步進編程,實質就是狀態機編程。 狀態機編程法,通俗的理解,就是事務有有限種狀態,而編程,... |
|
西門子plc程序暫停功能怎麼實現 |
這個沒有做過數控係統開發的,根本不知道這裏麵的門道。注意,對於運動控製特別是有位置控製的話,暫停並不是將當前脈衝停止即可,大多數情況下必須有個減速暫停功能,否則會造成伺服報警或步進丟步。當然大多數PLC能實現此功能,點動情況實際上就是這樣操作... |
|
PLC接收脈衝的程序怎麼寫 |
接收脈衝的來自哪些元器件以及前期準備哪些工作;最常用的一般都是用PLC接收編碼器的脈衝,還有一些高速脈衝發生器等。 (1)首先我們來看一下他們的接線圖紙 (2)然後在PLC程序內寫入相關的計數程序指令,這裏以三菱FX5U為例 1位軟元件隻能使用X。請在以下... |