我簡單的舉一個(gè)例子來說一下,如下是西門子200PLC中的一段程序,這個(gè)程序存在明顯的編譯錯(cuò)誤,和一些不明顯的要依據(jù)實(shí)際功能來判定的錯(cuò)誤,下邊我來分析一下:
1,先來看一下編譯錯(cuò)誤:這個(gè)圖片就是PLC編程軟件編譯后給出的錯(cuò)誤提示,其實(shí)上邊的圖片已經(jīng)明顯的給出了錯(cuò)誤的地方,就是有紅色波浪線的地方!
MW12是一個(gè)字長數(shù)據(jù),而對(duì)其操作的指令MOV_B是一個(gè)對(duì)字節(jié)操作的指令,因此這里需要把MW12改為MB12,或者把指令改成MOV_W指令!
比較指令MB10和1000比較這里,因?yàn)镸B10是一個(gè)字節(jié)其能表示的范圍是0-255,所以1000明顯超出這個(gè)字節(jié)的表示范圍,就被紅色波浪線提示錯(cuò)誤了!
2,再來看一下功能錯(cuò)誤:
這段程序有2個(gè)值得商榷的功能錯(cuò)誤:
第①處就是網(wǎng)絡(luò)1的SM0.0,此處根據(jù)后邊把變量賦予一個(gè)0的初始值,這段程序應(yīng)該是初始化程序,那么就應(yīng)該使用SM0.1才是初始化點(diǎn)!
第②出就是網(wǎng)絡(luò)1中的SET指令和網(wǎng)絡(luò)3中的RESET指令,初始化的時(shí)候使用set指令置位了M0.0開始的8個(gè)點(diǎn),而網(wǎng)絡(luò)3復(fù)位的時(shí)候只復(fù)位了M0.0這一個(gè)點(diǎn)!---一般來說set和reset應(yīng)該是對(duì)應(yīng)的,也就是說網(wǎng)絡(luò)3處也應(yīng)該是復(fù)位M0.0-M0.7這8個(gè)點(diǎn)!(當(dāng)然,要根據(jù)實(shí)際的情況來判定!)
以上就是PLC的梯形圖程序怎么看對(duì)錯(cuò)的一個(gè)簡單舉例,可以看到梯形圖中的程序錯(cuò)誤,在一段比較短的程序中,用肉眼分析是可以分析出來對(duì)錯(cuò)的,但是沒有編譯器加入效率高。同時(shí),還應(yīng)該看到編譯器雖然可以發(fā)現(xiàn)一些硬性的錯(cuò)誤,但是程序是否能夠達(dá)到最終的控制要求,也就是說功能上的錯(cuò)與對(duì),就需要編程人員自己多多測(cè)試,去發(fā)現(xiàn)了!