西門子ET200接口模塊IM151-16ES7151-1AA05-0AB0
編程本身就是一種邏輯思維過程。在高級語言中,使用最多的是if then else、select這些條件判別語句,這就是邏輯中的因果關(guān)系。PLC程序就是由這些因果關(guān)系組成的:判別條件是否成立,進(jìn)而決定執(zhí)行相應(yīng)的指令。最初的PLC是用來替代繼電器邏輯電路的,所以繼承了繼電器電路以觸點(diǎn)作為觸發(fā)條件的描述方式。在PLC中,以虛擬觸點(diǎn)代替了繼電器的金屬觸點(diǎn),而繼電器電路所表達(dá)的邏輯關(guān)系還是被完整的保留下來。即使引入了繼電器電路難以勝任的數(shù)值處理過程,PLC從根本上還是在執(zhí)行一個個因果關(guān)系。所以,理順對象的各個事件之間的邏輯關(guān)系,是編程之前必須精心做好的準(zhǔn)備工作。我在接到一項(xiàng)任務(wù)后,第一件事就是整理出一份邏輯關(guān)系圖,與用戶反復(fù)商討,取得用戶的認(rèn)可,然后才真正進(jìn)入程序的編寫過程。
4、相關(guān)知識
PLC的程序是直接作用于對象的具體工藝過程,那么對對象具體工藝過程的理解是非常重要的的。我在與用戶的交流過程中,會用我所掌握的Unit Operation的知識分析用戶的工藝過程,協(xié)助用戶整理過程控制中的各個邏輯關(guān)系,甚至包括各種儀表、硬件的配置。這得益于我原本所學(xué)的專業(yè)。當(dāng)然,不能要求所有搞PLC程序的工程師都有我這樣的經(jīng)歷。但是有兩門知識卻是的:一是過程儀表的硬件知識,包括傳感器、變送器(二次儀表)和PLC本身,這是構(gòu)建控制系統(tǒng)的基礎(chǔ);二是過程控制理論,包括各種控制模型的原理和應(yīng)用,其中最重要的是二位調(diào)節(jié)和PID調(diào)節(jié)模型。PID調(diào)節(jié)是目前用得泛的過程控制手段,且變化多端。學(xué)習(xí)PID方法就是讀書。幾乎所有講解過程控制的書籍都有關(guān)于PID的內(nèi)容,多讀基本相關(guān)的書籍對理解PID是很有益處的。我發(fā)現(xiàn)不少網(wǎng)友在進(jìn)入PLC領(lǐng)域時,缺乏這些相關(guān)知識。這并不可怕;可怕的是當(dāng)事者不能靜下心來彌補(bǔ)知識的缺陷。我們不要怪罪學(xué)校沒有教授這些內(nèi)容,而是要注重自己如何去學(xué)習(xí)這些知識。工作中遇到的許多問題是學(xué)校里沒講過的,這不能成為我們拒絕工作的理由,而應(yīng)該以積極的態(tài)度去應(yīng)對這些問題。我的體會是,為了解決工作中的問題而學(xué)習(xí)的知識,比課堂上學(xué)的東西更容易記住。
5、養(yǎng)成良好的編程習(xí)慣
每個人編程都會有不同的習(xí)慣和特點(diǎn),不能強(qiáng)求一致。但是一些好的習(xí)慣還是應(yīng)該為大多數(shù)人所遵循。一是理順邏輯關(guān)系、時序關(guān)系,編制程序框圖;二是合理分配主程序、子程序和中斷程序;三是合理分配寄存器,編制寄存器符號表。
PLC編程更接近于單片機(jī),或者說PLC就是模塊化的單片機(jī)。因此PLC的很多操作都是直接針對寄存器的,如果在程序中出現(xiàn)不合理的寄存器地址重疊,一定會出現(xiàn)不可預(yù)想的后果。編制寄存器符號表不僅可以避免上述問題(MicroWin會有問題提示),而且可以使程序具備更好的可讀性。這和VB中定義變量有異曲同工之處。
VB編程中關(guān)注的是事件,不強(qiáng)調(diào)主程序和子程序的觀念,因?yàn)閂B主程序的工作是由PC的操作系統(tǒng)完成的。PLC則不然。PLC程序是以主程序?yàn)橹鞲傻?,CPU不斷的循環(huán)執(zhí)行主程序,只有觸發(fā)條件成立時才會調(diào)用子程序或中斷程序。即子程序和中斷程序所執(zhí)行的任務(wù)不是全時需要的。如果把這些任務(wù)都放在主程序中會無端增加主程序的工作量,降低程序的效率。這點(diǎn)和單片機(jī)的編程思路是一致的。子程序的使用可以使整個程序的邏輯更清晰。而且子程序可以分開編寫、調(diào)試,最后“安裝"到主程序上。這樣你可以一個一個解決問題。
PLC編程,無論是LAD,抑或STL,都不如VB那么直觀、有趣,更不如CAD那么形象。但比單片機(jī)的匯編語言的可視性強(qiáng)多了。對于初學(xué)者,LAD(梯形圖)的編程相對直觀,更容易上手。
最后,PLC提供了豐富的指令、模塊,比單片機(jī)方便了很多。但是初學(xué)者編程時應(yīng)盡量先使用簡單的指令達(dá)到目的。盡管看上去有點(diǎn)土,卻不失為一個入門的好途徑,且對你理解那些較為復(fù)雜的指令會有幫助。具備了一定經(jīng)驗(yàn)后,應(yīng)該考慮掌握復(fù)雜指令的應(yīng)用,以及程序的優(yōu)化。