編譯程序中必須具有的功能模塊
『壹』 編譯程序的功能
編譯程序的基本功能是把源程序(高級語言)翻譯成目標程序。但是,作為一個具有實際應用價值的編譯系統,除了基本功能之外,還應具備語法檢查、調試措施、修改手段、覆蓋處理、目標程序優化、不同語言合用以及人-機聯系等重要功能。①語法檢查:檢查源程序是否合乎語法。如果不符合語法,編譯程序要指出語法錯誤的部位、性質和有關信息。編譯程序應使用戶一次上機,能夠盡可能多地查出錯誤。②調試措施:檢查源程序是否合乎設計者的意圖。為此,要求編譯程序在編譯出的目標程序中安置一些輸出指令,以便在目標程序運行時能輸出程序動態執行情況的信息,如變數值的更改、程序執行時所經歷的線路等。這些信息有助於用戶核實和驗證源程序是否表達了演算法要求。③修改手段:為用戶提供簡便的修改源程序的手段。編譯程序通常要提供批量修改手段(用於修改數量較大或臨時不易修改的錯誤)和現場修改手段(用於運行時修改數量較少、臨時易改的錯誤)。④覆蓋處理:主要是為處理程序長、數據量大的大型問題程序而設置的。基本思想是讓一些程序段和數據公用某些存儲區,其中只存放當前要用的程序或數據;其餘暫時不用的程序和數據,先存放在磁碟等輔助存儲器中,待需要時動態地調入。⑤目標程序優化:提高目標程序的質量,即佔用的存儲空間少,程序的運行時間短。依據優化目標的不同,編譯程序可選擇實現表達式優化、循環優化或程序全局優化。目標程序優化有的在源程序級上進行,有的在目標程序級上進行。⑥不同語言合用:其功能有助於用戶利用多種程序設計語言編寫應用程序或套用已有的不同語言書寫的程序模塊。最為常見的是高級語言和匯編語言的合用。這不但可以彌補高級語言難於表達某些非數值加工操作或直接控制、訪問外圍設備和硬體寄存器之不足,而且還有利於用匯編語言編寫核心部分程序,以提高運行效率。⑦人-機聯系:確定編譯程序實現方案時達到精心設計的功能。目的是便於用戶在編譯和運行階段及時了解內部工作情況,有效地監督、控制系統的運行。早期編譯程序的實現方案,是把上述各項功能完全收納在編譯程序之中。然而,習慣做法是在操作系統的支持下,配置調試程序、編輯程序和連接裝配程序,用以協助實現程序的調試、修改、覆蓋處理,以及不同語言合用功能。但在設計編譯程序時,仍須精心考慮如何與這些子系統銜接等問題。
『貳』 PLC有幾種編程語言以及它們的特點, 我至今還是弄不明白
plc的編程語言有以下幾種:1、梯形圖(LD)2、功能塊圖(FBD)3、順序功能圖(SFC)4、結構化文本(ST)5、指令表(IL)語言類型PLC的用戶程序,是設計人員根據控制系統的工藝控制要求,通過PLC編程語言的編制規范,按照實際需要使用的功能來設計的。只要用戶能夠掌握某種標准編程語言,就能夠使用PLC在控制系統中,實現各種自動化控制功能。根據國際電工委員會制定的工業控制編程語言標准(IEC1131-3),PLC有五種標准編程語言:梯形圖語言(LD)、指令表語言(IL)、功能模塊語言(FBD)、順序功能流程圖語言(SFC)、結構文本化語言(ST)。這五標准編程語言,十分簡單易學。梯形圖語言梯形圖語言是PLC程序設計中最常用的編程語言。它是與繼電器線路類似的一種編程語言。由於電氣設計人員對繼電器控制較為熟悉,因此,梯形圖編程語言得到了廣泛的歡迎和應用。梯形圖編程語言的特點是:與電氣操作原理圖相對應,具有直觀性和對應性;與原有繼電器控制相一致,電氣設計人員易於掌握。梯形圖編程語言與原有的繼電器控制的不同點是,梯形圖中的能流不是實際意義的電流,內部的繼電器也不是實際存在的繼電器,應用時,需要與原有繼電器控制的概念區別對待。指令表語言指令表編程語言是與匯編語言類似的一種助記符編程語言,和匯編語言一樣由操作碼和操作數組成。在無計算機的情況下,適合採用PLC手持編程器對用戶程序進行編制。同時,指令表編程語言與梯形圖編程語言圖一一對應,在PLC編程軟體下可以相互轉換。圖3就是與圖2PLC梯形圖對應的指令表。指令表編程語言的特點是:採用助記符來表示操作功能,具有容易記憶,便於掌握;在手持編程器的鍵盤上採用助記符表示,便於操作,可在無計算機的場合進行編程設計;與梯形圖有一一對應關系。其特點與梯形圖語言基本一致。功能模塊圖語言功能模塊圖語言是與數字邏輯電路類似的一種PLC編程語言。採用功能模塊圖的形式來表示模塊所具有的功能,不同的功能模塊有不同的功能。功能模塊圖編程語言的特點:功能模塊圖程序設計語言的特點是:以功能模塊為單位,分析理解控制方案簡單容易;功能模塊是用圖形的形式表達功能,直觀性強,對於具有數字邏輯電路基礎的設計人員很容易掌握的編程;對規模大、控制邏輯關系復雜的控制系統,由於功能模塊圖能夠清楚表達功能關系,使編程調試時間大大減少。順序功能流程圖語言順序功能流程圖語言是為了滿足順序邏輯控制而設計的編程語言。編程時將順序流程動作的過程分成步和轉換條件,根據轉移條件對控制系統的功能流程順序進行分配,一步一步的按照順序動作。每一步代表一個控制功能任務,用方框表示。在方框內含有用於完成相應控制功能任務的梯形圖邏輯。這種編程語言使程序結構清晰,易於閱讀及維護,大大減輕編程的工作量,縮短編程和調試時間。用於系統的規模校大,程序關系較復雜的場合。順序功能流程圖編程語言的特點:以功能為主線,按照功能流程的順序分配,條理清楚,便於對用戶程序理解;避免梯形圖或其他語言不能順序動作的缺陷,同時也避免了用梯形圖語言對順序動作編程時,由於機械互鎖造成用戶程序結構復雜、難以理解的缺陷;用戶程序掃描時間也大大縮短。結構化文本語言結構化文本語言是用結構化的描述文本來描述程序的一種編程語言。它是類似於高級語言的一種編程語言。在大中型的PLC系統中,常採用結構化文本來描述控制系統中各個變數的關系。主要用於其他編程語言較難實現的用戶程序編制。結構化文本編程語言採用計算機的描述方式來描述系統中各種變數之間的各種運算關系,完成所需的功能或操作。大多數PLC製造商採用的結構化文本編程語言與BASIC語言、PASCAL語言或C語言等高級語言相類似,但為了應用方便,在語句的表達方法及語句的種類等方面都進行了簡化。結構化文本編程語言的特點:採用高級語言進行編程,可以完成較復雜的控制運算;需要有一定的計算機高級語言的知識和編程技巧,對工程設計人員要求較高。直觀性和操作性較差。
『叄』 模塊的定義是什麼
一、模塊的定義:
(一)在程序設計中,為完成某一桐禪敬功能所需的一段程序或子程序;或指能由編譯程序、裝配程序等處理的獨立程序單位;或指大型軟體系統的一部分。
模塊有各種類型,如單元操作模塊(換熱器、精餾塔、壓縮機等)、計算方法模塊(加速收斂演算法、最優化演算法等)、物理化學性質模塊(汽液相平衡計算、熱焓計算等)等。
(二)可以組合和變換的標准單元硬體。
模塊,又稱構件,是能夠單獨命名並獨立地完成一定功能的程序語句的集合(即程序代碼和數據結構的集合體)。它具有兩個基本的特徵:外部特徵和內部特徵。外部特徵是指模塊跟外部環境聯系的介面(即其他模塊或程序調用該模塊的方式,包括有輸入輸出參數、引用的全局變數)和模塊的功能;內部特徵是指模塊的內部環境具有的特點(即該模塊的局部數據和程序代碼)。
(三)電路中將分立元件組成的電路重新塑封稱為模塊,如電源模塊.他和IC本質上沒什麼區別.只是一般模塊適用於大功率電路,是半集成電路而且內面可能含有IC,而IC剛好是全集成電路.
(四) 在韋氏英文的詞典里,「模塊」一詞的第1條解釋是「傢具或建築物里的一個可重用的標准單元」!
(五)在易語言中文編程軟體中的一種文件組織形式,主要是將使用頻率襲搏較高的代碼組織到一起,編譯後形成模塊文件(擴展名為ec),其他程序編寫中可以導入並且調用現成模塊中的子程序,節約開發時間,減少重復代碼,便於協作開發。
二、相關延展
(一)優點:
1、使得內核更加緊湊靈活.
2、修改內核時, 不必重新編譯整個內核.
3、模塊可以不依賴於某個固定的硬體平台,即使它依賴於某系統特殊的硬體特點
4、模塊的目標代碼一旦被鏈接到內核,它的作用和靜態鏈接的內核目標代碼完全等價.所以當調用模塊函數時,無須顯式的消息傳遞.
5、截獲系統調用.
(二)、缺點:模塊機制帶來安全上的隱患
1、修改輸出符號表.
2、通過修改系統調用,使模塊自己隱性.
3、重定向文件操作.
4、修改文件屬主.
5、隱藏局慎進程.
6、重定向可執行文件
7、通過修改系統調用sys_socketcall,使得系統在收到指定數據包後打開後門
8、TTY劫持.
9、病毒.
模塊也可以叫隔離器,是在自動化控制系統中對各種工業信號進行變送、轉換、隔離、傳輸、運算的一種儀表,可以和各種工業感測器配合,取回參數信號,隔離變送傳輸,滿足企業本地監冖遠程數據採集。
『肆』 PLC是什麼
PLC控制系統,全稱Programmable Logic Controller,可編程邏輯控制器,是一種專門為在工業環境下應用而設計的數字運算操作的電子裝置,其採用一類可編程的存儲器,用於其內部存儲程序,執行邏輯運算,順序控制、定時、計數與算術操作等面向用戶的指令,並通過數字或模擬式輸入及輸出控制各種類型的機械或生產過程。是工業控制的核心部分。PLC及其有關的外圍設備都應該按易於與工業控制系統形成一個整體,易於擴展其功能的原則而設計。達內教育
想學好PLC編程不是特別容易,必須要經過系統的培訓,現在達內培訓機構在國內做的比好好,課程設計引進北美先進技術,貼近中國軟體企業的實際需求,同時線上有免費的公開課可以進行學習,如果對PLC編程感興趣可以參加達內的免費公開課進行系統的學習一下。
自上世紀六十年代美國推出PLC控制系統取代繼電器控制裝置以來,PLC飛速發展,廣泛應用於世界各地。 免費試聽報名入口隨著時代的發展,PLC的功能也不斷的發展完善。加之計算機技術、控制技術、網路技術的不斷進步和用戶需求的不斷上升,PLC也相應地在開關量處理基礎上添加了模擬量處理及運動控制等多個功能。
『伍』 計算機程序開發中都哪些常用的模塊呢
包管理庫提供了從 L ua 中載入模塊的基礎庫。只有一個導出函數直接放在全局環境中: require。 所有其它的部分都導出在表 package 中。
1.載入一個模塊。 這個函數首先查找 package.loaded 表, 檢測 modname 是否被載入過。 如果被載入過,require 返回 package.loaded[modname] 中保存的值。 否則,它試著為模塊尋找 載入器 。
2.require 遵循 package.searchers 序列的指引來查找載入器。如果改變這個序列,我們可以改變 require 如何查找一個模塊。 下列說明基於 package.searchers 的默認配置。
首先 require 查找 package.preload[modname] 。 如果這里有一個值,這個值(必須是一個函數)就是那個載入器。 否則 require 使用 Lua 載入器去查找 package.path 的路徑。 如果查找失敗,接著使用 C 載入器去查找 package.cpath 的路徑。 如果都失敗了,再嘗試 一體化 載入器 )。
3.每次找到一個載入器,require 都用兩個參數調用載入器:modname 和一個在獲取載入器過程中得到的參數。 (如果通過查找文件得到的載入器,這個額外參數是文件名。) 如果載入器返回非空值, require 將這個值賦給 package.loaded[modname]。 如果載入器沒能返回一個非空值用於賦給 package.loaded[modname], require 會在那裡設入 true 。 無論是什麼情況,require 都會返回 package.loaded[modname] 的最終值。
4.如果在載入或運行模塊時有錯誤, 或是無法為模塊找到載入器,require 都會拋出錯誤。
一個描述有一些為包管理准備的編譯期配置信息的串。 這個字元串由一系列行構成:
第一行是目錄分割串。 對於 Windows 默認是 '' ,對於其它系統是 '/' 。
第二行是用於路徑中的分割符。默認值是 ';' 。
第三行是用於標記模板替換點的字元串。 默認是 '?' 。
5.第四行是在 Windows 中將被替換成執行程序所在目錄的路徑的字元串。默認是 '!' 。
第五行是一個記號,該記號之後的所有文本將在構建 luaopen_ 函數名時被忽略掉。 默認是 '-'。
這個路徑被 require 在 C 載入器中做搜索時用到。
用於 require 控制哪些模塊已經被載入的表。 當你請求一個 modname 模塊,且 package.loaded[modname] 不為假時, require 簡單返回儲存在內的值。
這個變數僅僅是對真正那張表的引用; 改變這個值並不會改變 require 使用
讓宿主程序動態鏈接 C 庫 libname 。
5.當 funcname 為 "*", 它僅僅連接該庫,讓庫中的符號都導出給其它動態鏈接庫使用。 否則,它查找庫中的函數 funcname ,以 C 函數的形式返回這個函數。 因此,funcname 必須遵循原型 lua_CFunction (參見 lua_CFunction)。
6.這是一個低階函數。 它完全繞過了包模塊系統。和 require 不同, 它不會做任何路徑查詢,也不會自動加擴展名。 libname 必須是一個 C 庫需要的完整的文件名,如果有必要,需要提供路徑和擴展名。 funcname 必須是 C 庫需要的准確名字 (這取決於使用的 C 編譯器和鏈接器)。
這個函數在標准 C 中不支持。 因此,它只在部分平台有效 ( Windows ,Linux ,Mac OS X, Solaris, BSD, 加上支持 dlfcn 標準的 Unix 系統)。
『陸』 編譯程序有哪些主要構成成分它們各自的主要功能是什麼
編譯過程分為分析和綜合兩個部分,並進一步劃分為詞法分析、語法分析、語義分析、代碼優化、存儲分配和代碼生成等六個相繼的邏輯步驟。這六個步驟只表示編譯程序各部分之間的邏輯聯系,而不是時間關系。
編譯過程既可以按照這六個邏輯步驟順序地執行,也可以按照平行互鎖方式去執行。在確定編譯程序的具體結構時,常常分若干遍實現。對於源程序或中間語言程序,從頭到尾掃視一次並實現所規定的工作稱作一遍。每一遍可以完成一個或相連幾個邏輯步驟的工作。
例如,可以把詞法分析作為第一遍;語法分析和語義分析作為第二遍;代碼優化和存儲分配作為第三遍;代碼生成作為第四遍。
反之,為了適應較小的存儲空間或提高目標程序質量,也可以把一個邏輯步驟的工作分為幾遍去執行。例如,代碼優化可劃分為代碼優化准備工作和實際代碼優化兩遍進行。
(6)編譯程序中必須具有的功能模塊擴展閱讀
從左至右逐個字元地對源程序進行掃描,產生一個個的單詞符號,把作為字元串的源程序改造成為單詞符號串的中間程序。執行詞法分析的程序稱為詞法分析程序或掃描器。
源程序中的單詞符號經掃描器分析,一般產生二元式:單詞種別;單詞自身的值。單詞種別通常用整數編碼,如果一個種別只含一個單詞符號,那麼對這個單詞符號,種別編碼就完全代表它自身的值了。若一個種別含有許多個單詞符號,那麼,對於它的每個單詞符號,除了給出種別編碼以外,還應給出自身的值。
詞法分析器一般來說有兩種方法構造:手工構造和自動生成。手工構造可使用狀態圖進行工作,自動生成使用確定的有限自動機來實現。
編譯程序的語法分析器以單詞符號作為輸入,分析單詞符號串是否形成符合語法規則的語法單位,如表達式、賦值、循環等,最後看是否構成一個符合要求的程序,按該語言使用的語法規則分析檢查每條語句是否有正確的邏輯結構,程序是最終的一個語法單位。編譯程序的語法規則可用上下文無關文法來刻畫。