TWI436180B - 程式分析支援裝置 - Google Patents
程式分析支援裝置 Download PDFInfo
- Publication number
- TWI436180B TWI436180B TW098134579A TW98134579A TWI436180B TW I436180 B TWI436180 B TW I436180B TW 098134579 A TW098134579 A TW 098134579A TW 98134579 A TW98134579 A TW 98134579A TW I436180 B TWI436180 B TW I436180B
- Authority
- TW
- Taiwan
- Prior art keywords
- analysis
- program
- pou
- execution unit
- result
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/02—Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Programmable Controllers (AREA)
Description
本發明是關於程式分析支援裝置。具體而言,本發明是關於在可程式控制器(以下稱為「PC」)、運動控制器(以下稱為「MC」)、數值控制裝置控制器(以下稱為「NC」)、檢查裝置控制器、或顯示器(以下稱為「GOT」)等各種產業用控制器、或者微電腦所執行的計測控制程式中,於為了開發新的計測控制程式而進行分析過去的計測控制程式之作業、或開發、除錯計測控制程式時,用以使編輯/變更該程式的作業有效率化的裝置。
向來,為了進行生產設備的計測控制,係使用以可程式控制器(PC)為首的產業用控制器。以在產業用控制器中所執行的計測控制程式而言,可列舉以階梯程式(ladder program)為代表例之根據IEC61131-3的語言或控制器專用語言。此外,以使用微電腦來取代產業用控制器時的計測控制程式而言,可列舉出C語言或組合(assembler)語言。在下述中係以PC為例進行說明。
PC係執行屬於計測控制程式的階梯程式,以掌握計測控制對象的狀態、或對計測控制對象進行指示動作。階梯程式的製作係使用預定的計測控制程式製作支援裝置(階梯(ladder)製作支援裝置)。計測控制程式製作支援裝置一般而言係以在個人電腦上執行動作的軟體工具的形式提供使用,具有支援編輯階梯程式的功能,而該階梯程式為在PC進行計測控制對象的計測或控制時所使用之程式。除此之外,計測控制程式製作支援裝置亦具有連接個人電腦與PC,並將所編輯的階梯轉送到PC、且監視計測控制對象的狀態或因階梯的執行而產生變化的變數(以下稱為「元件(device)」)值之狀態的功能。又,計測控制程式製作支援裝置所提供的程式編輯功能及監視功能亦可搭載在顯示器(GOT)上,且可從與PC恒常處於連接狀態的GOT上進行計測控制程式的編輯或元件值的狀態監視。
於生產設備的規模非常小時,計測控制程式雖有一個階梯程式就足夠,但一般而言,計測控制生產設備用的程式是由複數個程式模組(以下稱為「POU」;POU:Program Organization Unit)所構成。計測控制程式的程式語言若為階梯,則POU係相當於副程式(subroutine)或FB(Function Block;功能區塊),若為ST(Structured Text;結構化文字)或C語言,則POU係相當於副程式或函數。
在上述場合時,於不同的POU間將會形成存在共同地進行計測、控制之多數個元件。因此,於分析變更、修改程式所伴隨之影響範圍或分析缺失動作的原因等時,就必須知道某元件是被使用在哪一個POU的哪一個位置(是在哪一個位置被讀入?/在哪一個位置被寫出)。而且,為了使該作業效率化,需要迅速地進行特定出程式中(POU)的元件之使用部位。因此,以進行該特定用的程式分析支援裝置而言,已知有交互參照(cross reference)製作裝置。交互參照製作裝置係一種將複數個POU作為分析對象予以讀入,並製作某元件是被使用在哪個POU的哪個位置的一覽表、或製作使用在某POU的所有元件之一覽表的裝置。又,此種交互參照的製作亦有作為計測控制程式製作裝置的一項功能而實現之情形。
在此,於非專利文獻1的操作說明書中,揭示有兩種習知技術。以下,說明該等習知技術。
首先,於第1習知技術中,製作某元件被使用在哪個POU的哪個位置之一覽表的交互參照功能,以作為計測控制程式製作支援裝置的一項功能被實現,且從計測控制程式製作支援裝置的選單(menu)選擇交互參照功能時,作為交互參照畫面的對話框被顯示在畫面上。首先,在上述對話框的元件欄中,操作者輸入元件。接著,操作者在上述對話框的檢索範圍欄指定檢索範圍。此時,操作者對於檢索範圍可將所有的POU作為檢索範圍予以指定,或者亦可僅將特定的POU作為檢索範圍予以指定。之後,當操作者點擊(click)顯示在上述對話框的執行鍵時,正使用該元件的POU及其位置的一覽表就會被顯示在上述對話框上。在上述對話框上的程式名欄中將會顯示POU的名稱,並於序列步驟(sequence step)欄中顯示在該POU中正使用該元件的步驟號碼。更且,於上述對話框上的命令欄中,顯示正使用該元件的步驟之命令種類。例如程式(POU)是以階梯書寫時,於命令欄顯示接點或線圈等。
接著,在第2種習知技術中,係於畫面上製作在某POU所使用的元件之一覽表(元件使用清單)。此一覽表製作功能係在第2種習知技術中,作為計測控制程式製作支援裝置的一項功能被實現,當操作者從計測控制程式製作支援裝置的選單選擇印刷功能時,顯示元件使用清單用的對話框將會顯示在畫面上。首先,操作者選擇程式。亦即,操作者在顯示於該對話框的程式選擇欄中,輸入要選擇的POU名稱。接著,操作者指定顯示在該對話框的印刷條件。在該指定時,若僅要將程式所使用之元件作為一覽表予以印刷時,操作者係在該欄輸入勾選(check)的指示。若未輸入有勾選的指示時,會將所有的元件作為一覽表予以印刷。之後,當操作者點擊顯示在該對話框的印刷鍵時,即會印刷在該POU所使用的元件一覽表。於程式名欄中會印刷有所選擇的POU之名稱,並於其之下,依序印刷在該POU被使用的元件。在有無使用的欄中,印刷該元件被使用的命令之種類。若程式以階梯書寫時,印刷接點或線圈等。又,該元件在該POU中被使用為接點與線圈時,印刷接點及線圈雙方。
(專利文獻1)日本特開2006-294011號公報
(專利文獻2)日本特開2006-294013號公報
(非專利文獻1)GX Developer Version 8操作手冊三菱電機株式會社2008年12月
(非專利文獻2)「程式切片(program slicing)技術與應用」下村隆夫著 共立出版ISBN4-320-02743-4
如上所述,非專利文獻1中記載的第1項或第2項習知技術係僅根據預先已搭載在程式製作支援裝置或程式分析支援裝置的上述功能,才能製作表示某元件被使用在哪個POU的哪個位置之交互參照或元件使用清單。
因此,以問題之一例而言存在下述之問題點:即關於如在某特定POU被使用、且在其他的特定POU中也正被使用之元件,上述第1及第2之習知技術是無法製作該等POU中的參照處之一覽表。結果,操作者只能自行藉由目視一一實施對某特定POU所使用的元件一覽表(元件使用清單)、與其他特定POU所使用的元件一覽表(元件使用清單)進行確認之作業之後,操作者才製成藉由該手工(manual)作業所抽出的元件之交互參照,而於程式的變更或分析缺失動作等中,在為了要特定出成為編輯對象之處時會有需花時間的問題。
再者,以其他問題的一例而言存在下述之問題點:即上述第1及第2習知技術係無法製作某元件的特定POU及由該POU作為副程式所呼叫(call)的POU之交互參照。因此,操作者只能先抽出由上述特定的POU作為副程式所呼叫的POU一覽表,並對於所抽出的各POU分別製作該元件的交互參照之後,一一執行將該結果予以合併(merge)的作業,除此之外,別無對策,結果會有於程式的變更或分析缺失動作等中,要特定出成為編輯對象之處時需花時間的問題。
因此,用以解決前者問題的先前技術已揭示在專利文獻1與2及非專利文獻2的各文獻中。
然而,專利文獻1與2所提出的先前技術只是將製作在某特定POU所使用且在別的特定POU中也使用之元件一覽表的功能(將此功能姑且稱為「程式間重複使用狀況清單」)預先搭載在程式製作支援裝置或程式分析支援裝置而已。既有利用已存在的交互參照功能之處理,以實現程式間重複使用狀況清單功能之處理的情形;或者亦有在已存在的交互參照功能的處理之外,獨立地實現程式間重複使用狀況清單功能之處理的情形。然無論如何,上述先前技術只能以上述方式執行在所搭載的功能之條件指定範圍內的程式間重複使用狀況清單之製作。
因此,上述先前技術係內含無法一同實現製作自由組合條件的交互參照,以及抽出自由組合條件的程式分析結果之問題。
在此,以藉由自由組合檢索條件而可製作所期望的一覽表之習知技術例而言,有屬於先前專利文獻檢索用的程式之一的PATOLIS(註冊商標)。在該PATOLIS(註冊商標)所進行的專利文獻檢索中,操作者係以專利分類來縮小檢索範圍,或藉由在摘要、申請專利範圍等部分是否含有特定的關鍵語(key word)來縮小檢索範圍。此時成為檢索對象的母集團為全部的先前專利文獻。又,其符合(hit)結果的一覽表係為先前專利文獻的一覽表。因此,當操作者欲對於符合結果進一步以別的條件縮小檢索範圍時,操作者首先係對全部的先前專利文獻以別的條件進行檢索,再令電腦執行屬於此次符合結果的先前專利文獻一覽表、與之前符合結果的AND處理,藉此即可進行先前專利文獻範圍的進一步縮小。
對此,計測控制程式之分析結果係因分析條件而異。例如,在某特定POU所使用的元件一覽表中,其結果是元件的一覽表,但在由特定的POU作為副程式所呼叫的POU一覽表中,其結果是POU的一覽表。因此,對於該等不同結果的一覽表,不可能立即透過符合結果彼此間的AND處理進行縮減。
又在專利文獻1、2及非專利文獻1分別所提案的習知技術的程式分析中,成為其分析對象的母集團雖然是程式,但是由於計測控制程式之分析結果會因分析條件而異,所以在實施別的分析條件時,成為其分析對象的母集團不僅是程式,而且也需要分析結果。亦即,藉由上述習知技術的組合是無法容易地實現可自由地組合程式分析條件的程式分析支援裝置。
本發明係有鑑於上述技術狀況而研創者,其主要目的在實現可自由地組合分析條件的程式分析支援裝置。
有關本發明主題的程式分析支援裝置係具備:分析條件設定部,對關於由n(n為2以上的整數)個程式模組所構成的程式,輸入並保持由使用者所指定的前述程式之程式分析條件;分析條件執行部,根據前述程式分析條件來執行前述程式之分析處理;及分析結果顯示部,製作並輸出用以顯示由前述分析條件執行部所處理的分析結果之顯示資料;而前述分析條件執行部係具備:POU一覽表抽出處理執行部,輸出提供在前述n個程式模組內m(2≦m≦n)個程式模組的集合(collection)之第1信號;及變數使用一覽表抽出處理執行部,將前述POU一覽表抽出處理執行部所輸出的前述m個程式模組的集合作為分析對象範圍,抽出提供在前述m個程式模組的各個中所記載的各變數之交互參照之第2信號。
依據本發明之主題,可使自由地組合程式分析條件的程式分析成為可能,且根據該分析結果可迅速地特定成為編輯對象的部位,因此,可使使用者在程式之變更或缺失動作的分析等中特定成為編輯對象的部位之作業效率化,而能縮短作業所需之時間。
以下,根據圖式詳細說明本發明的各種具體化形態,以及其功效與優點。
第1圖係顯示後述各實施形態共通的本發明之程式分析支援裝置的硬體構成之方塊圖。在第1圖中,程式分析支援裝置1係具備有:(1)微處理器2,執行程式分析支援裝置1的各項功能;(2)資料儲存記憶體3,暫時儲存資料用,例如由DRAM所構成;(3)顯示部4,由液晶顯示器等顯示裝置所構成;(4)輸入部5,由滑鼠及/或鍵盤等輸入裝置所構成;以及(5)保存部6,將分析對象的計測控制程式及實現程式分析支援裝置的各功能用之程式分析支援用程式等程式或分析結果等資料分別作為檔案予以記憶、保持,由硬碟等記憶裝置所構成。而且,各部2至6係經由系統匯流排SB而相互連接。
於本分析支援裝置1中對計測控制程式進行程式分析(交互參照的製作)時,使用者係藉由操作輸入部5輸入程式分析條件,並同時指定保持在保存部6的複數個計測控制程式中之欲指定的計測控制程式。伴隨此輸入操作,程式分析條件及計測控制程式之指定內容係被保持在微處理器2內的暫存器(未圖示)。之後,微處理器2係對保存部6進行存取,從保存部6讀出由使用者所指定的計測控制程式,並依據由使用者所輸入的程式分析條件執行該計測控制程式之分析處理。然後,微處理器2係將該分析處理結果暫時地儲存在資料儲存記憶體3中,並將該項結果顯示在顯示部4的畫面上、或者作為1檔案記憶在保存部6內。
再者,用以使執行程式分析支援裝置1的各功能或各處理執行的分析支援用程式本身係以能在個人電腦上進行動作的軟體工具之方式被提供。在該場合時,程式分析支援裝置1係由上述個人電腦所構成。或者,上述分析支援用程式亦有搭載在GOT的情形,該場合時,上述GOT係構成程式分析支援裝置1。
第2圖係顯示程式分析支援裝置1,亦即由微處理器2所執行的分析處理之各功能部的功能方塊圖(相當於軟體方塊圖)。如第2圖所示,程式分析支援裝置1或微處理器2係大致具有:分析條件設定部10、分析條件執行部11及分析結果顯示部20。
在該等部中,分析條件執行部11係具有程式分析處理用的各功能部。亦即,在本實施形態中,由於係進行變數(元件)的交互參照之抽出,所以分析條件執行部11係具有:POU一覽表抽出處理執行部14,用以讀入成為交互參照抽出對象的程式;及變數使用一覽表抽出處理執行部12,為執行交互參照抽出處理的部分。
又,分析結果顯示部20係具有變數使用一覽表顯示部21,製作具有用以將交互參照結果顯示在第1圖的顯示部4畫面上的形式之顯示資料。
更且,分析條件執行部11係具有分析結果邏輯運算處理執行部16。而且,分析結果邏輯運算處理執行部16係具有AND處理執行部17、OR處理執行部18及NOT處理執行部19,以作為進行由程式分析處理的各功能所執行的分析結果彼此間的邏輯運算之部分。
使用者係透過第1圖的輸入部5對分析條件設定部10輸入程式分析條件。對應該輸入,分析條件執行部11係執行對應使用者輸入的程式分析條件之分析處理。例如,分析條件執行部11係進行從第1圖的保持部6讀出使用者所指定的計測控制程式(相當於分析對象程式檔8)、或與分析對象程式相關的元件註解(comment)檔9之處理、製作交互參照、或進行分析結果彼此間的邏輯運算(AND/OR/NOT)處理。之後,分析結果顯示部20係進行使對應分析結果的顯示顯示在第1圖的顯示部4畫面上用的資料製作等之動作、或將分析結果之資料作為分析結果檔25輸出至外部。例如,分析結果顯示部20係接收由分析條件執行部11所製作的交互參照結果,並製作使所接收的該交互參照結果顯示在顯示部4的畫面上用之顯示資料,且將該顯示資料輸出至顯示部4,藉此將所接收的交互參照結果對使用者進行顯示,或將所接收的交互參照結果作為交互參照結果檔輸出至外部。
於以下中,係將屬於PC計測控制程式之階梯程式記載為作為程式分析對象的一例。在此,第3圖係構成PC的計測控制程式之POU的一個,其名稱係主(MAIN)階梯電路。第3圖係表現為階梯電路圖,然而於將其表現為文字形式(例如IL(Instruction List)形式)時,第3圖係可表現為第4圖的形態。更且,第5圖係構成PC的計測控制程式之別的POU,其名稱為副(SUB)階梯電路。第5圖係以階梯電路圖的方式予以表現,惟當將其以文字形式表現時,第5圖係可表現為第6圖的樣子。
第7圖及第8圖係顯示使用者為了使用第1圖的輸入部5將程式分析條件輸入至本裝置1的微處理器2而顯示在顯示部4上的畫面一例圖。此種的程式分析支援畫面係藉第2圖的分析條件設定部10之功能動作而顯示在顯示部4的畫面上,該部10係透過上述程式分析支援畫面將由使用者所輸入的程式分析條件照原樣予以保持。
於第7圖所示的程式分析支援畫面時,各列(row)係由式號碼格(cell)、分析指令格、分析對象格、分析條件格及結果件數格所構成。使用者係觀看第7圖的畫面,將對應分析指令的分析對象及分析條件分別輸入分別對應的格。亦即,使用者在分析對象格主要是指定成為分析指令要進行分析處理的對象之母集團。並且,使用者係在分析條件格主要是指定分析指令要進行分析處理的條件。
再者,亦可如第8圖所示之一例一樣,將使用者輸入程式分析條件的畫面構成設定成:由使用者輸入程式分析條件的所有式之構成來取代如第7圖那種對應輸入資料類別的各格之構成。
在使用者完成第7圖或第8圖的畫面所示之對分析條件格進行輸入分析條件的處理後,進行在畫面的式號碼欄前賦予●印的輸入處理,以指定欲執行的式號碼,然後,進行按下顯示在畫面左上側的執行鍵(點擊)之動作。當進行該點擊處理(輸入處理)時,從成為執行對象的較小式號碼起,第2圖的第2分析條件設定部10係對分析條件執行部11依序指示進行分析條件式之處理,分析條件執行部11係回應該指示而依各式號碼的順序執行分析處理。在第7圖的畫面構成例中,從式號碼S001至式號碼S010的各式被輸入有程式分析條件(分析指令、分析對象及分析條件),且各個式號碼係透過●印的標示而被指定作為執行對象,所以當使用者按下(點擊)執行鍵時,之後,從式號碼S001起依序至式號碼S010為止,根據所輸入的程式分析條件,第2圖的分析條件執行部11執行分析處理。
分析處理的結果係從分析條件執行部11對分析條件設定部10進行答覆。結果,分析條件設定部10係將分析處理的結果件數顯示在顯示於第1圖的顯示部4之程式分析支援畫面上的結果件數格。然後,當使用者點擊顯示在結果件數格右側的按鍵BT時,對應該點擊,分析結果顯示部20係將分析處理結果顯示在第1圖的顯示部4之畫面上。
接著,對構成程式分析條件之一的分析指令的處理內容進行說明。
(A)首先,第7圖所示的分析指令POU_READ係指定或讀入成為分析對象的程式(POU)用之指令,使用者將在之後的處理中以式號碼所指定的要設為分析對象的程式名(POU名)指定在分析對象格內。於第7圖中係顯示有,藉由執行由式號碼S001所顯示的指令而指定有讀入程式名為MAIN的POU之例,而以其分析結果而言,輸出以程式MAIN為要素的POU之集合。所謂的「集合」係一軟體技術用語,意指資料要素的集合。所謂的「POU之集合」係指以程式(POU)為要素的集合。再者,於分析對象格未指定有要設為分析對象的POU名時,將構成程式的所有POU設為要素的集合係被輸出作為分析結果。在此,係將第2圖的POU一覽表抽出處理執行部14執行分析指令POU_READ時的處理流程顯示在第9圖的流程圖。如第9圖所示,關於分析指令POU_READ的處理技術係與習知的製作交互參照時作為檢索範圍而指定程式的技術相同。
(B)接著,第7圖所示的分析指令VAR_REF係抽出變數(元件)的交互參照之指令,由第2圖的變數使用一覽表抽出處理執行部12來執行。因此,使用者係將用以指定成為分析指令VAR_REF的分析對象之程式的式號碼指定在分析對象格,同時將成為交互參照抽出的條件之變數(元件)指定在分析條件格。第7圖的式號碼S002係顯示指定屬於藉由執行在式號碼S001所給予的分析指令POU_READ而從保存部6讀入到微處理器2內的POU之程式MAIN中的有關所有元件M之交互參照抽出例,第2圖的變數使用一覽表抽出處理部12係輸出程式MAIN中以使用有變數(元件)M之部位作為要素的集合作為其分析結果。
在此,將由第2圖的變數使用一覽表抽出處理執行部12所執行的分析指令VAR_REF的處理流程顯示在第10圖的流程圖。在有關分析指令VAR_REF的處理之技術中,被指定在分析指令VAR_REF的分析對象格之POU集合之要素為1時的處理(步驟S40:S41至S43)係成為分析指令VAR_REF的基礎(base)之處理,與習知的交互參照製作技術相同。亦即,在式號碼S002所被給予的分析指令VAR_REF之執行係可利用習知的交互參照製作技術來處理。
又,變數使用一覽表抽出處理部12係將式號碼S002的分析處理之結果集合當作VAR_REF結果顯示畫面顯示在第1圖的顯示部4畫面上。將根據該結果集合而顯示的VAR_REF結果顯示畫面例表示在第11圖。如第11圖所示,在MAIN階梯程式中,使用有變數(元件)M的部位存在有6處(元件M1、M3至M6),且顯示有該等的交互參照結果。元件M3係於步驟號碼5中被使用作為SET命令的運算元之外,於步驟號碼6中亦被使用作為接點的運算元(operand),各者為交互參照結果的要素。再者,顯示分析指令VAR_REF的處理結果的技術亦與習知的交互參照製作技術相同。
此外,在相關的元件註解檔中記載有變數(元件)M的註解時之VAR_REF結果顯示畫面例一併顯示在第12圖。
同樣地,第7圖的式號碼S003係顯示指定屬於POU的程式SUB之讀入例,接著所執行的式號碼S004係顯示用以指定因式號碼S003所執行的分析指令而讀入的程式SUB中之關於所有變數(元件)M的交互參照抽出例。在此,將式號碼S004的VAR_REF結果顯示畫面例顯示在第13圖。
(C)接著,第7圖所示分析指令AND係用以抽出作為處理結果所抽出的資料集合之邏輯「及」的指令,由第2圖的AND處理執行部17來執行。因此,使用者係將成為邏輯「及」的對象之兩個式號碼分別指定在分析對象(第1引數)格及分析條件(第2別數)格。第7圖的式號碼S005係顯示指定式號碼S002中所抽出的交互參照結果、與式號碼S004中所抽出的交互參照結果之邏輯「及」例。亦即,式號碼S005係顯示指定在程式MAIN中被使用且在程式SUB中亦被使用的關於所有變數(元件)M之交互參照抽出例。
第14及15圖係顯示AND處理執行部17所執行的分析指令AND之處理流程的流程圖。第14圖所示的POU集合彼此間之AND處理係單純的邏輯「及」之處理,而若將交互參照(指定元件的使用部位)之集合彼此間的AND處理亦單純地設為邏輯「及」的話,在任何的情形下結果都會成為空。其理由是:於程式MAIN中使用有變數(元件)M4的部位、與於程式SUB中使用有變數(元件)M4的部位,由於僅變數(元件)為相同而其他互異,因此兩個使用部位不能視為相同。
本發明的本實施形態之特徵點係在於此交互參照(指定元件的使用部位)之集合彼此間的AND處理(參照第15圖)。亦即,以變數(元件)為相同作為邏輯「及」的運算基準之點為其特徵點。例如,於程式MAIN使用變數(元件)M4的部位(參照第11圖)、與於程式SUB使用變數(元件)的部位(參照第13圖)係因變數(元件)皆為相同,而作為邏輯「及」之結果留下。而且,將各個要素作為結果留下之點更為其特徵點。例如,在程式MAIN使用變數(元件)M4的部位、與於程式SUB使用變數(元件)的部位係因變數(元件)皆為相同,故該等雙方作為結果集合之要素而留下。如此,透過AND處理執行部17的處理,第7圖的式號碼S005的結果係形成如第16圖所示。
(D)接著,第7圖所示的分析指令OR係用以抽出作為處理結果而抽出的不同資料之集合間的邏輯「或」之指令,由第2圖的OR處理執行部18來執行。因此,使用者係將成為邏輯「或」的對象之兩個式號碼分別指定在分析對象(第1引數)格、及分析條件(第2引數)格。第7圖的式號碼S006係顯示指定於式號碼S002所抽出的交互參照結果、與於式號碼S004所抽出的別的交互參照結果之邏輯「或」的抽出例。亦即,式號碼S006係顯示指定在程式MAIN或程式SUB所使用的關於所有變數(元件)M的交互參照抽出例。
關於OR指令之處理,POU的集合彼此間的OR處理係單純的邏輯「或」的處理,交互參照(指定元件的使用部位)之集合彼此間的OR處理亦為單純的邏輯「或」的處理。第2圖的OR處理執行部18執行的分析指令OR之處理流程係成為如第17及18圖所示。藉由此種的處理,第7圖的式號碼S006的處理結果係成為如第19圖所示。
(E)接著,第7圖所示的分析指令NOT係為用以抽出從作為處理結果而抽出的某資料集合的要素將別的資料集合的要素予以除外的資料集合之指令,由第2圖的NOT處理執行部19來執行。因此,使用者將成為母集團的式號碼指定在分析對象格,並將成為要從該母集團除外的要素集合之式號碼指定在分析條件格。第7圖的式號碼S007係顯示指定從式號碼S002中所抽出的交互參照結果去除於式號碼S004中所抽出交互參照結果之後的交互參照抽出例。亦即,式號碼S007係顯示指定在程式MAIN中所使用的所有變數(元件)M中,關於未被使用在程式SUB中的變數(元件)M之交互參照抽出例。
第20及21圖係分別顯示NOT處理執行部19所執行的分析指令NOT之處理流程的流程圖。POU的集合彼此間的NOT處理(參照第20圖)雖係單純的除外處理,但若將交互參照(指定元件的使用部位)之集合彼此間的NOT處理亦單純地設為除外處理的話,在任何的情形下將會成為沒有任何除外的結果。其理由是:於程式MAIN中使用有變數(元件)M4的部位、與於程式SUB中使用有變數(元件)M4的部位,由於只不過是變數(元件)為相同而其他互異,因此該等的部位不會被視為相同。
本發明的本實施形態係在此交互參照(指定元件的使用部位)之集合彼此間的NOT處理(參照第21圖)具有其特徵點。亦即,本實施形態的特徵點係在於以變數(元件)為相同作為除外處理的運算基準之點。例如,於程式MAIN使用變數(元件)M4的部位、與於程式SUB使用變數(元件)M4的部位係因變數(元件)皆為相同,而作為除外處理的對象而從集合被除外。如此透過NOT處理執行部19進行NOT處理,第7圖的式號碼S007的結果係形成如第22圖所示。
在第7圖的式號碼S008中,第1引數及第2引數皆為POU集合,其OR處理結果係成為以程式MAIN與程式SUB為要素的POU集合。
第7圖的式號碼S009之分析指令VAR_REF係第1引數的POU集合之要素數並非一個而是有兩個時之一例,以下,根據第10圖說明處理流程。
此種情形下,在分析指令VAR_REF的處理中,藉由更進一步遞迴性地利用分析指令VAR_REF,即可解決。於第7圖的式號碼S009時,第2圖的變數使用一覽表抽出處理執行部12首先係對要素有兩個的POU集合之屬於第一要素的程式MAIN被指定在分析對象格之分析指令VAR_REF進行處理(又,被指定在分析指令VAR_REF之分析對象格的POU集合要素為一個時的處理係成為分析指令VAR_REF之基礎處理,該處理係如在上述(B)已述及之處理),並進行該結果集合與式號碼S009的本結果集合(在此時間點本結果集合係無要素的空集合)之OR處理(OR處理係如在上述(D)所記述),並將該結果更新作為式號碼S009的本結果集合(在此時間點,本結果集合的內容為與程式MAIN被指定在分析對象格的分析指令VAR_REF之處理結果集合相同之內容)。
接著,變數使用一覽表抽出處理執行部12係處理屬於第2個要素的程式SUB被指定在分析對象格之分析指令VAR_REF,並進行該結果集合與式號碼S009的本結果集合(在此時間點,本結果集合的內容為與程式MAIN被指定在分析對象格的分析指令VAR_REF之處理結果集合相同之內容)之OR處理,並將該結果更新作為式號碼S009的本結果集合。
然後,變數使用一覽表抽出處理執行部12係在對被指定在分析對象格的POU集合之所有的要素,完成遞迴性的分析指令VAR_REF處理及其結果集合與式號碼S009的本結果集合之OR處理後,以變數(元件)為關鍵(key)來排序(sort)式號碼S009的本結果集合,並將排序後的本結果集合作為最終的式號碼S009之結果集合而予以輸出。
藉由上述之處理,式號碼S009的結果係成為與式號碼S006的結果相同之如第19圖所示。
分析指令VAR_REF對於屬於分析對象的POU集合係成為線形的運算元。亦即,以分析指令VAR_REF成為線形的指令定義之方式,設計第10圖所給予的處理流程。從而,可使如上述的遞迴處理成為可能。
當藉由將分析對象作為VAR_REF函數的引數予以標示,並將OR運算以+予以標示,而描述分析指令VAR_REF之線形性時,式號碼S009可由數1所給予的式子來表示。
VAR_REF(S008)=VAR_REF(MAIN+SUB)=VAR_REF(MAIN)+VAR_REF(SUB)
又,分析指令VAR_REF係對於屬於分析條件之變數(元件)亦被定義為線形運算元。式號碼S010係可由數2所給予的式子來表示,藉由遞迴性地利用分析指令VAR_REF,可使式號碼S010的處理成為可能。
VAR_REF(M[0-9],M[20-29])=VAR_REF(M0+…+M9+M20+…+M29)=VAR_REF(M0)+…+VAR_REF(M9)+VAR_REF(M20)+…+VAR_REF(M29)
不過,從處理時間的觀點出發,不進行遞迴性的處理,而在第10圖的處理流程之步驟S42中,變數使用一覽表抽出處理執行部12亦可將M[0-9]及M[20-29]同時進行處理。結果皆會相同。
如上所述,藉由將交互參照(指定元件的使用部位)的集合彼此間的邏輯運算(AND處理/OR處理/NOT處理)作成可實現,即可抽出所期望的交互參照。
又,藉由將POU的集合彼此間的邏輯運算(AND處理/OR處理/NOT處理)的結果集合被指定為分析對象時的交互參照之製作設成可實現,即可抽出所期望的交互參照。
又,分析指令VAR_REF係對於屬於分析對象之POU集合被定義為線形運算元。此外,分析指令VAR_REF係對於屬於分析條件之變數(元件)亦被定義為線形運算元。因此,能夠提供即使以任何的順序進行交互參照運算與邏輯運算之組合,亦可保證相同結果的程式分析支援功能。
在本實施形態中,以抽出程式中之變數(元件)的依存關係之有向圖(digraph)的技術具體例而言,於以下說明關於抽出階梯程式中的元件依存關係之有向圖的技術。
如第23圖所示,與第2圖的場合作比較,分析條件執行部11復具備變數依存關係抽出處理部13,其為處理變數(元件)依存關係有向圖抽出用的功能部;又,分析結果顯示部20復具備變數依存關係顯示部22,其係製作並輸出用以將變數(元件)依存關係有向圖結果顯示在第1圖的顯示部4之影像資料。
再者,對於一般性程式的變數依存關係(之有向圖)之基本性說明已揭示在非專利文獻2中。
首先,使用第24圖至第27圖說明階梯程式的變數依存關係之有向圖。
基本性的階梯程式係由接點、線圈、及母線所構成。尤其,將與左母線及右母線的各者連接,且配置有接點及/或線圈的橫線(階梯電路)在以下稱為梯級(Rung)。因此,Rung係階梯程式的構成要素。又,將接點及線圈等構成Rung的要素以下稱為指令(instruction)。第24圖的階梯構造係顯示屬於階梯程式的構成要素之Rung、及屬於該Rung的構成要素之Instruction的具體例。
Instruction係由命令(Operator)與運算元(Operand)所構成。Operand係Operator的引數,有需要一個Operand的Operator,或者亦有需要2個或以上的operand之Operator。第25圖係顯示Operand與Operator的具體例。
在階梯程式中,若接點的值(狀態)改變,則處在相同Rung的線圈的值(狀態)也改變。亦即,成為線圈的元件的值係有依存於成為接點的元件的值之關係。若將此關係予以一般化地記載,則為:具有將元件寫出的Operator之Instruction係具有依存於將元件讀入的Operator之Instruction位在相同Rung的上游,亦即位在左側的關係。
在具有需要2個或以上的Operand的Operator之Instruction中,亦存在元件的依存關係。例如,MOV命令係將讀入元件指定為第1運算元,並將寫出元件指定為第2運算元,所以第2運算元的值係有依存於第1運算元的關係。
又,位在某Rung的寫出元件成為位在別的Rung之讀出元件時,係透過該元件而建立元件的依存關係。
第26至28圖之各圖係顯示階梯程式中的Instruction依存關係及元件的依存關係之具體例。
接著,說明關於抽出階梯程式中的元件依存關係之有向圖。在此,第29圖係使用者輸入程式分析條件用的顯示部4之畫面例,相當於第7圖畫面例的續圖。
第29圖的分析指令VAR_FWD係用以抽出所指定的變數(元件)會造成影響的變數(元件),而取得表示該變數依存關係之有向圖(順向依存關係之有向圖)的指令。使用者係對分析指令VAR_FWD將指定成為分析對象的程式的式號碼指定在分析對象格,並且將成為順向依存關係有向圖的起點之變數(元件)指定在分析條件格。式號碼S011係表示屬於藉由變數使用一覽表抽出處理部12指定作為式號碼S008的處理結果而輸出的POU集合所包含之要素的程式MAIN及程式SUB中的來自變數(元件)X222之順向依存關係的有向圖抽出例,變數依存關係抽出處理執行部13係將描繪有向圖所需的資料作為式號碼S011的分析結果輸出到變數依存關係顯示部22。
變數依存關係抽出處理執行部13將來自由使用者所指定的變數(元件)之順向依存關係的有向圖從由使用者所指定的階梯程式抽出的處理技術,並未揭示在前述非專利文獻3。因此,將變數依存關係抽出處理執行部13執行的分析指令VAR_FWD的處理流程顯示在第30圖的流程圖。
在以下中,係說明透過變數依存關係抽出處理執行部13依據第30圖的流程處理第29圖的式號碼S011所指定的處理,而獲得第31圖的結果。
於第30圖的步驟S86中,變數依存關係抽出處理執行部13係產生將屬於式號碼S011的第2引數之變數(元件)X222作為要素的元件集合[1]。
在步驟S87中,該部13係產生元件集合[2]及有向線段集合[2]。
在步驟S90中,該部13係抽出程式MAIN中屬於元件集合[1]要素的變數(元件)X222會造成影響的其他變數(元件)M3。
在步驟S91中,該部13係將從變數(元件)X222往變數(元件)M3的有向線段追加到有向線段集合[2]。對此時的有向線段資料結構而言,只要保存有依存源元件與依存對象元件即足夠。惟有鑑於後述的實施形態,亦可在有向線段的資料結構中,一併保持有POU名、步驟號碼與命令。
接著在步驟S92中,該部13係判斷所抽出的變數(元件)M3是否存在於元件集合[1]或[2]。在本例中,由於變數(元件)M3並不存在於元件集合[1]及[2],因此在步驟S93中,將抽出的變數(元件)M3追加到元件集合[2]。
接著在步驟S94中,該部13會對屬於下一POU集合要素的程式SUB執行同等的處理,但於本例中,於程式SUB並不存在變數(元件)X222。
於是,該部13係會於步驟S95中對下一要素元件執行處理,惟在本例中,於元件集合[1]並不存在變數(元件)X222以外的要素,因此在步驟S96中,該部13係判斷為「NO」,並前進至下一步驟S97。
接著,在步驟S97中,該部13係對元件集合的變數d進行增量。結果,該部13係在設定d=2後,於步驟S87中產生元件集合[3]及有向線段集合[3]。
在下一步驟S90中,該部13係於程式MAIN中,抽出屬於元件集合[2]的要素之變數(元件)M3會造成影響的其他變數(元件)M4。
然後,於步驟S91中,該部13係將從變數(元件)M3往變數(元件)M4的有向線段追加到有向線段集合[3]。
於步驟S92中,該部13係判斷所抽出的變數(元件)M4是否存在於元件集合[1]至[3],但在本例中,由於變數(元件)M4並不存在於元件集合[1]至[3],因此在步驟S93中,將變數(元件)M4追加到元件集合[3]內。
於步驟S94中,該部13會對屬於下一要素POU集合的程式SUB開始執行處理,但由於在程式SUB並不存在變數(元件)M3,因此,該部13會在步驟S95中對下一要素元件執行處理,惟因在元件集合[2]內並不存在變數(元件)M3以外的要素,因此無法執行該處理。而在步驟S96中,該部13係判斷為「YES」,並前進至下一步驟S97。
在步驟S97中,該部13係對元件集合的變數d再進行增量。結果,該部13係在設定d=3後,於步驟S87中產生元件集合[4]及有向線段集合[4]。
於程式MAIN中,並不存在屬於元件集合[3]的要素之變數(元件)M4會造成影響的其他變數(元件)。
因此,該部13係於屬於下一POU集合的要素之程式SUB中,抽出屬於元件集合[3]的要素之變數(元件)M4不會造成影響的其他變數(元件)M7及M8(步驟S90)。
之後,在步驟S91中,該部13係將從變數(元件)M4往變數(元件)M7的有向線段、及從變數(元件)M4往變數(元件)M8的有向線段追加到有向線段集合[4]。
在步驟S92中,該部13係判斷所抽出的變數(元件)M7及M8是否存在於元件集合[1]至[4]。在本例中,由於變數(元件)M7及M8並不存在於元件集合[1]至[4],因此在步驟S93中,該部13將變數(元件)M7及M8追加到元件集合[4]內。
在步驟S94中,不存在下一要素POU。
因此,該部13會在步驟S95中對下一要素元件執行處理,惟由於在元件集合[3]內並不存在變數(元件)M4以外的要素,因此無法執行該處理。在步驟S96中,該部13係判斷為「YES」,並前進至下一步驟S97。
在步驟S97中,該部13係對元件集合的變數d再進行增量。結果,該部13係在設定d=4後,於步驟S87中產生元件集合[5]及有向線段集合[5]。
在程式MAIN中,不存在屬於元件集合[4]的第1要素之變數(元件)M7會造成影響的其他變數(元件)。
因此,該部13係在下一屬於POU集合的要素之程式SUB中,抽出屬於元件集合[4]的要素之變數(元件)M7會造成影響的其他變數(元件)YOC10(步驟S90)。
之後,在步驟S91中,該部13係將從變數(元件)M7往變數(元件)YOC10的有向線段追加到有向線段集合[5]。
在下一步驟的步驟S92中,該部13係判斷所抽出的變數(元件)YOC10是否存在於元件集合[1]至[5],但在本例中,由於變數(元件)YOC10並不存在於元件集合[1]至[5],因此在步驟S93中,該部13將變數(元件)YOC10追加到元件集合[5]內。
在步驟S94中,不存在下一要素POU。
因此,該部13會在步驟S95中對下一要素元件執行處理,惟由於在程式MAIN及程式SUB並不存在下一變數(元件)M8會造成影響的其他變數(元件),因此,在步驟S96中,該部13係判斷為「YES」,並前進至下一步驟S97。
在步驟S97中,該部13係對元件集合的變數d再進行增量。結果,該部13係在設定d=5後,於步驟S87中產生元件集合[6]及有向線段集合[6]。
在程式MAIN中,不存在屬於元件集合[5]的要素之變數(元件)YOC10會造成影響的其他變數(元件)。而且,在下一屬於POU集合的要素之程式SUB中,亦不存在變數(元件)YOC10會造成影響的其他變數(元件)。
因此,該部13係在步驟S96中,判斷在元件集合[6]是否存在要素,惟由於在元件集合[6]並不存在要素,因此,該部13係前進至步驟S98。
於步驟S98中,該部13係將存在要素之元件集合[1]至[5]、及有向線段集合[2]至[5]作為順向依存關係的有向圖分析結果來輸出至變數依存關係顯示部22。
之後,變數依存關係顯示部22係將根據元件集合[1]至[5]、及有向線段集合[2]至[5]所得之顯示順向依存關係的有向圖分析結果的描繪資料輸出至第1圖的顯示部4,結果,顯示部4係在其畫面上描繪根據元件集合[1]至[5]、及有向線段集合[2]至[5]所得的順向依存關係的有向圖分析結果。該描繪結果如第31圖所示。
又,在相關的元件註解檔記載有變數(元件)的註解時之畫面例一併顯示在第31圖。
再者,關於有向圖的描繪使用習知技術即可,根據表示有向圖構造的元件集合[1]至[5]、及有向線段集合[2]至[5],而具體性地描繪有向圖的順序之說明,因脫離本發明的主旨,故在此予以省略。
又,對於在第29圖的式號碼S012所指定的處理,變數依存關係抽出處理執行部13同樣地只要依據第30圖所示的流程加以處理即可,其結果可獲得第32圖所示的結果。
可抽出以階梯程式為分析對象的元件之順向依存關係的有向圖,並可抽出以階梯程式的POU集合及POU集合彼此間的邏輯運算(AND處理/OR處理/NOT處理)之結果為分析對象的元件之順向依存關係的有向圖,藉此可使程式分析的作業省力化。
本實施形態係對抽出階梯程式中的變數(元件)之反向依存關係的有向圖之技術予以說明。
此場合所使用的分析指令VAR_BWD係用以抽出會對使用者所指定的變數(元件)造成影響的變數(元件),以獲得表示其依存關係的有向圖(反向依存關係的有向圖)之指令。關於程式分析條件之輸入,對於分析指令VAR_BWD,使用者係使用第1圖的輸入部5將指定成為分析對象的程式之式號碼指定在分析對象格,並且將成為反向依存關係有向圖的起點之變數(元件)指定在分析條件格。第29圖的式號碼S015係顯示指定屬於作為式號碼S008的邏輯處理結果所輸出的POU集合所包含的要素(要素POU)之程式MAIN及程式SUB中的來自變數(元件)YC10之反向依存關係的有向圖抽出處理例,第23圖的變數依存關係抽出處理執行部13係將反向依存關係的有向圖描繪所需的資料作為其分析結果輸出至變數依存關係顯示部22。
在此,第33圖係顯示變數依存關係抽出處理執行部13所執行的分析指令VAR_BWD的處理流程之流程圖。該處理流程係大致與第2實施形態中已描述的第30圖中的分析指令VAR_FWD之處理流程相同,惟在以下之三點相異。
亦即,在第33圖的步驟S109中,與第30圖的步驟S90相異,變數依存關係抽出處理執行部13係抽出對所指定的變數(元件)造成影響的其他變數(元件)。
更且,於第33圖的步驟S110中,與第30圖的步驟S91相異,變數依存關係抽出處理執行部13係追加處理表示與在步驟S109中所抽出的變數(元件)間的依存關係之有向線段。
另外,於第33圖的步驟S117中,變數依存關係抽出處理執行部13係在第30圖的步驟S98處理之外,於進行使元件集合及有向線段集合的深度之號碼逆轉的處理後,將逆轉處理後的結果作為元件依存關係有向圖分析結果予以輸出。
例如,若設成已獲得元件集合[1]至[n],則變數依存關係抽出處理執行部13係將元件集合[1]作為元件集合[n]輸出,將元件集合[2]作為元件集合[n-1]輸出,…一般而言係將元件集合[k]作為元件集合[n-k+1]輸出,…將元件集合[n]作為元件集合[1]輸出。
又,若設成已獲得有向線段集合[2]至[n],則變數依存關係抽出處理執行部13係將有向線段集合[2]作為有向線段集合[n]輸出,將有向線段集合[3]作為有向線段集合[n-1]輸出,…一般而言係將有向線段集合[k]作為元件集合[n-k+2]輸出,…將有向線段集合[n]作為元件集合[2]輸出。
不過,有向線段係以隸屬於將該依存源元件的深度做為基準的有向線段集合之深度作為原則,於使有向線段集合的號碼逆轉時,變數依存關係抽出處理執行部13係使所有的有向線段要素往其應隸屬的深度移動。
當根據如上述方式所得的元件集合與有向線段集合描繪有向圖時,描繪結果係如第34圖所示。
尤其應注意的點是在使有向線段集合的號碼逆轉時,需使所有的有向線段之要素往其應隸屬的深度移動之點。
第34圖時,在使有向線段集合的號碼逆轉前,於有向線段集合[d=3]係存在「X223→M6」、「D2→M6」、「D3→M6」、「M4→M7」及「M5→M7」的5個要素有向線段,且於有向線段集合[d=4]係存在「M3→M4」、「X223→M5」、「D2→M5」及「D3→M5」的4個要素有向線段。
然後,當變數依存關係抽出處理執行部13首先僅進行使有向線段集合的深度號碼逆轉的處理時,於有向線段集合[d=4]係存在「X223→M6」、「D2→M6」、「D3→M6」、「M4→M7」及「M5→M7」的5個要素有向線段,另一方面,於有向線段集合[d=3]係存在「M3→M4」、「X223→M5」、「D2→M5」及「D3→M5」的4個要素有向線段。
因此,變數依存關係抽出處理執行部13係以隸屬於以其依存源元件的深度為基準的有向線段集合的深度之方式,進行使各有向線段移動的處理。結果,有向線段集合[d=3]的要素有向線段內之3個要素有向線段「X223→M5」、「D2→M5」及「D3→M5」因深度號碼逆轉後的依存源元件之深度為d=3,故應隸屬的深度變成d=4,而移動至有向線段集合[d=4]。
因此,以結果而言,在有向線段集合[d=4]係存在「X223→M6」、「D2→M6」、「D3→M6」、「M4→M7」、「M5→M7」、「X223→M5」、「D2→M5」及「D3→M5」的8個要素有向線段,而於有向線段集合[d=3]存在由「M3→M4」所構成的一個要素有向線段。
由於可抽出以階梯程式作為分析對象的變數(元件)之反向依存關係之有向圖,又能抽出以階梯程式中的POU之集合及POU的集合彼此間的邏輯運算(AND處理/OR處理/NOT處理)之結果作為分析對象的變數(元件)之反向依存關係之有向圖,因此可使程式分析的作業省力化。
在本實施形態中,係針對可進行階梯程式的元件依存關係之有向圖彼此間的邏輯運算(邏輯「或」OR處理)之技術進行說明。
分析指令OR係用以抽出作為處理結果所抽出的不同資料之集合間的邏輯「或」之指令。因此,使用者係使用輸入部5將成為邏輯「或」的對象之2個式號碼的各個指定在分析對象(第1引數)格及分析條件(第2引數)格。第29圖的式號碼S013係顯示指定抽出由式號碼S011的處理所抽出的元件依存關係有向圖抽出結果、及由式號碼S012的處理所抽出的別的元件依存關係有向圖抽出結果之邏輯「或」之例。
因此,於本發明中係提案有藉由相同分析指令OR來指定用以實施交互參照彼此間的邏輯「或」之分析指令、及用以實施元件依存關係有向圖彼此間的邏輯「或」之分析指令之例。
在此,第35圖係顯示第23圖的OR處理執行部18所執行的分析指令OR之處理流程的流程圖。
首先,該部18係於第35圖的步驟S120及S121中,確認成為邏輯「或」的對象之資料類別是否為元件依存關係有向圖。若資料類別非為元件依存關係有向圖,則該部18係執行上述第18圖的處理流程。
另一方面,分析指令OR為元件依存關係有向圖彼此間的邏輯「或」運算時,作為結合第1引數與第2引數的集合用之前置準備者,該部18係進行將兩引數彼此的深度層級予以對位之處理(步驟S122),並將第1引數的所有要素設為上述結合的基礎(步驟S125)。
接著,該部18係一面確認與第1引數的要素重複的第2引數之要素,一面進行集合的結合。於集合的結合時,該部18首先在處理元件集合的結合(邏輯「或」)後(步驟S128),再處理有向線段集合的結合(邏輯「或」)(步驟S132)。
當OR處理執行部18依照第35圖所示各流程處理第29圖的式號碼S013時,以第31圖及第32圖的邏輯「或」處理結果而言,可獲得第36圖所示的結果。以下詳述該點。
在第35圖的步驟S123中,該部18係屬於抽出變數(元件)M7及M8重複之深度的第1引數d=4與第2引數d=3的組合,以作為重複要素數最多的深度。
接著在步驟S124中,該部18係在照原樣維持第1引數的深度後,以將第2引數的d=3對位在第1引數d=4之方式,再設定集合的深度。在兩引數中要將哪一個深度維持在原樣的判斷基準,係以在步驟S123所抽出的組合中,值較大者的引數深度被維持在原樣。不過,在所抽出的組合深度值為皆相同時,對於任一個引數皆不必要再設定深度。於式號碼S013的處理時,在第2引數的集合深度值僅加算+1後的深度值之集合(元件集合[2]至[4]、有向線段集合[3]至[5]係在之後的步驟中進行處理。
接著在步驟S126中,該部18係產生深度再設定後的第1引數與第2引數之深度較大者之值的分量深度之集合。於式號碼S013的處理時,該部18係將元件OR結果集合[1]至[5]及有向線段OR結果集合[2]至[5]之各者生成為空。
之後,於步驟S127,該部18係將第1引數的所有集合要素複製至OR結果集合。複製時,該部18係留意在步驟S124照原樣維持第1引數的深度,且在將複製源(第1引數)的深度與複製目的地(OR結果集合)的深度維持在原樣後,執行複製處理。假使在步驟S124中,第1引數的深度為經再設定者,複製源(第1引數)的深度與複製目的地(OR結果集合)的深度係考慮其再設定而設定。
接著的步驟S128的詳細內容如下所述。
於步驟S129,該部18首先係判定結果為屬於第2引數的元件集合[再設定後的深度=2的元件集合]要素之變數(元件)X223為不存在於元件OR結果集合的所有深度(YES),在下一步驟S130中,將變數(元件)X223複製至元件OR結果集合[2]。然後,該部18前進至步驟S131。
接著,屬於第2引數的元件集合[再設定後的深度=3的元件集合]要素之變數(元件)M5因不存在於元件OR結果集合的所有深度(在步驟S129中判定為YES),故該部18係將變數(元件)M5複製至元件OR結果集合[3](步驟S130)。
接著,屬於第2引數的元件集合[再設定後的深度=3的元件集合]要素之變數(元件)M6因不存在於元件OR結果集合的所有深度(在步驟S129中判定為YES),故該部18係將變數(元件)M6複製至元件OR結果集合[3](步驟S130)。
接著,屬於第2引數的元件集合[再設定後的深度=4的元件集合]要素之變數(元件)M7因存在於元件OR結果集合[4]的深度(在步驟S129中判定為NO),故該部18係不進行變數(元件)M7的複製處理。
接著,屬於第2引數的元件集合[再設定後的深度=4的元件集合]要素之變數(元件)M8因存在於元件OR結果集合[4]的深度(在步驟S129中判定為NO),故該部18係不進行變數(元件)M8的複製處理。
接著,屬於第2引數的元件集合[再設定後的深度=4的元件集合]要素之變數(元件)D5因不存在於元件OR結果集合的所有深度(在步驟S129中判定為YES),故該部18係將變數(元件)D5複製至元件OR結果集合[4](步驟S130)。
接著,屬於第2引數的元件集合[再設定後的深度=4的元件集合]要素之變數(元件)YC10因存在於元件OR結果集合[5]的深度(在步驟S129中判定為NO),故該部18係不進行變數(元件)YC10的複製處理。
接著步驟S132的詳細係如下所述。
在步驟S133中,該部18首先係判定為屬於第2引數的有向線段集合[再設定後的深度=3的有向線段集合]要素之有向線段「X223→M5」不存在於有向線段OR結果集合的所有深度(YES),並在下一步驟S134中,該部18係予以複製至有向線段OR結果集合[3]。於複製時,該部18係留意根據欲複製的有向線段的依存源元件所存在之元件OR結果集合的深度而複製至有向線段OR結果集合的深度(亦即,元件OR結果集合的深度+1)。此情形時,由於欲複製的有向線段「X223→M5」的依存源元件X223係存在於元件OR結果集合[2],因此,該部18係將有向線段「X223→M5」複製至有向線段OR結果集合[3]。然後,該部18係前進至下一步驟S135。
結果,接著,屬於第2引數的有向線段集合[再設定後的深度=4的有向線段集合]要素之有向線段「M5→M7」因不存在於有向線段OR結果集合的所有深度(在步驟S133中判定為YES),故該部18係將有向線段「M5→M7」複製至有向線段OR結果集合[4](步驟S134)。
接著,屬於第2引數的有向線段集合[再設定後的深度=4的有向線段集合]要素之有向線段「M5→M8」因不存在於有向線段OR結果集合的所有深度(在步驟S133中判定為YES時),故該部18係將有向線段「M5→M8」複製至有向線段OR結果集合[4](步驟S134)。
接著,屬於第2引數的有向線段集合[再設定後的深度=4的有向線段集合]要素之有向線段「M6→D5」因不存在於有向線段OR結果集合的所有深度(在步驟S133中為YES時),故該部18係將有向線段「M6→D5」複製至有向線段OR結果集合[4](步驟S134)。
接著,屬於第2引數的有向線段集合[再設定後的深度=4的有向線段集合]要素之有向線段「M6→YC10」因不存在於有向線段OR結果集合的所有深度(在步驟S133中為YES時),故該部18係將有向線段「M6→YC10」複製至有向線段OR結果集合[4](步驟S134)。在此,由於欲複製的有向線段「M6→YC10」的依存對象元件YC10雖存在於元件OR結果集合[5],但依存源元件M6存在於元件OR結果集合[3],因此,該部18係將有向線段「M6→YC10」複製至有向線段OR結果集合[4]。
接著,屬於第2引數的有向線段集合[再設定後的深度=5的有向線段集合]要素之有向線段「M7→YC10」因作為有向線段OR結果集合[5]的要素而存在,故該部18係不進行有向線段「M7→YC10」的複製。
根據由以上的處理所得的元件集合[1]至[5]與有向線段集合[2]至[5]所描繪的有向圖係成為如第36圖所示。
有向線段係顯示從某元件至別的元件的依存關係之線段,雖然變數(元件)與有向線段相互有密切相關,惟第23圖的OR處理執行部18在進行如上述的處理(亦即首先進行元件集合的結合(邏輯「或」)處理)之後,根據該結果處理有向線段集合的結合(邏輯「或(OR)」),藉此而可無矛盾地進行有向圖彼此間的邏輯「或」運算。
再者,以上的有向圖彼此間的邏輯「或(OR)」運算係為不論究該有向圖的任一方或其雙方為順向依存關係、或反向依存關係的處理。
第29圖的式號碼S013係顯示以和第2圖的OR處理執行部18實施交互參照彼此間的邏輯「或」處理用之指令(第7圖的式號碼S006的指定)相同的分析指令OR來指定第23圖的OR處理執行部18實施元件依存關係有向圖彼此間的邏輯「或」處理用指令之例。即便在取而代之而以別的指令來定義前述各者(例如將前者定義為VAR_FWD_BWD_OR,後者定義為VAR_REF_OR。)而分開使用的實施形態中,其中所使用的技術亦與在本實施形態中已說明的技術相同。
又,使用本實施形態的話,分析指令VAR_FWD相對於屬於分析條件(元件依存關係有向圖的起點)的變數(元件)係成為線形運算元。換言之,以分析指令VAR_FWD成為線形指令定義之方式,如第35圖所示的方式設定元件依存關係有向圖的邏輯「或」處理流程。
在此,將分析條件標示為VAR_FWD函數的引數,將分析指令OR以+標示,藉此來記載分析指令VAR_FWD的線形性,則由第29圖的式號碼S014所指定的分析指令成為由下列數3所得之式。
[數3]VAR_FWD(X222,X223)=VAR_FWD(X222+X223)=VAR_FWD(X222)+VAR_FWD(X223)
因此,如式號碼S014所示,於屬於分析指令VAR_FWD的分析條件(元件依存關係有向圖的起點)之變數(元件)由使用者列舉而指定時,將以各個變數(元件)作為分析條件之分析指令VAR_FWD的結果經邏輯「或(OR)」處理後之結果作為式號碼S014的結果之遞迴性處理將會成為可能。此點就分析指令VAR_BWD而言,亦相同。
上述內容係意味著:即使使用者未如式號碼S011、S012、S013一樣地一一輸入三個條件式,亦可藉由輸入一個式號碼S104及其執行,而獲得與式號碼S013的處理結果相同的處理結果。
又,使用者在分析條件格列舉並指定複數個變數(元件)的方法亦與在第7圖的式號碼S010所示的分析指令VAR_REF、及第29圖的式號碼S014所示的分析指令VAR_FWD相同,在不同分析指令間的分析條件指定方法亦能取得整合性,不會有任何矛盾。此點就分析指令VAR_BWD而言,亦相同。
1)使階梯程式中的變數(元件)之依存關係的有向圖彼此間的邏輯運算(邏輯「或」OR處理)成為可能,藉此可抽出所期望的元件依存關係有向圖,並能使程式分析的作業省力化。
2)使用者可用相同的分析指令OR指定用以實施交互參照彼此間的邏輯「或」之指令、及用以實施元件依存關係有向圖彼此間的邏輯「或」之指令。雖亦能推想到將各者以別的指令(例如將前者定義為分析指令VAR_REF_OR,後者定義為分析指令VAR_FWD_BWD_OR。)來定義而分開使用的實施形態,但會產生要依據成為分析指令OR的對象之資料類別而分別使用不同指令的必要性。不拘泥於資料類別而將實施邏輯「或」的分析指令定義為OR之方法係方便於使用。若是使用不同分析指令,將會產生使用者必須藉輔助說明(help)或操作說明書等來調查對應各個資料類別的邏輯「或」指令;而若能以分析指令OR實施所有的分析指令,則使用者即完全不需要參照上述的輔助說明等,而能使程式分析的作業省力化。
在本實施形態中係記載有使階梯程式的元件依存關係之有向圖彼此間的邏輯「及」運算(邏輯「及」AND處理)成為可能之技術。
分析指令AND係用以抽出作為處理結果所抽出的不同資料的集合間之邏輯「及」的指令,使用者係將成為邏輯「及」的對象之2個式號碼分別指定在分析對象(第1引數)格及分析條件(第2引數)格。第29圖的式號碼S016係顯示指定抽出式號碼S014所抽出的元件依存關係有向圖抽出結果、與式號碼S015所抽出的別的元件依存關係有向圖抽出結果之邏輯「及」之例。
亦即,在本發明中,係顯示以相同或共通的分析指令AND指定用以實施業已敘述過之交互參照彼此間的邏輯「及」之分析指令、與用以實施元件依存關係有向圖彼此間的邏輯「及」之分析指令例。
在此,第37圖係顯示第23圖的AND處理執行部17所執行的分析指令AND之處理流程的流程圖。以下,根據第37圖所示的處理流程說明本實施形態的元件依存關係有向圖的AND處理。
首先,在步驟S137及S138中,AND處理執行部17係確認成為邏輯「及」對象的資料類別是否為元件依存關係有向圖。在此確認處理中,於確認到資料類別不為元件依存關係有向圖時,該部17係僅進行上述第15圖的處理流程。
另一方面,該式號碼所指定的分析指令指定執行元件依存關係有向圖彼此間的邏輯「及」時,作為僅抽出第1引數及第2引數的集合之共通要素用的前置準備者,係進行將兩引數的集合彼此之深度層級予以對位的處理(步驟S139),然後針對變數(元件)及有向線段之各者產生空的AND結果集合,並以該AND結果集合作成用以僅抽出共通要素之基礎(步驟S142)。
接著,該部17係一面確認與第2引數重複的第1引數的要素,一面進行僅抽出共通要素之處理。於該共通要素之抽出時,該部17係首先僅抽出(邏輯「及」)元件集合的共通要素(步驟S143),之後,僅抽出(邏輯「及」)有向線段集合的共通要素(步驟S147)。
當AND處理執行部17根據第37圖所示的以下處理流程對第29圖的式號碼S016進行AND處理時,作為第36圖的結果及第34圖的結果之邏輯「及」獲得第38圖所示的結果。對該點予以詳述。
在步驟S140中,該部17係於屬於第1引數的式號碼S014之元件集合與屬於第2引數的式號碼S015的元件集合中,抽出重複的要素數最多的深度。結果,該部17係抽出屬於變數(元件)M4與變數(元件)M5重複的深度的第1引數d=3及第2引數d=3的組合,以作為重複要素數最多的深度。
接著在步驟S141中,作為照原樣維持第1引數的深度與第2引數的深度的哪一個深度之適用判斷基準者,該部17係將在步驟S140所抽出的組合值中值較大者的深度設為維持不變,來再設定另一者的深度。藉此,經再設定的深度係被運用在之後的步驟。於第29圖的式號碼S016之處理時,步驟S140所抽出的組合的深度值皆係相同(d=3),對於任一引數亦無需進行其深度之再設定。
於下一個步驟S141中,該部17係產生深度再設定後的第1引數的深度與第2引數的深度中,其值為較大者的該值之量的深度之AND結果集合。於第29圖的式號碼S016之處理時,對於第1引數及第2引數的任一者之集合其深度亦為相同(d=5),而將元件AND結果集合[1]至[5]與有向線段AND結果集合[2]至[5]作為同是空的內容之AND結果集合予以產生。
於下一個步驟S144中,由於該部17係首先將屬於第1引數的元件集合[1]之要素的變數(元件)X222判定為存在於第2引數的元件集合[1],因此在其下一個步驟S145中,該部17係將變數(元件)X222複製至元件AND結果集合[1]。
接著,屬於第1引數的元件集合[2]之要素的變數(元件)M3因存在於第2引數的元件集合[2],因此在步驟S145中,該部17係將變數(元件)M3複製至元件AND結果集合[2]。
接著,屬於第1引數的元件集合[2]之要素的變數(元件)X223因存在於第2引數的元件集合[3],因此在步驟S145中,該部17係將變數(元件)X223複製至元件AND結果集合[2]。
接著,屬於第1引數的元件集合[3]之要素的變數(元件)M4因存在於第2引數的元件集合[3],因此在步驟S145中,該部17係將變數(元件)M4複製至元件AND結果集合[3]。
接著,屬於第1引數的元件集合[3]之要素的變數(元件)M5因存在於第2引數的元件集合[3],因此在步驟S145中,該部17係將變數(元件)M5複製至元件AND結果集合[3]。
接著,屬於第1引數的元件集合[3]之要素的變數(元件)M6因存在於第2引數的元件集合[4],因此在步驟S145中,該部17係將變數(元件)M6複製至元件AND結果集合[3]。
接著,屬於第1引數的元件集合[4]之要素的變數(元件)M7因存在於第2引數的元件集合[4],因此在步驟S145中,該部17係將變數(元件)M7複製至元件AND結果集合[4]。
接著,屬於第1引數的元件集合[4]之要素的變數(元件)M8因不存在於第2引數的元件集合之所有的深度,因此該部17係不進行複製處理。
接著,屬於第1引數的元件集合[4]之要素的變數(元件)D5因不存在於第2引數的元件集合之所有的深度,因此該部17係不進行複製處理。
接著,屬於第1引數的元件集合[5]之要素的變數(元件)YC10因存在於第2引數的元件集合[5],因此在步驟S145中,該部17係將變數(元件)YC10複製至元件AND結果集合[5]。
在下一步驟S148中,首先屬於第1引數的有向線段集合[2]的要素之有向線段「X222→M3」因存在於第2引數的有向線段集合[2],因此,該部17係在步驟S149中,將有向線段「X222→M3」複製至有向線段AND結果集合[2]。於複製時,該部17係根據欲複製的有向線段的依存源元件所存在之元件AND結果集合的深度而複製至有向線段AND結果集合的深度(亦即,元件AND結果集合的深度+1)。此情形時,由於欲複製的有向線段「X222→M3」的依存源元件X222係存在於元件AND結果集合[1],因此,該部17係將有向線段「X222→M3」複製至有向線段AND結果集合[2]。
接著,屬於第1引數的有向線段集合[3]的要素之有向線段「M3→M4」因存在於第2引數的有向線段集合[3],故該部17係在步驟S149中,將有向線段「M3→M4」複製至有向線段AND結果集合[3]。
接著,屬於第1引數的有向線段集合[3]的要素之有向線段「X223→M5」因存在於第2引數的有向線段集合[4],故該部17係在步驟S149中,將有向線段「X223→M5」複製至有向線段AND結果集合[3]。
接著,屬於第1引數的有向線段集合[3]的要素之有向線段「X223→M6」因存在於第2引數的有向線段集合[4],故該部17係在步驟S149中,將有向線段「X223→M6」複製至有向線段AND結果集合[3]。
接著,屬於第1引數的有向線段集合[4]的要素之有向線段「M4→M7」因存在於第2引數的有向線段集合[4],故該部17係在步驟S149中,將有向線段「M4→M7」複製至有向線段AND結果集合[4]。
接著,屬於第1引數的有向線段集合[4]的要素之有向線段「M4→M8」因不存在於第2引數的有向線段集合之所有深度,故該部17不進行複製。
接著,屬於第1引數的有向線段集合[4]的要素之有向線段「M5→M7」因存在於第2引數的有向線段集合[4],故該部17係在步驟S149中,將有向線段「M5→M7」複製至有向線段AND結果集合[4]。
接著,屬於第1引數的有向線段集合[4]的要素之有向線段「M5→M8」因不存在於第2引數的有向線段集合之所有深度,故該部17不進行複製。
接著,屬於第1引數的有向線段集合[4]的要素之有向線段「M6→D5」因不存在於第2引數的有向線段集合之所有深度,故該部17不進行複製。
接著,屬於第1引數的有向線段集合[4]的要素之有向線段「M6→YC10」因存在於第2引數的有向線段集合[5],故該部17係在步驟S149中,將有向線段「M6→YC10」複製至有向線段AND結果集合[4]。
接著,屬於第1引數的有向線段集合[5]的要素之有向線段「M7→YC10」因存在於第2引數的有向線段集合[5],故該部17係在步驟S149中,將有向線段「M7→YC10」複製至有向線段AND結果集合[5]。
當根據藉由以上處理所得的元件集合[1]至[5]及有向線段集合[2]至[5]描繪有向圖時,成為第38圖所示的結果。
有向線段係顯示從某元件對別的元件的依存關係,且元件與有向線段係相互密切關聯,而如上所述,AND處理執行部17首先在處理元件集合的共通要素之抽出(邏輯「及」)後,根據該結果進行有向線段集合的共通要素之抽出(邏輯「及」)處理,藉此可使有向圖彼此間毫無矛盾地進行邏輯「及」AND運算。
再者,有向圖彼此間的邏輯「及」AND運算係不論究該有向圖的任一者或其雙方是順向依存關係,或是反向依存關係。
第29圖的式號碼S016係顯示以和第2圖的AND處理執行部17實施交互參照彼此間的邏輯「及」處理用之指令相同的分析指令AND來指定第23圖的AND處理執行部17實施元件依存關係有向圖彼此間的邏輯「及」處理用之指令之例。即便在取而代之而以別的指令來定義前述各者(例如將前者定義為VAR_FWD_BWD_AND,後者定義為VAR_REF_AND。)而分開使用的實施形態中,其中所使用的技術亦與在本實施形態中已說明的技術相同。
又,於使用本實施形態的處理方法處理第29圖的式號碼S017時,其結果如第38圖的下部所示。由於第1引數所指定的有向圖的深度反映在結果,所以可知和式號碼S016的結果與式號碼S017的結果相較,要素元件及要素有向線段所屬的集合的深度雖相異,但元件依存關係有向圖的構造皆相同。
再者,不僅可使元件依存關係有向圖的構造相同,亦可對本實施形態的輸出結果進一步追加地實施使要素元件及要素有向線段所屬的集合深度作成相同之處理,惟該處理脫離本發明的主旨,故省略其說明。
1)使階梯程式中的元件之依存關係的有向圖彼此間的邏輯運算(邏輯「及」AND處理)成為可能,藉此可抽出所期望的元件依存關係有向圖,並能使程式分析的作業省力化。
2)可用相同的分析指令AND指定用以實施交互參照彼此間的邏輯「及」之指令、及用以實施元件依存關係有向圖彼此間的邏輯「及」之指令。雖亦能推想到將各者以別的指令(例如將前者定義為VAR_REF_AND,後者定義為VAR_FWD_BWD_AND。)來定義而分開使用的實施形態,但會產生要依據成為分析指令AND的對象之資料類別分別使用不同指令的必要性。不拘泥於資料類別而將實施邏輯「及」的分析指令定義為AND之方法係方便於使用。若是使用不同分析指令,將會產生使用者必須藉輔助說明或操作說明書等來調查對應各個資料類別的邏輯「及」指令;而若能以分析指令AND實施所有的分析指令,則即不需要進行上述的做法,而能使程式分析的作業省力化。
在本實施形態中係記載有使關於存在於從階梯程式抽出的元件依存關係之有向圖的元件之交互參照抽出成為可能之技術。
分析指令VAR_REF係如上述為用以抽出變數(元件)的交互參照之指令,而在第29圖的式號碼S018中顯示了將指定成為分析對象的元件依存關係有向圖的式號碼指定在分析對象格,將成為交互參照抽出條件之變數(元件)指定在分析條件格之例。在式號碼S018中雖未將變數(元件)指定在分析條件格,但此係顯示指定所有元件之例。
在此,第39圖係顯示第23圖的變數使用一覽表抽出處理執行部12執行的分析指令VAR_REF之處理流程的流程圖。
首先,變數使用一覽表抽出處理執行部12係在步驟S152中確認成為分析對象的資料類別是否為元件依存關係有向圖。若資料類別不為元件依存關係有向圖,則該部12係進行上述第10圖的處理流程。
另一方面,於分析對象格所指定的式號碼為指定來自元件依存關係有向圖的交互參照抽出時,該部12係產生空的本結果集合作為前置準備(步驟S153)。
接著,變數使用一覽表抽出處理執行部12係進行從元件依存關係有向圖的有向線段集合之各要素抽出交互參照資訊的處理(步驟S154)。再者,為了進行此處理,於第23圖的變數依存關係抽出處理執行部13執行根據分析指令VAR_FWD或VAR_BWD抽出元件依存關係有向圖的處理時,作為有向線段之資料結構者,有必要將由第31圖所示資料予以先保持好。
變數使用一覽表抽出處理執行部12係根據第39圖所示的處理流程進行第29圖的式號碼S018之處理,藉此從第31圖所示的式號碼S011之元件依存關係有向圖的資料獲得第40圖的結果。以下記載此點的處理。
在式號碼S018分析條件是空欄,從所有元件皆為抽出對象的情形,變數使用一覽表抽出處理執行部12當然在步驟S155中判斷為「YES」,而且在下一步驟S156中,亦判斷為有向線段集合[2]的要素有向線段之依存源元件X222不存在於本結果集合(此時間點為空),因此,在步驟S157中,將依存源元件X222與「POU名=MAIN,步驟號碼=4,命令=LD」的資訊一同追加到本結果集合。
在下一步驟S158當然被判斷為「YES」,於步驟S159中,有向線段集合[2]的要素有向線段之依存對象元件M3因不存在於本結果集合,因此,在步驟S160中,該部12係將依存對象M3與「POU名=MAIN,步驟號碼=5,命令=SET」的資訊一同追加到本結果集合。
在步驟S156中,下一有向線段集合[3]的要素有向線段之依存源元件M3係不存在於本結果集合(相同的變數(元件)M3雖已存在,但POU名、步驟號碼、及命令皆完全相同的變數(元件)M3並不存在),因此在步驟S157中,該部12係將依存源元件M3與「POU名=MAIN,步驟號碼=6,命令=LD」的資訊一同追加到本結果集合。
在步驟S159中,因有向線段集合[3]的要素有向線段之依存對象元件M4係不存在於本結果集合,故在步驟S160中,該部12係將依存對象元件M4與「POU名=MAIN,步驟號碼=7,命令=RST」的資訊一同追加到本結果集合。
在步驟S156中,下一有向線段集合[4]的第1要素有向線段之依存源元件M4係不存在於本結果集合(相同的變數(元件)M4雖已存在,但POU名、步驟號碼、及命令皆完全相同的變數(元件)M4並不存在),因此在步驟S157中,該部12係將依存源元件M4與「POU名=SUB,步驟號碼=0,命令=LDI」的資訊一同追加到本結果集合。
在步驟S159中,因有向線段集合[4]的第1要素有向線段之依存對象元件M7係不存在於本結果集合,故在步驟S160中,該部12係將依存對象元件M7與「POU名=SUB,步驟號碼=2,命令=OUT」的資訊一同追加到本結果集合。
在步驟S156中,有向線段集合[4]的第2要素有向線段之依存源元件M4係存在於本結果集合(POU名、步驟號碼、及命令皆完全相同的變數(元件)M4存在),因此,該部12係不進行對本結果集合的追加處理。
在步驟S159中,因有向線段集合[4]的第2要素有向線段之依存對象元件M8係不存在於本結果集合,故在步驟S160中,該部12係將依存對象元件M8與「POU名=SUB,步驟號碼=3,命令=OUT」的資訊一同追加到本結果集合。
在步驟S156中,下一有向線段集合[5]的要素有向線段之依存源元件M7係不存在於本結果集合(相同的變數(元件)M7雖然確實存在,但POU名、步驟號碼、及命令皆完全相同的變數(元件)M7並不存在),因此在步驟S157中,該部12係將依存源元件M7與「POU名=SUB,步驟號碼=8,命令=AND」的資訊一同追加到本結果集合。
在步驟S159中,因有向線段集合[5]的要素有向線段之依存對象元件YC10係不存在於本結果集合,故在步驟S160中,該部12係將依存對象元件YC10與「POU名=SUB,步驟號碼=9,命令=OUT」的資訊一同追加到本結果集合。
最後,在步驟S162中,該部12以變數(元件)作為關鍵(key)來排序本結果集合,並將排序所得到的結果作為分析結果而予以輸出。第23圖的變數使用一覽表顯示部21接收提供該分析結果的信號,而輸出用以將分析結果顯示在第1圖的顯示部4的畫面之顯示信號。
又,第29圖的下一式號碼S019,該部12亦進行同樣處理(惟在第39圖的步驟S155及步驟S158中,僅將變數(元件)M作為對象予以抽出),結果獲得第41圖所示結果。
1)關於指定的變數(元件)可抽出具依存關係的變數(元件)之交互參照,並能抽出所期望的交互參照。
2)與此相同的做法是使用者以手動方式對別的交互參照的指令式將抽出依存關係有向圖時所指定的階梯程式、與存在於從該階梯程式所抽出的元件依存關係有向圖的元件一一地輸入,而如同分析指令VAR_REF(S008,X222,M3,M4,M7,M8,YC10)一樣地進行指定,此時雖亦可獲得相同結果,但依據本實施形態則可省掉該輸入所花的工時。
在本實施形態係關於抽出階梯程式中的次常式(sub routine)呼叫(從某POU呼叫別的POU)的依存關係(以下稱為「POU呼叫依存關係」)之有向圖的技術。
在此,第42圖係顯示第1圖的程式分析支援裝置中的微處理器2之本實施形態的相關功能部分之軟體構成圖。當比較第42圖與第23圖時,在第42圖的功能部構成中,分析條件執行部11復具備用以執行POU呼叫依存關係的有向圖抽出處理之POU依存關係抽出處理執行部15,而分析結果顯示部20復具備:POU一覽表顯示部23、及用以顯示POU呼叫依存關係有向圖結果之POU依存關係顯示部24。
以下,首先,使用第43圖說明階梯程式的POU呼叫依存關係。
POU呼叫係使用CALL命令,而在CALL命令的引數係指定有記述在呼叫對象的POU程式之前端的程式指標(pointer)。例如,在程式MAIN中建立有呼叫程式指標P10的記述,以呼叫程式指標P10記述在程式的前端之POU名為P10的POU。如此,第43圖係顯示除了程式MAIN與程式SUB1、SUB2外,在其他的程式賦予與程式指標相同的POU名之例,並且顯示程式MAIN係設定掃描執行,程式SUB1及SUB2係設定掃描執行或週期執行或初始執行,被賦予與程式指標相同的POU名的其他程式係設定待命執行之例。再者,第43圖係僅抽出於各POU的程式記述中與呼叫有關之部分予以圖示,與呼叫無關之部分的階梯係省略。
接著,說明抽出階梯程式中的POU呼叫依存關係之有向圖的技術。
在此,第44圖係顯示為了讓使用者使用第1圖的輸入部5輸入程式分析條件而顯示在顯示部4畫面上之例圖,為接續在前述第7圖及第29圖之圖。
分析指令POU_FWD係抽出所指定的POU呼叫的POU(更且,遞迴性地抽出該POU呼叫的POU…),而獲得表示其依存關係之有向圖(POU呼叫順向依存關係之有向圖)用的指令。使用者係對於分析指令POU_FWD將指定成為分析對象的程式範圍之式號碼指定在分析對象格,並將成為POU呼叫順向依存關係有向圖的起點之POU指定在分析條件格。
在第44圖的式號碼S020中,程式(POU)雖未被指定在分析指令POU_READ的分析對象格,但此圖係顯示指定構成程式的全POU的讀入例。在此,讀入第43圖所示的所有程式,作為其結果,在第44圖顯示讀入數21顯示在結果件數格之例。
第44圖的式號碼S021係顯示作為式號碼S020的執行結果從各部14、23所輸出的集合所包含之要素POU,亦即,指定抽出構成程式的全體POU中的來自程式MAIN之POU呼叫順向依存關係有向圖之例,第42圖的POU依存關係抽出處理執行部15係將POU呼叫順向依存關係有向圖的資料輸出至POU依存關係顯示部24以作為該式號碼S021的分析結果,且該部24係將描繪該有向圖所需的顯示資料輸出至第1圖的顯示部4。
接著,第45圖係顯示針對將來自所指定的POU之POU呼叫順向依存關係有向圖從所指定的階梯程式抽出之技術,由第42圖的POU依存關係抽出處理執行部15執行的分析指令POU_FWD之處理流程。第45圖的處理流程及第46圖的資料結構係與在抽出元件依存關係有向圖的分析指令VAR_FWD時類似。
當POU依存關係抽出處理執行部15依據第45圖所示的處理流程處理第44圖的式號碼S021時,獲得第46圖所示的結果。以下詳述此點。
在步驟S17O中,POU依存關係抽出處理執行部15因與在屬於POU集合[1]的要素POU之程式MAIN中所被呼叫的程式指標P10相同名稱的POU存在於第1引數的POU集合,故從該POU集合抽出MAIN呼叫的屬於其他POU之P10。
於步驟S172中,該部15係將從程式MAIN往屬於其他POU的P10之有向線段追加至有向線段集合[2]。以此時的有向線段的資料結構而言,只要保持有依存源POU與依存對象POU即足夠。不過,在考慮到後述其他實施形態的場合時,在有向線段的資料結構一併保持步驟號碼亦可能。
在步驟S173中,因P10不存在於POU集合[1]至[2],故該部15係判斷為「NO」,並於步驟S174中,該部15將P1O追加至POU集合[2]。
在本例中,從程式MAIN所被呼叫且抽出的POU因僅有程式P10,故步驟S175未被執行。
在步驟S176中,該部15雖欲對POU集合[1]的下一要素POU元件進行處理,但在本例中,因在POU集合[1]並不存在程式MAIN以外的要素,故該部15前進至步驟S177,且判定「YES」的結果,在下一步驟S178中,該部15係對變數d僅遞加1。
遞加處理後的步驟S170中,在屬於POU集合[2]的要素POU之程式P10中所被呼叫的程式P11及P12因存在於第1引數的POU集合內,故該部15係從第1引數的POU集合抽出程式P11及P12。
在步驟S172中,該部15係將從程式P10往P11的有向線段追加到有向線段集合[2]。
在步驟S173中,因程式P11不存在於POU集合[1]至[3],故在步驟S174中,該部15係將P11追加到POU集合[3]內。
該部15係對所抽出的下一POU之P12進行處理(步驟S176)。
在步驟S172中,該部15係將從程式P10往P12的有向線段追加到有向線段集合[2]。
步驟S173中,因程式P12不存在於POU集合[1]至[3],故在步驟S174中,該部15係將P12追加到POU集合[3]內。
該部15雖在步驟S176中,要對POU集合[2]的下一要素POU進行處理,但因在POU集合[2]不存在P10以外的要素POU,故該部15前進至步驟S177,且判定「YES」的結果,在下一步驟S178中,該部15僅對變數d遞加1。
跟在遞加處理後之步驟S170中,由於在屬於POU集合[3]的要素POU之程式P11的程式中所被呼叫的程式P35及P36存在於第1引數的POU集合內,故該部15係從第1引數的POU集合抽出程式P35及P36。
在步驟S172中,該部15係將從P11往P35的有向線段追加到有向線段集合[4]。
在步驟S173中,因P35不存在於POU集合[1]至[4],故在步驟S174中,該部15係將P35追加到POU集合[4]。
該部15係對所抽出的下一POU之P36進行處理(步驟S175)。
在步驟S172中,該部15係將從程式P11往P36的有向線段追加到有向線段集合[4]。
步驟S173中,因程式P36不存在於POU集合[1]至[4],故在步驟S174中,該部15係將P36追加到POU集合[4]。
在步驟S176中,該部15係對屬於POU集合[3]的下一要素POU元件之P12進行處理。
首先,在步驟S170中,該部15係因在P12的程式中所被呼叫的P37及P38存在於第1引數的POU集合,故抽出P37及P38。
在步驟S172中,該部15係將從P12往P37的有向線段追加到有向線段集合[4]。
在步驟S173中,因P37不存在於POU集合[1]至[4],故在步驟S174中,該部15係將P37追加到POU集合[4]。
該部15係對所抽出的下一POU之P38進行處理(步驟S175)。
在步驟S172中,該部15係將從程式P12往P38的有向線段追加到有向線段集合[4]。
在步驟S173中,因程式P38不存在於POU集合[1]至[4],故在步驟S174中,該部15係將P38追加到POU集合[4]。
經過之後的步驟S175至S178,在步驟S170中,該部15係因在屬於POU集合[4]的要素POU之P35的程式中所被呼叫的P39存在於第1引數的POU集合,故抽出P39。
在步驟S172中,該部15係將從程式P35往P39的有向線段追加到有向線段集合[5]。
在步驟S173中,因P39不存在於POU集合[1]至[5],故在步驟S174中,該部15係將P39追加到POU集合[5]。
在步驟S175中,所抽出的POU僅有P39。該部15前進至步驟S176。
在步驟S170中,該部15雖欲處理屬於POU集合[4]的下一要素POU之P36,但P36的程式中,其他的POU並未被呼叫。
在步驟S170中,該部15雖欲處理屬於POU集合[4]的下一要素POU之P37,但P37的程式中,其他的POU被並未呼叫。
在步驟S170中,該部15雖欲處理屬於POU集合[4]的下一要素POU之P38,但P38的程式中,其他的POU被並未呼叫。
經過步驟S177及步驟S178,該部15係在步驟S170中雖欲處理屬於POU集合[5]的要素POU之P39,但由於在P39的程式中,其他的POU被並未呼叫,故該部15係在步驟S177中判斷為「NO」,並前進至步驟S179,且輸出POU呼叫依存關係有向圖分析結果。
同樣地,當POU依存關係抽出處理執行部15處理第44圖的式號碼S022時,作為以程式SUB1為起點的POU呼叫順向依存關係有向圖,獲得第47圖所示的結果。
可抽出以階梯程式為分析對象的POU呼叫之順向依存關係的有向圖,藉此可使程式分析的作業省力化。
分析指令POU_BWD係抽出呼叫使用者所指定的POU的POU(更且,遞迴性地抽出呼叫該POU的POU…),而獲得表示其依存關係之有向圖(POU呼叫反向依存關係之有向圖)用的指令。使用者係對於分析指令POU_BWD將指定成為分析對象的程式範圍之式號碼指定在分析對象格,並將成為POU呼叫反向依存關係有向圖的起點之POU指定在分析條件格。
第44圖的式號碼S025係顯示指定作為式號碼S020的結果所輸出的在POU集合中所含的要素POU,亦即,構成程式的全體POU中來自P39的POU呼叫反向依存關係有向圖之例,作為其分析結果,輸出描繪有向圖所需的資料。
在此,第48圖係顯示分析指令POU_BWD的處理流程之流程圖。第48圖的處理流程及資料結構係與抽出元件依存關係有向圖的分析指令VAR_BWD時類似。
當第42圖的POU依存關係抽出處理執行部15依據第48圖所示流程處理第44圖的式號碼S025時,可獲得第49圖所示的結果。以下詳述此點。
在步驟S189中,POU依存關係抽出處理執行部15係從第1引數的POU集合之各程式確認是否呼叫了屬於POU集合[1]的要素POU之P39,結果,從第1引數的POU集合抽出要素POU之P11、P23、及P28。
於步驟S191中,該部15係將從P11往P39之有向線段追加至有向線段集合[2]。以此時的有向線段的資料結構而言,只要保持有依存源POU與依存對象POU即足夠。不過,在考慮到後述實施形態,在有向線段的資料結構一併保持步驟號碼亦可能。
在步驟S192中,因P11不存在於POU集合[1]至[2],故在步驟S193中,該部15係將P11追加至POU集合[2]。
在下一步驟S194中,該部15係處理所抽出的下一POU之P23。
在步驟S191中,該部15將從P23往P39的有向線段追加至有向線段集合[2]。
在步驟S192中,因P23並不存在於POU集合[1]至[2],故在步驟S193中,該部15係將P23追加至POU集合[2]。
在下一步驟S194中,該部15係處理所抽出的下一POU之P28。
在步驟S191中,該部15將從P28往P39的有向線段追加至有向線段集合[2]。
在步驟S192中,因P28並不存在於POU集合[1]至[2],故在步驟S193中,該部15係將P28追加至POU集合[2]。
在步驟S195中,該部15雖要對POU集合[1]的下一要素POU進行處理,但因在POU集合[1]不存在P39以外的要素POU,故經過步驟S196及S197。
在步驟S189中,POU依存關係抽出處理執行部15係從第1引數的POU集合之各程式確認是否呼叫了屬於POU集合[2]的要素POU之P11,結果,從第1引數的POU集合抽出要素POU之P10。
在步驟S191中,該部15係將從P10往P11的有向線段追加到有向線段集合[3]。
在步驟S192中,因P10不存在於POU集合[1]至[3],故在步驟S193中,該部15係將P10追加到POU集合[3]。
在步驟S194中,所抽出的POU僅有P10,該部15為了處理屬於POU集合[2]的下一要素POU之P23,而前進至步驟S189。
在步驟S189中,POU依存關係抽出處理執行部15係從第1引數的POU集合之各程式確認是否呼叫了屬於POU集合[2]的要素POU之P23,結果,從第1引數的POU集合抽出要素POU之P20。
在步驟S191中,該部15係將從程式P20往P23的有向線段追加到有向線段集合[3]。
在步驟S192中,因P20不存在於POU集合[1]至[3],故在步驟S193中,該部15係將P20追加到POU集合[3]。
在步驟S194中,所抽出的POU僅有P20,該部15為了處理屬於POU集合[2]的剩餘要素POU之P28,而前進至步驟S189。
在步驟S189中,POU依存關係抽出處理執行部15係從第1引數的POU集合之各程式確認是否呼叫了屬於POU集合[2]的要素POU之P28,結果,從第1引數的POU集合抽出要素POU之P25。
在步驟S191中,該部15係將從程式P25往P28的有向線段追加到有向線段集合[3]。
在步驟S192中,因P25不存在於POU集合[1]至[3],故在步驟S193中,該部15係將P25追加到POU集合[3]。
在下一步驟S194中,所抽出的POU僅有P25,該部15由於完成了對POU集合[2]內所有要素POU的處理,故在步驟S195中判定為「YES」後,經由步驟S197及S187,而前進至步驟S189。
在步驟S189中,POU依存關係抽出處理執行部15係從第1引數的POU集合之各程式確認是否呼叫了屬於POU集合[3]的要素POU之P10,結果,從第1引數的POU集合抽出要素POU之MAIN。
在步驟S191中,該部15係將從MAIN往P10的有向線段追加到有向線段集合[4]。
在步驟S192中,因MAIN不存在於POU集合[1]至[4],故在步驟S193中,該部15係將MAIN追加到POU集合[4]。
在下一步驟S194中,所抽出的POU僅有MAIN,該部15為了處理屬於POU集合[3]的下一要素POU之P20(步驟S195),而前進至步驟S189。
在步驟S189中,POU依存關係抽出處理執行部15係從第1引數的POU集合之各程式確認是否呼叫了屬於POU集合[3]的要素POU之P20,結果,從第1引數的POU集合抽出要素POU之SUB1。
在步驟S191中,該部15係將從SUB1往P20的有向線段追加到有向線段集合[4]。
在步驟S192中,因SUB1不存在於POU集合[1]至[4],故在步驟S193中,該部15係將SUB1追加到POU集合[4]。
在下一步驟S194中,所抽出的POU僅有SUB1,該部15為了處理屬於POU集合[3]的最後要素POU之P25(步驟S195),而前進至步驟S189。
在步驟S189中,POU依存關係抽出處理執行部15係從第1引數的POU集合之各程式確認是否呼叫了屬於POU集合[3]的要素POU之P25,結果,從第1引數的POU集合抽出要素POU之SUB2。
在步驟S191中,該部15係將從SUB2往P25的有向線段追加到有向線段集合[4]。
在步驟S192中,因SUB2不存在於POU集合[1]至[4],故在步驟S193中,該部15係將SUB2追加到POU集合[4]。
在下一步驟S194中,所抽出的POU僅有SUB2,該部15由於完成了對POU集合[3]內的所有要素POU之處理,故在步驟S195中判定為「YES」後,經步驟S197及S187,而再度前進至步驟S189。
在步驟S189中,POU依存關係抽出處理執行部15雖從第1引數的POU集合之各程式確認是否呼叫了屬於POU集合[4]的MAIN、SUB1、或SUB2,但由於其他的任一個程式皆未呼叫MAIN、SUB1、或SUB2,故前進至步驟S196,並在步驟S196中作出「NO」的判定結果,而前進至步驟S198。
在步驟S198中,該部15係進行使要素POU所存在的POU集合及有向線段集合的深度逆轉的處理。在進行該處理時尤其應注意之點是:在使有向線段集合的號碼逆轉時,對於所有的有向線段之要素,要使其朝應隸屬的深度移動(惟,在本例中未有符合者)。
可抽出以階梯程式為分析對象的POU呼叫之反向依存關係的有向圖,藉此可使程式分析的作業省力化。
本實施形態係關於可使階梯程式的POU呼叫依存關係之有向圖彼此間的邏輯運算(邏輯「或」OR處理或邏輯「及」AND處理)成為可能之技術。
第44圖的式號碼S023係顯示指定抽出由式號碼S021所抽出的POU呼叫依存關係有向圖抽出結果、與由式號碼S022所抽出的別的POU呼叫依存關係有向圖抽出結果的邏輯「或」之例。
亦即,本發明係皆以相同的分析指令OR來共通指定:1)實施交互參照彼此間的邏輯「或」用的分析指令、2)實施元件依存關係有向圖彼此間的邏輯「或」用的分析指令、及3)實施POU呼叫依存關係有向圖彼此間的邏輯「或」用的分析指令。
在此,第50圖係顯示第42圖的OR處理執行部18執行的分析指令OR之處理流程的流程圖,第50圖的處理內容係與執行第35圖所示元件依存關係有向圖彼此間的邏輯「或」處理相同。
OR處理執行部18係依據第50圖所示的處理流程進行第44圖的式號碼S023之處理,作為第46圖的結果與第47圖的結果之邏輯「或」的結果者,可獲得第51圖所示的結果。
式號碼S023係顯示藉由相同分析指令OR來指定實施交互參照彼此間的邏輯「或」用的分析指令、實施元件依存關係有向圖彼此間的邏輯「或」用的指令、及實施POU呼叫依存關係有向圖彼此間的邏輯「或」用的指令之例,惟即便在以分別不同的指令(例如,將前者定義為VAR_REF_OR、及VAR_FWD_BWD_OR;將後者定義為POU_FWD_BWD_OR)來定義而分開使用的實施形態,所用的技術亦相同。
又,使用本實施形態的話,分析指令POU_FWD係對於屬於分析對象(POU呼叫依存關係有向圖的起點)之POU係成為線形運算元。換言之,以將分析指令POU_FWD定義為線形分析指令之方式,將POU呼叫依存關係有向圖的邏輯「或」OR之處理流程設定成如第50圖所示。
在此,當將分析對象作為POU_FWD函數的引數來標示、以+標示OR運算,藉此記載分析指令POU_FWD的線形性時,式號碼S024可由下列數4所示的式子來表現。
POU_FWD(MAIN,SUB1)=POU_FWD(MAIN+SUB1)=POU_FWD(MAIN)+POU_FWD(SUB1)
因此,如在第44圖的式號碼S024所示,於列舉並指定屬於分析指令POU_FWD的分析對象(POU呼叫依存關係有向圖的起點)之POU時,可將以各個的POU作為分析對象的分析指令POU_FWD的結果進行OR處理所得的結果作成式號碼S024的結果之遞迴性處理。對於分析指令POU_BWD亦同樣地可進行遞迴性處理。
藉此,即使使用者不一一輸入式號碼S021、S022、S023的三個條件式,亦可用一個式號碼S024獲得與式號碼S023相同的結果。
又,分析對象元件的列舉指定方法也在於式號碼S010所示的分析指令VAR_REF、於式號碼S014所示的分析指令VAR_FWD、及於式號碼S024所示的分析指令POU_FWD為相同,而在不同分析指令間的分析條件指定方法亦取得整合性,並無任何矛盾。此點,對於分析指令POU_BWD亦同樣。
同樣地,將第42圖的AND處理執行部17執行的分析指令AND之處理流程顯示在第52圖。處理內容與第37圖所示的元件依存關係有向圖彼此間的邏輯「及」時的處理相同。
當AND處理執行部17依據第59圖所示的處理流程處理第44圖的式號碼S026時,作為第49圖的結果與第51圖的結果之邏輯「及」結果,可獲得第53圖的結果。關於下一式號碼S027的處理亦可獲得同樣結果。
可進行階梯程式的POU呼叫依存關係的有向圖彼此間的邏輯運算(邏輯「或」OR處理),藉此可抽出所期望的POU呼叫依存關係有向圖,而能使程式分析的作業省力化。
又,可用相同的分析指令OR指定用以實施交互參照彼此間的邏輯「或」之指令、用以實施元件依存關係有向圖彼此間的邏輯「或」之指令、及用以實施POU呼叫依存關係有向圖彼此間的邏輯「或」之指令。雖亦能推想到將各者以別的指令(例如將前者定義為VAR_REF_OR及VAR_FWD_BWD_OR,後者定義為POU_FWD_BWD_OR。)來定義而分別使用的實施形態,但會產生要依據成為分析指令OR的對象之資料類別分別使用不同指令的必要性。不拘泥於資料類別而將實施邏輯「或」的分析指令定義為分析指令OR之方法係方便於使用。若是使用不同分析指令,將會產生使用者必須藉輔助說明或操作說明書等來調查對應各個資料類別的邏輯「或」指令;而若能以分析指令OR實施所有的工作,則使用者即沒有進行上述者的必要性,而能使程式分析的作業省力化。
當然,對於邏輯「及」AND處理亦有同樣效果。
本實施形態係關於以存在於POU呼叫依存關係有向圖的POU為對象,可抽出元件交互參照或元件依存關係有向圖的技術。
第54圖的式號碼S028係顯示指定抽出存在於由第44圖的式號碼S021所抽出的POU呼叫依存關係有向圖的POU之集合之例。
亦即,本發明係顯示藉由相同分析指令POU_READ指定:1)指定任意的POU之讀入而輸出該POU的集合用之指令、2)指定構成程式的所有POU之讀入而輸出該POU的集合用之指令、及3)抽出存在於POU呼叫依存關係有向圖的POU的集合用的指令之例。
接著,說明藉由分析指令POU_READ抽出存在於POU呼叫依存關係有向圖的POU的集合之技術。
在此,第54圖係顯示讓使用者使用第1圖的輸入部5將程式分析條件輸入到微處理器2用的顯示部4之畫面例,相當於接續在上述的第7圖、第29圖及第44圖。
又,第55圖係顯示第42圖的POU一覽表抽出處理執行部14執行的分析指令POU_READ之處理流程的流程圖。
第55圖的處理內容係類似於從元件依存關係有向圖抽出元件交互參照時的分析指令VAR_REF之處理(參照第39圖)。不過,在元件時是處理已賦予有向線段之資訊的要素,而在POU時係未將有向線段之資訊賦予至POU要素,各兩者間存在如此的不同點。
當第42圖的POU一覽表抽出處理執行部14依據第55圖所示的處理流程處理式號碼S028時,從第46圖的POU呼叫依存關係有向圖可獲得以MAIN、P10、P11、P12、P35、P36、P37、P38及P39為POU要素的POU集合。
第54圖的式號碼S029係顯示對由式號碼S028所抽出的POU要素指定元件交互參照的抽出之例。關於式號碼S029的處理技術如已於第1實施形態所記載。
由此,不僅能抽出以存在於POU呼叫依存關係有向圖的POU為對象的元件交互參照,而且對於分析指令VAR_REF的第1引數也可省掉使用者一一輸入屬於從POU呼叫依存關係有向圖抽出的POU要素的MAIN、P10、P11、P12、P35、P36、P37、P38及P39之工時。
第54圖的下一式號碼S030係顯示對由式號碼S028所抽出的POU要素指定元件依存關係有向圖的抽出之例。關於式號碼S030的處理技術如已於第2及3實施形態所記載。
由此,不僅能抽出以存在於POU呼叫依存關係有向圖的POU要素為對象的元件依存關係有向圖,而且對於分析指令VAR-FWD的第1引數也可省掉使用者一一輸入屬於從POU呼叫依存關係有向圖抽出的POU要素的MAIN、P10、P11、P12、P35、P36、P37、P38及P39之工時。此點,對於分析指令VAR_BWD亦同樣適用。
第54圖的式號碼S031之分析指令VAR_REF係顯示對於由式號碼S021所抽出的POU呼叫依存關係有向圖指定元件交互參照的抽出之例。亦即,式號碼S031之分析指令VAR_REF係進行存在於POU呼叫依存關係有向圖的POU之元件交互參照的抽出。
將第42圖的變數使用一覽表抽出處理執行部12執行的分析指令VAR_REF的處理流程顯示在第56圖。第56圖的處理內容係藉由組合在本發明中所述第10圖所示的技術與第55圖所示的技術而實現。
藉此,對於式號碼S021使用者即便不像式號碼S028及S029一樣一一輸入兩個條件式,亦可藉由式號碼S031之一個條件式的輸入而獲得同樣結果。
第54圖的式號碼S032之分析指令VAR_FWD係顯示對於由式號碼S021所抽出的POU呼叫依存關係有向圖指定元件依存關係有向圖的抽出之例。亦即,式號碼S032之分析指令VAR_FWD係進行存在於POU呼叫依存關係有向圖的POU之元件依存關係有向圖的抽出。
將第42圖的變數依存關係抽出處理執行部13執行的分析指令VAR_FWD的處理流程顯示在第57圖。第57圖的處理內容係藉由組合在本發明中已述的第30圖所示的技術與第55圖所示的技術而實現。
藉此,對於式號碼S021使用者即便不像式號碼S028及S030一樣一一輸入兩個條件式,亦可藉由式號碼S032之一個條件式的輸出而獲得同樣結果。
上述各點亦適用在分析指令VAR_BWD。
對於階梯程式的POU呼叫依存關係有向圖可抽出元件交互參照或元件依存關係有向圖。又,使用者可省掉一一輸入從POU呼叫依存關係有向圖抽出的POU要素之工時。更且,即使使用者未一一輸入兩個條件式,亦可藉一個條件式的輸入而獲得所期望的元件交互參照或元件依存關係有向圖。
伴隨上述之優點,可使程式分析作業省力化。
本實施態係關於可抽出存在於元件交互參照或元件依存關係有向圖的POU之技術。亦即,如第71圖所示,例如使用者將藉由執行分析指令POU_READ與繼其之後的分析指令VAR_REF而得的元件交互參照作為第2引數予以指定,並於第1引數指定分析指令POU_READ並使該式號碼執行,藉此可再度獲得POU的集合。構成此再度獲得的POU集合之POU要素數係較由執行當初的分析指令POU_READ所獲得的POU集合之POU要素可更加予以限定。同樣地,使用者將元件依存關係有向圖作為第2引數予以指定,並於第1引數指定分析指令POU_READ並使該式號碼執行,藉此可再度獲得POU的集合,在此情形時亦可使構成再度獲得的POU集合之POU要素數更加限定化。
之後,可獲得如下所述的更新技術之開展。
A)在來自元件交互參照的POU之抽出中,使用者在第1引數指定成為分析對象的POU,並於第2引數指定成為分析條件的變數(元件),惟在第1引數中所被指定的所有POU未必包含第2引數所指定的變數(元件)。因此,使用者於在第1引數中指定構成程式的全POU,且能獲得由第2引數所指定的變數(元件)之交互參照時,若欲抽出使用該等變數(元件)的POU的一覽表時,可使用在本實施形態以下記載的技術。
B)在來自元件依存關係有向圖的POU之抽出中,使用者在第1引數指定成為分析對象的POU,並於第2引數指定成為依存分析起點的變數(元件),惟在第1引數中所被指定的所有POU未必都與抽出結果之元件依存關係有向圖有關。因此,使用者於在第1引數中指定構成程式的所有POU,且能獲得以由第2引數所指定的變數(元件)為起點之元件依存關係有向圖時,於欲抽出與該元件依存關係有向圖有關的POU的一覽表時,可使用在本實施形態以下記載的技術。
第54圖的式號碼S034係顯示指定第44圖的式號碼S020中所讀出的POU之集合,也就是構成程式的所有POU中的變數(元件)M[0-9]及M[20-29]的元件交互參照之抽出之例。又,第54圖的式號碼S035係顯示抽出存在於式號碼S034的結果之POU的一覽表之例。
亦即,本發明係以相同的分析指令POU_READ指定:1)指定任意的POU之讀入並輸出該POU的集合用之指令、2)指定構成程式的所有POU之讀入並輸出該POU的集合用之指令、3)抽出存在於POU呼叫依存關係有向圖的POU的集合用的指令、及4)抽出存在於元件交互參照的POU的集合用的指令之例。
將第42圖的POU一覽表抽出處理執行部14執行的分析指令POU_READ的處理流程顯示於第58圖。首先,該部14係確認成為對象的資料類別是否為元件交互參照。若不是元件交互參照,則該部14係進行第55圖的處理流程。另一方面,若成為對象的資料類別是元件交互參照的話,則該部14係進行抽出存在於該元件交互參照的POU之集合並輸出的處理。
為了簡化,當針對第54圖的式號碼S033進行說明時,若參照存在於表示第1引數的式號碼S006的元件交互參照結果之第19圖畫面的各交互參照的程式名,則存在於該元件交互參照的POU係僅為MAIN及SUB。因此,當該部14根據第58圖的處理流程處理式號碼S033時,可獲得以MAIN及SUB為要素的POU之集合。
第54圖的式號碼S036係顯示指定在式號碼S020所讀出的POU之集合,也就是以構成程式的所有POU之變數(元件)M4095為起點之元件依存關係有向圖的抽出之例,而下一式號碼S037係顯示指定關於存在於式號碼S036的抽出結果之元件的交互參照抽出之例,且下一式號碼S038係顯示抽出存在於式號碼S037的抽出結果之POU的一覽表之例。該等的各式號碼的處理如先前記載。
第54圖的式號碼S039係顯示抽出與式號碼S036的抽出結果相關之POU的一覽表之例。亦即,本發明係顯示以相同分析指令POU_READ指定:1)指定任意的POU之讀入並輸出該POU的集合用之指令;2)指定構成程式的所有POU之讀入為輸出該POU的集合用之指令;3)抽出存在於POU呼叫依存關係有向圖的POU的集合用之指令;4)抽出存在於元件交互參照的POU的集合用之指令;及5)抽出與元件依存關係有向圖相關之POU的集合用之指令例。
將第42圖的POU一覽表抽出處理執行部14執行的分析指令POU_READ之處理流程顯示於第59圖。首先,該部14係確認成為對象的資料類別是否屬於元件依存關係有向圖。若資料類別非為元件依存關係有向圖,則該部14係進行第58圖的處理流程。另一方面,成為對象的資料類別若為元件依存關係有向圖,則該部14即對該元件依存關係有向圖運用第56圖所示分析指令VAR_REF抽出元件交互參照,並對被抽出的元件交互參照運用第58圖所示分析指令POU_READ的處理流程,進行抽出POU的集合並輸出之處理。
藉此,使用者對於式號碼S036即使未如式號碼S037及S038一樣一一輸入兩個條件式,藉由式號碼S039的一個條件式之輸入亦能獲得相同結果。
可抽出存在於所抽出的元件交互參照或元件依存關係有向圖的POU。
又,於抽出存在於元件依存關係有向圖的POU時,使用者即使未一一輸入兩個條件式,亦可藉由一個條件式的輸入而獲得結果。
藉由上述之優點可使程式分析之作業省力化。
本實施形態係關於可進行不同資料的邏輯運算之指定的技術。例如,於指定有元件交互參照與元件依存關係有向圖的邏輯「及」AND時,首先在將元件依存關係有向圖轉換成元件交互參照之後,接著,如同執行邏輯「及」運算之處理一樣,第1圖的微處理器2只要藉由其內部處理,自動地解釋被指定的式號碼並進行處理即可。
在第54圖的式號碼S041之邏輯「及」AND中,第1引數S005的輸出是元件交互參照,第2引數S011的輸出是元件依存關係有向圖。如此,在不同資料彼此間被指定邏輯運算時,微處理器2係以首先在從第2引數的輸出內容抽出與第1引數相同資料形式的內容後實施在其後所指定的分析指令的邏輯運算之方式決定程式分析支援裝置的規格。
藉此,使用者對式號碼S011首先輸入抽出分析指令VAR_REF的式號碼S018之後,即使在之後未如第54圖的式號碼S040一樣輸入式號碼S005與式號碼S018的邏輯「及」AND條件式,亦可藉式號碼S041的一個條件式之輸入而獲得同樣結果。
第54圖的式號碼S042係以其第1引數及第2引數與式號碼S041的情況成為相反關係之方式被指定者。在該場合時,分析指令AND亦因為是元件交互參照與元件依存關係有向圖的邏輯「及」AND,因此只要首先在將元件依存關係有向圖轉換成元件交互參照後,以執行邏輯「及」運算之方式,藉由內部處理自動地解釋並進行處理即可。亦即,在式號碼S041與式號碼S042結果是相同。
在此,第60圖係顯示第42圖的AND處理執行部17執行的分析指令AND之處理流程的流程圖。只要AND處理執行部17根據第60圖的處理流程處理式號碼S041,則如第61圖所示,可獲得顯示在程式MAIN及SUB之各者使用有變數(元件)M4的分析結果之交互參照。
可進行不同資料彼此間的邏輯運算之指定。藉此,使用者在指定邏輯運算的條件式之前,即使未一一輸入轉換成相同資料形式用的條件式,亦由於藉一個條件式的輸入即足夠,故可使程式分析的作業省力化。
以上,係針對作為讓使用者使用輸入部輸入程式分析條件用的顯示部畫面之一例顯示在第7圖,並記載了可自由地組合程式分析條件來製作交互參照之技術。在此情形時,由於程式分析條件的組合並無特別限制,故使用者可自由地組合程式分析條件,惟,相反地,若使用者欲獲得所期望的程式分析結果,則使用者就需要由自己來考慮程式分析條件的組合。
習知的程式分析支援裝置係只能進行在所準備的條件指定功能範圍內的交互參照之製作,惟,相反地,在製作所準備的交互參照時,使用者即無需由自己來考慮程式分析條件的組合。
然而,若要以與習知的程式分析支援裝置相同的方針使使用者能獲得所期望的程式分析結果,則必須準備各式各樣的交互參照製作功能。亦即,若要以與習知相同的方針下藉由在先前技術一節中已說過的構成來實現,則程式分析支援裝置的開發者就需要花很大的勞力。具體而言,有分析條件執行部的內部構造變為複雜之問題。
因此,在本實施形態中,係記載針對在以與習知的程式分析支援裝置相同的方針準備各式各樣的交互參照製作功能等程式分析功能時,透過利用以上所記載的本發明的構成,可大幅度減輕程式分析支援裝置的開發者勞力之技術。
以具體例而言,係記載在以與習知的程式分析支援裝置相同的方針將階梯程式靜態切片功能作為專用程式分析功能予以準備或作為程式搭載在本實施形態的程式分析支援裝置的情形。
在此,第62圖係顯示階梯程式靜態切片用的顯示部畫面之一例(對話框,dialog box)圖。
此階梯程式靜態切片功能係專用地或專門地提供由使用者所指定的分析對象範圍POU之元件依存關係有向圖的抽出、及存在於該有向圖的變數(元件)一覽表(交互參照)的抽出之功能。
有下述規格:在第62圖的切片範圍中,使用者輸入使用者欲抽出之成為所期望的元件依存關係有向圖的分析對象範圍之POU名稱。於使用者欲將一個以上的POU指定為分析對象範圍時,在切片範圍以逗點(,)分隔各POU而予以列舉;於使用者欲指定構成程式的所有POU之讀入時,使用者對切片範圍不輸入任何東西。
有下述規格:在第62圖的畫面,使用者在順向切片起點元件與反向切片起點元件之雙方,若分別指定不同的變數(元件),則抽出進行過順向元件依存關係有向圖與反向元件依存關係有向圖之邏輯「及」AND處理的元件依存關係有向圖。
有下述規格:在畫面的順向切片起點元件欄,使用者輸入成為欲抽出元件依存關係有向圖的起點之變數(元件)。若欲抽出進行過一個以上順向元件依存關係有向圖的邏輯「或」OR處理之元件依存關係有向圖時,使用者以逗點(,)區隔變數(元件)而予以列舉。
有下述規格:在畫面的反向切片起點元件欄,使用者輸入要成為欲抽出元件依存關係有向圖的起點之變數(元件)。若欲抽出進行過一個以上反向元件依存關係有向圖的邏輯「或」OR處理之元件依存關係有向圖時,使用者以逗點(,)區隔變數(元件)而予以列舉。
亦即,其規格為:若使用者在順向切片起點元件與反向切片起點元件之雙方分別指定複數個不同的變數(元件),則可抽出藉AND處理透過一個以上的順向元件依存關係有向圖的OR處理所得的元件依存關係有向圖、與透過一個以上的反向元件依存關係有向圖的OR處理所得的元件依存關係有向圖而得的元件依存關係有向圖。
又其規格為:使用者未在第62圖的畫面之順向切片起點元件欄指定變數(元件),而僅在反向切片起點元件欄指定變數(元件)時,將反向元件依存關係有向圖作為結果抽出。相反地,使用者未在反向切片起點元件欄指定變數(元件),而僅在順向切片起點元件欄指定變數(元件)時,將順向元件依存關係有向圖作為結果抽出。
在此,第63圖係顯示用以實現第1圖的微處理器2之階梯程式靜態切片之功能部構成的功能方塊圖(軟體方塊構成圖)。
階梯程式靜態切片之處理係藉由下述構成而實現,即對應使用者的畫面輸入及畫面上的執行鍵開始的操作,而由分析條件執行部11處理階梯靜態切片條件設定部294內部性地產生的指令,並由分析結果顯示部20將該處理結果顯示在第1圖的顯示部4畫面。
第64圖顯示階梯靜態切片條件設定部294的處理流程。以下記載依據第64圖的處理流程處理該部294顯示在第62圖的輸入內容。
在步驟S295中,當使用者點擊第62圖的階梯程式靜態切片畫面上的執行鍵時,階梯靜態切片條件設定部294係開始以下的處理。
在步驟S297中,該部294係確認在第62圖的對話框之切片範圍是否輸入有POU名稱。在第62圖的本例中,該部294係判定為「YES」。
在步驟S298中,該部294係確認被輸入到第62圖的對話框之切片範圍的POU名稱是否為複數。在第62圖的本例中,該部294係判定為「YES」。
在步驟S301中,該部294係對於本例內部性地產生以下的指令並執行。
1) S901=POU_READ(MAIN)
2) S902=POU_READ(SUB4)
3) S903=OR(S901,S902)
在本例的步驟S301之運用中,該部294係復內部性地產生以下的指令並執行。
4) S904=POU_READ(SUB9)
5) S905=OR(S903,S904)
如上所述,藉由該部294內部性地逐一進行各種指令的產生、執行,在步驟S301中,該部294係處理複數個POU名稱被輸入時的POU集合之產生。
該部294係將在步驟S296的處理中內部性產生的最後之分析指令之式號碼作為在之後的步驟S302及步驟S307中進行處理的元件依存關係有向圖的抽出處理之第1引數而使用。在本例,該部294係將屬於在第5個所產生的指令之式號碼S905作為分析指令VAR_FWD及分析指令VAR_BWD的第1引數予以指定。
在步驟S303中,對於本例,該部294係確認在第62圖的順向切片起點元件被輸入有變數(元件)。
在步驟S304中,對於本例,該部294係確認被輸入在第62圖的順向切片起點元件之變數(元件)為複數個。
在步驟S306中,對於本例,該部294係內部性地產生以下的指令並執行。
6) S906=VAR_FWD(S905,X67)
7) S907=VAR_FWD(S905,X89)
8) S908=OR(S906,S907)
該部294係將在步驟S302中內部性產生的最後之分析指令之式號碼作為在步驟S312中進行處理的元件依存關係有向圖彼此間的AND處理之第1引數而使用。在本例,該部294係將式號碼S908作為AND處理的第1引數予以指定。
在步驟S308中,對於本例,該部294係確認在第62圖的反向切片起點元件被輸入有變數(元件)。
在步驟S309中,對於本例,該部294係確認被輸入在第62圖的反向切片起點元件的元件非複數個(「NO」的判定),而前進至步驟S310。
在本例的步驟S310中,對於本例,該部294係內部性地產生以下的指令並執行。
9) S909=VAR_BWD(S905,Y234)
該部294係將在步驟S307中內部性產生的最後之分析指令之式號碼作為在步驟S312中進行處理的元件依存關係有向圖彼此間的AND處理之第2引數而使用。在本例,該部294係將式號碼S909作為AND處理的第2引數予以指定。
在步驟S312,該部294係內部性地產生並執行以在步驟S302中內部性產生的最後之指令之式號碼作為第1引數、以在步驟S307中內部性產生的最後之指令之式號碼作為第2引數之分析指令AND。
10) S910=AND(S908,S909)
惟,該部294在步驟S302中無內部性產生的指令時,係將在步驟S307中內部性產生的最後之指令之處理結果直接設作步驟S312的處理結果。
又,該部294在步驟S307中無內部性產生的指令時,係將在步驟S302中內部性產生的最後之指令之處理結果直接設作步驟S312的處理結果。
若在步驟S302與步驟S307的任一步驟中皆不存在內部性產生的指令,則該部294將步驟S312的處理結果設為空。
階梯靜態切片條件設定部294係將透過以上處理所得的元件依存關係有向圖的結果傳送至分析結果顯示部20,而該部20係將用以描繪上述元件依存關係有向圖的結果之顯示信號輸出到第1圖的顯示部4,結果,上述元件依存關係有向圖的結果係顯示在顯示部4的畫面上。
更且,當使用者透過輸入部5點擊第62圖的對話框之交互參照鍵時,階梯靜態切片條件設定部294係抽出存在於早已獲得的元件依存關係有向圖的變數(元件)之交互參照,而分析結果顯示部20係顯示其結果。顯示該處理流程的流程圖之圖示化雖予以省略,惟將其處理程序記載如下。
當使用者按下階梯程式靜態切片畫面上之交互參照鍵(點擊)時,該部294係開始處理。
該部294係內部性產生作為第1引數的分析指令VAR_REF而執行該部294執行的最後之指令之式號碼S910。在該執行時,該部294係對第2引數不作任何指定,抽出存在於元件依存關係有向圖的所有變數(元件)之交互參照。
11) S911=VAR_REF(S910,)
惟,尚未獲得元件依存關係有向圖(若未被處理)的話,該部294係將處理結果設為空。
階梯靜態切片條件設定部294係透過第63圖的變數使用一覽表21顯示所得變數(元件)的交互參照。
使用者無需自己考慮程式分析條件的組合即可獲得所期望的程式分析結果。因此,可大幅減輕準備各式各樣的交互參照製作功能等的程式分析功能用之勞力。
藉此,程式分析支援裝置的開發者可減少(縮短)能讓使用者在程式的變更或動作不良的分析等中用以特定成為編輯對象的部位之作業的效率化而縮短作業所需時間用的程式分析支援裝置的開發工時(費用及時間)。對程式分析支援裝置準備各式各樣的交互參照製作功能等程式分析功能將變為容易。
藉此,對程式分析支援裝置準備各式各樣的交互參照製作功能等程式分析功能,可令使用者在程式的變更或動作不良的分析等中用以特定成為編輯對象的部位之作業效率化而縮短作業所需時間。
以上,係記載了以預定的程式POU的集合為對象的元件交互參照的抽出、元件依存關係有向圖的抽出、及POU呼叫依存關係有向圖的抽出之各程式分析功能。而且,亦記載了對於該等的分析結果進行邏輯運算(AND/OR/NOT)之功能。更且,亦記載了對於該等程式分析功能的結果進一步進行程式分析處理的功能。
在對於上述本發明的程式分析支援裝置追加新分析功能(分析指令)時,該新分析功能(分析指令)抽出之資料形式若為在本發明的程式分析支援裝置中未有的資料形式的話,則必須對於該分析結果定義AND/OR/NOT的邏輯運算等,有設定成可繼承本發明的程式分析支援裝置之特徵點又不會損害之的必要性。
本實施形態係關於對於上述本發明的程式分析支援裝置追加新的分析功能(分析指令)用的技術。
以上,係記載了以預定的程式POU的集合為對象的元件交互參照的抽出、元件依存關係有向圖的抽出、及POU呼叫依存關係有向圖的抽出之各程式分析功能,以及,對於該等的分析結果進行AND/OR/NOT之邏輯運算或別的程式分析的功能。若彙整該等的功能,則如第66圖至第71圖之各圖所示。
1)首先記載針對元件交互參照抽出指令VAR_REF圖示的第66圖之內容。
被指定在分析指令VAR_REF的第2引數的是變數(元件)。在另一方面的第1引數可指定本發明的程式分析支援裝置所處理的程式分析功能之分析結果。
其中,在第1引數被指定輸出POU的集合之式號碼的情形是分析指令VAR_REF的最基本性處理形態(在第66圖中以◎表示)。
又,在第1引數指定輸出元件依存關係有向圖之式號碼的情形也是分析指令VAR_REF的最基本性處理形態(在第66圖中以○表示)。
另一方面,在第1引數直接被指定有POU名稱的情形也有可能。該情形時的處理流程雖在說明書中末作為實施形態予以記載,但針對該情形時的處理形態如第66圖所示,在微處理器2內部性地處理分析指令POU_READ之後,以分析指令VAR_REF的最基本性處理形態進行處理即可。亦即,微處理器2係可藉由其他的基本性處理形態的組合來實現該情形時的處理(在第66圖中以△表示)。
又,針對在第1引數被指定有輸出POU呼叫依存關係有向圖的式號碼的情形,亦同樣地微處理器2係可藉由其他的基本性處理形態的組合來實現(在第66圖中同樣以△表示)。
再者,在第1引數被指定有輸出元件交互參照的式號碼時,未被定義(在第66圖中以×表示)。此係由於找不出對其下定義的意義或必要性之故。
2)接著,記載針對元件依存關係有向圖抽出指令VAR_FWD圖示的第67圖之內容。又在第67圖中,針對元件依存關係有向圖雖僅顯示順向分析指令VAR_FWD的情形,然此只不過是為了方便起見,對於反向分析指令VAR_BWD,同樣的內容亦妥當。被指定在分析指令VAR_FWD的第2引數的是變數(元件)。在該指令的第1引數可指定本發明的程式分析支援裝置所處理的程式分析功能之分析結果。
其中,在第1引數被指定輸出POU的集合之式號碼時,是分析指令VAR_FWD的最基本性處理形態(在第67圖中以◎表示)。
另一方面,在第1引數直接被指定有POU名稱的情形也有可能。該情形時的處理流程雖在說明書中未作為實施形態予以記載,但針對該情形時的處理形態如第67圖所示,在微處理器2內部性地處理分析指令POU_READ之後,以分析指令VAR_FWD的最基本性處理形態進行處理即可。亦即,微處理器2係可藉由其他的基本性處理形態的組合來實現該情形時的處理(在第67圖中以△表示)。
又,針對在第1引數被指定有輸出POU呼叫依存關係有向圖的式號碼的情形時,亦同樣地微處理器2係可藉由其他的基本性處理形態的組合來實現(在第67圖中同樣以△表示)。
再者,在第1引數被指定有輸出元件依存關係有向圖的式號碼時,未被定義(在第67圖中以×表示)。此係由於找不出對其下定義的意義或必要性之故。
同樣地,在第1引數被指定有輸出元件交互參照的式號碼時,也未被定義(在第67圖中以×表示)。此亦由於找不出對其下定義的意義或必要性之故。
3)接著,記載針對抽出POU的集合的分析指令POU_READ圖示的第68圖之內容。此情形時,在分析指令POU_READ的第2引數並未作任何指定。另一方面,使用者在第1引數可指定本發明的程式分析支援裝置所處理的程式分析功能之分析結果。
其中,在第1引數被直接指定有POU名稱之情形時,是分析指令POU_READ的最基本性處理形態(在第68圖中以◎表示)。
又,在第1引數被指定有輸出元件交互參照的式號碼之情形時,也是分析指令POU_READ的最基本性處理形態(在第68圖中以○表示)。
更且,在第1引數被指定有輸出POU呼叫依存關係有向圖的式號碼之情形時,也還是分析指令POU_READ的最基本性處理形態(在第68圖中以○表示)。
另一方面,在第1引數指定輸出元件依存關係有向圖的式號碼之情形係如第68圖所示。微處理器2係在內部性地處理分析指令VAR_REF之後,以分析指令POU_READ的最基本性處理形態進行處理即可。亦即,微處理器2係可藉由其他的基本性處理形態的組合來實現該情形時的處理(在第68圖中以△表示)。
又,針對在第1引數被指定有輸出POU的集合的式號碼情形時,未被定義(在第68圖中以×表示)。此係由於找不出對其下定義的意義或必要性之故。
4)接著,記載針對抽出POU呼叫依存關係有向圖的分析指令POU_FWD圖示的第69圖之內容。又在第69圖中,針對POU呼叫依存關係有向圖雖僅顯示順向分析指令POU_FWD的情形,但對於反向分析指令POU_BWD,同樣的內容亦成立。被指定在分析指令POU_FWD的第2引數的是POU名稱。使用者在第1引數可指定本發明的程式分析支援裝置所處理的程式分析功能之分析結果。
其中,在第1引數被指定有輸出POU的集合之情形時,是分析指令POU_FWD的最基本性處理形態(在第69圖中以◎表示)。
一方面,在第1引數直接被指定有POU名稱的情形也有可能。該情形時的處理流程雖在說明書中未作為實施形態予以記載,但針對該情形時的處理形態如第69圖所示,在微處理器2內部性地處理分析指令POU_READ之後,以分析指令POU_FWD的最基本性處理形態進行處理即可。亦即,微處理器2係可藉由其他的基本性處理形態的組合來實現該情形時的處理(在第66圖中以△表示)。
又,在第1引數被指定有輸出POU呼叫依存關係有向圖的式號碼之情形時,未被定義(在第69圖中以×號表示)。此係由於找不出對其下定義的意義或必要性之故。
同樣地,在第1引數被指定有輸出元件交互參照的式號碼情形時,也未被定義(在第69圖中以×號表示)。此亦由於找不出對其下定義的意義或必要性之故。
同樣地,在第1引數被指定有輸出元件依存關係有向圖的式號碼情形時,也未被定義(在第69圖中以×號表示)。此亦由於找不出對其下定義的意義或必要性之故。
5)最後,於以下記載針對對於該等的分析結果進行邏輯運算AND的功能圖示的第70圖之內容。又在第70圖中,關於邏輯運算的處理雖僅顯示分析指令AND的處理,但對於其他屬於邏輯運算之分析指令OR及NOT,同樣的內容亦成立。
其中,在第1引數與第2引數的資料形態為皆相同時,是分析指令AND的基本性的處理形態(在第70圖中以◎表示)。本發明的程式分析支援裝置之各程式分析功能部輸出的資料形式係元件交互參照、元件依存關係有向圖、POU的集合、及POU呼叫依存關係有向圖的四個資料形式中之任一者,對於各情形時的處理流程係已揭示在前述對應的實施形態中。
另一方面,對於第1引數的資料形式與第2引數的資料形式不同時,亦可考慮到不對其下定義的對策。不過,例如在第1引數被指定輸出元件交互參照的式號號,且在第2引數被指定輸出元件依存關係有向圖的式號碼時,指定分析指令AND亦可解釋為有下述意圖:即欲將第1引數的元件交互參照、與關於第2引數的元件依存關係有向圖的元件交互參照之AND處理作為其結果而予以抽出。此已如在第12實施形態所述。針對此種場合時,即使第1引數的資料形式與第2引數的資料形式不同,亦可定義為最接近解釋的處理。此場合時的處理形態係如第70圖所示,第1圖的微處理器2在內部性地處理分析指令VAR_REF之後,藉執行分析指令AND的基本性處理形態加以處理即可。亦即,微處理器2係可藉由其他的基本性處理形態的組合來實現該情形時的處理(在第70圖中以△號表示)。
對於第1引數的資料形式與第2引數的資料形式不同的其他場合,同樣地也可考慮不對其下定義的對策,惟亦可作成在定義為最接近解釋的處理之後,第1圖的微處理器2藉由其他的基本性處理形態之組合來實現亦可(在第70圖中以△號表示)。
再者,在第1引數的資料形式與第2引數的資料形式不同的其他場合中,找不出對其下定義的意義或必要性時,在本發明中未進行其定義(在第70圖中以×號表示)。
第70圖中的該等處理全部為即使在將第1引數與第2引數作相反指定時,亦作為相同解釋而對稱性地定義,但於必須定義為非對稱時,在第1引數與第2引數作相反指定時,亦可進行不同的定義。
如上所述,本發明的重點係在於對第1圖的微處理器2內之程式分析功能部的基本性處理(在第70圖中以◎號或○號所示的處理)、與藉由上述的基本性處理之組合而可實現的處理(在第70圖中以△號表示的處理)進行明確地區分並下定義之點。第70圖中之△號的處理雖係藉◎號或○號的處理之組合來實現,但決非循環。若將其關係彙整成圖,則形成第71圖所示關係。
又於將擔負新的分析功能(分析指令)的部分追加在第1圖的微處理器2時,第65圖所示的(1)至(7)的部分係在軟體上被定義。首先,(1)定義分析指令名,並(2)定義第2引數的指定形態。接著,在(3)至(7)的定義時,留意成為基本性處理形態者(相當於◎號或○號)是哪一個、藉由其他的基本性處理之組合而能實現者(相當於△號)是哪一個、找不出定義之意義或必要性者(相當於×號)是哪一個之點。
更且,該新的分析功能所抽出的資料形式若為在本發明的程式分析支援裝置中尚無的新的資料形式的話,則對於該分析結果需要定義進行AND/OR/NOT的邏輯運算或別的程式分析的功能。
因此,首先在軟體上定義第65圖所示(8)的部分。
接著,對於本發明的程式分析支援裝置之各程式分析功能的定義,在軟體上追加對新的資料形式的定義。亦即,定義第66圖至第69圖的(9)至(12)的部分。
而,第70圖的(13)的部分(新的資料形式彼此間的邏輯運算)係在軟體上被定義。
最後,第70圖的(14)及(16)的部分(新資料形式與其他資料形式的邏輯運算)係在軟體上被定義。
1)對於本發明的程式分析支援裝置追加新的分析功能(分析指令)的功能部時,能以繼承且不損及本發明的程式分析支援裝置之特徵點的方式在軟體上定義該新的分析功能的處理,藉此,可進行自由組合程式分析條件的程式分析,根據該分析結果使用者能迅速地特定成為編輯對象的部位,能使於程式的變更或其動作不良的分析等中特定成為編輯對象的部位用之作業效率化,並縮短作業所需時間。
2)又,執行該新的分析功能的功能部分所抽出的資料形式若為在本發明的程式分析支援裝置中尚未有的新的資料形式,以可對該分析結果進行AND/OR/NOT的邏輯運算之方式、並能以繼承且不損及本發明的程式分析支援裝置之特徵點的方式,定義該新的分析功能及本發明的程式分析支援裝置之各分析功能的處理,因此可進行自由組合程式分析條件的程式分析,根據該分析結果使用者能迅速地特定成為編輯對象的部位,能使於程式的變更或其動作不良的分析等中特定成為編輯對象的部位用之作業效率化,並縮短作業所需時間。
如上所述,本發明為實現可自由地組合程式分析條件之程式分析支援裝置者,若比較本發明的特徵點與前述PATOLIS(註冊商標)之類的專利文獻之檢索,其相異點如下所述。
亦即,專利文獻的檢索係反覆地進行「對於專利文獻的全體集合之母集合施加檢索式」、及「對其結果進行邏輯運算」,成為檢索對象的母集團始終是專利文獻的全體集合。另一方面,本發明則係在程式分析中亦實現反覆地進行「對於分析對象的全體程式之母集合施加檢索式」、及「對其結果進行邏輯運算」者。
更且,本發明係在成為檢索對象的母集團始終是分析對象的全體程式之外,亦實現「對某結果施加別的檢索式」者。
於專利文獻之檢索中,「對專利文獻的全體集合之母集合施加檢索式所得的」結果仍舊是專利文獻的集合,但於程式分析中,「對分析對象全體程式的母集團施加檢索式所得的」結果則是各種資料類別的集合。
因此,存在有以專利文獻之檢索的方式僅反覆進行「對母集團施加檢索式」及「對其結果進行邏輯運算」所不能得到的程式分析。
本發明係作成可反覆進行「對母集團施加檢索式(分析條件式)、「對其結果施加別的檢索式」及「對該等結果進行邏輯運算」,藉此實現所期望的程式分析者。
以上,詳細揭示說明了本發明的實施形態,惟以上的記述係為例示本發明的可運用態樣者,本發明並不受其所限定。亦即,在不脫離本發明的範圍之範圍內可推想出對上述態樣進行各種修正或變形例。
例如,本發明的程式分析支援裝置係可適宜地運用在可程式控制器、動作控制器、數值控制裝置控制器、檢查裝置控制器、或顯示器等各種產業用控制器、或者微電腦中所執行的計測控制程式,俾使在為開發新的計測控制程式而分析過去的計測控制程式之作業、或者開發計測控制程式或除錯時編輯/變更該程式之作業效率化。
1...程式分析支援裝置
2...微處理器
3...資料儲存記憶體
4...顯示部
5...輸入部
6...保存部
7...使用者操作
8...分析對象程式檔
9...與分析對象程式相關的元件註解檔
10...分析條件設定部
11...分析條件執行部
12...變數使用一覽表抽出處理執行部
13...變數依存關係抽出處理執行部
14...POU一覽表抽出處理執行部
15...POU依存關係抽出處理執行部
16...分析結果邏輯運算處理執行部
17...AND處理執行部
18...OR處理執行部
19...NOT處理執行部
20...分析結果顯示部
21...變數使用一覽表顯示部
22...變數依存關係顯示部
23...POU一覽表顯示部
24...POU依存關係顯示部
25...分析結果檔
294...階梯靜態切片條件設定部
第1圖係顯示本發明程式分析支援裝置的硬體構成之方塊圖。
第2圖係顯示第1實施形態的程式分析支援裝置的軟體構成之功能方塊圖。
第3圖係顯示主(MAIN)階梯電路之圖。
第4圖係顯示MAIN階梯IL之圖。
第5圖係顯示副(SUB)階梯電路之圖。
第6圖係顯示SUB階梯IL之圖。
第7圖係顯示程式分析支援畫面之圖。
第8圖係顯示程式分析支援畫面之圖。
第9圖係顯示POU_READ處理流程之流程圖。
第10圖係顯示VAR_REF處理流程之流程圖。
第11圖係顯示VAR_REF結果畫面之圖。
第12圖係顯示VAR_REF結果畫面之圖。
第13圖係顯示VAR_REF結果畫面之圖。
第14圖係顯示AND處理流程之流程圖。
第15圖係顯示AND處理流程之流程圖。
第16圖係顯示AND結果VAR_REF畫面的圖。
第17圖係顯示OR處理流程之流程圖。
第18圖係顯示OR處理流程之流程圖。
第19圖係顯示OR結果VAR_REF畫面之圖。
第20圖係顯示NOT處理流程之流程圖。
第21圖係顯示NOT處理流程之流程圖。
第22圖係顯示NOT結果VAR_REF畫面之圖。
第23圖係顯示第2實施形態的程式分析支援裝置之軟體構成的功能方塊圖。
第24圖係顯示階梯構造之圖。
第25圖係用以說明Instruction/Operator/Operand之圖。
第26圖係顯示元件依存關係之一例圖。
第27圖係顯示元件依存關係之一例圖。
第28圖係顯示元件依存關係之一例圖。
第29圖係顯示程式分析支援畫面之圖。
第30圖係顯示VAR_FWD處理流程之流程圖。
第31圖係顯示VAR_FWD結果有向圖之圖。
第32圖係顯示VAR_FWD結果有向圖之圖。
第33圖係顯示VAR_BWD處理流程之流程圖。
第34圖係顯示VAR_BWD結果有向圖之圖。
第35圖係顯示OR處理流程之流程圖。
第36圖係顯示OR結果VAR有向圖之圖。
第37圖係顯示AND處理流程之流程圖。
第38圖係顯示AND結果VAR有向圖之圖。
第39圖係顯示VAR_REF處理流程之流程圖。
第40圖係顯示VAR_REF結果畫面之圖。
第41圖係顯示VAR_REF結果畫面之圖。
第42圖係顯示第7實施形態之程式分析支援裝置的軟體構成之功能方塊圖。
第43圖係顯示構成程式的全部的POU之圖。
第44圖係顯示程式分析支援畫面圖。
第45圖係顯示POU_FWD處理流程之流程圖。
第46圖係顯示POU_FWD結果有向圖之圖。
第47圖係顯示POU_FWD結果有向圖之圖。
第48圖係顯示POU_BWD處理流程的流程圖。
第49圖係顯示POU_BWD結果有向圖之圖。
第50圖係顯示OR處理流程之流程圖。
第51圖係顯示OR結果POU有向圖之圖。
第52圖係顯示AND處理流程之流程圖。
第53圖係顯示AND結果POU有向圖之圖。
第54圖係顯示程式分析支援畫面之圖。
第55圖係顯示POU_READ處理流程之流程圖。
第56圖係顯示VAR_REF處理流程之流程圖。
第57圖係顯示VAR_FWD處理流程之流程圖。
第58圖係顯示POU_READ處理流程之流程圖。
第59圖係顯示POU_READ處理流程之流程圖。
第60圖係顯示AND處理流程之流程圖。
第61圖係顯示AND結果VAR_REF畫面之圖。
第62圖係顯示階梯程式靜態切片畫面之圖。
第63圖係顯示第13實施形態的程式分析支援裝置的軟體構成之功能方塊圖。
第64圖係顯示階梯程式靜態切片處理流程之流程圖。
第65圖係顯示於新指令定義時定義成為必要的處理流程之圖。
第66圖係顯示對應VAR_REF指令定義的處理流程之圖。
第67圖係顯示對應VAR_FWD指令定義的處理流程之圖。
第68圖係顯示對應POU_READ指令定義的處理流程之圖。
第69圖係顯示對應POU_FWD指令定義的處理流程之圖。
第70圖係顯示對應AND指令定義的處理流程之圖。
第71圖係顯示分析指令與其分析結果資料的關係之圖。
1...程式分析支援裝置
2...微處理器
7...使用者操作
8...分析對象程式檔
9...與分析對象程式相關的元件註解檔
10...分析條件設定部
11...分析條件執行部
12...變數使用一覽表抽出處理執行部
14...POU一覽表抽出處理執行部
16...分析結果邏輯運算處理執行部
17...AND處理執行部
18...OR處理執行部
19...NOT處理執行部
20...分析結果顯示部
21...變數使用一覽表顯示部
25...分析結果檔
Claims (15)
- 一種程式分析支援裝置,係具備:分析條件設定部(10),係關於由程式模組所構成的程式,輸入並保持由使用者所指定之前述程式的程式分析條件;分析條件執行部(11),係根據前述程式分析條件執行前述程式的分析處理;以及分析結果顯示部(20),係製成並輸出用以顯示由前述分析條件執行部所處理過之分析結果的顯示資料;而前述分析條件執行部係具有:變數依存關係抽出處理執行部(13),係輸出用以提供記載在前述程式模組中之各變數的依存關係有向圖的信號;以及POU一覽表抽出處理執行部(14),係輸出用以提供前述程式模組之集合的信號;其中前述變數依存關係抽出處理執行部係以前述程式模組之集合為分析對象範圍,輸出用以提供前述各變數的依存關係有向圖的前述信號,而前述POU一覽表抽出處理執行部係抽出用以提供存在於前述各變數的依存關係有向圖之程式模組的集合之信號。
- 如申請專利範圍第1項之程式分析支援裝置,其中,前述POU一覽表抽出處理執行部所輸出的前述程式模組之集合係為構成前述程式的所有程式模組之集合。
- 如申請專利範圍第1項之程式分析支援裝置,其中,前述分析條件執行部復具備變數使用一覽表抽出處理執行部(12),該變數使用一覽表抽出處理執行部係抽出用以提供存在於前述各變數的依存關係有向圖之各變數的交互參照之信號。
- 一種程式分析支援裝置,係具備:分析條件設定部(10),係關於由複數個程式模組所構成的程式,輸入並保持由使用者所指定的前述程式之程式分析條件;分析條件執行部(11),係根據前述程式分析條件執行前述程式的分析處理;以及分析結果顯示部(20),係製成並輸出用以顯示由前述分析條件執行部所處理過的分析結果之顯示資料;而前述分析條件執行部係具有:POU依存關係抽出處理執行部(15),係抽出將前述複數個程式模組的呼叫關係作為依存關係有向圖而提供之信號;以及POU一覽表抽出處理執行部(14),係輸出用以提供前述複數個程式模組的集合之信號;其中前述POU依存關係抽出處理執行部係以前述複數個程式模組的集合為分析對象範圍,抽出用以提供與前述複數個程式模組的呼叫相關之前述依存關係有向圖的信號,而前述POU一覽表抽出處理執行部係輸出用以提供存在於與前述POU依存關係抽出處理執行部所輸出 的前述複數個程式模組的呼叫相關之前述依存關係有向圖的程式模組之集合的信號。
- 如申請專利範圍第4項之程式分析支援裝置,其中,前述分析條件執行部復具備變數使用一覽表抽出處理執行部(12),該變數使用一覽抽出部抽出用以提供存在於與前述POU依存關係抽出處理執行部所輸出的前述複數個程式模組的呼叫相關之前述依存關係有向圖的程式模組中所存在之各變數的交互參照之信號。
- 如申請專利範圍第4項之程式分析支援裝置,其中,前述分析條件執行部復具備變數依存關係抽出處理執行部(13),該變數依存關係抽出處理執行部以存在於與前述複數個程式模組的呼叫相關的前述依存關係有向圖中所存在之程式模組的集合為分析對象範圍,輸出用以提供記載在該程式模組中的各變數的依存關係有向圖之信號。
- 如申請專利範圍第1項及第4項中任一項之程式分析支援裝置,其中,於對前述分析條件執行部使其復具備新的程式分析功能處理執行部時,前述新的程式分析功能處理執行部係以前述新的程式分析功能處理執行部的輸出結果之資料形式及在前述分析條件執行部業已具有的程式分析功能處理執行部分的輸出結果之資料形式作為分析對象範圍,對於諸該資料形式之各者定義是否執行分析處理,並針對定義為執行分析處理之資料形式,將其作為分析對象並處 理新的程式分析功能,針對未定義為執行分析處理之資料形式,則不處理將其作為分析對象之新的程式分析功能。
- 如申請專利範圍第1項及第4項中任一項之程式分析支援裝置,其中,於對前述分析條件執行部使其復具備新的程式分析功能處理執行部時,前述分析條件執行部業已具有的程式分析功能處理執行部分係以前述新的程式分析功能處理執行部的輸出結果之資料形式作為分析對象,定義是否執行分析處理,並在定義為執行分析處理之情形中,將其作為分析對象並處理該程式分析功能,在未定義為執行分析處理之情形中,不處理將其作為分析對象之該程式分析功能。
- 一種程式分析支援裝置,係具備:分析條件設定部(10),係關於由n(n係2以上的整數)個程式模組所構成的程式,輸入並保持由使用者所指定的前述程式之程式分析條件;分析條件執行部(11),係根據前述程式分析條件執行前述程式的分析處理;以及分析結果顯示部(20),係製成並輸出用以顯示由前述分析條件執行部所處理過的分析結果之顯示資料;而前述分析條件執行部係具有下列任一者:POU一覽表抽出處理執行部(14),係輸出用以提供在前述n個程式模組中之m(2≦m≦n)個程式模組的集合之第1信號; 變數使用一覽表抽出處理執行部(12),係將前述POU一覽表抽出處理執行部所輸出的前述m個程式模組的集合作為分析對象範圍,抽出用以提供記載在前述m個程式模組的各個中之各變數的交互參照之第2信號;變數依存關係抽出處理執行部(13),係輸出用以提供記載在前述程式模組中之各變數的依存關係有向圖的信號;以及POU依存關係抽出處理執行部(15),係抽出將前述複數個程式模組的呼叫關係作為依存關係有向圖而提供之信號;且前述分析條件執行部復具備分析結果邏輯運算處理執行部(16),該分析結果邏輯運算處理執行部係處理由前述分析條件執行部所具有的程式分析功能所處理過的分析結果彼此間的邏輯運算。
- 如申請專利範圍第9項之程式分析支援裝置,其中,前述分析結果邏輯運算處理執行部係於被指定為邏輯運算的對象之由前述分析條件執行部所具有的程式分析功能所處理過的分析結果的一方之資料形式的類別與另一方之資料形式的類別不同時,以前述分析結果的一方作為分析對象而藉由前述分析條件執行部所具有的程式分析功能進一步進行分析處理,藉此將前述分析結果的一方之資料形式的類別作成與前述分析結果的另一方的前述之資料形式的類別相同之後,進行前述邏輯運算的處理。
- 如申請專利範圍第9項之程式分析支援裝置,其中,於對前述分析條件執行部使其復具備新的程式分析功能處理執行部時,前述新的程式分析功能處理執行部的輸出結果之資料形式,係被定義為前述分析結果邏輯運算處理執行部所處理的前述邏輯運算的對象,並在定義為邏輯運算的對象之情形中,將其作為對象並處理該邏輯運算功能,在未定義為邏輯運算的對象之情形中,不處理將其作為對象之該邏輯運算功能。
- 如申請專利範圍第1項、第4項及第9項中任一項之程式分析支援裝置,其中,前述分析條件設定部係以具有固有的式號碼的條件式之形式輸入前述程式分析條件。
- 如申請專利範圍第1項、第4項及第9項中任一項之程式分析支援裝置,其中,前述分析條件設定部係將被輸入的前述程式分析條件轉換成具有固有式號碼的條件式之形式而執行輸入處理。
- 如申請專利範圍第12項之程式分析支援裝置,其中,前述分析結果顯示部係依每一前述條件式的分析結果藉由與該分析結果之資料形式的類別相對應的類別用顯示部顯示該分析結果。
- 如申請專利範圍第13項之程式分析支援裝置,其中,前述分析結果顯示部係依每一前述條件式的分析 結果藉由與該分析結果之資料形式的類別相對應的類別用顯示部顯示該分析結果。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009034895 | 2009-02-18 | ||
PCT/JP2009/064163 WO2010095289A1 (ja) | 2009-02-18 | 2009-08-11 | プログラム解析支援装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201032011A TW201032011A (en) | 2010-09-01 |
TWI436180B true TWI436180B (zh) | 2014-05-01 |
Family
ID=42633586
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW098134579A TWI436180B (zh) | 2009-02-18 | 2009-10-13 | 程式分析支援裝置 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9087151B2 (zh) |
JP (1) | JP5138090B2 (zh) |
CN (1) | CN102317877B (zh) |
DE (1) | DE112009004306T5 (zh) |
TW (1) | TWI436180B (zh) |
WO (1) | WO2010095289A1 (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009237762A (ja) * | 2008-03-26 | 2009-10-15 | Toshiba Corp | プログラム解析装置、プログラム解析方法および解析プログラム |
JP5762154B2 (ja) * | 2011-06-08 | 2015-08-12 | 三菱電機株式会社 | 情報処理装置及び情報処理方法及びプログラム |
US20140304551A1 (en) * | 2012-12-17 | 2014-10-09 | Mitsubishi Electric Corporation | Program analysis supporting device and control device |
WO2014102700A1 (en) * | 2012-12-24 | 2014-07-03 | Abb Global Industries And Services Limited | A method for performing impact analysis of change in a control application and a system therefor |
JP5777837B2 (ja) * | 2013-03-04 | 2015-09-09 | 三菱電機株式会社 | プログラム開発支援装置およびその方法 |
CN104570940A (zh) * | 2013-10-24 | 2015-04-29 | 鸿富锦精密工业(深圳)有限公司 | Cnc加工调机***及方法 |
KR101632864B1 (ko) * | 2014-06-02 | 2016-06-22 | 미쓰비시덴키 가부시키가이샤 | 프로그래머블 컨트롤러 시스템, 프로그래머블 컨트롤러, 프로그램 표시장치, 프로그램의 표시 방법 |
KR20170103950A (ko) * | 2015-04-23 | 2017-09-13 | 미쓰비시덴키 가부시키가이샤 | 위치 결정 제어장치 |
CN107615191B (zh) * | 2015-06-01 | 2019-03-15 | 三菱电机株式会社 | 调试装置及调试方法 |
JP6309927B2 (ja) | 2015-09-16 | 2018-04-11 | ファナック株式会社 | Ncプログラム運転と連動した関連信号の自動トレース機能を有する数値制御装置 |
JP6407919B2 (ja) * | 2016-06-15 | 2018-10-17 | ファナック株式会社 | 数値制御装置および変数判定方法 |
JP6895803B2 (ja) * | 2017-05-24 | 2021-06-30 | 三菱電機株式会社 | プラント監視制御システムの保守計算機及び保守プログラム |
CN111381813B (zh) * | 2018-12-28 | 2023-03-14 | 抖音视界有限公司 | 前端页面调试方法、装置、计算机设备和存储介质 |
JP7188198B2 (ja) * | 2019-03-13 | 2022-12-13 | オムロン株式会社 | グラフ表示装置、グラフ表示方法、及びグラフ表示プログラム |
JP7183877B2 (ja) * | 2019-03-13 | 2022-12-06 | オムロン株式会社 | グラフ表示装置、グラフ表示方法、及びグラフ表示プログラム |
US11300612B2 (en) | 2019-04-18 | 2022-04-12 | Mitsubishi Electric Corporation | Debug support device, debug support method, and computer readable storage medium |
US20210064621A1 (en) * | 2019-09-04 | 2021-03-04 | Wertintelligence | Optimizing method of search formula for patent document and device therefor |
CN115427901B (zh) | 2020-04-14 | 2023-10-03 | 三菱电机株式会社 | 存储介质、调试辅助装置及调试辅助方法 |
CN114416564A (zh) * | 2022-01-20 | 2022-04-29 | 南方电网数字电网研究院有限公司 | 一种微服务***中循环依赖检测方法及*** |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2526692B2 (ja) * | 1990-03-02 | 1996-08-21 | 三菱電機株式会社 | プログラマブルコントロ―ラのプログラミング方法 |
JPH0916389A (ja) * | 1995-07-03 | 1997-01-17 | Nippon Telegr & Teleph Corp <Ntt> | プログラム部品自動生成方法及び装置 |
AU5273100A (en) * | 1999-05-17 | 2000-12-05 | Foxboro Company, The | Methods and apparatus for control configuration with versioning, security, composite blocks, edit selection, object swapping, formulaic values and other aspects |
JP3631681B2 (ja) | 2001-02-23 | 2005-03-23 | 株式会社ビーコンインフォメーションテクノロジー | データ管理システム、データ管理方法及びコンピュータプログラム |
JP3887550B2 (ja) | 2001-07-25 | 2007-02-28 | 株式会社東芝 | クロスリファレンス構築装置、クロスリファレンス構築方法及びクロスリファレンス構築用プログラム |
JP3847665B2 (ja) * | 2002-05-30 | 2006-11-22 | 株式会社デジタル | 制御プログラム検索装置、および、そのプログラム |
US7225037B2 (en) * | 2003-09-03 | 2007-05-29 | Unitronics (1989) (R″G) Ltd. | System and method for implementing logic control in programmable controllers in distributed control systems |
DE602005015052D1 (de) * | 2004-03-31 | 2009-08-06 | Omron Tateisi Electronics Co | Vorrichtung zur Entwicklungsunterstützung |
JP4242361B2 (ja) * | 2004-03-31 | 2009-03-25 | オムロン株式会社 | 開発支援装置 |
ES2687433T3 (es) * | 2005-02-03 | 2018-10-25 | Mitsubishi Denki Kabushiki Kaisha | Dispositivo y método de soporte de la generación de código de programa, dispositivo y método de ejecución del programa, dispositivo y método de compresión del código de programa, programa para el mismo |
JP5019021B2 (ja) | 2005-03-15 | 2012-09-05 | オムロン株式会社 | 制御プログラム開発支援装置 |
JP4780308B2 (ja) | 2005-03-15 | 2011-09-28 | オムロン株式会社 | 制御プログラム開発支援装置及びコンピュータプログラム |
JP2007122370A (ja) * | 2005-10-27 | 2007-05-17 | Canon Inc | プロジェクト情報管理システム |
JP2008293486A (ja) | 2007-04-25 | 2008-12-04 | Hitachi Ltd | ソースコード解析機器、解析プログラムおよび解析方法 |
-
2009
- 2009-08-11 CN CN200980156859.9A patent/CN102317877B/zh not_active Expired - Fee Related
- 2009-08-11 DE DE112009004306T patent/DE112009004306T5/de not_active Ceased
- 2009-08-11 US US13/144,037 patent/US9087151B2/en not_active Expired - Fee Related
- 2009-08-11 JP JP2011500447A patent/JP5138090B2/ja not_active Expired - Fee Related
- 2009-08-11 WO PCT/JP2009/064163 patent/WO2010095289A1/ja active Application Filing
- 2009-10-13 TW TW098134579A patent/TWI436180B/zh not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
US9087151B2 (en) | 2015-07-21 |
WO2010095289A1 (ja) | 2010-08-26 |
CN102317877A (zh) | 2012-01-11 |
JPWO2010095289A1 (ja) | 2012-08-16 |
JP5138090B2 (ja) | 2013-02-06 |
TW201032011A (en) | 2010-09-01 |
DE112009004306T5 (de) | 2012-06-06 |
CN102317877B (zh) | 2014-07-09 |
US20110270424A1 (en) | 2011-11-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI436180B (zh) | 程式分析支援裝置 | |
KR101885089B1 (ko) | 건축 bim 설계 파일의 엑셀 파일 전환 방법 | |
JP5775829B2 (ja) | ソフトウェアの構造可視化プログラムおよびシステム | |
EP2555109B1 (en) | Search utility program for software developers | |
US9678628B2 (en) | Method for generating control-code by a control-code-diagram | |
CN107168705B (zh) | 图形界面语义描述***及其建立方法和操作路径生成方法 | |
CN107908559B (zh) | 一种测试案例设计方法及装置 | |
US11314225B2 (en) | Systems and methods for evaluating assessments | |
US10871951B2 (en) | Code correction | |
CN111767004A (zh) | 基于逆波兰算法的数字示波器数学运算处理方法 | |
CN110209902B (zh) | 对机器学习过程中的特征生成过程可视化的方法和*** | |
US20180088914A1 (en) | Method for supporting program creation and apparatus for supporting program creation | |
JP4835859B2 (ja) | 状態遷移図作成装置および状態遷移図作成方法 | |
CN111966575A (zh) | 一种航空机载显示软件的图形自动化测试方法 | |
JP2006277282A (ja) | モデル評価解析システムおよびモデル評価解析プログラム | |
CN116245076A (zh) | Drc测试版图库的自动构造方法及drc方法、***、可读存储介质 | |
JP6002507B2 (ja) | ソフトウェア検証用プログラムおよびソフトウェア検証システム | |
Liu et al. | Visual exploration of software evolution via topic modeling | |
JP2015056140A (ja) | クローン検出方法及びクローン共通関数化方法 | |
Bragagnolo et al. | Challenges for layout validation: Lessons learned | |
CN113326193A (zh) | 一种小程序测试方法及装置 | |
Schöpp et al. | Requirements-based code model checking | |
Dilruk | Coding standard violation detection by pattern analysis | |
CN110637522B (zh) | 控制律增益模型自动生成方法及*** | |
JP2001060151A (ja) | プログラム解析装置及びプログラム解析用プログラム又はプログラム解析用データを記憶した記憶媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |