• 
    

    
    

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

      PLC程序在不同品牌機(jī)型間的移植方法

      2021-05-28 06:18:58胡貞斌
      科學(xué)技術(shù)創(chuàng)新 2021年14期
      關(guān)鍵詞:編譯器功能塊施耐德

      胡貞斌

      (上海電器科學(xué)研究所(集團(tuán))有限公司,上海200063)

      當(dāng)前工業(yè)控制現(xiàn)場(chǎng),可編制程序控制器PLC 大行其道,各種品牌百花齊放??刂七^程中許多程序功能相同,可繼承與復(fù)用,但由于控制器PLC 的更換,編程人員不得不多次翻譯式的重新編寫與調(diào)試。由于編程人員業(yè)務(wù)水平及編程思路的差異,使得同樣功能存在不同程序表達(dá),阻滯了程序標(biāo)準(zhǔn)化與知識(shí)延續(xù)的發(fā)展,隔斷了優(yōu)秀程序算法的繼承,同時(shí)也給維護(hù)者帶來程序識(shí)讀障礙,造成時(shí)間浪費(fèi)。

      為解決此類問題,對(duì)程序功能塊在不同品牌PLC 控制器機(jī)型間的移植實(shí)現(xiàn)方法的需求變得尤為迫切。

      1 程序移植方法的提出

      1.1 程序移植定義與特征

      程序移植的定義“軟件工程中,程序往往被視為有生命的機(jī)體,將源代碼從一種環(huán)境下放到另一種環(huán)境下運(yùn)行也可以稱之為移植?!?程序移植需具備如下幾個(gè)特征:

      1.1.1 源代碼具備可復(fù)制性;

      1.1.2 源代碼具備通用可識(shí)性,更換環(huán)境后可運(yùn)行。

      1.2 程序移植方法的提出

      根據(jù)IEC61131-3 對(duì)PLC 編程語言的規(guī)定,PLC 控制器適用圖形與文本兩類語言。

      梯形圖LD、功能塊圖FBD 及順序功能SFC 三種編程語言均強(qiáng)調(diào)圖形的繪制,復(fù)制性欠佳,故使用圖形語言編制的程序在不同品牌PLC 間不可移植。

      指令表IL 編程語言屬于文本語言,代碼具備可復(fù)制性,但是IL 為類匯編語言,為程序執(zhí)行效率計(jì),程序編程對(duì)PLC 硬件地址依賴性很強(qiáng),程序移植的通用可識(shí)性欠佳。

      結(jié)構(gòu)文本ST 為類PASCAL 的語言,所使用的語句與關(guān)鍵詞符合高級(jí)語言的規(guī)定,多種PLC 機(jī)型均可識(shí)別并運(yùn)行,故ST語言同時(shí)滿足程序移植的復(fù)制性與通用可識(shí)性的特征。

      據(jù)此提出使用結(jié)構(gòu)文本ST 編程語言編制程序功能塊實(shí)現(xiàn)PLC 程序在不同品牌機(jī)型中移植的方法。

      2 程序移植方法的實(shí)現(xiàn)

      2.1 方法實(shí)驗(yàn)機(jī)型的選擇

      當(dāng)下工業(yè)現(xiàn)場(chǎng)工作中的PLC 機(jī)型多數(shù)均支持IEC61131-3標(biāo)準(zhǔn),現(xiàn)選用過程控制中出現(xiàn)頻次較高的美國(guó)AB ControlLogix1756-L71、法國(guó)施耐德M580 系列CPUeP582020、德國(guó)西門子S7-300 系列CPU315 作為程序移植方法實(shí)現(xiàn)的研究對(duì)象。

      2.2 程序移植實(shí)現(xiàn)過程

      本文以模擬量線性轉(zhuǎn)換功能塊的復(fù)制展現(xiàn)PLC 程序移植過程。

      模擬量線性轉(zhuǎn)換的算法公式為:

      其中:

      Y:儀表所表示的物理量真實(shí)值;

      X:儀表所對(duì)應(yīng)的PLC 模擬量輸入模塊通道轉(zhuǎn)換的數(shù)字值;

      Metermax:儀表所對(duì)應(yīng)的物理量量程最大值;

      Metermin:儀表所對(duì)應(yīng)的物理量量程最小值;

      Inputmax:PLC 模擬量模塊模數(shù)轉(zhuǎn)換可轉(zhuǎn)換數(shù)字量最大值;

      Inputmin:PLC 模擬量模塊模數(shù)轉(zhuǎn)換可轉(zhuǎn)換數(shù)字量最小值;

      2.2.1 程序變量定義

      序號(hào) 功能類型 變量名稱 數(shù)值類型 說明1 輸入 AI-Input INT 模擬端口輸入值,對(duì)應(yīng)公式中的X 2 輸入 r-MeterMax Real 儀表最大值(物理值量程)3 輸入 r-MeterMin Real 儀表最小值(物理值量程)4 輸入 I-ModelMax INT 模塊最大值(數(shù)字值量程)5 輸入 I-ModelMin INT 模塊最小值(數(shù)字值量程)6 輸入 r-HH-Alarm-Set Real 超高報(bào)警限值7 輸入 r-LL-Alarm-Set Real 超低報(bào)警限值8 輸入 r-H-Alarm-Set Real 高報(bào)警限值9 輸入 r-L-Alarm-set Real 低報(bào)警限值10 輸出 r-MeterValue Real 儀表實(shí)際物理值,對(duì)應(yīng)公式中的Y 11 輸出 b-HH-Alarm Bool 超高報(bào)警12 輸出 b-LL-Alarm Bool 超低報(bào)警13 輸出 b-H-Alarm Bool 高報(bào)警14 輸出 b-L-Alarm Bool 低報(bào)警15 輸出 b-Max-Aalrm Bool 儀表上溢報(bào)警16 輸出 b-Min-Alarm Bool 儀表下溢報(bào)警

      2.2.2 功能程序表述

      2.2.2.1 首先根據(jù)ST 語言語法使用文本文件創(chuàng)建程序,如下:

      2.2.2.2 西門子PLC S7-300 CPU315 的程序表述

      將上述文本起始增加“FUNCTION "Analog" : Void{S7_Optimized_Access := 'FALSE' }VERSION : 0.1”在文件結(jié)尾增加“END_FUNCTION”,以ANSI 編碼保存為“*.SCL”文件。

      在西門子編程軟件TIA Portal 中以“外部源文件”導(dǎo)入,使用“從源生成塊”功能,編寫的ST 程序成功導(dǎo)入,可運(yùn)行。

      導(dǎo)入成功的文件有如下特點(diǎn):

      西門子PLC 編譯器對(duì)局部變量的引用采用“#”作為前綴;

      為保證導(dǎo)入中文注釋可讀,文件應(yīng)以ANSI 編碼保存。

      2.2.2.3 施耐德M580 eP580 2020 的程序表達(dá)與導(dǎo)入

      施耐德M580 系列使用Unity Pro XL 軟件編程,軟件導(dǎo)入文件支持“*.xdb”類型,其可使用文本文件編輯,但是其在變量描述部分為XML 的描述語言,不符合ST 語言的結(jié)構(gòu),對(duì)于創(chuàng)建的ST 結(jié)構(gòu)文本程序改動(dòng)較大,故在程序移植過程中選用變量在編程軟件中定義,程序邏輯語句復(fù)制粘貼的方式進(jìn)行。

      創(chuàng)建步驟如下:

      (1)創(chuàng)建DFB 并命名;

      (2)將上述各變量在輸入、輸出相應(yīng)位置定義;

      (3)在DFB 段中增加程序并選擇語言為ST;

      (4)將上述ST 程序Begin 以下復(fù)制進(jìn)程序段中;

      (5)編譯執(zhí)行;

      編譯過程中發(fā)現(xiàn),施耐德PLC 編譯器對(duì)于“//”的單行注釋認(rèn)為是非法的。

      2.2.2.4 AB ControlLogix1756-L71 CPU 的程序表述

      AB ControlLogix1756-L71CPU 使用RSLogix5000 軟件進(jìn)行編程,其對(duì)于程序?qū)胛募愋蜑椤?.L5X”,可使用文本文件編輯,但是其對(duì)于變量定義及程序均使用XML 結(jié)構(gòu)描述,如使用已編寫好的結(jié)構(gòu)文本程序更改,工作量大且無法保證正確,故AB PLC 采用與施耐德PLC 類似的編程方式,在編譯器內(nèi)定義變量,邏輯程序通過文本復(fù)制方式粘貼進(jìn)入編譯運(yùn)行。

      創(chuàng)建步驟如下:

      (1) 新 建“Add-OnInstructions” 并 選 擇 語 言 為“StructuredText”;

      (2)在新建的Add-OnInstructions 功能塊內(nèi)參數(shù)與本地變量中根據(jù)輸入輸出類型創(chuàng)建程序變量;

      (3)在“Logic”中將上述ST 程序Begin 以下復(fù)制進(jìn)程序段中;

      (4)編譯運(yùn)行。

      從程序復(fù)制編譯后可見,AB PLC 由于數(shù)據(jù)結(jié)構(gòu)的關(guān)系,其對(duì)數(shù)據(jù)類型是隱形強(qiáng)制轉(zhuǎn)換,故在程序中出現(xiàn)“INT_To_Real”函數(shù)在AB PLC 中無法識(shí)別,將函數(shù)去除后程序編譯運(yùn)行正常。

      3 程序移植方法總結(jié)

      3.1 程序移植中存在問題與解決

      3.1.1 存在問題

      針對(duì)上述AB、施耐德及西門子(TIA 系列)三種品牌PLC 控制器在結(jié)構(gòu)文本支持上的相異點(diǎn),功能程序塊在此三種PLC 控制器間移植存在問題如下:

      3.1.1.1 Bool 的表達(dá)方式

      AB PLC 對(duì)Bool 量的結(jié)果表示為“0”與“1”,“True”與“False”的表示方法被編譯器認(rèn)為是非法的,但是在施耐德與西門子(TIA 系列)PLC 中兩種表示方法均被接受。

      3.1.1.2 變量的引用方式

      AB 與施耐德PLC 在結(jié)構(gòu)文本中對(duì)變量的引用是直接字符表達(dá)方式,而西門子(TIA 系列)在結(jié)構(gòu)文本中對(duì)于全局變量使用引號(hào)“""”對(duì)于局部變量加“#”前綴表示。

      3.1.1.3 浮點(diǎn)數(shù)書寫方式

      AB 與西門子(TIA 系列)PLC 控制器,浮點(diǎn)數(shù)可以寫成整數(shù)形式,編譯器可根據(jù)變量定義的類型自主轉(zhuǎn)換,而施耐德PLC則必須寫成浮點(diǎn)數(shù)形式。

      3.1.1.4 單行注釋的使用

      在AB 與西門子(TIA 系列)PLC 中,“//”的單行注釋語句可以使用,而在施耐德PLC 中“//”注釋語句被編譯器認(rèn)為是非法的。

      3.1.2 解決方法

      為實(shí)現(xiàn)程序功能塊在AB、施耐德及西門子(TIA 系列)三種品牌PLC 控制器間的移植,對(duì)上述問題提出如下解決辦法:

      3.1.2.1 BOOL 變量賦值避免“True”與“False”的使用,在編程中保持“0”與“1”的數(shù)值表達(dá)方式,提高程序的通用性。

      3.1.2.2 功能程序塊根據(jù)IEC6113-3 標(biāo)準(zhǔn)規(guī)定的結(jié)構(gòu)化文本格式使用文本文件編程,在西門子等對(duì)標(biāo)準(zhǔn)支持比較高的PLC機(jī)型中通過導(dǎo)入方式完成,由編譯器自主增加變量引用前綴。

      3.1.2.3 浮點(diǎn)數(shù)標(biāo)準(zhǔn)化書寫,根據(jù)實(shí)際使用的小數(shù)位書寫浮點(diǎn)數(shù)。

      3.1.2.4 編程過程中使用“(*…*)”對(duì)單行語句進(jìn)行注釋。

      3.2 程序移植方法的總結(jié)

      根據(jù)上述對(duì)AB、施耐德、西門子(TIA 系列)三種品牌PLC的移植試驗(yàn)、異同比較及解決方法提出,可知使用結(jié)構(gòu)化文本ST 編程語言編制程序功能塊在不同品牌機(jī)型中移植方法,程序編寫需具備如下幾個(gè)條件:

      3.2.1 變量命名的標(biāo)準(zhǔn)化

      程序變量的命名應(yīng)遵守匈牙利變量命名法,即變量名由字母、數(shù)字、符號(hào)組成,并以變量類型的字母開頭,變量名長(zhǎng)度小于31 字符,避免“#”符號(hào)的使用。

      3.2.2 程序注釋的標(biāo)準(zhǔn)化

      程序注釋應(yīng)遵守IEC 61131-3 對(duì)注釋的規(guī)定,使用“(*…*)”格式。

      3.2.3 賦值方式的統(tǒng)一化

      程序中對(duì)BOOL 量的賦值應(yīng)使用“0”與“1”的數(shù)值化賦值,避免“True”、“False”的使用。

      3.2.4 特型函數(shù)引用的外置化

      在實(shí)際編程過程中應(yīng)避免對(duì)有品牌特征的函的使用,盡量使用通用的方法實(shí)現(xiàn)。如果是在編程中實(shí)現(xiàn)無法規(guī)避的函數(shù),需在通用功能程序塊外完成轉(zhuǎn)換,加強(qiáng)程序塊的通用性。

      4 結(jié)論

      筆者使用結(jié)構(gòu)化文本語言實(shí)現(xiàn)了模擬量線性轉(zhuǎn)換、電機(jī)設(shè)備的手動(dòng)控制、多臺(tái)水泵組合自動(dòng)運(yùn)行等功能程序塊在施耐德(Unity)、AB(RSLogix)、西門子(TIA)中的互相移植,實(shí)現(xiàn)功能程序的標(biāo)準(zhǔn)化,在排水泵站與污水處理廠等多個(gè)工程中應(yīng)用,為筆者在工程調(diào)試中節(jié)省了時(shí)間。

      通過筆者的工程實(shí)踐證實(shí),使用結(jié)構(gòu)化文本ST 編程語言編制程序功能塊實(shí)現(xiàn)PLC 程序在不同品牌機(jī)型中移植是一種可行的方法。

      注釋

      1百度百科“移植(科學(xué)術(shù)語)的解釋”https://baike.baidu.com/item/%E7%A7%BB%E6%A4%8D/4669209?fr=aladdin.

      猜你喜歡
      編譯器功能塊施耐德
      基于相異編譯器的安全計(jì)算機(jī)平臺(tái)交叉編譯環(huán)境設(shè)計(jì)
      Ovation系統(tǒng)FIRSTOUT和FIFO跳閘首出比較
      施耐德的失落
      能源(2016年2期)2016-12-01 05:10:35
      自定義功能塊類型在電解槽聯(lián)鎖中的應(yīng)用
      基于MACSV6.5.2的鍋爐燃盡風(fēng)開關(guān)量調(diào)節(jié)門控制功能塊設(shè)計(jì)
      通用NC代碼編譯器的設(shè)計(jì)與實(shí)現(xiàn)
      PLCopen運(yùn)動(dòng)控制功能塊的研究與開發(fā)
      施耐德電氣睿易系列ATV310通用型變頻器
      施耐德:以PlantStruxureTM PES助力節(jié)能降耗
      施耐德電氣 Foxboro Compact 200系列I/O
      宁津县| 仪征市| 蕲春县| 嘉定区| 庆安县| 南投县| 凤冈县| 义乌市| 赤城县| 鄱阳县| 中卫市| 栖霞市| 浑源县| 神农架林区| 海林市| 石狮市| 凤翔县| 英德市| 筠连县| 宾阳县| 景德镇市| 金平| 突泉县| 澄迈县| 吕梁市| 佳木斯市| 永定县| 民权县| 新邵县| 将乐县| 余干县| 田东县| 白朗县| 赣榆县| 明光市| 惠来县| 河北区| 讷河市| 凭祥市| 聊城市| 韶关市|