智汇工业-智慧工业、智能制造及工业智能、工业互联门户网站,专业的工业“互联网+”传媒

基于開放式數控系統平臺的軟件PLC

來源:萬方數據 作者:尚 靖 周會成 陳吉紅

點擊:1830

A+ A-

所屬頻道:新聞中心

關鍵詞:開放式 數控系統 PLC

    0 引言

      軟件PLC的開發中,各編程語言模塊的開發是關鍵環節。在IEC1131 3標準提出的5種編程標準語言中,指令語言和梯形圖語言應用最為廣泛。指令表語言的解析過程主要是根據編譯原理,通過詞法分析、語法分析及語義分析等環節,最終生成中間代碼。梯形圖是圖形化的編程語言,其編程模塊包括編輯和編譯2部分,其中面向用戶的編輯環境已經有很成熟的應用。另外,對于不同操作系統的數控系統,PLC程序的控制執行策略是不同,如何設計簡單高效的程序執行機也是軟件PLC的重點環節。以前的一些研究在一定程度上實現了軟件PLC的部分功能,但都沒有涉及程序的描述模型的概念,提出針對所有語言的通用解決方案。在此提出了PLC程序的描述模型和通用可執行數據結構,開發了梯形圖的圖形化編程模塊,并設計了基于RT Linux的數控系統的PLC程序的執行機。

    1 梯形圖編程環境

      梯形圖的編程環境包括編輯和檢查2個環節。編輯的任務是提供一個編制PLC程序的工具,使之方便地完成程序草圖的設計、修改、檢查和儲存等編輯功能。梯形圖程序結構模型如圖1所示。結構模型中,每個方框代表一個單元。單元類型可分為:輸入單元(包括常開單元、常閉單元等。每個單元對應于輸入寄存器中相應的地址);輸出單元(基本功能單元、擴展功能單元等。輸出單元對應邏輯運算結果輸出地址);邏輯單元(主要指串聯符號與并聯符號,其一般不參與運算,但決定輸入單元之間的邏輯關系,是邏輯計算依據);空單元(梯形圖中的空白部分是空單元所處位置,空單元表示沒有實際單元,但不意味沒有含義。解析梯形圖程序的過程中,空單元也需要加以分析,是有意義的);功能單元(包括計時器、計數器等其它實現特殊功能的單元)。模型中的最小元素是單元(即圖1中的小方塊),因此梯形圖草圖能夠記錄于一個二維數組lad-der_draft[MAX_ROW][MAX_COL]中。其中,MAX_COL表示圖中的一列最多可以容納的單元數量,MAX_ROW表示梯形圖最多可以容納的行的數量。數組中每個結構體成員記錄著草圖中每個單元的每項信息,包括單元的類型、單元寄存器的地址、寄存器類型、自然行號、列號和備注說明等。事實上,梯形圖程序草圖對應于一個面向對象的數組,還包括對數組的操作。對于用戶,繪制草圖的過程實質是對數組ladder_draft[MAX_ROW][MAX_COL]的操作過程。操作主要包括4種:De-lete cell,刪除梯形圖上已存在的一個單元;Deleterow,刪除梯形圖上的一自然行,其下的一行自動連接上;Undo,撤銷上一次的刪除操作;Redo,解除上一步的撤銷操作。梯形圖程序流程如圖2所示,程序經編輯環節需進行檢查,檢查出錯誤需要報錯。

    圖1 梯形圖程序結構模型

      a.程序的語法錯誤檢查。語法檢查負責檢查各個單元的參數是否正確。如寄存器地址是否越界、重復,計時器、計數器的設定值是否超過了限定的最大值等。當發現錯誤時,保存錯誤類型即錯誤所在的行號和列號。流程如圖2a所示。

      b.程序的邏輯錯誤檢查。梯形圖的邏輯錯誤負責檢查指令位置,如并聯單元的順序,輸出單元是不是存在,位置是否合理等等。當發現錯誤時,同樣提示報錯,流程如圖2b所示。

    圖2 程序流程

    2 描述模型數據結構及執行機原理

      PLC程序編譯的最終目的是獲得可執行文件。對于硬件PLC,將可執行文件送往硬件執行模塊即可。對于本文中的軟件PLC,程序描述模型的記錄,即可執行程序通用數據結構,是可執行文件的主要內容。因此,選擇恰當的程序描述模型是整個問題的關鍵,該模型需要完整地表述梯形圖程序中所包含的層次特征和所有單元之間的邏輯關系。基于此點,我們設計模型結構如圖3所示。

    圖3 模型結構

      模型在形式上類似梯形圖中的一個梯級,包含有5個層次,從低到高依次是:單元層次、邏輯行層次、段層次、梯級層次、梯形圖層次。

      a.自然行。梯形圖中的所有水平并列的單元構成了一個自然行。

      b.邏輯行。由單元組成,段內是并聯關系。同處一個自然行的單元不一定同處一個邏輯行。圖中的每個矩形框代表一個邏輯行。

    c.段。由邏輯行組成。梯級內的段與段是串聯關系。圖3中,從上到下、并行排列的幾個矩形框構成一段。

      d.梯級。由相互聯系而不可分割的一個或數個自然行組成,同時也由段串聯組成。圖3中前3個輸入段與最后的輸出段構成一個梯級。

      e.梯形圖。由一個或數個梯級依次排列而成。各梯級間一般有邏輯或者時間上的順序。

      針對具體梯形圖的設計規模,還需要制定一些規則,即每個梯形圖最多包含60個自然行;每個自然行包含12個單元;每個邏輯行至多包含6個單元;每段至多包含6個邏輯行,每個梯級至多包含4段,其中包含1個輸出段;整個梯形圖至多包含20個梯級以及30個輸出單元。規則中的參數可以通過實際的情況靈活修改。

      程序模型的作用在于為解析PLC程序提供參照,描述模型的數據結構即為PLC程序的最終數據結構。對應程序模型,數據結構同樣分為5個層次,分別為單元、邏輯行、段、梯級、梯形圖。

      struct SLadderCell //單元層次
      {
      char type; //單元類型
      int address; //地址
      int setting_value; //設定
      int current_value; //當前值
      char reg_type; //寄存器類型
      int result_value; //單元值
      };
      struct SLadderRow //邏輯行層次
      {
      int cell_num; //實際包含的單元數量
      struct SLadderInputCell cell[MAX_CELL_OF
      _ROW]; //記錄一行的單元
      int result_value; //行的值
      };

      段、梯級的數據結構與邏輯行的數據結構大體類似,不再重復。其中,最重要的梯形圖程序模型的層次結構如下。

      struct SLadderGragh //梯形圖程序層次
      {
      int layer_num; //實際包含的梯級數
      int output_num; //實際的輸出單元的數
      SLadderLayer layer [MAX _ LAYER _ OF _
      GRAPH]; //梯級的記錄
      };

      針對以上通用數據結構,設計軟件PLC執行機結構如下。

      PLC executive //PLC程序執行機
      {
      FOR (LAYER NO. < ACTUAL LAYER
      NUMBER)
      {
      FOR (SEGMENT NO. < ACTUAL SEG-
      MENT NUMBER)
      {
      FOR (LOGIC ROW NO. < ACTUAL LOG-
      IC ROW NUMBER)
      {
      FOR (CELL NO. <ACTUAL CELL NUM-
      BER)
      {
      ROW RESULT = ROW _ RESULT &&
      VALUE OF THE NEXT CELL //單元之間執行
      與運算
      }
      SEG RESULT = SEG_RESULT || VALUE
      OF THE NEXT LOGIC ROW //邏輯行間執行
      或運算
      }
      LAYER RESULT = LAYER RESULT &&
      VALUE OF THE NEXT SEGMENT //段之間
      執行與運算
      }
      }
      }

    3 梯形圖的解析

      梯形圖解析的最終目的是通用數據結構,程序描述模型的結構框架是解析的參照標準,具體的步驟是通過層次分析、邏輯判斷,為每個單元在程序描述模型中/定位0,即確定單元的梯級號、段號、行號和列號。單元數據結構的數據成員分為2組:第1組包括單元類型、單元對應的寄存器地址和類型、備注說明及單元在圖中的自然坐標等,這些成員在編輯草圖的過程中由設計者直接確定;第2組為邏輯行號、邏輯列號、梯級號和段號。這些成員的數值需要分析得出。分析的基本方法是掃描二維數組ladder_draft[MAX_ROW][MAX_COL],單元類型是掃描的關注點。掃描分為2步進行:第1次掃描過程中,當掃描到某個具體單元時,由于沒有后繼單元的信息便無法計算出當前單元的完整信息。這次掃描的目的在于向中間結果數組中記錄相應信息。無論是設計文本編程環境還是圖形化編程環境,我們的分析都應著眼于表意的最小元素。對于PLC程序,最小表意元素是一個完整的梯級。當掃描處在某個梯級當中,打破了梯形圖的最小表意單元(梯級),則無法得出單元的完整信息。SRowPropertynaturerow[MAX_ROW]是中間結果數組,主要記錄自然行的信息。通過該數組可確定梯形圖單元在/垂直方向0的參數(梯級號和邏輯行號)。中間結果數組的數據結構如下。

      struct SRowProperty
      {
      int or_num; //并聯符的個數
      int layer_no; //自然行所在的梯級
      int logic_row; //自然行的邏輯行號
      int seg_num; //自然行出現過的段的數量
      };

      自然行的信息是劃分梯級的依據。凡是存在并聯符的自然行和其上面相鄰的一行必屬同一梯級,凡沒有并聯符的、非空自然行是新梯級的開端。準確劃分梯級,將確定每個自然行所處的梯級號以及每個自然行在所屬梯級的位置(邏輯行號)。自然行的梯級號和邏輯行號與該自然行上每個單元的梯級號和邏輯行號是一個概念。第2步掃描針對/水平方向0的參數(段號和邏輯列號),結合了中間結果,能最終實現對段的準確劃分。段的處理方式與梯級劃分的區別在于梯級劃分在于找到梯級的/首0,而段的劃分在于找到段的/尾0。段的劃分與邏輯列號的確定是同一過程。

      綜上所述,編譯就是參照PLC的程序模型對梯形圖的劃分過程,從圖劃分成梯級,梯級劃分成段,段劃分成邏輯行,最后是單元,依次進行。

    4 應用實例

      圖4所示是一個在編程環境完成的主軸運動控制的局部梯形圖。

    圖4 主軸運動控制的局部梯形

      圖4中包括主軸旋轉方向控制(順時針旋轉SPCW或逆時針旋轉SPCCW)、主軸齒輪換檔控制(低速檔SPL或高速檔SPH)以及主軸停(SPOFF)的控制。控制方式分為手動(HAND)和自動(AU-TO)2種工作方式。在/主軸順時針旋轉0梯級中,HAND=/10,主軸旋轉方向選擇旋鈕置于順時針位置,CW.M(順轉開關信號)=1,又由于主軸停止旋鈕開關OFF.M沒接通,SPOFF常閉接點為/10,使主軸手動控制順時針旋轉。當方向選擇旋鈕置于逆時針接通狀態時,和順時針旋轉分析方式相同,使主軸逆時針旋轉。

      第1,第2和第3自然行為第1梯級,即/主軸順時針旋轉0梯級。第1行中,HAND與SW.M 2個常開單元是串聯,SW.M右旁為一個串聯單元,標志邏輯行的結束; SPOFF是常閉單元是新邏輯行的開始,其右邊的串聯單元同樣表示這個邏輯行的結束,第1行是沒有并聯單元的;第2行中,串聯關系的AUTO和M03組成一個邏輯行,M03右邊的右并聯單元是邏輯行的結束標志;第3行和第2行幾乎完全一樣。應該注意到,第2行和第3行都存在并聯單元,這個信息在第一步掃描時記錄在中間結果數組中。這表明第2行、第3行與第1行有/聯系0,即同屬一個梯級;第4行沒有并聯單元,表明這是一個新梯級,即/主軸逆時針旋轉0梯級的首行。由上述可知,段的劃分與判斷邏輯行的終止是一個概念,一個邏輯行的結束就是其所屬的段在其所處的自然行上的結束。

      局部梯形圖共包含5個梯級,除了/主軸順時針旋轉0梯級、還有/主軸逆時針旋轉0梯級、/主軸停0梯級、/變低速檔齒輪0梯級以及/變高速檔齒輪0梯級。但分析的原理與步驟與第1個梯級的相似,不再重復。

    5 結束語

      應用程序模型的概念,實現了圖形化編程環境,通過數控系統中主軸控制的一個應用實例表明,上述分析方法和原理是有效、可行的。


    (審核編輯: 滄海一土)

    聲明:除特別說明之外,新聞內容及圖片均來自網絡及各大主流媒體。版權歸原作者所有。如認為內容侵權,請聯系我們刪除。

    主站蜘蛛池模板: 行域人才网-垂直行业领域招聘首选的专业人才网,分行业招聘就上行域人才网 | 实木中药柜,实木中药斗,木制中药柜,木制中药柜的价格,实木中草药柜,安国美佳中药柜厂家 | 砂浆生产线_干混砂浆设备_干混砂浆生产线-苏州一工机械有限公司 砂基透水砖滤水率,防滑性试验仪,砂基透水砖落球冲击,抗冲击试验机-献县中正试验仪器销售处 | 停车场设计|地下停车场规划设计|智能停车位地下车库设计施工装修|深圳创安顺停车库规划设计有限公司 | 深圳沃亚游学官网丨国外游学丨国际夏冬令营丨美国游学线路丨出国短期游学丨亲子海外游丨游学咨询: 0755-83843308 | 生活污水处理设备-地埋式污水处理设备厂家-山东梦之洁水处理设备有限公司 | 天津成考网-天津成人高考网| 软化水设备_锅炉软水设备_全自动软化设备【安装维护、更换树脂】-青岛水处理设备厂家 | 天猫代运营_淘宝代运营_正规电商代运营公司_武汉火蝠电商 | 土工膜_土工布_复合土工膜_山东土工膜生产厂家_山东路易达新材料有限公司 | 喷涂流水线,喷漆流水线-山东天意设备科技 | 精密齿轮,同步带轮,蜗轮,蜗杆,减速机齿轮,行星齿轮-和兴齿轮 | 三机一体除湿干燥机,色母机,称重式拌料机,工业冻水机,中央集中供料-东莞市瑞达机械科技有限公司(瑞达国际) | 潍坊亿宏重工机械有限公司,破碎机,高性能立磨机,颚式破碎机,锤式破碎机反击式破碎机,重锤式破碎机,高性能反击式破碎机,圆锥式破碎机,给料机系列,链板给料机系列,简易给料机系列,振动给料机 | 沥青灌缝胶-路面贴缝带-灌缝胶厂家-山东晟辉工程材料有限公司 | 深圳办公室装修_高端写字楼设计费用_企业装修报价公司-深圳长红装饰 | 挖掘机|小型挖掘机|挖掘机抓木机|轮式挖掘机|宝鼎挖掘机-宝鼎液压机械公司厂家直销 | 深圳市佳顺优印印刷有限公司,佳顺优印,画册印刷,海报印刷,封套印刷,手提袋印刷,包装盒印刷,彩盒印刷,无碳纸印刷,不干胶印刷,信封印刷,便笺印刷,笔记本印刷,台历印刷,挂历印刷,国际会展中心附近印刷厂,宝安印刷厂,宝安教材印刷厂 | 逍遥安卓模拟器_安卓模拟器电脑版_安卓手游模拟器哪个好用_逍遥手机模拟器官网 | 橡胶管_高压橡胶管_高压胶管_铠装高压胶管-河北远大新特橡塑有限公司 | 宣传片拍摄-宣传片制作-三维动画-企业视频广告报价-北京环宇影音 | 合肥固化地坪-安徽耐磨地坪-合肥环氧地坪厂家-安徽玉平地坪工程有限公司 | 无锡紫苹果装饰首页-高端别墅装修设计,专业别墅装饰公司 | 真空泵维修保养-真空泵-真空泵油-真空泵过滤器-真空泵碳片-东莞市海扬真空设备有限公司 | 廊坊微信营销,廊坊小程序开发,廊坊APP开发(安卓_苹果ios开发),微信朋友圈广告,百度推广,廊坊网络公司品牌服务商-河北盛秋网络科技有限公司 | 鸿茗商务-杭州鸿茗商务咨询有限公司| 医药招商 千虹医药网-专业的医药招商-医药代理-药品招商-药品代理信息发布平台 | 上海机械加工-机械加工-精密机械加工-上海欧野精工机械有限公司 上海慧泰仪器制造有限公司_一体型马弗炉-可控真空干燥箱-强光稳定性试验箱 | 襄阳燃烧器厂家-低氮燃烧器价格-河北五通道燃烧器就找襄阳市胜合燃力设备有限公司一站式服务 | 玉米加工机械_玉米加工设备_玉米深加工机械_玉米糁加工设备--滑县鑫丰粮油机械有限公司 | 欣宇航化工-湖北片碱-冰醋酸厂家联系方式-工业氨水价格-工业片碱厂家-武汉宇航化工 | 全开式真空干燥机_全开耙式真空干燥机_全开式动态真空干燥机,江阴千峰机械制造有限公司 | 铜陵租车_铜陵租车网_铜陵租车公司_铜陵婚车租赁_铜陵汽车租赁公司-良车汽车租赁 | 水质在线硬度计-立柜式五参数水质分析仪-上海博取 | 危废处理_危废处置_危废处理公司-江苏绿瑞特环境科技股份有限公司 | 微机继电保护测试仪,单相继电保护测试仪,三相继电保护测试仪,六相继电保护测试仪,介质损耗测试仪,氧化锌避雷器测试仪,无线核相仪-扬州豪泰电力科技有限公司 | 气调包装机厂家-真空包装机价格-气调包装机-锁鲜包装机-江苏大江智能装备有限公司 | 上海舞台灯光音响租赁搭建线阵_年会演出摇头光束面光灯出租_led电子显示屏出租-上海led大屏幕租赁 | 上海鑫鹏塑料制品有限公司| 外圆/圆管抛光机_方管抛光机/除锈机_活塞杆抛光机-不锈钢管抛光机-邢台欧邦机械 | 热电阻_热电偶_压力表_压力变送器_磁翻板液位计 - 淮安忠和测控仪表有限公司 |