【正文】
主機(jī)選定后,如果控制系統(tǒng)需要,則相應(yīng)的配套模塊也就選定了。 ( 2) 在滿足控制系統(tǒng)要求的前提下,力求使控制系統(tǒng)簡單、經(jīng)濟(jì),使用及維修方便。因此, PLC 控制系統(tǒng)設(shè)計(jì)的基本內(nèi)容應(yīng)包括: ( 1) 用戶輸入設(shè)備(按鈕、操作開關(guān)、限位開關(guān)、傳感器等)、輸出設(shè)備(繼電器、接觸器、信號(hào)燈等執(zhí)行元件)以及由輸出設(shè)備驅(qū)動(dòng)的控制對象(電動(dòng)機(jī)、電磁閥等)。選擇 PLC,應(yīng)包括機(jī)型選擇、容 8 量的選擇、 I/O 模塊的選擇、電源的模塊選擇等。控制系統(tǒng)程序是控制整個(gè)系統(tǒng)工作的軟件,是保證系統(tǒng)工作安全、可靠的關(guān)鍵。 ( 2) 根據(jù)控制要求確定所需的用戶輸入、輸出設(shè)備,據(jù)此確定 PLC 的 I/O 點(diǎn)數(shù)。 程序設(shè)計(jì)的步驟 ( 1) 對于較復(fù)雜的控制系統(tǒng),需繪制系統(tǒng)控制流程圖,用以清楚地表明動(dòng)作的順序和條件。 ( 4) 用編程器將程序輸入到 PLC的用戶存儲(chǔ)器中,并檢查輸入的程序是否正確。 ( 7) 編寫技術(shù)文件。如錢幣識(shí)別系統(tǒng)可以用按壓某個(gè)“仿真對象”輸出一個(gè)脈沖直接給 PLC 發(fā)布命令,而 傳動(dòng)系統(tǒng)也是由計(jì)算機(jī)來直接模擬的,這些并不會(huì)影響實(shí)際程序的操作,完全能模擬現(xiàn)實(shí)中自動(dòng)售貨機(jī)的運(yùn)行。 ( 4) 自動(dòng)售貨機(jī)有液晶顯示功能。 ( 2) 投幣狀態(tài)。取走商品后出貨框消失。 到此為止,自動(dòng)售貨機(jī)的一個(gè)完整工作過程結(jié)束。例如在進(jìn)行仿真界面的設(shè)計(jì)時(shí)可以去觀看一下真正售貨機(jī)的外觀,必要時(shí)可以借助一些宣傳圖片來設(shè)計(jì)自動(dòng)售貨機(jī)的外型;在進(jìn)行 PLC 程序的編寫時(shí)需要先分配 PLC 的 I/O 點(diǎn),確定上、下位機(jī)的接口。它們無論在通信中使用的變量,還是在仿真中控制的對象都應(yīng)該是一致的。仿真程序只做了解,雖然只做了解,但是也將在下面有所介紹。 程序設(shè)計(jì)說明 下位機(jī)程序的編制則是利用松下 PLC 專用編程軟件 FPWINGR 完成的。 ( 1) 運(yùn)行初期電子標(biāo)簽價(jià)格的內(nèi)部傳遞程序的設(shè)計(jì) 仿真系統(tǒng)運(yùn)行初期,要由 PLC 向仿真畫面相應(yīng)對象傳遞已經(jīng)存儲(chǔ)好的價(jià)格,還要給投入顯示,消費(fèi)顯示及余額顯示存儲(chǔ)器清零,同時(shí)也要給存儲(chǔ)退幣幣值的存儲(chǔ)器清零。至于為什么要加入 WR1 WR1 WR1 WR19 及 WR20,在以后的程序中將介紹它們的作用。投入一角要投入顯示,余額顯示都相應(yīng)增加相同的數(shù)值,加法是由 16 位加法指令 E20 來實(shí)現(xiàn)的。 13 為了實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)比較,用一個(gè)特殊的內(nèi)部繼電器 R9010,在程序執(zhí)行過程中,R9010 始終保持閉合, F60是 16 位數(shù)據(jù)比較指令,用它來比較余額和商品價(jià)格,R900A 是大于價(jià)格, R900B 是等于標(biāo)志。 1982 年美國國防部的一個(gè)分支專案要求所有的數(shù)字電路必須用 VHDL 語言設(shè)計(jì)。最近,新標(biāo)準(zhǔn)包 被開發(fā)出來,成為建立 ASIC及 FPGA 的模型函數(shù)庫。除了含有許多硬件特征的語句外, VHDL 的語言形式和描述風(fēng)格與句法是十分類似于一般的計(jì)算機(jī)高級語言。應(yīng)用VHDL 進(jìn) 行工程設(shè)計(jì)的優(yōu)點(diǎn)是多方面的。從抽象的層次而言, VHDL 的語句分成一下 4個(gè)大類。 3 結(jié)構(gòu)式 允許設(shè)計(jì)者以樹狀形式調(diào)用內(nèi)置電路組件。每一種電路的VHDL 碼都是實(shí)體與結(jié)構(gòu)的成對組合,先用實(shí)體來定義一個(gè) IC 電路引腳規(guī)格與基本參數(shù),然后在用結(jié)構(gòu)定義 IC 內(nèi)部電路的功能運(yùn)做,即構(gòu)成一個(gè)完整的電路模塊。具有最小 5ns 的引腳到引腳的邏輯時(shí)延,最高可 的計(jì)數(shù)頻率。支持多種電壓接口。下面將對該軟件進(jìn)行簡單概述。 設(shè)計(jì)輸入: 常用的設(shè)計(jì)輸入的方法有:通過 MAX+plusII 圖形編譯器,創(chuàng)建圖形設(shè)計(jì)文件( gdf);通過 MAX+plusII 文本編輯器,使用 AHDL 語言,創(chuàng)建文本設(shè)計(jì)文件( tdf);使用 VHDL 語言,創(chuàng)建文本設(shè)計(jì)文件( vhd);使用 VerilogHDL 語言,創(chuàng)建文本設(shè)計(jì)文件( v)。 19 器件編程和配置: MAX+plusII 軟件對計(jì)算機(jī)的要求較低。顧客可以由兩種不同投幣孔分別投入 3 個(gè) 5 元硬幣或 2個(gè) 10 元硬幣。本設(shè)計(jì)采用 1024HZ 的系統(tǒng)時(shí)鐘信號(hào)來控制所有買賣行為 。 Ok buy: 購買確認(rèn)的按鍵信號(hào) 。 另外,系統(tǒng)必須響應(yīng)顧客的各種操作行為,以利于顧客的選擇判斷,因此定義下列系統(tǒng)輸出信號(hào)。與 Led diet sel 只有一個(gè)燈亮,后按著優(yōu)先; Led diet sel: 燈亮顯示傳統(tǒng)可樂選擇按鍵被按 。 Library ieee Use 。 Entity 模塊的 VHDL 碼 Library and package declaraction Library ieee。 use work 。button to confirm buying cancle in std logic。button to choose drink cola select diet in std_ logic。 led to show coal choosen led diet sel: out std_ logic。leds to show coin five numbers. led ten out std_ logic vector(1to0)。 led for cola delivery led diet out: out std_ logic。 money_ok: 投入金額正確的指針 。edgad ok buy signal cancle std_ logic。 to maintain the cola selection status signal diet choice std_ logic。 signal for cola delivery signal diet ok:out std_ logic。其中 8位的計(jì)數(shù)信號(hào)為此模塊的局部信號(hào),該信號(hào)并不傳遞到模塊外。 26 elsifrising_ed_(clk) then count﹤ =count+00000001; if count( 7) =‘ 1’ then return_clk﹤ =’ 1’ 。 and process??紤]到投幣為記次行為,故將 coin ten 信號(hào)進(jìn)行抖動(dòng)消除處理,以利于計(jì)數(shù)。block input: led ten total amount 10 signal coin10 std_logic??紤]到投幣動(dòng)作為記次行為,故將 coin five 信號(hào)進(jìn)行抖動(dòng)消除處理,以利于計(jì)數(shù) no coin five 信號(hào)用來累計(jì) 5 元硬幣的投入數(shù)量,這兩個(gè)信號(hào)都是局部信號(hào),不向外傳遞。仿真結(jié)果如圖 所示: 圖 5 元硬幣處理電路仿真圖 飲料選擇處理電路模塊( select drink) 本模塊處理飲料選擇種類,并點(diǎn)亮對應(yīng)種類的 LED。 select drink 模塊的 VHDL 碼 to select cola or diet Select drink: block input clk reset select cola select diet output: led cola selled diet sel cola choice diet choice begin Process( reset clk) begin if reset=‘ 1’ then led cola sel﹤ =0 led diet sel ﹤ =0; els if rising dege( clk) then if select cola=’ 1’ then led cola sel﹤ =1 cola choice﹤ =‘ 1’; to maintain the cola selection status led diet sel﹤ =0 30 exclusive double choice end if if select diet=‘ 1’ then cola sel﹤ =‘ 0’ exclusive double choice diet choice﹤ =‘ 1’ led diet sel﹤ =1 end if; end if; end process; end block; 設(shè)定 clk reset select diet與 select cola 四個(gè)系統(tǒng)輸入信號(hào)后,可觀察到系統(tǒng)輸出信號(hào) led cola selled diet sel 以及整體共享信號(hào) cola choice 與diet choice 的波形。如圖 所示。下面 列出 ok or cancle 模塊的程序代碼。 led_cancel=’ 1’ 。如圖 所示: 圖 確認(rèn)與取消處理電路仿真圖 退幣處理電路模塊( coin_returned) 本模塊處理應(yīng)退還的硬幣種類與數(shù)量。如果按了 cancel_buy 鍵, 則系統(tǒng)必須立即退還所有硬幣,所以還需要定義全局信號(hào) cancel 用做判斷。 coin_rerumed 模塊的 VHDL 碼 to check total am ount and decide returned coins and twinkle. the leds. coin_returned:block. 33 input:. . . output:. . signal total_amount : integer range 0 to 35。 led_ten_return=(others=’ 0’ )。 end if。 end loop。 end loop。 when30=led_ten_returen(1)= return_clk。 end case。 設(shè)定 clk 與 reset 等系統(tǒng)輸入信號(hào),以及輸入全局信號(hào) cancel,total_amount_five,return_clk,cola_out 與 diet_to信號(hào)后,可以觀察到系統(tǒng)輸出信號(hào) led_ten_return,led_five_return 與輸出全局信號(hào) money_ok 的波形。由于cola_out 與 diet_out 信號(hào)無法提出,故用 led_cola_out及 led_diet_out 替代。下面列出 give_check 模塊的程序代碼。 bottle remaining diet. begin cola_out=’ 1’ when(money_ok=’ 1’ and cola_choice=’ 1’ ). else’ 0’ 。 cola:process()to book the bottle remaining cola. begin if reset=’ 1’ then no_cola=20。 to show cola empty status. else led_cola_ok=’ 1’ 。 end process。 if no_diet=0 then led_diet_ok=’ 0’ 。 end if。每種飲料初始數(shù)量定為 20 罐,當(dāng)存貨量降為0 時(shí),則將供貨燈 led_cola_ok/led_diet_ok 熄滅(系統(tǒng)輸出信號(hào))。 use 。basic clock input 1024 hz. touch:std_logic。因此首先 39 由 1024HZ 的時(shí)鐘信號(hào)制作出周期為 的取樣信號(hào)。 one_step delay. signal q : std_logic_vector(4 downto 0)。 end pro