當前位置:編程學習大全網 - 編程語言 - plc程序上載時,以下錯誤的是

plc程序上載時,以下錯誤的是

PLC程序上載時以下錯誤的解析程序如下:

自動化研究結果內容編程內容:

壹、編程時沒有結合實際接線初學PLC時,大家都有壹種慣性思維,會把接在PLC輸入點的開關全部當作常開輸入,這樣寫出來的程序非常接近電氣原理圖的控制電路。例如把自鎖電路的控制部分交由PLC控制,我相信絕大多數初學者寫出來的程序應該是這樣的。很顯然,這個程序下載至PLC將不能正常運行。PLC上電後,X1和X2都處於通電狀態,對應到程序裏的X1和X2常閉觸點都將斷開不導通,因此不管X0輸入什麽信號,Y0都不會有輸出。解決辦法就是,要麽把外部電路的輸入改為常開,要麽程序中X1和X2改為常開觸點。不過還是建議改程序,畢竟程序要依托在外圍電路的正確連接之上。例如,設備中最常見的急停按鈕就是接常閉觸點的,寫程序時要格外註意。

二、多線圈輸出

這個問題在初學者身上最為常見,可以說90%的人都踩過這個雷。無非就兩個原因,壹個是不能很好掌握PLC的工作原理,壹個是程序不規範導致。

雖然同壹軟元件的線圈可以在程序中出現兩次或多次,但是雙線圈輸出時壹般情況下是不允許的。註意,我說的是壹般情況,比如X0點動控制Y0輸出,我可以寫成下面這種雙線圈的形式,只是這種程序毫無意義而已。

三、子程序中不使用子程序專用定時器

三菱Fx3U中,配有8個可用於子程序使用的定時器:T192~T199(也可以當作普通的定時器使用)。子程序專用定時器在工程項目應用中並不多,它的作用就是在子程序停止調用時,還能在子程序中運行。

四、子程序中使用復位指令,假如在主程序中使用了計數器計數, 通過調用子程序的方式復位計數器,妳會發現這個計算器再也計不了數了。其實這個問題在我教子程序時會特意去強調過,不要在子程序裏面使用復位和邊沿指令(除非妳能很好的處理它們的邏輯關系),但是在後面講電機測轉速程序時,依然還是會有學員把復位高速計數器寫在子程序裏,導致程序不能調試。要分析為什麽會出現這種情況,首先我們還是要熟悉PLC的工作原理——掃描周期(也叫運算周期)。以上圖為例,系統進入子程序後,會執行[RST C0],之後返回調用處。此時系統已經將C0計數器復位了,但是系統並未掃描到執行[RST C0]的條件斷開,因此在系統的判斷裏,將認為[RST C0]這條命令處於壹直執行的狀態,也就導致了C0壹直處於被復位的狀態,從而無法再次計數。

五、使用MOV指令復位計數器傳送指令可以將計數器的當前值清零,但是無法復位計數器的觸點,至於原因嘛~學過ST結構文本編程的就明白,這裏就不討論了。

六、在FB塊中使用。

七、數據類型與指令不符

我們人類可以輕松地對比1.5和5這兩個數,只要智力正常,都知道1.5<5。但是對於計算機(PLC也算是計算器,畢竟也符合馮諾依曼體系)來說,沒那麽簡單。對於PLC來說,它只能對比同類型的數據,5.0和5在任何計算機設備都是天差地別的存在,這裏就涉及到PLC的另壹個基礎知識——數據類型(之後有時間我會細講這個內容)。整型數據和浮點型數據的存儲方式不壹樣,以不同的數據讀取方式讀同壹個寄存器裏的數據,讀出來的結果也是不壹樣的。而使用大多數指令時,都是默認為同壹種數據類型調取寄存器的值,因此不同數據類型的數據不能混用。上圖犯的錯誤就是用雙整型比較指令比較浮點數和雙整數,結果肯定是不對的。不過,三菱的FX3U也不存在浮點數比較指令,後續的FX5U填補了這壹空缺。

八、浮點數有時不能直接用比較相等指令我們已經計算出0.11×2.6=0.286,並把0.286賦值於D0寄存器,再利用[LDE= D0 0.286]觸點比較指令輸出Y0線圈,可結果呢?D0明明等於0.286,按理這個觸點應該是導通並輸出Y0才對的,為什麽會出現這種不輸出的情況呢?上述“違反常理”問題的原因與浮點數的計算機表示方式有關。在小型的PLC(例如FX3U)中,只有單精度浮點數,使用的標準是IEEE-754標準(後期有時間,我會專門介紹),存在壹種精度丟失,而且這種情況在任何計算機和任何編程語言都是無法避免的,主要在於十進制數轉二進制數的進制轉換不完全性引起的。例如,將0.65轉換為二進制數得到(0.65)10=(0.10100110011001……)2,再往下換算將無限重復的算出“0011”,因此只能得到壹個近似值,這就是浮點數的誤差。上述的例子,我用另壹種編程語言LabVIEW給大家看看計算機計算0.11×2.6會算出什麽結果,看壹下就明白為什麽Y0不能輸出了。

是的,計算機計算出來的結果是0.28600000000

九、寄存器編號重疊

這個問題也是經常出現,上圖是某學員寫的回原點程序,很明顯是D0和D1已經組成了壹個雙整數類型的寄存器,再使用D1就屬於寄存器重用的情況,只能跳過D1使用D2來存放下壹個數據。犯過這個錯誤的,這裏不過多贅述,先扇自己壹巴掌。十、使用標簽編程時不註意自動分配的軟元件被占用,其實很多老師都不太樂意去教學生用標簽編程,因為真的有人用不好這個東西,老師會教的比較累。但是我教,我比較喜歡有挑戰的事情。言歸正傳,其實很好解決這個事情,要麽用標簽(包括數組)不要直接用軟元件+編號的編程方式,要麽修改自動分配軟元件設置,兩種辦法全部奉上。啥~看不懂?還是那句話,以後有時間細講,十壹、編寫定位相關程序時,同壹軸的脈沖輸出緊密銜接Emmm,直接看聊天記錄,還是有不少學員問這個問題。我給大家簡單描述壹下,很多人在做同壹個軸的多點定位控制時,剛執行完壹條定位控制指令就立刻以這條指令的完成標誌當做下壹條定位指令的啟動標誌,這時候會發現第二條定位指令壓根不起作用,原因還是和PLC的工作原理有關。比如這段控制Y0做兩次相對定位的程序,就是壹種“無縫銜接”的編程寫法(這是個反面教材,別學這個)。當第壹條DRVI指令結束時,置位了M11,復位了M10,此時PLC還未掃描到END,在系統看來,並沒有把M10驅動的那條定位指令結束掉,而且又立刻啟動了下壹條DRVI指令,這時候系統就會認為我們同時執行了兩條定位控制指令,因此無法執行。正確的處理方式,應該是在兩條指令中間加入壹定的停滯時間,祝您生活愉快,謝謝提問?

  • 上一篇:小米路由器怎麽樣刷機
  • 下一篇:急需機械基礎的教案(中職教育)第壹次講課不會寫教案,也不知道怎麽講!
  • copyright 2024編程學習大全網