step1:開(kāi)發(fā)一個(gè)編程軟件,所有梯形圖的元件或功能塊用控件實(shí)現(xiàn),真正要實(shí)現(xiàn)的控件只要大概十個(gè)左右,如功能塊,不同的功能塊顯示主要通過(guò)不同的功能塊號(hào)或元件(函數(shù)號(hào))去ini文件找對(duì)應(yīng)記錄。
step2:用戶在把控件拖上編輯窗口時(shí)在控件內(nèi)將對(duì)應(yīng)的功能塊號(hào)、參數(shù)、變量名寫入一個(gè)中間文件。
step3:通過(guò)對(duì)中間文件的掃描、語(yǔ)法檢查、重定位后生成對(duì)應(yīng)的ld文件,這時(shí)所有的變量都是變量區(qū)的偏移地址。這個(gè)過(guò)程一般要三至四次才能完成,如果要優(yōu)化可能還需要多的處理,如果要做增量編譯還要需要做這方面的處理。至于在線編程則需要在生成的中間文件中做更多的標(biāo)志和處理。
step4:將文件下載至plc,這樣就會(huì)有一個(gè)比較完備的通信協(xié)議,這方面最好一開(kāi)始就想好,如果不要在線編程可能還簡(jiǎn)單一點(diǎn),只是對(duì)下載、上載、監(jiān)視、強(qiáng)制、設(shè)置、參數(shù)、初始化列表等有比較清楚的概念就行了。
step5:程序下至plc后,plc在每次上電后要先進(jìn)行各種軟硬件的初始化,包括掉電保持的變量或輸入輸出口的處理,各種寄存器或標(biāo)志的初始化。
step6:初始化完后進(jìn)行程序的掃描運(yùn)行,在掃描時(shí)其實(shí)是一個(gè)很簡(jiǎn)單的分支程序,這個(gè)程序前要進(jìn)行取指取參再通過(guò)分支程序進(jìn)行跳跳轉(zhuǎn)運(yùn)算。其實(shí)大家都把這一塊當(dāng)作plc的核心,相反這一塊是最簡(jiǎn)單的,當(dāng)然如果要做優(yōu)化倒還是有很多講究要對(duì)cpu的原理、對(duì)編譯原理有比較清楚的認(rèn)識(shí)。 字串4
step7:其實(shí)下位機(jī)就相當(dāng)于一個(gè)軟的cpu,包括程序指針、變量指針、堆棧指針等都是應(yīng)有盡有。
step8:每次掃描完畢后要進(jìn)行io的處理,這一塊是最簡(jiǎn)單但又是最復(fù)雜的,簡(jiǎn)單做做誰(shuí)都能做,但要做到高效和智能化就需要有比較好的規(guī)劃。
step9:通信是通過(guò)中斷來(lái)處理或者在中斷中接收發(fā)送,但在io處理后進(jìn)行幀的處理。
step10:在io處理后可以加一個(gè)工程量變換的程序進(jìn)行模擬量的處理。同時(shí)如果有調(diào)試需要的還需要與io點(diǎn)數(shù)一樣多位的表來(lái)進(jìn)行處理強(qiáng)制和監(jiān)視等信息。
step11:定時(shí)器、高速計(jì)數(shù)、中斷型梯形圖、各種通信協(xié)議、自定義通信協(xié)議、脈沖輸出、pwm等,這些是可選項(xiàng),當(dāng)然如果沒(méi)有定時(shí)器就不是plc了。