PLC在工作時采用順序循環掃描的工作方式來執行081(包括子程序,如FC,FB等)中的用戶程序,在一個掃描周期的開始CPU對所有的輸入端子上的信號進行集中采集,BTB06-600S并將采集結果保存在過程映像輸入寄存器(I),在程序執行期間不再考慮輸入端子上信號的變化,而程序執行過程中所產生的中間結果則直接保存在存儲器(M)或過程映像輸出寄存器(Q)中,并不立即送到輸出端子,只有在當前掃描周期結束前才將程序執行的最終結果集中送到輸出端子,對輸出端子進行刷新。如果對這種掃描方式理解不清楚,在編程時就會出現意想不到的結果。請看下面的分析:
根據本項目的要求,第1次按按鈕時只有第1臺電動機工作,在這之前兩臺電動機都處于停機狀態,由此可編寫出圖4-9中如Network 1所示的邏輯程序段;第2次按按鈕時第1臺電動機停車,第2臺電動機工作,在這之前第1臺電動機工作,第2臺電動機停車,由此可編寫出圖4-9中如Network 2所示的邏輯程序段;第3次按按鈕時兩臺電動機同時停車,在這之前第1臺電動機停車,第2臺電動機工作,由此可編寫出圖4-9中如Network 3所示的邏輯程序段。

圖4-9所示的程序看起來邏輯關系非常清晰,應該能夠實現項目所要求的功能,但仔細分析后發現:由于程序按編寫順序進行掃描工作,第1次操作按鈕后的一個掃描周期內,KM1和KM2的映像寄存器都為O(兩臺電動機都處于停車狀態),MO.0、MO.1及MO.2都為1(SB1上升沿使MO.O,MO.1及MO.2保持一個周期的高電平)。CPU首先掃描第1個邏輯段(Network l),此時由于KM1和KM2的常閉觸點閉合(KM1和KM2的映像寄存器都為O),所以使KM1的映像寄存器為1;CPU掃描到第2個邏輯段(Network 2)時,由于KM1的映像寄存器已經變為1(其常開觸點閉合),而KM2的常閉觸點還處于閉合狀態,所以KM2的映像
寄存器就舍變為1,同時KM1的映像寄存器變為0;CPU掃描到第3個邏輯段(Network 3)時,由于KM1的映像寄存器已經變為(其常開觸點斷開),KM2的映像寄存器已經變為1(其常開觸點閉合),所以KM1和KM2的映像寄存器均變為O,因此程序掃描的最終結果為KM1的映像寄存器為O,KM2的映像寄存器為O,在程序刷新階段將使第1臺電動機停車,第2臺電動機停機。以后再操作按鈕KM1和KM2,都將保持這種狀態不變。
解決問題的辦法:采用本項目控制方案1所示的方法,為每一個狀態設置一個標志位,不直接用邏輯串驅動輸出,這樣就可以避免一個掃描周期內輸出映像寄存器被多次刷新。
|