• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      產(chǎn)品開發(fā)中軟PLC的實(shí)現(xiàn)探討

      2015-04-29 18:59劉軍高
      中國高新技術(shù)企業(yè) 2015年14期
      關(guān)鍵詞:梯形圖中斷語句

      摘要:文章首先介紹了PLC的概念、功能特點(diǎn)和具有PLC功能的產(chǎn)品優(yōu)勢,接著分析了硬PLC和軟PLC的區(qū)別,最后從PLC繪圖工具的制作、PLC各種文件的生成、PLC語句表文件的編譯和存儲(chǔ)數(shù)據(jù)結(jié)構(gòu)、PLC文件的運(yùn)行機(jī)制、程序分類和運(yùn)行控制等方面描述了在產(chǎn)品開發(fā)中軟PLC的實(shí)現(xiàn)過程。

      關(guān)鍵詞:產(chǎn)品開發(fā);硬PLC;軟PLC;梯形圖;一級(jí)程序;二級(jí)程序 文獻(xiàn)標(biāo)識(shí)碼:A

      中圖分類號(hào):TG659 文章編號(hào):1009-2374(2015)14-0011-02 DOI:10.13535/j.cnki.11-4406/n.2015.14.006

      PLC是一個(gè)以微處理器為核心的數(shù)字運(yùn)算操作的電子系統(tǒng)裝置,專為在工業(yè)現(xiàn)場應(yīng)用而設(shè)計(jì),它采用可編程序的存儲(chǔ)器,用以在其內(nèi)部存儲(chǔ)執(zhí)行邏輯運(yùn)算、順序控制、定時(shí)/計(jì)數(shù)和算術(shù)運(yùn)算等操作指令,并通過數(shù)字式或模擬式的輸入、輸出接口,控制各種類型的機(jī)械或生產(chǎn)過程。

      1 軟PLC的概念

      所謂的軟PLC是利用軟件技術(shù)在產(chǎn)品中開發(fā)PLC功能,在一些通用的CPU或者M(jìn)CU上實(shí)現(xiàn)PLC指令的解釋和編譯運(yùn)行,它僅是整個(gè)產(chǎn)品中的一個(gè)功能模塊,該模塊能夠完成硬PLC大部分功能要求。

      2 軟PLC的實(shí)現(xiàn)全部過程

      精心策劃和技術(shù)論證后,筆者在產(chǎn)品開發(fā)中用以下方案實(shí)現(xiàn)了軟PLC開發(fā),具體實(shí)現(xiàn)方案框圖如圖1所示:

      圖1 軟PLC開發(fā)具體實(shí)現(xiàn)方案

      3 PLC繪圖工具制作和各種文件的產(chǎn)生

      框圖實(shí)現(xiàn)的具體過程:第一,在PC機(jī)上用高級(jí)編程語言如VC等編寫一個(gè)PLC梯形圖制作工具,該工具不僅能繪制PLC梯形圖,并且繪制梯形圖所需要的指令元器件全部可以定制,可以按照你產(chǎn)品所需增加或刪除指令,可以設(shè)定指令的地址類型和取值范圍,可以設(shè)定指令的引腳屬性。第二,制作好指令元器件后,運(yùn)用該工具繪制你所需要的PLC梯形圖后并編譯它,生成你所需要的語句表文件和各種信息文件。第三,PLC的文件如何放到系統(tǒng)產(chǎn)品上?這就取決于你的產(chǎn)品能夠如何接收外部的文件或數(shù)據(jù)。下文以USB接口和串口為例來講述一下其實(shí)現(xiàn)接收PLC文件的過程:(1)U盤接口的實(shí)現(xiàn)方法。將用PC工具生成的PLC工程文件包從電腦拷貝到U盤,再將U盤插入到產(chǎn)品上,通過操作U盤讀取PLC工程文件包,從文件包里得到你所需要的語句表文件和其他信息文件;(2)串口RS232的實(shí)現(xiàn)方法。由于RS232每次只支持接受一個(gè)文件,你可以先編寫一個(gè)應(yīng)用程序,將該應(yīng)用程序放在PLC工程文件夾下指定的位置,運(yùn)行該應(yīng)用程序,提取所需要的文件信息生成一個(gè)TXT的文本格式文件,再用RS232方式傳送到產(chǎn)品使用。

      4 PLC語句表文件的編譯和存儲(chǔ)數(shù)據(jù)結(jié)構(gòu)

      梯形圖是由很多個(gè)由上到下順序的網(wǎng)絡(luò)組成。一個(gè)網(wǎng)絡(luò)可看成一個(gè)總的輸入和一個(gè)輸出或多級(jí)輸出組成??偟妮斎胗稍S多從左到右順序相“AND”的列組成。一個(gè)列可能由一個(gè)或多個(gè)行從上到下順序的行相“OR”組成,一個(gè)行又可能包括多個(gè)從左到右順序的相“AND”輸入指令。按照上述對(duì)PLC梯形圖原理的理解,筆者設(shè)計(jì)以下的編譯后數(shù)據(jù)存儲(chǔ)方法供PLC運(yùn)行調(diào)用。

      語句表語言是PLC功能的另外一種表達(dá)方法,一般由梯形圖轉(zhuǎn)換出來。一個(gè)PLC語句表文件是由一級(jí)程序、二級(jí)程序和各個(gè)子程序組成。將一級(jí)程序、二級(jí)程序和各個(gè)子程序編譯后都變成一個(gè)個(gè)獨(dú)立的程序分開存儲(chǔ),每個(gè)程都有一個(gè)程序開始存儲(chǔ)地址,從這個(gè)地址開始存儲(chǔ)該程序的程序信息和所有編譯后的網(wǎng)絡(luò)數(shù)據(jù),各個(gè)程序之間或網(wǎng)絡(luò)之間相互調(diào)用或跳轉(zhuǎn)使用編譯后的相對(duì)地址進(jìn)行。

      每個(gè)程序先存儲(chǔ)程序信息,緊接著存儲(chǔ)PLC程序的編譯后的一個(gè)個(gè)網(wǎng)絡(luò)數(shù)據(jù)。每個(gè)程序的組成具體為:程序信息+網(wǎng)絡(luò)數(shù)據(jù)#1+“%%”+網(wǎng)絡(luò)數(shù)據(jù)#2+…,網(wǎng)絡(luò)與網(wǎng)絡(luò)之間有一個(gè)字符串(“%%”)隔開。

      程序信息主要包括:網(wǎng)絡(luò)總數(shù)+程序中的所有網(wǎng)絡(luò)信息(#1+#2+#3…)+程序編譯后的網(wǎng)絡(luò)數(shù)據(jù)#1開始存儲(chǔ)的地址。

      網(wǎng)絡(luò)信息主要包括:該網(wǎng)絡(luò)輸入的總列數(shù)+輸入每列的行數(shù)+輸出行數(shù)+各個(gè)網(wǎng)絡(luò)數(shù)據(jù)(#1 #2 #3…等等)在PLC程序中的開始存儲(chǔ)的地址。

      在程序信息之后,開始依次存儲(chǔ)編譯后網(wǎng)絡(luò)數(shù)據(jù)#1、網(wǎng)絡(luò)數(shù)據(jù)#2…的數(shù)據(jù),步驟如下:

      第一,填寫輸入指令開始存儲(chǔ)標(biāo)志(“N_IN”)。

      第二,一個(gè)網(wǎng)絡(luò)數(shù)據(jù)保存格式為:(1)保存網(wǎng)絡(luò)第一個(gè)列的第一行數(shù)據(jù),存儲(chǔ)格式為:輸入指令個(gè)數(shù)+第一個(gè)輸入指令(指令類型+指令地址號(hào)+觸點(diǎn)類型)+“&&”+第二個(gè)輸入指令(指令類型+指令地址號(hào)+觸點(diǎn)類型)…。如果同行內(nèi)有多個(gè)輸入指令,則指令之間有一個(gè)字符串(“&&”)隔開。(2)同樣方式保存該列的第二行…。如果一列內(nèi)有多行,行與行之間一個(gè)字符串(“||”)隔開。(3)…直至保存完該列的所有行。

      第三,接著保存網(wǎng)絡(luò)第二個(gè)列數(shù)據(jù),保存方法同上,直至保存完所有的列。

      第四,如果一個(gè)網(wǎng)絡(luò)內(nèi)有多列,列與列之間有一個(gè)字符串(“&&”)隔開。

      第五,填寫輸出指令開始存儲(chǔ)標(biāo)志(“NOUT”)。

      第六,接著保存輸出指令,輸出的存儲(chǔ)格式為:第一個(gè)輸出指令(指令類型+指令地址號(hào))+第二個(gè)輸出指令(指令類型+指令地址號(hào))…,如果是多級(jí)輸出,指令之間有一個(gè)字符串(“++”)隔開。

      第七,接著,用同樣的方式開始存儲(chǔ)網(wǎng)絡(luò)數(shù)據(jù)#2,…直至當(dāng)前程序的網(wǎng)絡(luò)編譯信息存儲(chǔ)完畢。

      PLC語句表文件的總體結(jié)構(gòu)、PLC程序信息結(jié)構(gòu)和PLC網(wǎng)絡(luò)信息結(jié)構(gòu)格式詳見如下:

      //PLC語句表文件的總體結(jié)構(gòu)

      typedef struct_PLC_File_t

      {

      uint32 PLCFlags[4] ;//PLC語句表文件存在標(biāo)志,存在“_PLC_PLC_PLC_PLC”

      //不存在,全部用0XFF代替

      (uint32*)Addr_Level1; //存儲(chǔ)一級(jí)程序的開始地址

      (uint32*)Addr_Level2; //存儲(chǔ)二級(jí)程序的開始地址

      (uint32*)Addr_Son[C_MaxSonProgs];//存儲(chǔ)子程序程序的開始地址

      //uint32 Reserve[10] ;//保留

      }PLC_File_t,*ptr_PLC_File_t;

      //PLC程序信息(如:一級(jí)程序 二級(jí)程序 子程序)結(jié)構(gòu)

      __align(256) typedef struct_PLC_Program_t

      {

      uint32 Nets; //PLC網(wǎng)絡(luò)數(shù),若為0,則無該P(yáng)LC程序

      PLC_Net_t NetLineRows[C_MaxNetsPerFile]; //PLC每個(gè)網(wǎng)絡(luò)信息

      uint32 *address_File; //該程序編譯后的網(wǎng)絡(luò)數(shù)據(jù)開始存儲(chǔ)地址

      //uint32 Reserve[10] ;//保留

      }PLC_Program_t,*ptr_PLC_Program_t;

      //PLC網(wǎng)絡(luò)信息結(jié)構(gòu)

      __align(4)typedef struct_PLC_Net_t

      {

      uint8 In_Rows; //網(wǎng)絡(luò)輸入列數(shù)

      uint8 Lines[C_MaxLinesPerRow]; //網(wǎng)絡(luò)每列行數(shù)

      uint8 Out_Lines; //網(wǎng)絡(luò)輸出行數(shù),若大于1,為多級(jí)輸出

      uint32 *Address_Net; //該網(wǎng)絡(luò)數(shù)據(jù)在PLC程序中的開始存儲(chǔ)地址

      //uint32 Reserve; //保留

      }PLC_Net_t,*ptr_PLC_Net_t;

      5 PLC運(yùn)行機(jī)制、程序分類和運(yùn)行控制

      PLC程序的運(yùn)行是在中斷模式下來實(shí)現(xiàn)對(duì)產(chǎn)品所有的輸入和輸出進(jìn)行監(jiān)控,只要PLC程序存在,產(chǎn)品從開機(jī)就要循環(huán)運(yùn)行PLC程序監(jiān)控產(chǎn)品的運(yùn)行。在PLC中斷模式下,中斷服務(wù)程序不能夠占用中斷太多的時(shí)間,否則CPU就沒有時(shí)間來執(zhí)行其他的程序:一方面PLC程序一部分代碼又必須快速及時(shí)地執(zhí)行和響應(yīng),另一方面PLC程序又可能比較長,要運(yùn)行完所有的PLC程序可能會(huì)消耗CPU太多的中斷時(shí)間。如何解決這一問題?解決辦法是將PLC程序分成一級(jí)程序和二級(jí)程序,將一部分必須快速完成的程序歸入一級(jí)程序,另外一部分程序歸為二級(jí)程序。一級(jí)程序每次PLC中斷都是要執(zhí)行,二級(jí)程序根據(jù)程序運(yùn)行消耗的時(shí)間動(dòng)態(tài)分段,在一個(gè)PLC中斷周期除了運(yùn)行一級(jí)程序外,還要運(yùn)行二級(jí)程序的其中一段。這樣二級(jí)程序就必須分段執(zhí)行。

      此外,還要在中斷周期內(nèi)正確調(diào)配二級(jí)中斷程序。方法一:編譯時(shí)就根據(jù)指令的運(yùn)行時(shí)間將二級(jí)程序分段,保證一次中斷只運(yùn)行其中一段二級(jí)程序。方法二:運(yùn)行時(shí)計(jì)算中斷的消耗時(shí)候,中斷運(yùn)行時(shí)間到就停止在二級(jí)程序的某一個(gè)指令上,下一個(gè)中斷運(yùn)行二級(jí)程序時(shí)就接著上次的二級(jí)程序指令繼續(xù)運(yùn)行。

      傳統(tǒng)硬PLC性價(jià)比增長很緩慢,但隨著電子技術(shù)和計(jì)算機(jī)技術(shù)的迅猛發(fā)展,軟PLC技術(shù)打破了硬PLC許多局限性,開發(fā)PLC功能硬件成本和技術(shù)開發(fā)難度也越來越低,因此,在各行各業(yè)中軟PLC都具有廣泛的發(fā)展前景。

      參考文獻(xiàn)

      [1] 周萬珍,高鴻斌.PLC分析與設(shè)計(jì)應(yīng)用[M].北京:電子工業(yè)出版社,2004.

      [2] 曹輝.可編程序控制器過程控制技術(shù)[M].北京:機(jī)械工業(yè)出版社,2006.

      作者簡介:劉軍高(1971-),男,江西人,廣州數(shù)控設(shè)備有限公司工程師,研究方向:數(shù)控系統(tǒng)產(chǎn)品開發(fā)。

      (責(zé)任編輯:周 瓊)

      猜你喜歡
      梯形圖中斷語句
      重點(diǎn):語句銜接
      跟蹤導(dǎo)練(二)(5)
      千里移防,衛(wèi)勤保障不中斷
      基于VC的梯形圖編程軟件開發(fā)技術(shù)
      繼電器電路轉(zhuǎn)為梯形圖教學(xué)經(jīng)驗(yàn)淺談
      PLC梯形圖程序設(shè)計(jì)技巧及應(yīng)用
      如何搞定語句銜接題
      AT89C51與中斷有關(guān)的寄存器功能表解
      FPGA內(nèi)嵌PowerPC的中斷響應(yīng)分析
      嵌入式軟PLC編程系統(tǒng)的設(shè)計(jì)
      新竹市| 和林格尔县| 南乐县| 旬邑县| 广宁县| 巫溪县| 泰宁县| 漾濞| 焦作市| 兴山县| 运城市| 阳江市| 晋城| 岗巴县| 合水县| 新化县| 泽州县| 牙克石市| 柞水县| 如皋市| 沅陵县| 体育| 高台县| 沙河市| 葫芦岛市| 太康县| 湄潭县| 瑞安市| 汉中市| 乡宁县| 穆棱市| 莱芜市| 文成县| 綦江县| 宝山区| 根河市| 通渭县| 泉州市| 吴旗县| 湄潭县| 闻喜县|