在线观看欧美一区二区三区,亚洲一区AV无码少妇电影,电家庭影院午夜,国产偷v国产偷v亚洲高清

自動化軟件設計IEC61131-3標準專題(三)

http://njchuangji.com 2015年09月19日        

IEC 1131-3 的編程語言(一):文本化語言   圖形化編程語言包括:梯形圖(LD-Ladder Diagram)、功能塊圖(FBD - Function Block Diagram)、順序功能圖(SFC - Sequential Function Chart)。文本化編程語言包括:指令表(IL-Instruction List)和結構化文本 (ST-Strutured Text)。IEC 1131-3的編程語言是IEC工作組對世界范圍的PLC廠家的編程語言合理地吸收、借鑒的基礎上形成的一套針對工業(yè)控制系統(tǒng)的國際編程語言標準,它不但適用于PLC系統(tǒng),而且還適用于更廣泛的工業(yè)控制領域;IEC 1131-3 的編程工具提供對現(xiàn)場總線系統(tǒng)的支持,并對現(xiàn)場總線裝置的軟件設計產(chǎn)生了很大影響。   本專題將分兩部分介紹IEC 1131-3的編程語言,本文是IEC 1131-3編程語言的第一部分,重點介紹IEC 1131-3的兩種文本化編程語言;第二部分重點介紹IEC 1131-3的兩種三種圖形化編程語言,將在下一篇文章作介紹。   一、結構化文本(ST)   結構化文本(ST)是一種高級的文本語言,可以用來描述功能,功能塊和程序的行為,還可以在順序功能流程圖中描述步、動作和轉變的行為。   結構化文本(ST)語言表面上與PASCAL語言很相似,但它是一個專門為工業(yè)控制應用開發(fā)的編程語言,具有很強的編程能力用于對變量賦值、回調功能和功能塊、創(chuàng)建表達式、編寫條件語句和迭代程序等。結構化文本(ST)非常適合應用在有復雜的算術計算的應用中。   結構化文本(ST)程序格式自由,可以在關鍵詞與標識符之間任何地方插入制表符、換行字符和注釋。對于熟悉計算機高級語言開發(fā)的人員來說,結構化文本(ST)語言更是易學易用。此外,結構化文本(ST)語言還易讀易理解,特別是當用有實際意義的標識符、批注來注釋時,更是這樣。   1.1 操作符   結構化文本(ST)定義了一系列操作符用于實現(xiàn)算術和邏輯運算,如邏輯運算符:AND,&,XOR,OR; 算術運算符:<, >, <=, >=, =, <>, +, -, MOD, / 等,此外,還定義了這些操作符的優(yōu)先級。如下是操作符預算的兩個例子:   Start := Oilpress AND Stream AND Pump;   V : = K*(-W*T)   1.2 賦值語句    結構化文本(ST)程序既支持很簡單的賦值語句,如 X:=Y, 也支持很復雜的數(shù)組或結構賦值,如Profile[3]:=10.3+SQRT((Rate+2.0)), Alarm.TimeOn:=RCT1.CDT。   1.3在程序中調用功能塊   在結構化文本(ST)程序中可以直接調用功能塊。功能塊在被調用以前,輸入?yún)?shù)被分配為缺省值;在調用后,輸入?yún)?shù)值保留為最后一次調用的值。功能塊調用的格式如下:   FunctionBlockInstance(    InputParameter1:=ValueExpression1,    InputParameter2:=ValueExpression2, …);   ValueExpression1……ValueExpressionN是符合功能塊數(shù)據(jù)類型輸入變量,InputParameter1……InputParameterN功能塊的輸入?yún)?shù)。FunctionBlockInstance是要調用的功能塊。   1.4結構化文本(ST)程序中的條件語句   條件語句的功能是,某一條件滿足時執(zhí)行相應的選擇語句。結構化文本(ST)有如下的條件語句:   l IF …THEN…ELSE條件語句    該選擇語句依據(jù)不同的條件分別執(zhí)行相應THEN及ELSE語句。該條件語句可以嵌套入另一條件語句中,以實現(xiàn)更復雜的條件語句。條件語句的格式如下:   IF THEN      ELSE    < statements2…>   END_IF;   “boolean expression”可以是“true”或“false”,根據(jù)“true”或“false”的情況,程序執(zhí)行相應的statements1或statements2語句。   l CASE 條件語句   該選擇語句的執(zhí)行方向取決于CASE語句的條件, 并有一返回值。實例見最后的應用舉例。該條件語句的格式如下:   CASEOF   < integer selector value1> : < statements1…>   < integer selector value2> : < statements2…>   ……   ELSE   < statements …>   END_CASE;   “integer expression”可以是一個數(shù)值,根據(jù)數(shù)值的不同執(zhí)行相應的statements1或statements2等語句。   1.5 結構化文本(ST)程序中的迭代語句   迭代語句適用于需要一條或多條語句重復執(zhí)行許多次的情況,迭代語句的執(zhí)行取決于某一變量或條件的狀態(tài)。應用迭代語句應避免迭代死循環(huán)的情況。   l FOR…DO    該迭代格式語句允許程序依據(jù)某一整型變量迭代。該迭代格式語句格式如下:    FOR    TO   BY DO      END_FOR    “initialize iteraion variable”是迭代開始的計數(shù)值,“final value expression” 迭代結束的計數(shù)值。迭代從“initialize iteraion variable”開始,每迭代一次,計數(shù)值增加“increment expression”,計數(shù)值增加到“final value expression”,迭代結束。   結構化文本(ST)程序中還有其它的迭代語句,如WHILE … DO,REPEAT … UNTIL等,迭代原理與FOR…DO 格式基本相同。此外,結構化文本(ST)的迭代語句中還有EXIT,RETURN兩種格式,分別用于程序的返回和退出。   1.6 編程舉例:用結構化文本(ST)程序編功能塊   本程序是一用結構化文本(ST)程序編功能塊的例子。該實例描述的是如何用功能塊控制箱體中的流體,箱體可以通過閥門被注滿和倒空,如圖所示,箱體的重量由一個稱重單元監(jiān)視。功能塊通過比較兩個輸入值FullWeight和EmptyWeight以確定箱體是滿的還是空的。      該功能塊提供了一個“Command”輸入,該輸入有四種狀態(tài),1.給箱體加水;2. 保持不變;3.起動“Stirrer”;4. 清空箱體。實現(xiàn)該功能塊算法的結構化文本(ST)程序如下:    (*箱體狀態(tài)*)    TYPE_T_STATE: (FULL,NOT_FULL,EMPTIED);END_TYPE;    (*閥門狀態(tài)*)    TYPE_T_VALVE: (OPEN,SHUT);END_TYPE;    FUNCTION_BLOCK TankControl    VAR_IN (**)    Command:SINT;    Weight :REAL;    FullWeight,EmptyWeight : REAL;    END_VAR    VAR_OUT (**)    FillValve :T_VALVE:=SHUT;    EmptyValve :T_VALVE:=SHUT;    StirSpeed :REAL:=0.0;    END_VAR    VAR    State :=T_STATE :=EMPTYIED;    END_VAR   二、指令表(IL-Instruction List)   IEC 1131-3的指令表(IL-Instruction List)語言是一種低級語言,與匯編語言很相似,是在借鑒、吸收世界范圍的PLC廠商的指令表語言的基礎上形成的一種標準語言,可以用來描述功能,功能塊和程序的行為,還可以在順序功能流程圖中描動作和轉變的行為。   指令表語言能用于調用,如有條件和無條件地調用功能塊和功能,還能執(zhí)行賦值以及在區(qū)段內執(zhí)行有條件或無條件的轉移。指令表語言不但簡單易學,而且非常容易實現(xiàn),可不通過編譯和連編就可以下載到PLC。IEC 1131-3的其它語言如功能塊圖、結構化文本等都可以轉換為指令表語言。   2.1指令表語言結構   指令表語言是由一系列指令組成的語言。每條指令在新一行開始,指令由操作符和緊隨其后的操作數(shù)組成,操作數(shù)是指在IEC 1131-3的“公共元素”中定義的變量和常量。有些操作符可帶若干個操作數(shù),這時各個操作數(shù)用逗號隔開。指令前可加標號,后面跟冒號,在操作數(shù)之后可加注釋。   IL是所謂面向累加器(Accu)的語言,即每條指令使用或改變當前Accu內容。IEC 1131-3將這一Accu標記為“結果”。通常,指令總是以操作數(shù)LD(“裝入Accu命令”)開始。指令表程序如下所示:   2.2 指令表操作符    IEC 1131-3指令表包括四類操作符:一般操作符、比較操作符、跳轉操作符和調用操作符。   2.2.1一般操作符符   指令表一般操作符是指在程序中經(jīng)常會用到的操作符.   l 裝入指令:LD N等。   l 邏輯指令:AND N( (與指令)、OR N( (或指令)、XOR N( (異或指令)等。   l 算術指令:ADD ((加指令)、SUB((減指令)、MUL ( (乘指令),DIV((除指令)、MOD ( (取模指令)等。   2.2.2 比較指令:GT ( (大于)、GE ( (大于等于)、EQ( (等于)、 NE( (不等于)、 LE( (小于等于)、 LT( (小于)等。   2.2.3 跳轉及調用操作符   JMP C,N (跳轉操作符)、 CALL C,N (調用操作符)等。   2.3 在指令表中調用功能及功能塊   在IEC 1131-3指令表的程序中,可以直接調用功能塊和功能。指令表的功能塊調用有   種格式,功能調用有兩種格式。詳細的調用可見IEC 1131-3標準。   2.4 用指令表定義功能及功能塊   指令表可用于定義功能塊和功能。當用指令表定義功能時,功能的返回值是結果寄存   內的最新值;當用指令表定義功能塊時,指令表引用功能塊的輸入?yún)?shù)(VAR_INPUT),并且把值寫到輸出參數(shù)(VAR_OUPUT)。   2.5 指令表與其它語言的移植性   指令表語言轉換為其它語言是非常困難的,除非指令表操作符的使用范圍及書寫格式受到嚴格的限制,才有可能實現(xiàn)轉換。IEC 1131-3的其它語言較容易轉換為指令表。   2.6 IL的編程實例   本例是一個用指令表程序定義功能的實例,功能描述的計算平面上兩點的移動距離。 兩點X,Y的坐標如下圖所示。      用結構化文本描述的兩點間距離的計算公式為:Travel_distance:=SQRT((X1-X2)*(X1-X2)+(Y1-Y2)*(YI-Y2)))。TMax是X,Y兩點見的最大距離,當計算值小于TMax時,說明計算正確;當計算值大于TMax時,說明X,Y兩點間的距離超出了最大距離,在這種情況下,功能是沒有輸出的。   用指令表編寫的該功能的函數(shù)TRAVEL()如下:   FUNCTION TRAVEL : REAL    VAR_INPUT    X1,X2,Y1,Y2 : REAL (*點X,Y坐標*)    TMax : REAL (*最大移動距離*)    END_VAR   VAR    Temp : REAL; (*中間值*)    END_VAR    LD Y1    SUB Y2 (*計算Y2-Y1*)    ST Temp (*將Y2-Y1值存入Temp *)    MUL Temp (*計算(Y2-Y1)的平方*)    ADD( X1    SUB X2 (*計算(X1-X2)*)    ST Temp (*將(X1-X2)值存入Temp *)    MUL Temp (*計算(X1-X2)的平方*)    ) (*將兩平方值相加*)    CAL SQRT (*調平方根函數(shù)*)    ST TRAVEL (*設定計算結果*)    GT TMax (*比TMax 大嗎?*)    JMPC ERR (*是,轉到ERR 執(zhí)行*)    S ENO (*設定ENO *)   ERR:    RET (*錯誤返回,ENO 不輸出*)   END_FUNCTION  

[上一個新聞資訊]:自動化軟件設計IEC 61131-...
閱讀技巧:鍵盤方向鍵 ←左 右→ 翻頁
[下一個新聞資訊]:自動化軟件設計IEC 61131-...
Copyright @ 沈陽廢品回收    電子郵件:
沈陽榮匯物資回收有限公司   電話:13252826888