Plc的cpu單元、plc用的系統(tǒng)程序、保存有plc用的系統(tǒng)程序的記錄介質(zhì)、plc系統(tǒng)、plc輔助 ...的制作方法
【專利摘要】系統(tǒng)程序包含過程庫(procedure?library),該過程庫中至少有用于對控制程序的執(zhí)行進行控制的過程(procedure)和用于對輸出數(shù)據(jù)的輸出及輸入數(shù)據(jù)的輸入進行控制的過程。系統(tǒng)程序在包含收錄在過程庫中的過程的執(zhí)行順序的指定的排程構(gòu)建數(shù)據(jù)保存在存儲單元中時,使微處理器按照包含在排程構(gòu)建數(shù)據(jù)中的過程的執(zhí)行順序的指定來執(zhí)行收錄在過程庫中的過程。
【專利說明】PLC的CPU單元、PLC用的系統(tǒng)程序、保存有PLC用的系統(tǒng)程序的記錄介質(zhì)、PLC系統(tǒng)、PLC輔助裝置、PLC輔助程序以及保存有PLC輔助程序的記錄介質(zhì)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及用于對機械及器材(設(shè)備)等的動作進行控制的PLC (ProgrammableLogic Controller,或者還稱為可編程控制器)的控制動作的排程(schedule)。
【背景技術(shù)】
[0002]PLC例如包括具有用于執(zhí)行控制程序的微處理器的CPU (Central ProcessingUnit)單元、負責(zé)從外部的開關(guān)或傳感器輸入信號并向外部的繼電器或觸動器輸出信號的10 (Input Output:輸入/輸出)單元等多個單元。CPU單元通過反復(fù)向其他單元輸出輸出數(shù)據(jù),從其他單元輸入輸入數(shù)據(jù),執(zhí)行使用輸入數(shù)據(jù)生成輸出數(shù)據(jù)的控制程序,從而對控制對象進行控制??刂瞥绦虬凑沼脩舻目刂颇康膩砩傻挠脩舫绦颉?刂瞥绦蛞部梢园谟脩舫绦蛑械闹甘緢?zhí)行的動態(tài)運算程序中。
[0003]PLC能夠如下面例示那樣采用各種方式,對輸入數(shù)據(jù)的輸入、輸出數(shù)據(jù)的輸出、控制程序及PLC系統(tǒng)程序的執(zhí)行,進行排程。
[0004]如在專利文獻1(日本特開2000-105604號公報)中示出那樣,在以往的一般的PLC中,在各控制循環(huán)中執(zhí)行一個序列程序(sequence program)(控制程序)和一組輸出刷新(refresh)及輸入刷新。在該情況下,控制循環(huán)與控制程序的執(zhí)行循環(huán)相等。
[0005]還已知在PLC中分時執(zhí)行多個控制程序。
[0006]在專利文獻2 (日本特開2007-140655號公報)中記載有如下技術(shù),S卩,在用一個CPU對用于控制電機的動態(tài)控制功能和執(zhí)行序列運算的PLC功能進行處理的裝置中,在每個基本時鐘的一個循環(huán)中,執(zhí)行“恒定周期動態(tài)控制處理及各軸處理”和“高速序列處理”,進而在各基本時鐘循環(huán)中的剩余的時間內(nèi),執(zhí)行“低速序列處理”或“非恒定周期動態(tài)控制處理”。另外,還記載有如下技術(shù),即,在低速序列處理在基本時鐘循環(huán)內(nèi)未能結(jié)束的情況下,停止相當(dāng)于規(guī)定的基本時鐘次數(shù)的時間之后執(zhí)行剩余的處理(例如,第0004段)。
[0007]在專利文獻3 (日本特開2000-293210號公報)中關(guān)于控制裝置的動作記載有如下技術(shù),即,與周期任務(wù)(控制程序)相獨立地分別準(zhǔn)備多個進行輸入處理及輸出處理的刷新塊,并在各控制循環(huán)中分別選擇性地執(zhí)行一些刷新塊和一些周期任務(wù)。
[0008]現(xiàn)有技術(shù)文獻
[0009]專利文獻
[0010]專利文獻1:日本特開2000-105604號公報
[0011]專利文獻2:日本特開2007-140655號公報
[0012]專利文獻3:日本特開2000-293210號公報
【發(fā)明內(nèi)容】
[0013]發(fā)明要解決的問題[0014]近年來,在信息【技術(shù)領(lǐng)域】,微處理器及通信網(wǎng)絡(luò)的高速化取得了進展。因此,PLC也能夠使用這些技術(shù),來進行多個控制程序的分時執(zhí)行,并且能夠采用高速的PLC系統(tǒng)總線或現(xiàn)場網(wǎng)絡(luò)或這兩者。從而,對裝置的處理速度方面的限制已減小,以用于提高對如下的控制動作的排程的自由度,該控制動作包括輸入數(shù)據(jù)的輸入、輸出數(shù)據(jù)的輸出、控制程序及PLC系統(tǒng)程序的執(zhí)行。在此,對控制動作的排程的自由度還包括將在哪個時刻進行的輸入和輸出與哪個控制程序的執(zhí)行建立對應(yīng)關(guān)聯(lián)關(guān)系的情況。另外,根據(jù)具體的控制目的,存在各種最佳的控制動作的排程,因此優(yōu)選對PLC產(chǎn)品的控制動作的排程的自由度高的一方。
[0015]然而,在實際的PLC產(chǎn)品中,實際情況是,控制動作的排程被PLC產(chǎn)品的系統(tǒng)程序決定,即使能夠從一些排程模式中的選擇一個排程模式以及能夠調(diào)整執(zhí)行參數(shù),也不能由用戶自由建立控制動作的排程。
[0016]在此,從一些排程模式中選擇排程模式是指,例如從控制程序的執(zhí)行循環(huán)中,提供以“輸出-輸入-控制程序執(zhí)行-其他系統(tǒng)處理”的順序執(zhí)行還是以“輸入-控制程序執(zhí)行-輸出-其他系統(tǒng)處理”的順序執(zhí)行這樣的選項的程度。另外,執(zhí)行參數(shù)的調(diào)整是指,在分時執(zhí)行多個控制程序的情況下,對賦予各控制程序的執(zhí)行優(yōu)先級進行調(diào)整的程度。
[0017]若要大幅變更控制動作的排程模式或?qū)⑿伦芳拥某绦蚰K(例如,溫度控制用程序模塊、圖像處理用程序模塊等)所承擔(dān)的處理嵌入到控制動作的排程中,則需要更替PLC產(chǎn)品的系統(tǒng)程序的至少一部分。這樣一來,PLC產(chǎn)品會變成別的機種,因而對PLC產(chǎn)品的廠商及用戶的管理負擔(dān)會增大。另外,在與用戶的控制目的相對應(yīng)的最佳的排程模式為特殊的排程模式的情況下,現(xiàn)實上用戶難以得到安裝有那樣的排程模式的PLC產(chǎn)品。
[0018]另外,例如將如下結(jié)構(gòu)作為多機種的PLC產(chǎn)品所共通包含的平臺,則能夠提高PLC產(chǎn)品的廠商的開發(fā)效率并降低成本,這種結(jié)構(gòu)是指,在將PLC產(chǎn)品提供給用戶的階段以后不能變更控制動作的排程模式的情況下,使用共通的系統(tǒng)程序也能夠?qū)崿F(xiàn)多種排程模式的結(jié)構(gòu)。
[0019]本發(fā)明的目的在于,不需更替系統(tǒng)程序,或即使使用共通(通用)的系統(tǒng)程序,也能夠?qū)崿F(xiàn)對PLC的控制動作的排程的高自由度。
[0020]用于解決問題的手段
[0021]根據(jù)本發(fā)明的一個技術(shù)方案,提供用于對控制對象進行控制的PLC的CPU單元。PLC的CPU單元包含微處理器、存儲單元及通信電路。存儲單元用于保存系統(tǒng)程序、控制程序及排程構(gòu)建數(shù)據(jù)。微處理器執(zhí)行保存在存儲單元中的系統(tǒng)程序及控制程序。通信電路發(fā)送通過控制程序的執(zhí)行來生成的輸出數(shù)據(jù),并且接收執(zhí)行控制程序時使用的輸入數(shù)據(jù)。系統(tǒng)程序包含過程庫(procedure library),該過程庫中至少收錄有用于對控制程序的執(zhí)行進行控制的過程(procedure)和用于對輸出數(shù)據(jù)的輸出及輸入數(shù)據(jù)的輸入進行控制的過程。系統(tǒng)程序,在包含有對收錄在過程庫中的過程的執(zhí)行順序的指定的排程構(gòu)建數(shù)據(jù)保存在存儲單元中時,使微處理器按照包含在排程構(gòu)建數(shù)據(jù)中的對過程的執(zhí)行順序的指定,來執(zhí)行收錄在過程庫中的過程。
[0022]優(yōu)選地,排程構(gòu)建數(shù)據(jù),包含用于利用收錄在過程庫中的過程來生成線程的指定信息。系統(tǒng)程序,包含按照包含在排程構(gòu)建數(shù)據(jù)中的用于生成線程的指定信息來生成線程的處理,以作為對PLC的控制動作的執(zhí)行準(zhǔn)備處理。
[0023]更優(yōu)選地,排程構(gòu)建數(shù)據(jù),包含用于在線程的執(zhí)行過程中起動其他線程的指定信息,以作為與線程相關(guān)的數(shù)據(jù)。
[0024]或優(yōu)選地,排程構(gòu)建數(shù)據(jù),用于對成為反復(fù)執(zhí)行的單位的任務(wù)進行設(shè)定的指定信息,并且該任務(wù)包含一個或多個線程;系統(tǒng)程序,包含按照排程構(gòu)建數(shù)據(jù)中的用于設(shè)定任務(wù)的指定信息來設(shè)定任務(wù)的處理,以作為PLC的控制動作的執(zhí)行準(zhǔn)備處理。
[0025]優(yōu)選地,PLC的CPU單元,還具有用于獲取排程構(gòu)建數(shù)據(jù)的排程構(gòu)建數(shù)據(jù)獲取單
J Li ο
[0026]優(yōu)選地,在存儲單元中,保存有包含用于反復(fù)執(zhí)行如下這些處理的針對過程的執(zhí)行順序的指定信息,這些處理包括:發(fā)送輸出數(shù)據(jù),接收輸入數(shù)據(jù),通過執(zhí)行控制程序,從而使用輸入數(shù)據(jù)生成輸出數(shù)據(jù)。
[0027]更優(yōu)選地,PLC的CPU單元還具有用于設(shè)定控制循環(huán)周期的單元;通信電路,按照每個控制循環(huán),發(fā)送輸出數(shù)據(jù)及接收輸入數(shù)據(jù);排程構(gòu)建數(shù)據(jù)包含如下的針對過程的執(zhí)行順序的指定信息,該過程用于使微處理器執(zhí)行如下處理:在控制程序已執(zhí)行結(jié)束的控制循環(huán)的下一個控制循環(huán)中,在由通信電路執(zhí)行發(fā)送輸出數(shù)據(jù)及接收輸入數(shù)據(jù)之后,使控制程序開始執(zhí)行;在控制程序未執(zhí)行結(jié)束的控制循環(huán)的下一個控制循環(huán)中,執(zhí)行控制程序中的未執(zhí)行的部分。
[0028]或優(yōu)選地,系統(tǒng)程序包含以下這些處理,以作為PLC的控制動作的執(zhí)行準(zhǔn)備處理,這些處理包括:在存儲單元中生成用于保存所接收的輸入數(shù)據(jù)的接收緩存的處理;針對由控制程序參照的每個輸入數(shù)據(jù),在存儲單元中生成由該控制程序作為輸入數(shù)據(jù)的參照對象的輸入同步緩存的處理。排程構(gòu)建數(shù)據(jù)包含如下的針對過程的執(zhí)行順序的指定信息,該過程用于使微處理器執(zhí)行以下處理:輸入復(fù)制處理,將所接收的輸入數(shù)據(jù)從接收緩存復(fù)制到與該輸入數(shù)據(jù)相對應(yīng)的輸入同步緩存中,控制程序開始處理,使控制程序開始執(zhí)行。
[0029]更優(yōu)選地,排程構(gòu)建數(shù)據(jù)包含如下的針對過程的執(zhí)行順序的指定信息,該過程用于使微處理器執(zhí)行如下處理:按照控制循環(huán)的整數(shù)倍的每個執(zhí)行循環(huán),執(zhí)行控制程序開始處理;將在控制程序的執(zhí)行循環(huán)開始后的控制循環(huán)中接收的輸入數(shù)據(jù)作為對象,執(zhí)行輸入復(fù)制處理。
[0030]或更優(yōu)選地,系統(tǒng)程序還包含以下這些處理,以作為PLC的控制動作的執(zhí)行準(zhǔn)備處理,這些處理包括:在存儲單元中生成用于保存應(yīng)發(fā)送的輸出數(shù)據(jù)的發(fā)送緩存的處理;在存儲單元中,針對每個輸出數(shù)據(jù),生成用于保存復(fù)制到發(fā)送緩存中的輸出數(shù)據(jù)的輸出同步緩存的處理。排程構(gòu)建數(shù)據(jù)還包含如下的針對過程的執(zhí)行順序的指定信息,該過程用于使微處理器執(zhí)行輸出復(fù)制處理,該輸出復(fù)制處理用于將輸出數(shù)據(jù)從輸出同步緩存復(fù)制到發(fā)送緩存中。
[0031]更優(yōu)選地,排程構(gòu)建數(shù)據(jù)包含如下的針對過程的執(zhí)行順序的指定信息,該過程用于使微處理器執(zhí)行如下處理:針對控制循環(huán)的整數(shù)倍的每個執(zhí)行循環(huán),執(zhí)行控制程序開始處理;在控制程序的執(zhí)行循環(huán)的最初的控制循環(huán)中,在之前的執(zhí)行循環(huán)中通過執(zhí)行控制程序而生成的輸出數(shù)據(jù)被從發(fā)送緩存發(fā)送的時刻,執(zhí)行輸出復(fù)制處理。
[0032]或優(yōu)選地,存儲單元,還用于保存與控制程序所使用的變量相關(guān)的屬性數(shù)據(jù);在變量是由多個控制程序參照的全局變量的情況下,屬性數(shù)據(jù)包含能夠改寫該變量的一個主側(cè)控制程序的指定信息以及僅能夠參照該變量的一個或多個參照側(cè)控制程序的指定信息。系統(tǒng)程序包含以下處理,以作為PLC的控制動作的執(zhí)行準(zhǔn)備處理,這些處理包括:在存儲單元中生成用于保存全局變量的全局變量區(qū)域的處理;針對各參照側(cè)控制程序,按照由該參照側(cè)控制程序參照的每個全局變量,在由該參照側(cè)控制程序參照全局變量時,取代全局變量區(qū)域而在存儲單元中生成作為參照對象的變量同步緩存。排程構(gòu)建數(shù)據(jù)包含如下的針對過程的執(zhí)行順序的指定信息,該過程用于使微處理器執(zhí)行以下這些處理,這些處理包括:主側(cè)開始處理,使主側(cè)控制程序開始執(zhí)行;變量復(fù)制處理,如果主側(cè)控制程序執(zhí)行結(jié)束,則將由該主側(cè)控制程序改寫的全局變量從全局變量區(qū)域復(fù)制到與該全局變量相對應(yīng)的變量同步緩存中;參照側(cè)開始處理,使參照側(cè)控制程序開始執(zhí)行。
[0033]或優(yōu)選地,控制程序包括:動態(tài)運算程序,計算用于對電機的動作進行控制的動態(tài)指令值;用戶程序,是根據(jù)用戶的控制目的而生成的程序,包含對動態(tài)運算程序賦予其執(zhí)行所需的指示。排程構(gòu)建數(shù)據(jù)包含如下的針對過程的執(zhí)行順序的指定信息,該過程用于使PLC的CPU單元反復(fù)依次執(zhí)行以下處理:利用通信電路發(fā)送輸出數(shù)據(jù)以及接收輸入數(shù)據(jù)、執(zhí)行用戶程序、執(zhí)行動態(tài)運算程序。
[0034]或優(yōu)選地,通信電路,以控制循環(huán)周期,發(fā)送輸出數(shù)據(jù)并接收輸入數(shù)據(jù);控制程序包含第一控制程序及第二控制程序;第一控制程序包含第一動態(tài)運算程序,該第一動態(tài)運算程序用于生成用于對電機的動作進行控制的第一動態(tài)指令值數(shù)據(jù);第二控制程序包含第二動態(tài)運算程序,該第二動態(tài)運算程序用于生成用于對電機的動作進行控制的第二動態(tài)指令值數(shù)據(jù);第一控制程序及第二控制程序中的至少一個控制程序包含用戶程序,該用戶程序是根據(jù)用戶的控制目的而生成的,包含向第一動態(tài)運算程序及第二動態(tài)運算程序賦予其執(zhí)行所需的指示的指令;排程構(gòu)建數(shù)據(jù)包含如下的針對過程的執(zhí)行順序的指定信息,該過程用于使微處理器執(zhí)行以下這些處理,這些處理包括:按照與控制循環(huán)周期相同的周期的每個第一執(zhí)行循環(huán),使第一控制程序開始執(zhí)行,按照控制循環(huán)周期的二以上的整數(shù)倍的周期的每個第二執(zhí)行循環(huán),使第二控制程序開始執(zhí)行;在第二執(zhí)行循環(huán)開始的控制循環(huán)中,在第一控制程序的執(zhí)行結(jié)束后使第二控制程序開始執(zhí)行,如果到該控制循環(huán)結(jié)束為止,第二控制程序尚未結(jié)束,則在下一個控制循環(huán)中,第一控制程序執(zhí)行結(jié)束之后,使第二控制程序中的未執(zhí)行的部分的執(zhí)行開始。
[0035]或優(yōu)選地,微處理器至少包含第一核及第二核;控制程序包含第一控制程序和第二控制程序;排程構(gòu)建數(shù)據(jù)包含如下的針對過程的執(zhí)行順序的指定信息,該過程用于在發(fā)送完輸出數(shù)據(jù)及接收完輸入數(shù)據(jù)之后,使第一核執(zhí)行第一控制程序,并且使第二核與第一控制程序的執(zhí)行并行地執(zhí)行第二控制程序。
[0036]根據(jù)本發(fā)明的另一技術(shù)方案,提供一種PLC用的系統(tǒng)程序,在具有微處理器、存儲單元及通信電路的用于對控制對象進行控制的PLC的CPU單元中,該PLC用的系統(tǒng)程序被保存在存儲單元中并且被微處理器執(zhí)行。存儲單元,用于保存系統(tǒng)程序、控制程序及排程構(gòu)建數(shù)據(jù)。微處理器,執(zhí)行保存在存儲單元中的系統(tǒng)程序及控制程序;通信電路,發(fā)送通過執(zhí)行控制程序而生成的輸出數(shù)據(jù),并且接收在執(zhí)行控制程序時要使用的輸入數(shù)據(jù)。系統(tǒng)程序包含過程庫,該過程庫中至少收錄有用于對控制程序的執(zhí)行進行控制的過程和用于對輸出數(shù)據(jù)的輸出及輸入數(shù)據(jù)的輸入進行控制的過程;在存儲單元中存儲有包含用于對收錄在過程庫中的過程的執(zhí)行順序進行指定的指定信息的排程構(gòu)建數(shù)據(jù)時,系統(tǒng)程序使微處理器按照包含在排程構(gòu)建數(shù)據(jù)中的針對過程的執(zhí)行順序的指定信息,來執(zhí)行收錄在過程庫中的過程。[0037]優(yōu)選地,排程構(gòu)建數(shù)據(jù),包含用于利用收錄在過程庫中的過程來生成線程的指定信息;系統(tǒng)程序,包含按照包含在排程構(gòu)建數(shù)據(jù)中的用于生成線程的指定信息來生成線程的處理,以作為PLC的控制動作的執(zhí)行準(zhǔn)備處理。
[0038]更優(yōu)選地,排程構(gòu)建數(shù)據(jù),包含用于在線程的執(zhí)行過程中起動其他線程的指定信息,以作為與線程相關(guān)的數(shù)據(jù)。
[0039]根據(jù)本發(fā)明的又一技術(shù)方案,提供一種保存有PLC用的系統(tǒng)程序的記錄介質(zhì),用于保存PLC用的系統(tǒng)程序,在具有微處理器、存儲單元及通信電路的用于對控制對象進行控制的PLC的CPU單元中,該PLC用的系統(tǒng)程序被保存在存儲單元中并且被微處理器執(zhí)行。存儲單元,用于保存系統(tǒng)程序、控制程序及排程構(gòu)建數(shù)據(jù)。微處理器,執(zhí)行保存在存儲單元中的系統(tǒng)程序及控制程序。通信電路,發(fā)送通過執(zhí)行控制程序而生成的輸出數(shù)據(jù),并且接收在執(zhí)行控制程序時要使用的輸入數(shù)據(jù)。系統(tǒng)程序包含過程庫,該過程庫中至少收錄有用于對控制程序的執(zhí)行進行控制的過程和用于對輸出數(shù)據(jù)的輸出及輸入數(shù)據(jù)的輸入進行控制的過程。在存儲單元中存儲有包含用于對收錄在過程庫中的過程的執(zhí)行順序進行指定的指定信息的排程構(gòu)建數(shù)據(jù)時,系統(tǒng)程序使微處理器按照包含在排程構(gòu)建數(shù)據(jù)中的針對過程的執(zhí)行順序的指定信息,來執(zhí)行收錄在過程庫中的過程。
[0040]優(yōu)選地,排程構(gòu)建數(shù)據(jù),包含用于利用收錄在過程庫中的過程來生成線程的指定信息;系統(tǒng)程序,包含按照包含在排程構(gòu)建數(shù)據(jù)中的用于生成線程的指定信息來生成線程的處理,以作為PLC的控制動作的執(zhí)行準(zhǔn)備處理。
[0041]更優(yōu)選地,排程構(gòu)建數(shù)據(jù),包含用于在線程的執(zhí)行過程中起動其他線程的指定信息,以作為與線程相關(guān)的數(shù)據(jù)。
[0042]根據(jù)本發(fā)明的又一技術(shù)方案,提供一種PLC系統(tǒng),該PLC系統(tǒng)包含上述的PLC的CPU單元和用于對PLC的使用進行輔助的PLC輔助裝置。PLC輔助裝置具有存儲部和運算部。存儲部用于保存PLC輔助程序及排程構(gòu)建數(shù)據(jù)。PLC輔助程序,使運算部執(zhí)行輸出處理,在該輸出處理中,以使PLC的CPU單元能夠獲取排程構(gòu)建數(shù)據(jù)的方式輸出該排程構(gòu)建數(shù)據(jù)。
[0043]根據(jù)本發(fā)明的又一技術(shù)方案,提供一種PLC輔助裝置,該PLC輔助裝置用于對控制控制對象的PLC的CPU單元的使用進行輔助。PLC的CPU單元具有:過程庫,其至少收錄有用于對控制程序的執(zhí)行進行控制的過程和用于對提供控制程序的執(zhí)行來生成的輸出數(shù)據(jù)的輸出及執(zhí)行控制程序時使用的輸入數(shù)據(jù)的輸入進行控制的過程;排程構(gòu)建數(shù)據(jù)獲取單元,其用于獲取排程構(gòu)建數(shù)據(jù),該排程構(gòu)建數(shù)據(jù)包含收錄在過程庫中的過程的執(zhí)行順序的指定信息。PLC輔助裝置具有存儲部和運算部。存儲部,用于保存PLC輔助程序及排程構(gòu)建數(shù)據(jù)。PLC輔助程序,使運算部執(zhí)行輸出處理,在該輸出處理中,以使PLC的CPU單元能夠獲取排程構(gòu)建數(shù)據(jù)的方式輸出該排程構(gòu)建數(shù)據(jù)。
[0044]根據(jù)本發(fā)明的又一技術(shù)方案,提供一種PLC輔助程序,在用于對控制控制對象的PLC的CPU單元的使用進行輔助的PLC輔助裝置中被執(zhí)行。PLC的CPU單元具有:過程庫,其至少收錄有用于對控制程序的執(zhí)行進行控制的過程和用于對通過執(zhí)行控制程序而生成的輸出數(shù)據(jù)的輸出及執(zhí)行控制程序時使用的輸入數(shù)據(jù)的輸入進行控制的過程;排程構(gòu)建數(shù)據(jù)獲取單元,其用于獲取排程構(gòu)建數(shù)據(jù),該排程構(gòu)建數(shù)據(jù)包含收錄在過程庫中的過程的執(zhí)行順序的指定信息。PLC輔助裝置具有存儲部和運算部。存儲部,用于保存PLC輔助程序及排程構(gòu)建數(shù)據(jù);PLC輔助程序,使運算部執(zhí)行輸出處理,在該輸出處理中,以使PLC的CPU單元能夠獲取排程構(gòu)建數(shù)據(jù)的方式輸出該排程構(gòu)建數(shù)據(jù)。
[0045]根據(jù)本發(fā)明的又一技術(shù)方案,提供一種保存有PLC輔助程序的記錄介質(zhì),該PLC輔助程序在用于對控制控制對象的PLC的CPU單元的使用進行輔助的PLC輔助裝置中被執(zhí)行。PLC的CPU單元具有:過程庫,其至少收錄有用于對控制程序的執(zhí)行進行控制的過程和用于對通過執(zhí)行控制程序而生成的輸出數(shù)據(jù)的輸出及執(zhí)行控制程序時使用的輸入數(shù)據(jù)的輸入進行控制的過程;排程構(gòu)建數(shù)據(jù)獲取單元,其用于獲取排程構(gòu)建數(shù)據(jù),該排程構(gòu)建數(shù)據(jù)包含收錄在過程庫中的過程的執(zhí)行順序的指定信息。PLC輔助裝置具有存儲部和運算部;存儲部,用于保存PLC輔助程序及排程構(gòu)建數(shù)據(jù);PLC輔助程序,使運算部執(zhí)行輸出處理,在該輸出處理中,以使PLC的CPU單元能夠獲取排程構(gòu)建數(shù)據(jù)的方式輸出該排程構(gòu)建數(shù)據(jù)。
[0046]發(fā)明效果
[0047]根據(jù)本發(fā)明,不需更替系統(tǒng)程序,或者即使使用共通的系統(tǒng)程序,也能夠?qū)崿F(xiàn)PLC的控制動作的排程的高自由度,。
【專利附圖】
【附圖說明】
[0048]圖1是示出了本發(fā)明的實施方式的PLC系統(tǒng)的概略結(jié)構(gòu)的示意圖。
[0049]圖2是示出了本發(fā)明的實施方式的CPU單元的硬件結(jié)構(gòu)的示意圖。
[0050]圖3是示出了由本發(fā)明的實施方式的CPU單元執(zhí)行的軟件結(jié)構(gòu)的示意圖。
[0051]圖4是示出了本發(fā)明的實施方式的CPU單元的主存儲器的區(qū)域結(jié)構(gòu)的示意圖。
[0052]圖5是示出了連接到本發(fā)明的實施方式的CPU單元上使用的PLC輔助裝置的硬件結(jié)構(gòu)的示意圖。
[0053]圖6是示出了連接到本發(fā)明的實施方式的CPU單元上使用的PLC輔助裝置的軟件結(jié)構(gòu)的示意圖。
[0054]圖7是示出了本發(fā)明的第一實施方式的CPU單元的系統(tǒng)程序的整體處理的流程圖。
[0055]圖8是以表形式示出了本發(fā)明的第一實施方式中準(zhǔn)備的任務(wù)的設(shè)定項目和對各設(shè)定項目的說明的圖。
[0056]圖9A是以表形式示出了本發(fā)明的第一實施方式中準(zhǔn)備的線程的設(shè)定項目和對各設(shè)定項目的說明的圖。
[0057]圖9B是以表形式示出了本發(fā)明的第一實施方式中準(zhǔn)備的線程的設(shè)定項目和對各設(shè)定項目的說明的圖。
[0058]圖10是對于本發(fā)明的第一實施方式中準(zhǔn)備的過程(procedure)之一的控制循環(huán)開始過程示出了其功能、設(shè)定項目及對設(shè)定項目的說明的圖。
[0059]圖1lA是對于本發(fā)明的第一實施方式中準(zhǔn)備的控制循環(huán)開始過程以外的過程示出了各過程的名稱及功能的圖。
[0060]圖1lB是對于本發(fā)明的第一實施方式中準(zhǔn)備的控制循環(huán)開始過程以外的過程示出了各過程的名稱及功能的圖。
[0061]圖12是示出了與本發(fā)明的第一實施方式的排程例I相對應(yīng)的排程構(gòu)建數(shù)據(jù)234的圖。[0062]圖13是本發(fā)明的第一實施方式的排程例I的第k循環(huán)的時序圖。
[0063]圖14是本發(fā)明的第一實施方式的排程例I的第k+Ι循環(huán)的時序圖。
[0064]圖15是示出了在本發(fā)明的第一實施方式的排程例I中控制A線程的執(zhí)行在第k循環(huán)內(nèi)未結(jié)束的情況的動作的時序圖。
[0065]圖16是示出了在本發(fā)明的第一實施方式的排程例I中控制A線程的執(zhí)行在第k循環(huán)內(nèi)未結(jié)束的情況的動作的時序圖。
[0066]圖17是用于說明本發(fā)明的第一實施方式中準(zhǔn)備的同步輸入復(fù)制過程的動作的時序圖。
[0067]圖18是用于說明本發(fā)明的第一實施方式中準(zhǔn)備的同步輸出復(fù)制過程的動作的時序圖。
[0068]圖19是用于說明本發(fā)明的第一實施方式中準(zhǔn)備的變量配送(發(fā)送)過程及開始參照變量過程的動作的時序圖。
[0069]圖20是示出了與本發(fā)明的第一實施方式的排程例2相對應(yīng)的排程構(gòu)建數(shù)據(jù)234的圖。
[0070]圖21是本發(fā)明的第一實施方式的排程例2的第k循環(huán)的時序圖。
[0071]圖22是示出了與本發(fā)明的第一實施方式的排程例3相對應(yīng)的排程構(gòu)建數(shù)據(jù)的圖。
[0072]圖23是本發(fā)明的第一實施方式的排程例3的第k循環(huán)的時序圖。
[0073]圖24是本發(fā)明的第一實施方式的排程例3的第k+Ι循環(huán)的時序圖。
[0074]圖25是示出了與本發(fā)明的第一實施方式的排程例4相對應(yīng)的排程構(gòu)建數(shù)據(jù)的圖。
[0075]圖26是本發(fā)明的第一實施方式的排程例4的第k循環(huán)的時序圖。
[0076]圖27是本發(fā)明的第一實施方式的排程例4的第k+Ι循環(huán)的時序圖。
[0077]圖28是示出了與本發(fā)明的第一實施方式的排程例5相對應(yīng)的排程構(gòu)建數(shù)據(jù)的圖。
[0078]圖29是本發(fā)明的第一實施方式的排程例5的第k循環(huán)的時序圖。
[0079]圖30是與本發(fā)明的第一實施方式的排程例6相對應(yīng)的時序圖。
[0080]圖31是用于說明在本發(fā)明的第一實施方式的排程例6中的控制程序中的程序結(jié)構(gòu)和指示的流程的示意圖。
[0081]圖32是示出了與本發(fā)明的第一實施方式的排程例7相對應(yīng)的排程構(gòu)建數(shù)據(jù)的圖。
[0082]圖33是本發(fā)明的第一實施方式的排程例7的第k循環(huán)的時序圖。
[0083]圖34是本發(fā)明的第一實施方式的排程例7的第k+Ι循環(huán)的時序圖。
[0084]圖35是示出了與本發(fā)明的第一實施方式的排程例8相對應(yīng)的排程構(gòu)建數(shù)據(jù)的圖。
[0085]圖36是本發(fā)明的第一實施方式的排程例8的第k循環(huán)及第k+Ι循環(huán)的時序圖。
[0086]圖37是示出了與本發(fā)明的第一實施方式的排程例9相對應(yīng)的排程構(gòu)建數(shù)據(jù)的圖。
[0087]圖38是本發(fā)明的第一實施方式的排程例9的第k循環(huán)及第k+Ι循環(huán)的時序圖。
[0088]圖39A是以表形式示出了本發(fā)明的第二實施方式中準(zhǔn)備的線程的設(shè)定項目和對各設(shè)定項目的說明的圖。
[0089]圖39B是以表形式示出了本發(fā)明的第二實施方式中準(zhǔn)備的線程的設(shè)定項目和對各設(shè)定項目的說明的圖。
[0090]圖40A是示出了本發(fā)明的第二實施方式中準(zhǔn)備的過程的名稱及功能的圖。
[0091]圖40B是示出了本發(fā)明的第二實施方式中準(zhǔn)備的過程的名稱及功能的圖。[0092]圖41是示出了與本發(fā)明的第二實施方式的排程例相對應(yīng)的排程構(gòu)建數(shù)據(jù)的圖。
[0093]圖42是本發(fā)明的第二實施方式的排程例的第k循環(huán)的時序圖。
[0094]圖43是本發(fā)明的第二實施方式的排程例的第k+Ι循環(huán)的時序圖。
[0095]圖44是示出了本發(fā)明的第三實施方式的各過程共通具備的執(zhí)行控制功能所提供的處理的流程圖。
[0096]圖45是對于本發(fā)明的第三實施方式中準(zhǔn)備的過程之一的控制循環(huán)開始過程示出了其功能、設(shè)定項目及對設(shè)定項目的說明的圖。
[0097]圖46A是對于本發(fā)明的第三實施方式中準(zhǔn)備的控制循環(huán)開始過程以外的過程示出了各過程的名稱及功能的圖。
[0098]圖46B是對于本發(fā)明的第三實施方式中準(zhǔn)備的控制循環(huán)開始過程以外的過程示出了各過程的名稱及功能的圖。
[0099]圖47是示出了與本發(fā)明的第三實施方式的排程例相對應(yīng)的排程構(gòu)建數(shù)據(jù)的圖。
[0100]圖48是與圖47的排程構(gòu)建數(shù)據(jù)相對應(yīng)的排程例的第k循環(huán)的時序圖。
[0101]圖49是與圖47的排程構(gòu)建數(shù)據(jù)相對應(yīng)的排程例的第k+Ι循環(huán)的時序圖。
【具體實施方式】
[0102]參照附圖,詳細說明本發(fā)明的實施方式。此外,對圖中的相同或等同的部分,標(biāo)注相同的附圖標(biāo)記,不對其進行重復(fù)說明。
[0103]< A.系統(tǒng)結(jié)構(gòu)>
[0104]本實施方式的PLC對機械或器材(設(shè)備)等的控制對象進行控制。本實施方式的PLC包含作為其結(jié)構(gòu)要素的CPU單元。CPU單元包含微處理器、存儲單元及通信電路。存儲單元用于保存對程序的執(zhí)行進行控制的系統(tǒng)程序、控制程序以及排程構(gòu)建數(shù)據(jù)。排程構(gòu)建數(shù)據(jù)包含用于以高自由度對本實施方式的PLC的控制動作進行排程的設(shè)定值等。在后面詳細敘述該排程構(gòu)建數(shù)據(jù)。
[0105]微處理器執(zhí)行保存在存儲單元中的系統(tǒng)程序及控制程序。通信電路發(fā)送通過執(zhí)行控制程序而生成的輸出數(shù)據(jù),并且接收執(zhí)行控制程序時使用的輸入數(shù)據(jù)。首先,參照圖1,說明本實施方式的PLCl的系統(tǒng)結(jié)構(gòu)。
[0106]圖1是示出了本發(fā)明的實施方式的PLC系統(tǒng)的概略結(jié)構(gòu)的示意圖。參照圖1,PLC系統(tǒng)SYS包括PLC1、與PLCl經(jīng)由現(xiàn)場網(wǎng)絡(luò)2連接的伺服電機驅(qū)動器3及遠程IO終端5、作為現(xiàn)場設(shè)備的檢測開關(guān)6及繼電器7。另外,在PLCl上經(jīng)由連接電纜10等連接有PLC輔助裝置8。
[0107]PLCl包括主要執(zhí)行運算處理的CPU單元13、一個以上的IO單元14以及特殊單元
15。這些單元能夠經(jīng)由PLC系統(tǒng)總線11相互交換數(shù)據(jù)。另外,電源單元12向這些單元供給適當(dāng)電壓的電源。此外,構(gòu)成PLCl的各單元是由PLC廠商提供的,因而PLC系統(tǒng)總線11一般是每個PLC廠商獨自開發(fā)并使用的。相對于此,如后述那樣關(guān)于現(xiàn)場網(wǎng)絡(luò)2則大多公開了其標(biāo)準(zhǔn),以能夠連接不同廠商的產(chǎn)品。
[0108]參照圖2,在后面詳細敘述CPU單元13。
[0109]IO單元14是與一般的輸入輸出處理相關(guān)的單元,對開(ON)/閉(OFF)這樣的二值化的數(shù)據(jù)的輸入輸出進行控制。即,IO單元14收集這樣的信息,該信息表示,處于由檢測開關(guān)6等傳感器檢測出某種對象物的狀態(tài)(開,ON)及未檢測出任何對象物的狀態(tài)(閉,OFF)中的哪個狀態(tài)這樣的信息。另外,IO單元14對繼電器7或觸動器這樣的輸出對象,輸出用于激活的指令(開,0N)及用于取消激活的指令(閉,OFF)中的某個指令。
[0110]特殊單元15具有不能在IO單元14中進行輔助的功能,這些功能是指模擬數(shù)據(jù)的輸入輸出、溫度控制、通過特定的通信方式的通信這樣的功能。
[0111]現(xiàn)場網(wǎng)絡(luò)2傳送與CPU單元13交換的各種數(shù)據(jù)。作為現(xiàn)場網(wǎng)絡(luò)2,典型地能夠利用各種工業(yè)以太網(wǎng)(注冊商標(biāo))。作為工業(yè)以太網(wǎng)(注冊商標(biāo)),例如已知有“EtherCAT”(注冊商標(biāo))、“Profinet IRT”、“MECHATROLINK”(注冊商標(biāo))-1I1、“Powerlink”,“SERC0S”(注冊商標(biāo))-1I1、“CIP Motion”等,可以采用它們中的任何產(chǎn)品。進而,也可以使用工業(yè)以太網(wǎng)(注冊商標(biāo))以外的現(xiàn)場網(wǎng)絡(luò)。例如,在不進行動態(tài)控制的情況下,也可以使用“DeviceNet”、“CompoNet/IP”(注冊商標(biāo))等。
[0112]此外,在圖1中,例示了具有PLC系統(tǒng)總線11及現(xiàn)場網(wǎng)絡(luò)2這雙方的PLC系統(tǒng)SYS,但也可以采用安裝有這雙方中的一方的系統(tǒng)結(jié)構(gòu)。例如,也可以用現(xiàn)場網(wǎng)絡(luò)2連接全部的單元?;蛘撸部梢圆皇褂矛F(xiàn)場網(wǎng)絡(luò)2,而將伺服電機驅(qū)動器3直接連接到PLC系統(tǒng)總線11上。進而,也可以采用如下結(jié)構(gòu),即,將現(xiàn)場網(wǎng)絡(luò)2的通信單元連接到PLC系統(tǒng)總線11上,CPU單元13經(jīng)由該通信單元與連接到現(xiàn)場網(wǎng)絡(luò)2上的設(shè)備進行通信。
[0113]此外,PLCl也可以采用如下結(jié)構(gòu),即,使CPU單元13具備10單元14的功能及伺服電機驅(qū)動器3的功能,由此不經(jīng)由10單元14及伺服電機驅(qū)動器3等,而由CPU單元13直接對控制對象進行控制。
[0114]伺服電機驅(qū)動器3經(jīng)由現(xiàn)場網(wǎng)絡(luò)2與CPU單元13連接,并且按照來自CPU單元13的指令值來對伺服電機4進行驅(qū)動。更加具體地,伺服電機驅(qū)動器3從PLCl以規(guī)定周期接收位置指令值、速度指令值、扭矩指令值這樣的指令值。另外,伺服電機驅(qū)動器3從與伺服電機4的軸相連接的位置傳感器(旋轉(zhuǎn)編碼器)及扭矩傳感器這樣的檢測器獲取如位置、速度(典型地根據(jù)當(dāng)前位置和前一次位置之間的差來計算)、扭矩這樣的與伺服電機4的動作相關(guān)的實測值。然后,伺服電機驅(qū)動器3通過將來自CPU單元13的指令值設(shè)定為目標(biāo)值,并將實測值作為反饋值,來進行反饋控制。即,伺服電機驅(qū)動器3對用于驅(qū)動伺服電機4的電流進行調(diào)整,以使實測值接近目標(biāo)值。此外,還將伺服電機驅(qū)動器3稱為伺服電機放大器。
[0115]另外,在圖1中示出了組合了伺服電機4和伺服電機驅(qū)動器3的系統(tǒng)的例子,但也可以采用組合了其他的結(jié)構(gòu)例如脈沖電機和脈沖電機驅(qū)動器的系統(tǒng)。
[0116]在圖1所示的PLC系統(tǒng)SYS的現(xiàn)場網(wǎng)絡(luò)2上還連接有遠程10終端(terminal)5。遠程10終端5基本上與10單元14同樣地進行與一般的輸入輸出處理相關(guān)的處理。更加具體地,遠程10終端5包括用于進行與現(xiàn)場網(wǎng)絡(luò)2中的數(shù)據(jù)傳送相關(guān)的處理的通信連接器52和一個以上的10單元53。這些單元能夠經(jīng)由遠程10終端總線51相互交換數(shù)據(jù)。
[0117]在后面詳細敘述PLC輔助裝置8。
[0118]< B.CPU單元的硬件結(jié)構(gòu)>
[0119]接著,參照圖2,說明CPU單元13的硬件結(jié)構(gòu)。圖2是示出了本發(fā)明的實施方式的CPU單元13的硬件結(jié)構(gòu)的示意圖。參照圖2,CPU單元13包括微處理器100、芯片集102、主存儲器104、非易失性存儲器106、系統(tǒng)計時器108、PLC系統(tǒng)總線控制器120、現(xiàn)場網(wǎng)絡(luò)控制器140及USB連接器110。在芯片集102與其他組件之間經(jīng)由各種總線分別結(jié)合。[0120]微處理器100及芯片集102典型地具有通用的計算機體系結(jié)構(gòu)。即,微處理器100對從芯片集102按照內(nèi)部時鐘依次供給來的指令碼進行解讀并執(zhí)行。芯片集102與所連接的各種組件交換內(nèi)部數(shù)據(jù),并生成微處理器100所需的指令碼。進而,芯片集102還具有對由微處理器100進行運算處理的結(jié)果所得到的數(shù)據(jù)等進行緩存的功能。
[0121]在下面說明的第一實施方式至第三實施方式中,對于微處理器100,未明確說明是多核的情況下,是單核(處理器)。多核表示核的個數(shù)為兩個以上的情況(包括核的個數(shù)為兩個的情況)。
[0122]CPU單元13具有作為存儲單元的主存儲器104及非易失性存儲器106。
[0123]主存儲器104是易失性存儲區(qū)域(RAM:隨機存取存儲器),向CPU單元13供電之后保持微處理器100應(yīng)執(zhí)行的各種程序。另外,主存儲器104還作為由微處理器100執(zhí)行各種程序時的工作用存儲器來使用。作為這樣的主存儲器104,使用DRAM (Dynamic RandomAccess Memory:動態(tài)隨機存取存儲器)及 SRAM (Static Random Access Memory:靜態(tài)隨機存取存儲器)這樣的裝置。
[0124]另一方面,非易失性存儲器106非易失性地保持實時OS (Operating System:操作系統(tǒng))、PLC1的系統(tǒng)程序、用戶程序、動態(tài)運算程序、系統(tǒng)設(shè)定參數(shù)這樣的數(shù)據(jù)。這些程序及數(shù)據(jù)根據(jù)需要被復(fù)制到主存儲器104中,以使微處理器100能夠訪問這些程序及數(shù)據(jù)。作為這樣的非易失性存儲器106,能夠使用如閃存器那樣的半導(dǎo)體存儲器?;蛘?,能夠使用如硬盤驅(qū)動器那樣的磁記錄介質(zhì)及如DVD-RAM (Digital Versatile Disk Random AccessMemory:數(shù)字通用盤隨機存取存儲器)那樣的光記錄介質(zhì)等。
[0125]系統(tǒng)計時器108以規(guī)定周期生成中斷信號來提供給微處理器100。典型地,根據(jù)硬件的產(chǎn)品規(guī)格來以不同的多個周期分別生成中斷信號,但也能夠設(shè)定為由OS (OperatingSystem:操作系統(tǒng))或BIOS (Basic Input Output System:基本輸入輸出系統(tǒng))等以任意周期生成中斷信號。利用該系統(tǒng)計時器108所生成的中斷信號,來實現(xiàn)如后所述的對每個控制循環(huán)的控制動作。
[0126]CPU單元13具有作為通信電路的PLC系統(tǒng)總線控制器120及現(xiàn)場網(wǎng)絡(luò)控制器140。這些通信電路進行輸出數(shù)據(jù)的發(fā)送及輸入數(shù)據(jù)的接收。
[0127]此外,在CPU單元13本身具備10單元14及/或伺服電機驅(qū)動器3的功能的情況下,將承擔(dān)10單元14及伺服電機驅(qū)動器3的功能的部分作為通信對象來在CPU單元13內(nèi)部進行發(fā)送及接收,以此代替通過通信電路進行的輸出數(shù)據(jù)的發(fā)送及輸入數(shù)據(jù)的接收。
[0128]PLC系統(tǒng)總線控制器120對經(jīng)由PLC系統(tǒng)總線11的數(shù)據(jù)交換進行控制。更加具體地,PLC系統(tǒng)總線控制器120包括DMA (Dynamic Memory Access:動態(tài)內(nèi)存訪問)控制電路122、PLC系統(tǒng)總線控制電路124及緩沖存儲器126。此外,PLC系統(tǒng)總線控制器120經(jīng)由PLC系統(tǒng)總線連接器130與PLC系統(tǒng)總線11以內(nèi)部方式連接。
[0129]緩沖存儲器126發(fā)揮經(jīng)由PLC系統(tǒng)總線11向其他單元輸出的數(shù)據(jù)(下面還稱為“輸出數(shù)據(jù)”)的發(fā)送緩存以及經(jīng)由PLC系統(tǒng)總線11從其他單元輸入的數(shù)據(jù)(下面還稱為“輸入數(shù)據(jù)”)的接收緩存的功能。此外,由微處理器100通過運算處理生成的輸出數(shù)據(jù),初步保存到主存儲器104中。然后,從主存儲器104讀取應(yīng)向特定單元傳送的輸出數(shù)據(jù),將其暫時保持到緩沖存儲器126中。另外,從其他單元傳送來的輸入數(shù)據(jù)暫時保持到緩沖存儲器126中后,再移送給主存儲器104。[0130]DMA控制電路122從主存儲器104向緩沖存儲器126傳送輸出數(shù)據(jù),以及從緩沖存儲器126向主存儲器104傳送輸入數(shù)據(jù)。
[0131]PLC系統(tǒng)總線控制電路124,在與連接在PLC系統(tǒng)總線11上的其他單元之間,進行發(fā)送緩沖存儲器126的輸出數(shù)據(jù)的處理以及接收輸入數(shù)據(jù)并將其保存至緩沖存儲器126的處理。典型地,PLC系統(tǒng)總線控制電路124提供PLC系統(tǒng)總線11上的物理層及數(shù)據(jù)鏈路層的功能。
[0132]現(xiàn)場網(wǎng)絡(luò)控制器140對經(jīng)由現(xiàn)場網(wǎng)絡(luò)2的數(shù)據(jù)交換進行控制。即,現(xiàn)場網(wǎng)絡(luò)控制器140按照所使用的現(xiàn)場網(wǎng)絡(luò)2的標(biāo)準(zhǔn),對輸出數(shù)據(jù)的發(fā)送及輸入數(shù)據(jù)的接收進行控制。例如,在采用了 “EtherCAT”(注冊商標(biāo))標(biāo)準(zhǔn)的現(xiàn)場網(wǎng)絡(luò)2的情況下,使用包含用于進行通常的以太網(wǎng)(注冊商標(biāo))通信的硬件的現(xiàn)場網(wǎng)絡(luò)控制器140。在“EtherCAT”(注冊商標(biāo))標(biāo)準(zhǔn)中,能夠使用按照通常的以太網(wǎng)(注冊商標(biāo))標(biāo)準(zhǔn)實現(xiàn)通信協(xié)議的一般的以太網(wǎng)(注冊商標(biāo))控制器。根據(jù)作為現(xiàn)場網(wǎng)絡(luò)2采用的工業(yè)以太網(wǎng)(注冊商標(biāo))的類型,使用與通常的通信協(xié)議不同的、與專用產(chǎn)品規(guī)格的通信協(xié)議相對應(yīng)的特別產(chǎn)品規(guī)格的以太網(wǎng)(注冊商標(biāo))控制器。另外,在采用了工業(yè)以太網(wǎng)(注冊商標(biāo))以外的現(xiàn)場網(wǎng)絡(luò)的情況下,使用與該標(biāo)準(zhǔn)相對應(yīng)的專用的現(xiàn)場網(wǎng)絡(luò)控制器。
[0133]緩沖存儲器146發(fā)揮經(jīng)由現(xiàn)場網(wǎng)絡(luò)2向其他裝置等輸出的數(shù)據(jù)(對于該數(shù)據(jù),下面也稱為“輸出數(shù)據(jù)”)的發(fā)送緩存以及經(jīng)由現(xiàn)場網(wǎng)絡(luò)2從其他裝置等輸入的數(shù)據(jù)(對于該數(shù)據(jù),下面也稱為“輸入數(shù)據(jù)”)的接收緩存的功能。如上所述,由微處理器100通過運算處理生成的輸出數(shù)據(jù),初步保存到主存儲器104中。然后,從主存儲器104讀取應(yīng)向特定裝置傳送的輸出數(shù)據(jù),并將其暫時保持到緩沖存儲器146中。另外,從其他裝置傳送來的輸入數(shù)據(jù)暫時保持到緩沖存儲器146中后,再被轉(zhuǎn)移至主存儲器104。
[0134]DMA控制電路142從主存儲器104向緩沖存儲器146傳送輸出數(shù)據(jù),以及從緩沖存儲器146向主存儲器104傳送輸入數(shù)據(jù)。
[0135]現(xiàn)場網(wǎng)絡(luò)控制電路144,在與連接在現(xiàn)場網(wǎng)絡(luò)2上的其他裝置之間,進行發(fā)送緩沖存儲器146的輸出數(shù)據(jù)的處理以及接收輸入數(shù)據(jù)并將其保存至緩沖存儲器146的處理。典型地,現(xiàn)場網(wǎng)絡(luò)控制電路144提供現(xiàn)場網(wǎng)絡(luò)2上的物理層及數(shù)據(jù)鏈路層的功能。
[0136]USB連接器110是用于連接PLC輔助裝置8和CPU單元13的接口。典型地,從PLC輔助裝置8傳送來的、能夠在CPU單元13的微處理器100上執(zhí)行的程序等,經(jīng)由USB連接器110導(dǎo)入到PLCl中。
[0137]< C.CPU單元的軟件結(jié)構(gòu)>
[0138]接著,參照圖3,說明用于提供本實施方式的各種功能的軟件組。包含在這些軟件中的指令碼,在適當(dāng)?shù)臅r刻被讀取并被CPU單元13的微處理器100執(zhí)行。
[0139]圖3是示出了由本發(fā)明的實施方式的CPU單元13執(zhí)行的軟件結(jié)構(gòu)的示意圖。參照圖3,作為由CPU單元13執(zhí)行的軟件,有實時0S200、系統(tǒng)程序210、用戶程序236這三個層次。另外,在控制動作開始之前,生成控制動作用線程及獨立過程222,并在進行控制動作時執(zhí)行這些控制動作用線程及獨立過程222。為了生成控制動作用線程及獨立過程222,使用排程構(gòu)建數(shù)據(jù)234。在后面詳細敘述該排程構(gòu)建數(shù)據(jù)234。
[0140]實時0S200是根據(jù)CPU單元13的計算機體系結(jié)構(gòu)來設(shè)計的,提供用于由微處理器100執(zhí)行系統(tǒng)程序210及用戶程序236的基本的執(zhí)行環(huán)境。典型地,該實時0S200由PLC廠商或?qū)I(yè)的軟件公司等提供。
[0141]系統(tǒng)程序210是用于提供PLCl的功能的軟件組。具體地,系統(tǒng)程序210包含過程庫214、調(diào)度程序212、序列指令運算程序232及動態(tài)運算程序234。
[0142]用戶程序236是根據(jù)用戶的控制目的來生成的。即,是根據(jù)用PLC系統(tǒng)SYS控制的目標(biāo)線(objet line)(工序)等而任意設(shè)計的程序。
[0143]如后面敘述那樣,用戶程序236與序列指令運算程序232及動態(tài)運算程序234協(xié)同實現(xiàn)用戶的控制目的。即,用戶程序236使用由序列指令運算程序232及動態(tài)運算程序234提供的指令、函數(shù)、功能模塊等,來實現(xiàn)程序化的動作。因此,有時將用戶程序236、序列指令運算程序232及動態(tài)運算程序234統(tǒng)稱為控制程序230。
[0144]這樣,CPU單元13的微處理器100執(zhí)行保存在存儲單元中的系統(tǒng)程序210及用戶程序236。
[0145]下面,詳細說明各程序。
[0146]如上所述,用戶程序236是根據(jù)用戶的控制目的(例如,目標(biāo)線(objet line)或工序)來生成的。典型地,用戶程序236成為能夠由CPU單元13的微處理器100執(zhí)行的目標(biāo)程序形式。該用戶程序是,在PLC輔助裝置8等中對用梯式語言(Ladder language)等記述的源程序編譯而生成的。然后,將生成的目標(biāo)程序形式的用戶程序從PLC輔助裝置8經(jīng)由連接電纜10傳送至CPU單元13,并將其保存至非易失性存儲器106等中。
[0147]過程庫214是收錄了各種過程的庫,這些過程是控制動作用線程或獨立過程的結(jié)構(gòu)要素(組件)。過程是指,為了進行在程序中反復(fù)出現(xiàn)的處理,而將一系列的指令匯總為一個程序。作為實現(xiàn)例,收錄在庫中的狀態(tài)的過程是對象及類,成為控制動作用線程的獨立過程的結(jié)構(gòu)要素的狀態(tài)的過程是對象及實例。
[0148]調(diào)度程序212按照包含在排程構(gòu)建數(shù)據(jù)224中的指定(信息),生成控制動作用線程及獨立過程222。
[0149]排程構(gòu)建數(shù)據(jù)224是從PLC輔助裝置8輸入的。排程構(gòu)建數(shù)據(jù)224也可以在生產(chǎn)CPU單元13時保存到非易失性存儲器106中。排程構(gòu)建數(shù)據(jù)224包含用于指定執(zhí)行收錄在過程庫214中的過程的執(zhí)行順序的信息。
[0150]在控制動作用線程和獨立過程222中,控制動作用線程包括用于對控制程序的執(zhí)行進行控制的過程以及用于對輸出數(shù)據(jù)的輸出及輸入數(shù)據(jù)的輸入進行控制的過程,來作為結(jié)構(gòu)要素。在控制動作用線程和獨立過程222中,獨立過程是不包含在線程中(不從屬于線程)執(zhí)行的過程。
[0151]序列指令運算程序232是指,在執(zhí)行由用戶程序使用的某類序列指令時被調(diào)出并為了實現(xiàn)該指令的內(nèi)容而被執(zhí)行的程序。
[0152]動態(tài)運算程序234是指,按照用戶程序的指示來被執(zhí)行,并且在每次執(zhí)行時計算用于向伺服電機驅(qū)動器3或脈沖電機驅(qū)動器這樣的電機驅(qū)動器輸出的指令值的程序。
[0153]實時0S200提供用于按照時間的經(jīng)過切換執(zhí)行多個程序的環(huán)境。
[0154]過程庫214、調(diào)度程序212、排程構(gòu)建數(shù)據(jù)224及控制程序230保存在作為存儲單元的主存儲器104及非易失性存儲器106中。
[0155]< D.主存儲器結(jié)構(gòu)>
[0156]接著,參照圖4,說明CPU單元13的主存儲器104中的存儲區(qū)域。[0157]圖4是示出了本發(fā)明的實施方式的CPU單元13的主存儲器104的區(qū)域結(jié)構(gòu)的示意圖。參照圖4,在主存儲器104中,形成有各種程序區(qū)域1041、控制程序工作區(qū)域1042、PLC系統(tǒng)總線發(fā)送緩存1043、PLC系統(tǒng)總線接收緩存1044、現(xiàn)場網(wǎng)絡(luò)發(fā)送緩存1045及現(xiàn)場網(wǎng)絡(luò)接收緩存1046。
[0158]在控制程序的工作區(qū)域1042中,通過系統(tǒng)程序210生成有各控制程序的本地變量區(qū)域,除此之外通過系統(tǒng)程序210還生成有全局變量區(qū)域1042a及變量同步緩沖區(qū)域1042b。在控制程序的工作區(qū)域1042中,進而,通過系統(tǒng)程序210生成有如下區(qū)域:輸出同步緩沖區(qū)域1042c,其生成與各輸出數(shù)據(jù)相對應(yīng)的輸出同步緩存;輸入同步緩沖區(qū)域1042d,其生成有與各輸入數(shù)據(jù)相對應(yīng)的輸入同步緩存。
[0159]另外,PLC系統(tǒng)總線發(fā)送緩存1043及現(xiàn)場網(wǎng)絡(luò)發(fā)送緩存1045 (下面,將這兩者統(tǒng)稱為“發(fā)送緩存”)、PLC系統(tǒng)總線接收緩存1044及現(xiàn)場網(wǎng)絡(luò)接收緩存1046 (下面,將這兩者統(tǒng)稱為“接收緩存”),也是通過系統(tǒng)程序210生成的。
[0160]PLC系統(tǒng)總線控制器120的DMA控制電路122,將保存在PLC系統(tǒng)總線發(fā)送緩存1043中的輸出數(shù)據(jù)傳送至PLC系統(tǒng)總線控制器120的緩沖存儲器126,并且將保存在緩沖存儲器126中的輸入數(shù)據(jù)傳送至PLC系統(tǒng)總線接收緩存1044。將傳送的該輸入數(shù)據(jù)保存至PLC系統(tǒng)總線接收緩存1044。
[0161]現(xiàn)場網(wǎng)絡(luò)控制器140的DMA控制電路142,將保存在現(xiàn)場網(wǎng)絡(luò)發(fā)送緩存1045中的輸出數(shù)據(jù)傳送至現(xiàn)場網(wǎng)絡(luò)控制器140的緩沖存儲器146,并且將保存在緩沖存儲器146中的輸入數(shù)據(jù)傳送至現(xiàn)場網(wǎng)絡(luò)接收緩存1046。將傳送的該輸入數(shù)據(jù)保存至現(xiàn)場網(wǎng)絡(luò)接收緩存1046。
[0162]控制程序的工作區(qū)域1042、PLC系統(tǒng)總線發(fā)送緩存1043、PLC系統(tǒng)總線接收緩存1044、現(xiàn)場網(wǎng)絡(luò)發(fā)送緩存1045及現(xiàn)場網(wǎng)絡(luò)接收緩存1046,能夠相互獨立地控制各自的訪問。因此,例如能夠并行執(zhí)行下面示出的(I)?(3)這樣的多個動作。
[0163](I)由微處理器100進行的,與執(zhí)行用戶程序相伴地對控制程序的工作區(qū)域1042的訪問;
[0164](2)由PLC系統(tǒng)總線控制器120的DMA控制電路122進行的,為了在主存儲器104中的PLC系統(tǒng)總線發(fā)送緩存1043或PLC系統(tǒng)總線接收緩存1044或這兩者與PLC系統(tǒng)總線控制器120內(nèi)的緩沖存儲器126之間進行數(shù)據(jù)傳送,而對主存儲器104中的PLC系統(tǒng)總線發(fā)送緩存1043或PLC系統(tǒng)總線接收緩存1044或這兩者的訪問;
[0165](3)由現(xiàn)場網(wǎng)絡(luò)控制器140的DMA控制電路142進行的,為了在主存儲器104中的現(xiàn)場網(wǎng)絡(luò)發(fā)送緩存1045或現(xiàn)場網(wǎng)絡(luò)接收緩存1046或這兩者與現(xiàn)場網(wǎng)絡(luò)控制器140內(nèi)的緩沖存儲器146之間進行數(shù)據(jù)傳送,而對主存儲器104中的現(xiàn)場網(wǎng)絡(luò)發(fā)送緩存1045或現(xiàn)場網(wǎng)絡(luò)接收緩存1046或這兩者的訪問。
[0166]< E.輔助裝置>
[0167]接著,說明本實施方式的PLC輔助裝置8。PLC輔助裝置8輔助(輔助)PLC1的CPU單元13的使用,具體來說,提供用于生成在PLCl中執(zhí)行的程序以及對PLCl進行維護等的功能。
[0168]圖5是示出了連接到本發(fā)明的實施方式的CPU單元上使用的PLC輔助裝置8的硬件結(jié)構(gòu)的示意圖。參照圖5,PLC輔助裝置8典型地由通用的計算機構(gòu)成。此外,從維護性的角度出發(fā),優(yōu)選便攜性優(yōu)秀的筆記本類型的個人計算機。
[0169]參照圖5,PLC輔助裝置8包括:CPU81,其執(zhí)行包括OS的各種程序;R0M(Read OnlyMemory:只讀存儲器)82,其保存BIOS及各種數(shù)據(jù);存儲器RAM83,其提供用于保存由CPU81執(zhí)行程序所需的數(shù)據(jù)的工作區(qū)域;硬盤(HDD) 84,其非易失性地保存由CPU81執(zhí)行的程序
坐寸ο
[0170]PLC輔助裝置8還包括:鍵盤85及鼠標(biāo)86,其用于接受來自用戶的操作;顯示器87,其用于將信息提示給用戶。進而,PLC輔助裝置8包括用于與PLCl (CPU單元13)等進行通信的通信接口(IF) 89。
[0171]如后面敘述那樣,由PLC輔助裝置8執(zhí)行的各種程序保存到⑶-R0M9中流通。保存在該⑶-R0M9中的程序被⑶-ROM (Compact Disk-Read Only Memory:光盤只讀存儲器)驅(qū)動器88讀取并被保存至硬盤(HDD)84等?;蛘?,也可以從上位的主機等經(jīng)由網(wǎng)絡(luò)下載程序。
[0172]如上所述,PLC輔助裝置8用通用的計算機來實現(xiàn),因而不再進行詳細說明。
[0173]圖6是示出了連接到本發(fā)明的實施方式的CPU單元上使用的PLC輔助裝置8的軟件結(jié)構(gòu)的示意圖。參照圖6,在PLC輔助裝置8中執(zhí)行0S310,由此提供能夠執(zhí)行PLC輔助程序320所含的各種程序的環(huán)境。
[0174]PLC輔助程序320包括編輯程序321、編譯程序322、調(diào)試程序323、排程構(gòu)建數(shù)據(jù)模板324、排程構(gòu)建數(shù)據(jù)生成程序325及通信程序326。包含在PLC輔助程序320中的各個程序,典型地在保存在CD-R0M9中的狀態(tài)流通,而被安裝到PLC輔助裝置8上。
[0175]編輯程序321提供用于生成用戶程序的輸入及編輯這樣的功能。更加具體地,編輯程序321除了提供由用戶通過操作鍵盤85及鼠標(biāo)86來生成用戶程序的源程序330的功能之外,還提供對所生成的源程序330進行保存的功能以及進行編輯的功能。另外,編輯程序321輸入來自外部的控制程序(其中,特別是用戶程序)的源程序,并通過用戶的操作來編輯現(xiàn)有的控制程序的源程序。
[0176]編譯程序322提供通過對控制程序的源程序進行編譯來生成能夠在CPU單元13的微處理器100中執(zhí)行的目標(biāo)程序形式的用戶程序的功能。
[0177]調(diào)試程序323提供用于對控制程序的源程序進行調(diào)試的功能。作為該調(diào)試的內(nèi)容包括如下動作,即,在源程序中局部地執(zhí)行用戶所指定的范圍、在執(zhí)行源程序過程中追蹤變量值的隨時間的變化。
[0178]排程構(gòu)建數(shù)據(jù)模板324是收集如下的排程構(gòu)建數(shù)據(jù)而成的,該排程構(gòu)建數(shù)據(jù)用于實現(xiàn)大多用戶要使用的一些排程模式。還可以追加用戶自己生成的排程構(gòu)建數(shù)據(jù)作為模板。
[0179]排程構(gòu)建數(shù)據(jù)生成程序325通過以下處理中的某個處理,來提供用于生成排程構(gòu)建數(shù)據(jù)234的功能,這些處理是指,接受用戶所決定的直接使用已經(jīng)登錄為排程構(gòu)建數(shù)據(jù)模板324的某個排程構(gòu)建數(shù)據(jù)的處理,使用戶對那樣的登錄的排程構(gòu)建數(shù)據(jù)的一部分進行變更的處理,使用戶新輸入排程構(gòu)建數(shù)據(jù)的處理。在此,直接使用登錄為模板的排程構(gòu)建數(shù)據(jù)的情況,也包含在用于生成排程構(gòu)建數(shù)據(jù)234的處理的概念中。
[0180]通信程序326提供向PLCl的CPU單元13傳送控制程序的CPU單元13用的目標(biāo)程序(用戶程序236)及排程構(gòu)建數(shù)據(jù)234的功能。[0181]PLC輔助裝置8也可以僅采用如下結(jié)構(gòu),即,不包含排程構(gòu)建數(shù)據(jù)生成程序325,而只保存一種排程構(gòu)建數(shù)據(jù)并將該排程構(gòu)建數(shù)據(jù)傳送給CPU單元。
[0182]即,PLC輔助裝置8包含存儲部(圖5的硬盤(HDD )84等)和運算部(圖5的CPU81)。存儲部用于保存PLC輔助程序320及排程構(gòu)建數(shù)據(jù)234。PLC輔助程序320使運算部執(zhí)行輸出處理,該輸出處理輸出排程構(gòu)建數(shù)據(jù),用于使PLCl的CPU單元13能夠獲取該排程構(gòu)建數(shù)據(jù)。
[0183]為了輸出排程構(gòu)建數(shù)據(jù)從而使PLCl能夠獲取該排程構(gòu)建數(shù)據(jù),可以經(jīng)由圖1所示的連接電纜10輸出,除此之外,還可已經(jīng)由未圖示的網(wǎng)絡(luò)直接輸出,或者經(jīng)由連接在未圖示的網(wǎng)絡(luò)上的服務(wù)器計算機來間接輸出,而且還可以輸出到PLCl能夠讀取的便攜式記錄介質(zhì)中。
[0184]在用于使PLCl的CPU單元13獲取排程構(gòu)建數(shù)據(jù)234的排程構(gòu)建數(shù)據(jù)獲取單元中,包括經(jīng)由連接電纜10進行通信的通信電路、進行網(wǎng)絡(luò)通信的通信電路以及用于從記錄介質(zhì)讀取的讀取電路,它們用于獲取通過這些途徑中的某個途徑輸出的排程構(gòu)建數(shù)據(jù)234。
[0185]此外,PLCl的CPU單元13也可以采用如下結(jié)構(gòu),即,在廠商的生產(chǎn)階段將排程構(gòu)建數(shù)據(jù)234保存到存儲單元中,而從廠商出貨后則不能變更排程構(gòu)建數(shù)據(jù)234。
[0186]一般而言,安裝在PLCl中的系統(tǒng)程序210在CPU單元13的生產(chǎn)階段被保存到CPU單元13的非易失性存儲器106中。但是,若將系統(tǒng)程序210保存到CD-R0M9中,則用戶也能夠?qū)ⅱ?R0M9的系統(tǒng)程序210復(fù)制到PLC輔助裝置8中,并利用通信程序326所提供的功能來將所復(fù)制的系統(tǒng)程序210傳送至CPU單元13。進而,若將由PLCl的CPU單元13執(zhí)行的實時0S200保存到⑶-R0M9中,則實時0S200也能夠通過用戶操作來再次安裝到PLCl中。
[0187]下面,說明第一實施方式至第三實施方式,作為使用排程構(gòu)建數(shù)據(jù)234對PLCl的控制動作進行排程的典型例。
[0188]< F.第一實施方式>
[0189]在下面說明的第一實施方式中,利用具有任務(wù)和線程這樣的層次結(jié)構(gòu)的排程構(gòu)建機構(gòu)。任務(wù)包含一個或多個線程,是重復(fù)執(zhí)行的單位。
[0190](fl:整體處理)
[0191]圖7是示出了本發(fā)明的第一實施方式的CPU單元13的系統(tǒng)程序210的整體處理的流程圖。如圖7所示,首先,執(zhí)行對PLCl的控制動作的執(zhí)行準(zhǔn)備處理(步驟SI),接著執(zhí)行對PLCl的控制動作的執(zhí)行控制處理(步驟S2)。
[0192]在控制動作的執(zhí)行準(zhǔn)備處理(步驟SI)中,包括生成全局變量區(qū)域1042a及變量同步緩存的處理、生成接收緩存(PLC系統(tǒng)總線接收緩存1044或現(xiàn)場網(wǎng)絡(luò)接收緩存1046或這兩者)及輸入同步緩存的處理、生成發(fā)送緩存(PLC系統(tǒng)總線發(fā)送緩存1043或現(xiàn)場網(wǎng)絡(luò)發(fā)送緩存1045或這兩者)及輸出同步緩存的處理、生成用于進行控制動作的線程及獨立過程222的處理、生成用于保存各任務(wù)的執(zhí)行循環(huán)數(shù)及執(zhí)行次數(shù)和執(zhí)行時間的各存儲區(qū)域的處理、生成各任務(wù)的結(jié)束標(biāo)識的處理。適當(dāng)設(shè)計這些各處理的執(zhí)行順序。
[0193](f2:任務(wù)及線程)
[0194]如上所述,在第一實施方式中,說明利用具有任務(wù)和線程這樣的層次結(jié)構(gòu)的排程構(gòu)建的機構(gòu)的處理例。在此,詳細說明任務(wù)及線程。[0195]圖8是以表形式示出了本發(fā)明的第一實施方式中準(zhǔn)備的任務(wù)的設(shè)定項目和對各設(shè)定項目的說明的圖。圖9A及圖9B以表形式示出了本發(fā)明的第一實施方式中準(zhǔn)備的線程的設(shè)定項目和對各設(shè)定項目的說明的圖。在本實施方式的PLC輔助程序320中,能夠?qū)Ω魅蝿?wù)設(shè)定記載在圖8的“設(shè)定項目”欄中的內(nèi)容。另外,能夠?qū)Ω骶€程設(shè)定記載在圖9A及圖9B的“設(shè)定項目”欄中的內(nèi)容。
[0196]在圖8、圖9A及圖9B中,對線程或過程使用的“起動”這樣的術(shù)語,表示把成為對象的線程或過程追加到實時0S200的執(zhí)行等待隊列(queue)中。在登錄到執(zhí)行等待隊列中的線程或過程中,實時0S200使微處理器100從執(zhí)行優(yōu)先級高的線程或過程開始依次執(zhí)行。將處于登錄到執(zhí)行等待隊列中等待執(zhí)行的狀態(tài)的線程或過程稱為處于“Ready狀態(tài)”(預(yù)備狀態(tài))。將處于由微處理器100正在執(zhí)行的狀態(tài)的線程或過程稱為處于“Run狀態(tài)”(運行狀態(tài))。將處于未登錄到執(zhí)行等待隊列中的狀態(tài)的線程或過程稱為處于“Sleep狀態(tài)”(睡眠狀態(tài))。
[0197]圖10是對于本發(fā)明的第一實施方式中準(zhǔn)備的過程之一的控制循環(huán)開始過程示出了其功能、設(shè)定項目及對設(shè)定項目的說明的圖。圖1lA及圖1lB是對于本發(fā)明的第一實施方式中準(zhǔn)備的控制循環(huán)開始過程以外的過程示出了各過程的名稱及功能的圖。
[0198]在圖10、圖1lA及圖1lB所示的過程中,控制循環(huán)開始過程(圖10)、任務(wù)開始過程(圖11A)及任務(wù)結(jié)束過程(圖11A)的實例,作為獨立過程生成。
[0199]下面,對本實施方式的排程例I?10,與相對應(yīng)的排程構(gòu)建數(shù)據(jù)的例子等一起進行說明。
[0200](f3:排程例1:在執(zhí)行循環(huán)周期內(nèi)執(zhí)行結(jié)束的情況)
[0201]在本發(fā)明的第一實施方式的排程例I中,執(zhí)行控制A任務(wù)和控制B任務(wù)。控制A任務(wù)包括輸入輸出A線程和控制A線程,控制B線程包括控制B線程??刂艫任務(wù)的執(zhí)行循環(huán)相當(dāng)于一次控制循環(huán),控制B任務(wù)的執(zhí)行循環(huán)相當(dāng)于兩次控制循環(huán)。在第k循環(huán)中,開始控制A任務(wù)及控制B任務(wù)的一個執(zhí)行循環(huán)。
[0202]圖12是示出了與本發(fā)明的第一實施方式的排程例I相對應(yīng)的排程構(gòu)建數(shù)據(jù)234的圖。圖13是本發(fā)明的第一實施方式的排程例I的第k循環(huán)的時序圖。圖14是本發(fā)明的第一實施方式的排程例I的第k+Ι循環(huán)的時序圖。
[0203]在圖12中以表形式示意性示出了排程構(gòu)建數(shù)據(jù)234的內(nèi)容,但實際使用的排程構(gòu)建數(shù)據(jù)234是以微處理器100能夠處理的形式記述的,例如利用XML (Extensible MarkupLanguage:可擴充標(biāo)記語言)記述等。
[0204]排程例I的排程構(gòu)建數(shù)據(jù)234包括如圖12的(I)部分示出的控制循環(huán)開始過程的設(shè)定內(nèi)容、如圖12的(2)部分和(5)部分示出的任務(wù)的設(shè)定內(nèi)容、如圖12的(3)部分和
(4)部分和(6)部分示出的線程的設(shè)定內(nèi)容。
[0205]如圖12的(I)部分所示,在第一實施方式的排程例I中,在控制循環(huán)開始過程中設(shè)定有作為控制循環(huán)開始條件的“控制循環(huán)開始中斷”。從而,如在圖10中說明的那樣,控制循環(huán)開始過程在控制循環(huán)開始中斷(在圖13中,開始第k循環(huán)的控制循環(huán)開始中斷)出現(xiàn)時被起動。然后,由于優(yōu)先級被設(shè)定為“1”,因而控制循環(huán)開始過程比其他線程及過程優(yōu)先被起動后立即被執(zhí)行。另外,控制循環(huán)開始過程的功能是指,“起動在各任務(wù)的設(shè)定項目‘任務(wù)開始處理’中指定的過程”。具體而言,在圖12的(2)部分及(5)部分各自的“任務(wù)開始處理”中指定有“任務(wù)開始過程”,因而控制循環(huán)開始過程起動控制A任務(wù)的任務(wù)開始過程及控制B任務(wù)的任務(wù)開始過程,并結(jié)束自身的執(zhí)行。
[0206]若控制循環(huán)開始過程執(zhí)行結(jié)束,則控制A任務(wù)的任務(wù)開始過程成為Run狀態(tài)。任務(wù)開始過程執(zhí)行在圖1lA中說明的功能。如在圖12的(2)部分的“線程指定”中指定那樣,在控制A任務(wù)中包含“輸入輸出A線程”和“控制A線程”。如圖12的(3)部分示出那樣,因為輸入輸出A線程的開始條件是“控制A任務(wù)”,所以輸入輸出A線程成為任務(wù)開始過程的后續(xù)起動對象。另一方面,因為控制A線程的開始條件不是“控制A任務(wù)”,所以控制A線程不是任務(wù)開始過程的后續(xù)起動對象。任務(wù)開始過程起動輸入輸出A線程,并結(jié)束自身的執(zhí)行。
[0207]若控制A任務(wù)的任務(wù)開始過程的執(zhí)行結(jié)束,則控制B任務(wù)的任務(wù)開始過程成為Run狀態(tài)。任務(wù)開始過程,在執(zhí)行圖1lA中說明的功能之后,結(jié)束自身的執(zhí)行。如在圖12的(5)部分的“線程指定”中指定那樣,在控制B任務(wù)中包含有“控制B線程”。參照圖12的(6)部分,因為控制B線程的開始條件不是“控制B任務(wù)”,所以控制B線程不是任務(wù)開始過程的后續(xù)起動對象,控制B任務(wù)的任務(wù)開始過程不執(zhí)行任何處理。
[0208]若控制B任務(wù)的任務(wù)開始過程的執(zhí)行結(jié)束,則輸入輸出A線程成為Run狀態(tài)。在圖12的(3)部分的“過程指定”中例舉的過程以例舉的順序被執(zhí)行。
[0209]若輸入輸出A線程成為Run狀態(tài),則最初執(zhí)行同步輸出復(fù)制過程。就同步輸出復(fù)制過程的功能而言,如圖1lA中說明的那樣,因為控制A任務(wù)及控制B任務(wù)各自的當(dāng)前的執(zhí)行循環(huán)數(shù)均為“ I ”,所以對控制A任務(wù)及控制B任務(wù)這雙方,將預(yù)先指定的輸出數(shù)據(jù)從輸出同步緩存復(fù)制到發(fā)送緩存中。參照圖18,在后面詳細敘述同步輸出復(fù)制過程的功能。
[0210]接著,執(zhí)行輸入輸出指示過程。即,通過對通信電路發(fā)送輸入輸出指示信號,通信電路發(fā)送保存在發(fā)送緩存中的輸出數(shù)據(jù),將所接收的輸入數(shù)據(jù)保存到接收緩存中,并將通信結(jié)束通知信號發(fā)送給微處理器100。例如,在利用作為現(xiàn)場網(wǎng)絡(luò)2的“EtherCAT”(注冊商標(biāo))的情況下,從現(xiàn)場網(wǎng)絡(luò)控制器140發(fā)送來的幀(frame),在與從屬設(shè)備進行數(shù)據(jù)交換的狀態(tài)下,遍歷從屬設(shè)備后返回?,F(xiàn)場網(wǎng)絡(luò)控制器140自動接收返回來的幀。從而,輸入輸出指示信號雖然直接意味著發(fā)送指示信號,但還間接地指示進行接收。
[0211 ] 執(zhí)行輸入輸出指示過程之后,接著執(zhí)行通信結(jié)束通知等待過程。即,通信結(jié)束通知等待過程被設(shè)定為在通信結(jié)束通知出現(xiàn)時再次起動輸入輸出A線程,并使輸入輸出A線程成為Sleep狀態(tài)。
[0212]在輸入輸出A線程處于Sleep狀態(tài)期間,執(zhí)行登錄在執(zhí)行等待隊列中的比從屬于控制任務(wù)的線程及過程的優(yōu)先級低的各種系統(tǒng)處理。
[0213]若通信結(jié)束通知出現(xiàn),則執(zhí)行同步輸入復(fù)制過程。在同步輸入復(fù)制過程的功能中,如圖1lB中說明的那樣,因為控制A任務(wù)及控制B任務(wù)各自的當(dāng)前的執(zhí)行循環(huán)計數(shù)器均為“ 1”,所以對控制A任務(wù)及控制B任務(wù)這雙方,將預(yù)先指定的輸入數(shù)據(jù)從接收緩存復(fù)制到輸入同步緩存中。參照圖17,在后面詳細敘述同步輸入復(fù)制過程的功能。
[0214]對成為輸出復(fù)制的對象的輸出數(shù)據(jù)以及成為輸入復(fù)制的對象的輸入數(shù)據(jù)的預(yù)先指定,是由PLC輔助裝置8作為對控制程序230的設(shè)定信息來指定的。
[0215]接著,執(zhí)行后續(xù)起動過程。如圖12的(4)部分所示,因為在控制A線程的“開始條件”中指定有輸入輸出A線程,所以后續(xù)起動過程起動控制A線程。[0216]若輸入輸出A線程的執(zhí)行結(jié)束,控制A線程成為Run狀態(tài)。在圖12的(4)部分的“過程指定”中例舉的過程以例舉的順序被執(zhí)行。
[0217]若控制A線程成為Run狀態(tài),最初執(zhí)行數(shù)據(jù)追蹤過程。如圖1lB中說明的那樣,數(shù)據(jù)追蹤過程將預(yù)先指定的變量值記錄到日志文件中。對該變量的預(yù)先指定,也是由PLC輔助裝置8作為對控制程序230的設(shè)定信息來指定的。
[0218]接著,執(zhí)行開始參照變量過程。即,進行用于使變量同步緩存不能改寫如下變量的處理,該變量是指,(在后述的“控制程序指定”中指定)由控制A程序作為參照側(cè)控制程序(referrer-side control program)來參照的變量。參照圖19,在后面詳細敘述這樣的由開始參照變量過程及變量配送過程(控制B線程)實現(xiàn)的變量同步功能。
[0219]接著,執(zhí)行控制程序執(zhí)行過程。如圖12的(4)部分所示,因為在控制A線程的“控制程序指定”中指定有“控制A程序”,所以執(zhí)行控制A程序。控制A程序可以是按照用戶的控制目的來生成的序列程序,并且,在那樣的序列程序中含有動態(tài)指令的情況下,該控制A程序也可以是序列程序及在該序列程序之后接著執(zhí)行的動態(tài)運算程序。
[0220]若控制A程序的執(zhí)行結(jié)束,執(zhí)行變量配送過程。即,對于由控制A程序作為主側(cè)控制程序(owner-side control program)來進行更新并且由控制B程序作為參照側(cè)控制程序來參照的全局變量,由變量配送過程將該變量的內(nèi)容復(fù)制到控制B程序的變量同步緩存中。此外,參照圖19,在后面詳細敘述主側(cè)控制程序及參照側(cè)控制程序。
[0221]接著,執(zhí)行后續(xù)起動過程。如圖12的(2)部分所示,在控制A任務(wù)的“任務(wù)結(jié)束條件”中指定有控制A線程。另外,如圖12的(6)部分所示,在控制B線程的“開始條件”中指定有控制A線程,而且,當(dāng)前的控制B任務(wù)的任務(wù)結(jié)束標(biāo)識為關(guān)(OFF)。從而,后續(xù)起動過程起動控制A任務(wù)的任務(wù)結(jié)束過程和控制B線程。
[0222]若控制A線程的執(zhí)行結(jié)束,控制A任務(wù)的任務(wù)結(jié)束過程成為Run狀態(tài)。任務(wù)結(jié)束過程執(zhí)行在圖1lA中說明的功能。
[0223]若控制A任務(wù)的任務(wù)結(jié)束過程的執(zhí)行結(jié)束,控制B線程成為Run狀態(tài)。在圖12的
(6)部分的“過程指定”中例舉的過程以例舉的順序被執(zhí)行。
[0224]若控制B線程成為Run狀態(tài),最初執(zhí)行開始參照變量過程。即,進行用于使變量同步緩存不能改寫如下變量的處理,該變量是指,(在后述的“控制程序指定”中被指定)由控制B程序作為參照側(cè)控制程序來參照的變量。
[0225]接著,執(zhí)行控制程序執(zhí)行過程。如圖12的(6)部分所示,因為在控制B線程的“控制程序指定”中指定有“控制B程序”,所以執(zhí)行控制B程序??刂艬程序可以是根據(jù)用戶的控制目的來生成的序列程序,并且,在那樣的序列程序包含動態(tài)指令的情況下,該控制B程序也可以是序列程序及在該序列程序之后接著執(zhí)行的動態(tài)運算程序。
[0226]在圖13中示出了在控制B程序的執(zhí)行過程中包括用于開始第k+Ι循環(huán)的控制循環(huán)開始中斷的情況??刂蒲h(huán)開始中斷使控制程序B執(zhí)行中斷。
[0227]如圖14所示,在第k+Ι循環(huán)中,與第k循環(huán)的情況同樣地,執(zhí)行控制A任務(wù)的處理及控制B任務(wù)的任務(wù)開始過程。
[0228]在輸入輸出A線程的通信結(jié)束通知等待時間內(nèi),由于與在第k循環(huán)中執(zhí)行的系統(tǒng)處理相比,控制B線程一側(cè)的優(yōu)先級更高,因而再次開始控制程序B的執(zhí)行,若通信結(jié)束通知出現(xiàn),則控制程序B再次被執(zhí)行中斷。[0229]若控制A任務(wù)的任務(wù)結(jié)束過程的執(zhí)行結(jié)束,再次開始控制程序B的執(zhí)行。
[0230]若控制B程序的執(zhí)行結(jié)束,執(zhí)行變量配送過程。即,對于由控制B程序作為主側(cè)控制程序來進行更新并且由控制A程序作為參照側(cè)控制程序來參照的全局變量,將該變量的內(nèi)容復(fù)制到控制A程序的變量同步緩存中。
[0231]接著,執(zhí)行后續(xù)起動過程。如圖12的(5)部分所示,由于在控制B任務(wù)的“任務(wù)結(jié)束條件”中指定有“控制B線程”,因而后續(xù)起動過程起動控制B任務(wù)的任務(wù)結(jié)束過程。
[0232]若控制B線程的執(zhí)行結(jié)束,控制B任務(wù)的任務(wù)結(jié)束過程成為Run狀態(tài)。任務(wù)結(jié)束過程執(zhí)行圖1lA中說明的功能。
[0233]若控制B任務(wù)的任務(wù)結(jié)束過程的執(zhí)行結(jié)束,在接收到下一個控制循環(huán)開始中斷為止的期間內(nèi),執(zhí)行各種系統(tǒng)處理。
[0234]如在上面說明的那樣,本發(fā)明的第一實施方式的PLCl的CPU單元13的系統(tǒng)程序210具有如下特征。即,系統(tǒng)程序210包括過程庫(過程庫214),該過程庫(過程庫214)至少收錄有用于對控制程序的執(zhí)行進行控制的過程和用于對輸出數(shù)據(jù)的輸出及輸入數(shù)據(jù)的輸入進行控制的過程。然后,系統(tǒng)程序210,在包含特定信息的排程構(gòu)建數(shù)據(jù)234被保存在存儲單元(主存儲器104或非易失性存儲器106)中時,使微處理器100按照該特定信息來執(zhí)行收錄在過程庫中的過程,該特定信息是指,對收錄在過程庫中的過程的執(zhí)行順序進行指定的信息。此外,后述的第二實施方式及第三實施方式也共通地具有該特征。
[0235]在此,用于對控制程序230的執(zhí)行進行控制的過程的例子,是開始參照變量過程、控制程序執(zhí)行過程及變量配送過程。用于對輸出數(shù)據(jù)的輸出及輸入數(shù)據(jù)的輸入進行控制的過程的例子,是同步輸出復(fù)制過程、輸入輸出指示過程、通信結(jié)束通知等待過程及同步輸入復(fù)制過程。
[0236]具體地,上述特征在第一實施方式中按如下方式實現(xiàn)的。即,排程構(gòu)建數(shù)據(jù)234包括用于使用收錄在過程庫(過程庫214)中的過程來生成線程的指定(圖12的(3)部分、(4)部分及(6)部分)(信息)。系統(tǒng)程序210以下處理來作為對PLC的控制動作的執(zhí)行準(zhǔn)備處理,在該處理中,按照包含在排程構(gòu)建數(shù)據(jù)234中的用于生成線程的指定(信息)來生成線程(圖7的步驟SI)。由此,能夠利用實時0S200的執(zhí)行等待隊列和執(zhí)行優(yōu)先級的機構(gòu),進行對PLCl的控制動作的執(zhí)行控制。此外,后述的第二實施方式也共通地具有該特征。
[0237]另外,在第一實施方式中,排程構(gòu)建數(shù)據(jù)234包含用于在執(zhí)行線程的過程中起動其他線程的指定(在圖12等中示出的對線程的“開始條件”的指定)(信息),來作為與線程相關(guān)的數(shù)據(jù)。由此,能夠以高自由度來進行對PLCl的控制動作的執(zhí)行控制,而這種高自由度是僅使用優(yōu)先級機構(gòu)(機制)無法實現(xiàn)的。此外,在后述的第二實施方式中也共通地具有該特征。
[0238]另外,在第一實施方式中,排程構(gòu)建數(shù)據(jù)234包含用于對成為重復(fù)(反復(fù))執(zhí)行的單位的任務(wù)進行設(shè)定的指定(信息),該指定(信息)包含一個或多個線程。系統(tǒng)程序210包含按照用于對包含在排程構(gòu)建數(shù)據(jù)234指定任務(wù)進行設(shè)定的指定(信息)來設(shè)定任務(wù)的處理(典型地,圖7的步驟SI中的生成獨立過程的處理),以作為對PLCl的控制動作的執(zhí)行準(zhǔn)備處理。由此,反復(fù)執(zhí)行的單位變得更加易懂。另外,若將執(zhí)行循環(huán)的周期設(shè)定到任務(wù)中而不是設(shè)定到各線程中,則對執(zhí)行循環(huán)的設(shè)定變得更加簡單。另外,對反復(fù)執(zhí)行的單位(任務(wù))進行執(zhí)行次數(shù)的計數(shù)或執(zhí)行時間的計測的處理也變得容易。[0239]另外,CPU單元13在如下情況下能夠執(zhí)行控制動作,該情況是指,在存儲單元(主存儲器104或非易失性存儲器106)中保存有包含對如下過程的執(zhí)行順序的指定(信息)的排程構(gòu)建數(shù)據(jù)234,其中,該過程的執(zhí)行順序,用于反復(fù)進行輸出數(shù)據(jù)的發(fā)送、輸入數(shù)據(jù)的接收以及使用輸入數(shù)據(jù)來生成輸出數(shù)據(jù)的控制程序的執(zhí)行。
[0240](f4:排程例1:在執(zhí)行循環(huán)周期內(nèi)未執(zhí)行結(jié)束的情況)
[0241]接著,說明任務(wù)在對該任務(wù)設(shè)定的執(zhí)行循環(huán)周期內(nèi)未執(zhí)行結(jié)束的情況,即執(zhí)行循環(huán)超過(超限)時的動作。
[0242]圖15及圖16是示出了在本發(fā)明的第一實施方式的排程例I中控制A線程的執(zhí)行在第k循環(huán)內(nèi)未結(jié)束的情況的動作的時序圖。
[0243]如上述的圖12的(2)部分及(5)部分所示,由于對控制A任務(wù)及控制B任務(wù)的“循環(huán)超過容許次數(shù)”分別指定有“1”,因而對控制A任務(wù)及控制B任務(wù)容許延長一次控制循環(huán)的執(zhí)行循環(huán)。
[0244]如圖15所示,由于在用于開始第k+Ι循環(huán)的控制循環(huán)開始中斷發(fā)生之前,控制A程序尚未執(zhí)行結(jié)束,因而該控制A程序被實時0S200執(zhí)行中斷。
[0245]如圖16所示,在第k+Ι循環(huán)中,控制循環(huán)開始過程與第k循環(huán)同樣地執(zhí)行。在第k+Ι循環(huán)開始時,在第k循環(huán)中執(zhí)行開始的控制A任務(wù)的執(zhí)行未結(jié)束,但由于屬于圖1lA所記載的任務(wù)開始過程的“遞增計數(shù)后的執(zhí)行循環(huán)數(shù)超過了執(zhí)行循環(huán)周期(η)并且任務(wù)結(jié)束標(biāo)識為閉(OFF)”條件,因而控制循環(huán)開始過程起動輸入輸出A線程。這樣,就輸入輸出A線程而言,除了執(zhí)行循環(huán)超過的錯誤處理的情況及前一次控制循環(huán)的輸入輸出A線程未結(jié)束的情況之外,在所有的控制循環(huán)中都被執(zhí)行。在第k+Ι循環(huán)中的輸入輸出A線程的通信結(jié)束通知等待時間內(nèi),控制A程序從執(zhí)行中斷的位置開始執(zhí)行。進而,在輸入輸出A線程的執(zhí)行結(jié)束后,控制A程序再次執(zhí)行開始。就輸入輸出A線程的后續(xù)起動過程而言,由于本來是起動控制A線程但控制A線程已被起動,因而不能重復(fù)起動控制A線程。
[0246]在第k+Ι循環(huán)中,若控制A任務(wù)的任務(wù)結(jié)束過程的執(zhí)行結(jié)束,控制B線程成為Run狀態(tài)。控制B任務(wù)的執(zhí)行循環(huán)從第k循環(huán)開始,但在第k循環(huán)中沒有執(zhí)行控制B線程的時間,因而控制B線程從第k+Ι循環(huán)開始執(zhí)行。
[0247]就控制B任務(wù)的執(zhí)行循環(huán)而言,本來在第k+Ι循環(huán)內(nèi)結(jié)束,但在第k+Ι循環(huán)內(nèi)控制B線程未執(zhí)行結(jié)束,因而控制B任務(wù)也發(fā)生執(zhí)行循環(huán)超過。
[0248]如在圖1lA中說明的那樣,若在執(zhí)行循環(huán)周期中任務(wù)在加上了循環(huán)超過容許次數(shù)的控制循環(huán)次數(shù)內(nèi)執(zhí)行未結(jié)束,則執(zhí)行執(zhí)行循環(huán)超過的錯誤處理(出錯處理)。例如,中止控制動作,并將發(fā)生執(zhí)行循環(huán)超過的情況(的信息)經(jīng)由未圖示的網(wǎng)絡(luò)報知給上位計算機。
[0249]在第一實施方式的PLCl的CPU單元13中,設(shè)有用于設(shè)定控制循環(huán)周期的單元。作為設(shè)定控制循環(huán)周期的單元,具有為了設(shè)定控制循環(huán)周期而使用的以下的要素,即,為了獲取用于指定控制循環(huán)周期的信息而使用的與PLC輔助裝置8進行通信的通信單元、包含在系統(tǒng)程序210中的用于設(shè)定控制循環(huán)周期的程序、能夠?qū)刂蒲h(huán)開始中斷信號的周期任意進行設(shè)定的系統(tǒng)計時器的結(jié)構(gòu)。也可以將用于接受用于指定控制循環(huán)周期的輸入的操作開關(guān)等輸入裝置安裝到CPU單元13本身上,以代替從PLC輔助裝置8獲取用于指定控制循環(huán)周期的信息。
[0250]第一實施方式的PLCl的CPU單元13的通信電路(PLC系統(tǒng)總線控制器120或現(xiàn)場網(wǎng)絡(luò)控制器140或這兩者),在每個控制循環(huán)中進行輸出數(shù)據(jù)的發(fā)送及輸入數(shù)據(jù)的接收。更加具體地,通信電路接受通過輸入輸出指示過程的執(zhí)行來生成的輸入輸出指示信號,由此進行發(fā)送及接收。代替上述處理,也可以使通信電路通過被由系統(tǒng)計時器生成的規(guī)定周期的信號觸發(fā)來進行每個控制循環(huán)中的發(fā)送及接收。另外,也可以通過在通信電路本身設(shè)置計時器電路,來按照該計時器電路生成的規(guī)定周期的信號來進行每個控制循環(huán)中的發(fā)送及接收。
[0251]如在上面說明的那樣,第一實施方式的PLCl的CPU單元13具有用于設(shè)定控制循環(huán)周期的單元。通信電路在每個控制循環(huán)中進行輸出數(shù)據(jù)的發(fā)送及輸入數(shù)據(jù)的接收。而且,排程構(gòu)建數(shù)據(jù)234包含對如下過程的執(zhí)行順序的指定(信息),該過程是指,對于與控制循環(huán)周期相等的執(zhí)行循環(huán)的周期內(nèi)執(zhí)行的控制程序(控制A程序),在控制程序的執(zhí)行結(jié)束的控制循環(huán)的下一個控制循環(huán)內(nèi),使微處理器100在通信電路進行輸出數(shù)據(jù)的發(fā)送及輸入數(shù)據(jù)的接收之后,開始執(zhí)行控制程序,而在控制程序的執(zhí)行未結(jié)束的控制循環(huán)的下一個控制循環(huán)內(nèi),使微處理器100執(zhí)行控制程序中的未執(zhí)行的部分。根據(jù)這樣的CPU單元13,PLCl的用戶能夠在控制程序的執(zhí)行時間零星地變長的狀況下,將由PLCl的CPU單元13為了進行控制數(shù)據(jù)的輸出及輸入而與控制循環(huán)同步進行的通信的周期,設(shè)定為比控制程序的最大執(zhí)行時間更短的規(guī)定時間。
[0252]這種狀況的一個例子是控制程序230包含動態(tài)運算程序的情況,該動態(tài)運算程序在每次被執(zhí)行時都要計算用于輸出給電機驅(qū)動器的指令值。動態(tài)運算程序存在如下情況,即,該動態(tài)運算程序在被通過按照用戶的控制目的來生成的用戶程序236 (序列程序)起動而初次執(zhí)行時,因執(zhí)行開始計算指令值所需的初始處理而需要比后續(xù)的執(zhí)行所需的時間更長的執(zhí)行時間。在這樣的狀況下,也能夠?qū)⒂蒀PU單元13為了執(zhí)行控制數(shù)據(jù)的輸出及輸入而與控制循環(huán)同步進行的通信的周期,設(shè)定為比控制程序230的最大執(zhí)行時間更短的規(guī)定時間。
[0253](f5:同步輸入復(fù)制過程)
[0254]接著,詳細說明同步輸入復(fù)制過程的功能。圖17是用于說明本發(fā)明的第一實施方式中準(zhǔn)備的同步輸入復(fù)制過程的動作的時序圖。
[0255]在圖17所示的排程例中,示出了執(zhí)行了執(zhí)行循環(huán)為一個控制循環(huán)的“輸入輸出C線程”、執(zhí)行循環(huán)為兩個控制循環(huán)的“控制C線程”以及執(zhí)行循環(huán)為四個控制循環(huán)的“控制D線程”這樣的合計三個線程的情況。
[0256]輸入輸出C線程的結(jié)構(gòu)與圖13及圖14所示的輸入輸出A線程相同??刂艭線程及控制D線程的結(jié)構(gòu)分別與圖13及圖14所示的控制A線程及控制B線程相同,但執(zhí)行循環(huán)的周期與控制A線程及控制B線程不同。另外,在控制C線程中執(zhí)行控制C程序,在控制D線程中執(zhí)行控制D程序。圖17的各線程分別屬于不同的任務(wù)中。
[0257]圖17的接收緩存是圖4的PLC系統(tǒng)總線接收緩存1044及現(xiàn)場網(wǎng)絡(luò)接收緩存1046。圖17的輸入同步緩存C是針對由在控制C線程中執(zhí)行的控制C程序進行參照的每個輸入數(shù)據(jù)來設(shè)定的。同樣地,圖17的輸入同步緩存D是針對由在控制D線程中執(zhí)行的控制D程序進行參照的每個輸入數(shù)據(jù)來設(shè)定的。輸入同步緩存C及輸入同步緩存D設(shè)在圖4的輸入同步緩沖區(qū)域1042d。此外,也可以將由控制程序使用的變量區(qū)域按照原樣直接作為輸入同步緩存來利用。[0258]參照圖17,在每次執(zhí)行輸入輸出C線程時,將PLC系統(tǒng)總線控制器120或現(xiàn)場網(wǎng)絡(luò)控制器140或這兩者所接收的新的輸入數(shù)據(jù)覆寫(覆蓋)保存到接收緩存中。同步輸入復(fù)制過程將保存在接收緩存中的輸入數(shù)據(jù),復(fù)制到使用該輸入數(shù)據(jù)的控制程序的輸入同步緩存(輸入同步緩存C及輸入同步緩存D)中。此時,以適于控制程序使用的形式再次配置輸入數(shù)據(jù)。
[0259]如在圖1lB中說明的那樣,同步輸入復(fù)制過程僅限于任務(wù)的執(zhí)行循環(huán)數(shù)為“I”的情況,即,僅限于當(dāng)前的控制循環(huán)在任務(wù)的執(zhí)行循環(huán)中處于最初的控制循環(huán)的情況,具有將對該任務(wù)預(yù)先指定的輸入數(shù)據(jù)從接收緩存復(fù)制到輸入同步緩存中的功能。從而,如圖17所示,在控制循環(huán)I?控制循環(huán)4的范圍內(nèi),從接收緩存向輸入同步緩存C的復(fù)制僅在控制循環(huán)I及控制循環(huán)3中進行,從接收緩存向輸入同步緩存D的復(fù)制僅在控制循環(huán)I中進行。這是由于控制C線程的執(zhí)行循環(huán)設(shè)定為兩個控制循環(huán),控制D線程的執(zhí)行循環(huán)為四個控制循環(huán)。
[0260]于是,保存在輸入同步緩存中的輸入數(shù)據(jù),在執(zhí)行參照該輸入數(shù)據(jù)的控制程序的期間內(nèi),不會被新的輸入數(shù)據(jù)覆蓋,因而即使控制程序參照幾次輸入數(shù)據(jù)都能夠得到相同的值,從而能夠進行具有一致性的運算。進而,由于僅在控制線程(控制程序)的執(zhí)行循環(huán)中的最初的控制循環(huán)中進行輸入復(fù)制,因而能夠使得使用控制程序的輸入數(shù)據(jù)的更新周期恒定。
[0261]在圖17中,針對每個控制程序以及針對每個輸入數(shù)據(jù)設(shè)定一個輸入同步緩存,但也可以針對每個控制程序以及針對每個輸入數(shù)據(jù)設(shè)定兩個或三個輸入同步緩存,由此設(shè)計一邊更替各輸入同步緩存的作用(狀態(tài))一邊運用的過程。例如,設(shè)計為使一個緩存處于由控制程序參照的狀態(tài)(參照狀態(tài))而使另一個緩存處于能夠?qū)懭胄碌妮斎霐?shù)據(jù)的狀態(tài)(寫入狀態(tài))。然后,在開始執(zhí)行控制程序之前,若在能夠?qū)懭氲木彺嬷斜4嬗行碌妮斎霐?shù)據(jù),則能夠更替兩個緩存的作用。這樣,由于不會存在不能進行輸入復(fù)制的期間,因而能夠防止輸入數(shù)據(jù)消失。其中,在圖17的排程例中,各線程的執(zhí)行循環(huán)的周期為整數(shù)倍的關(guān)系,因而控制程序應(yīng)使用的輸入數(shù)據(jù)的原本就不會消失。也可以取代直接更替輸入同步緩存的參照狀態(tài)和寫入狀態(tài),采取如下方法,即,通過利用三個緩存,來使保存了新的輸入數(shù)據(jù)的緩存從寫入狀態(tài)經(jīng)由第三狀態(tài)(待機狀態(tài))轉(zhuǎn)移至參照狀態(tài)。
[0262]此外,如在圖1lB中說明的那樣,還準(zhǔn)備有如下的輸入復(fù)制過程,該輸入復(fù)制過程將預(yù)先指定的輸入數(shù)據(jù)從接收緩存復(fù)制到輸入同步緩存中的功能,但不對各任務(wù)的執(zhí)行循環(huán)數(shù)進行判斷(過程本身不具有與其他任務(wù)的執(zhí)行循環(huán)采取同步的功能)。在后述的排程例3中說明這樣的輸入復(fù)制過程的使用例。
[0263]對于利用接收緩存及輸入同步緩存的CPU單元13或利用輸入復(fù)制過程或同步輸入復(fù)制過程的輸入復(fù)制處理的CPU單元13的特征,能夠總結(jié)如下。
[0264]系統(tǒng)程序210包括:作為對PLCl的控制動作的執(zhí)行準(zhǔn)備處理,在存儲單元(主存儲器104等)中生成用于保存所接收的輸入數(shù)據(jù)的接收緩存的處理(圖7的步驟SI);針對由控制程序230參照的每個輸入數(shù)據(jù),在存儲單元(主存儲器104等)中生成由該控制程序230作為輸入數(shù)據(jù)的參照對象的輸入同步緩存的處理(圖7的步驟SI)。
[0265]排程構(gòu)建數(shù)據(jù)234包括對如下過程的執(zhí)行順序的指定,該過程使微處理器100執(zhí)行以下處理,即,將所接收的輸入數(shù)據(jù)從接收緩存復(fù)制到與該輸入數(shù)據(jù)相對應(yīng)的輸入同步緩存中的輸入復(fù)制處理、使控制程序230執(zhí)行開始的控制程序開始處理。于是,保存在輸入同步緩存中的輸入數(shù)據(jù),在執(zhí)行參照該輸入數(shù)據(jù)的控制程序的期間內(nèi),不會被新的輸入數(shù)據(jù)覆蓋,因而控制程序230即使參照幾次輸入數(shù)據(jù)都能夠得到相同的值,從而能夠進行具有一致性的運算。
[0266]進而,對利用同步輸入復(fù)制過程的同步輸入復(fù)制處理的CPU單元13的特征,能夠總結(jié)如下。
[0267]在每個控制循環(huán)中執(zhí)行輸入數(shù)據(jù)的接收。排程構(gòu)建數(shù)據(jù)234包括對如下過程的執(zhí)行順序的指定,該過程使微處理器100執(zhí)行以下處理,即,在控制循環(huán)的整數(shù)倍的每個執(zhí)行循環(huán)中執(zhí)行控制程序開始處理,并且在控制程序的執(zhí)行循環(huán)開始的控制循環(huán)中將所接收的輸入數(shù)據(jù)作為對象,執(zhí)行輸入復(fù)制處理。于是,能夠使控制程序230所使用的輸入數(shù)據(jù)的更新周期恒定。
[0268](f6:同步輸出復(fù)制過程)
[0269]接著,詳細說明同步輸出復(fù)制過程的功能。圖18是用于說明本發(fā)明的第一實施方式中準(zhǔn)備的同步輸出復(fù)制過程的動作的時序圖。
[0270]在圖18所示的排程例中,示出了執(zhí)行輸入輸出C線程、控制C線程及控制D線程這合計三個線程的情況。這些線程的排程例與圖17的排程例相同。
[0271]圖18的發(fā)送緩存是圖4的PLC系統(tǒng)總線發(fā)送緩存1043及現(xiàn)場網(wǎng)絡(luò)發(fā)送緩存1045。圖18的輸出同步緩存C針對通過在控制C線程中執(zhí)行的控制C程序的執(zhí)行來生成的每個輸出數(shù)據(jù)而設(shè)定的。同樣地,輸出同步緩存D針對通過在控制D線程中執(zhí)行的控制D程序的執(zhí)行來生成的每個輸出數(shù)據(jù)而設(shè)定的。輸出同步緩存C及輸出同步緩存D設(shè)在圖4的輸出同步緩沖區(qū)域1042c。此外,也可以將由控制程序使用的變量區(qū)域按照原樣直接作為輸出同步緩存來使用。
[0272]參照圖18,在每次執(zhí)行包含在輸入輸出C線程中的輸入輸出指示過程時,PLC系統(tǒng)總線控制器120或現(xiàn)場網(wǎng)絡(luò)控制器140或這兩者,發(fā)送保存在發(fā)送緩存中的輸出數(shù)據(jù)。同步輸出復(fù)制過程在執(zhí)行輸入輸出指示過程之前被執(zhí)行,將保存在輸出同步緩存(輸出同步緩存C及輸出同步緩存D)中的輸出數(shù)據(jù)復(fù)制至發(fā)送緩存。此時,在PLC系統(tǒng)總線發(fā)送緩存1043中,以針對每個發(fā)送對象的單元集中配置的形式,再次配置輸出數(shù)據(jù),另外,在現(xiàn)場網(wǎng)絡(luò)發(fā)送緩存1045中,能夠以串行幀發(fā)送的形式,再次配置輸出數(shù)據(jù)。
[0273]如在圖1lA中說明的那樣,同步輸出復(fù)制過程僅限于任務(wù)的執(zhí)行循環(huán)數(shù)為“I”的情況,即,僅限于當(dāng)前的控制循環(huán)在任務(wù)的執(zhí)行循環(huán)中處于最初的控制循環(huán)的情況,具有將對該任務(wù)預(yù)先指定的輸出數(shù)據(jù)從輸出同步緩存復(fù)制到發(fā)送緩存中的功能。從而,如圖18所述,在控制循環(huán)I?控制循環(huán)4的范圍內(nèi),從輸出同步緩存C向發(fā)送緩存的復(fù)制僅在控制循環(huán)I及控制循環(huán)3中進行,從輸出同步緩存D向發(fā)送緩存的復(fù)制僅在控制循環(huán)I中進行。這是由于控制C線程的執(zhí)行循環(huán)設(shè)定為兩個控制循環(huán),控制D線程的執(zhí)行循環(huán)設(shè)定為四個控制循環(huán)。
[0274]于是,保存在發(fā)送緩存中的輸出數(shù)據(jù),在剛要在各控制程序的執(zhí)行循環(huán)中的最初的控制循環(huán)中發(fā)送之前,從輸出同步緩存復(fù)制至該發(fā)送緩存。該輸出數(shù)據(jù)是在之前的執(zhí)行循環(huán)中生成的,在輸出數(shù)據(jù)被復(fù)制到發(fā)送緩存的時間點,之前的執(zhí)行循環(huán)中的控制程序的執(zhí)行已結(jié)束。從而,不會發(fā)送在控制程序的執(zhí)行過程中的還有可能被更新的輸出數(shù)據(jù)。進而,由于僅在控制線程(控制程序)的執(zhí)行循環(huán)中的最初的控制循環(huán)中進行輸出復(fù)制,因而能夠使所發(fā)送的輸出數(shù)據(jù)的更新周期恒定。
[0275]此外,如在圖1lA中說明的那樣,還準(zhǔn)備有如下的輸出復(fù)制過程,該輸出復(fù)制過程具有將預(yù)先指定的輸出數(shù)據(jù)從輸出同步緩存復(fù)制到發(fā)送緩存中的功能,但不對各任務(wù)的執(zhí)行循環(huán)數(shù)進行判斷(過程本身不具有與其他任務(wù)的執(zhí)行循環(huán)采取同步的功能)。在后述的排程例3中說明這樣的輸出復(fù)制過程的使用例。
[0276]對于使用輸出同步緩存及發(fā)送緩存的CPU單元13或使用輸出復(fù)制過程或同步輸出復(fù)制過程的輸出復(fù)制處理的CPU單元13的特征,能夠總結(jié)如下。
[0277]作為對PLCl的控制動作的執(zhí)行準(zhǔn)備處理,系統(tǒng)程序210包括:在存儲單元(主存儲器104等)中生成用于保存應(yīng)發(fā)送的輸出數(shù)據(jù)的發(fā)送緩存的處理(圖7的步驟SI);對于保存有復(fù)制在發(fā)送緩存中的輸出數(shù)據(jù)的輸出同步緩存,針對每個輸出數(shù)據(jù),在存儲單元(主存儲器104等)中生成該輸出同步緩存的處理(圖7的步驟SI)。
[0278]排程構(gòu)建數(shù)據(jù)234包括對如下過程的執(zhí)行順序的指定,該過程使微處理器100執(zhí)行將輸出數(shù)據(jù)從輸出同步緩存復(fù)制到發(fā)送緩存中的輸出復(fù)制處理。這樣一來,在控制程序的執(zhí)行過程中還有可能被覆蓋更新的輸出數(shù)據(jù)不會被發(fā)送。
[0279]進而,對于使用同步輸出復(fù)制過程的同步輸出復(fù)制處理的CPU單元13的特征,能夠總結(jié)如下。
[0280]排程構(gòu)建數(shù)據(jù)234包括對如下過程的執(zhí)行順序的指定,該過程使微處理器100執(zhí)行以下處理,即,在控制循環(huán)的整數(shù)倍的每個執(zhí)行循環(huán)中執(zhí)行控制程序開始處理,并且在控制程序230的執(zhí)行循環(huán)的最初的控制循環(huán)中,在由之前的執(zhí)行循環(huán)中的控制程序230的執(zhí)行而生成的輸出數(shù)據(jù)從發(fā)送緩存被發(fā)送的時刻,執(zhí)行輸出復(fù)制處理。于是,能夠使所發(fā)送的輸出數(shù)據(jù)的更新周期恒定。
[0281](f7:變量配送過程及開始參照變量過程)
[0282]接著,詳細說明變量配送過程及開始參照變量過程的功能(變量同步功能)。圖19是用于說明本發(fā)明的第一實施方式中準(zhǔn)備的變量配送過程及開始參照變量過程的動作的時序圖。
[0283]圖19所示的排程例,與上述的圖13及圖14所示的排程例I相同,僅示出了與變量同步功能關(guān)聯(lián)的控制A線程及控制B線程的部分。
[0284]圖19的全局變量區(qū)域A是用于保存如下變量的主存儲器的區(qū)域,該變量即由控制A線程的控制程序A來使用,也由其他線程的控制程序(具體地,控制B線程的控制B程序)來參照。全局變量區(qū)域A設(shè)在圖4的全局變量區(qū)域1042a。此外,也可以將由控制程序230使用的變量區(qū)域按照原樣直接作為全局變量區(qū)域來使用。
[0285]將容許對全局變量區(qū)域A進行改寫的控制程序(在圖19的例子中是控制程序A)稱為“主側(cè)控制程序”,將僅容許參照的控制程序(在圖19的例子中是控制程序B)稱為“參照側(cè)控制程序”。對于一個全局變量,也可以有一個主側(cè)控制程序但有多個參照側(cè)控制程序。
[0286]針對由控制B線程的控制B程序作為參照側(cè)控制程序來參照的每個全局變量,在圖4的變量同步緩沖區(qū)域1042b設(shè)有變量同步緩存B。此外,也可以將由控制程序230使用的變量區(qū)域按照原樣直接作為變量同步緩存來利用。
[0287]哪個控制程序230是主側(cè)控制程序或參照側(cè)控制程序,是針對每個全局變量作為變量的屬性來指定的。包含該指定的變量的屬性數(shù)據(jù),是在PLC輔助裝置8中通過用戶的輸入操作來生成的,將所生成的變量的屬性數(shù)據(jù)從PLC輔助裝置8發(fā)送至CPU單元13,并將其保存至CPU單元13的非易失性存儲器106。
[0288]雖未圖示,但還存在控制B程序是主側(cè)控制程序而控制A程序是參照側(cè)控制程序的全局變量,針對該全局變量設(shè)有與控制B程序相對應(yīng)關(guān)聯(lián)的全局變量區(qū)域B和與控制A程序相對應(yīng)關(guān)聯(lián)的變量同步緩存A。
[0289]變量配送過程,將在自身所屬的線程中執(zhí)行的控制程序230是主側(cè)的全局變量的值,從全局變量區(qū)域,復(fù)制到與作為該全局變量的參照側(cè)的控制程序相對應(yīng)關(guān)聯(lián)的變量同步緩存中。在圖19中示出了由控制A線程的變量配送過程將全局變量區(qū)域A的內(nèi)容(數(shù)據(jù))復(fù)制到變量同步緩存B中的情況。
[0290]開始參照變量過程進行用于使由在自身所屬的線程中執(zhí)行的控制程序參照的變量同步緩存的內(nèi)容不被更新的處理。在圖19中,控制B線程的開始參照變量過程使變量同步緩存B處于寫入禁止?fàn)顟B(tài)。從而,在控制循環(huán)I中,控制A線程的變量配送過程能夠向變量同步緩存B進行復(fù)制,但在控制B線程的開始參照變量過程被執(zhí)行之后即在控制循環(huán)2中,控制A線程的變量配送過程不能向變量同步緩存B進行復(fù)制??梢允谷蝿?wù)結(jié)束過程具有用于解除該變量同步緩存的寫入禁止?fàn)顟B(tài)的功能,也可以準(zhǔn)備具有解除寫入禁止?fàn)顟B(tài)的變量參照結(jié)束過程。
[0291]于是,即使在從控制B程序的執(zhí)行開始起到執(zhí)行結(jié)束為止的期間由控制程序A對全局變量區(qū)域A進行了改寫,也由于由控制程序B參照的變量同步緩存B的內(nèi)容不會被改寫,因而即使控制程序B參照幾次該全局變量都能夠得到相同的值,從而能夠進行具有一致性的運算。
[0292]在圖19中,針對每個控制程序以及針對由該控制程序作為參照側(cè)來參照的每個全局變量設(shè)定了變量同步緩存,但也可以針對每個控制程序以及針對由該控制程序作為參照側(cè)來參照的每個全局變量設(shè)定兩個或三個變量同步緩存,由此設(shè)計能夠一邊更替各變量同步緩存的作用(狀態(tài))一邊運用的過程。例如,設(shè)計為使一個緩存處于由參照側(cè)控制程序參照的狀態(tài)(參照狀態(tài))而使另一個緩存處于能夠?qū)懭胄聰?shù)據(jù)的狀態(tài)(寫入狀態(tài))。然后,在開始執(zhí)行參照側(cè)控制程序之前,若在能夠?qū)懭氲木彺嬷斜4嬗行碌妮斎霐?shù)據(jù),則更替兩個緩存的作用。這樣,由于不會存在不能進行變量配送的期間,因而能夠防止由主側(cè)控制程序生成的最新全局變量值的配送遺漏。在圖19的情況下,對于在控制循環(huán)2及控制循環(huán)4中由控制A程序生成的全局變量的值,由于在控制B程序的各執(zhí)行開始時間點不是最新的,因而即使不配送也沒問題,但在利用多核微處理器來以不同的核來并行執(zhí)行控制A程序和控制B程序的情況下,若變量同步緩存是一個則有可能發(fā)生配送遺漏。這樣的情況下,通過如上述那樣用兩個變量同步緩存一邊更替一組變量同步緩存的參照狀態(tài)和寫入狀態(tài)一邊運用,能夠防止配送遺漏。也可以取代直接更替變量同步緩存的參照狀態(tài)和寫入狀態(tài),采取如下方法,即,通過使用三個緩存,來使保存有新配送來的全局變量的值的緩存從寫入狀態(tài)經(jīng)由第三狀態(tài)(待機狀態(tài))轉(zhuǎn)移至參照狀態(tài)。
[0293]對于使用全局變量區(qū)域及變量同步緩存的CPU單元13或使用變量配送過程的變量配送處理的CPU單元13的特征,能夠總結(jié)如下。
[0294]存儲單元(非易失性存儲器106等)用于保存對由控制程序230使用的變量的屬性數(shù)據(jù)。就屬性數(shù)據(jù)而言,在變量是由多個控制程序230參照的全局變量的情況下,能夠包含對能夠?qū)υ撟兞窟M行改寫的一個主側(cè)控制程序的指定以及對僅能夠參照該變量的一個或多個參照側(cè)控制程序的指定(信息)。
[0295]作為對PLCl的控制動作的執(zhí)行準(zhǔn)備處理,系統(tǒng)程序210包括:在存儲單元(主存儲器104等)中生成用于保存全局變量的全局變量區(qū)域1042a的處理(圖7的步驟SI);對于各參照側(cè)控制程序,針對由該參照側(cè)控制程序參照的每個全局變量,在由該參照側(cè)控制程序參照全局變量時,取代全局變量區(qū)域而將作為參照對象的變量同步緩存生成到存儲單元(主存儲器104等)中的處理(圖7的步驟SI)。
[0296]排程構(gòu)建數(shù)據(jù)234包括對如下過程的執(zhí)行順序的指定,該過程使微處理器100執(zhí)行以下處理,即,使主側(cè)控制程序執(zhí)行開始的主側(cè)開始處理;若主側(cè)控制程序的執(zhí)行結(jié)束,則將由該主側(cè)控制程序改寫的全局變量從全局變量區(qū)域復(fù)制到與該全局變量相對應(yīng)的變量同步緩存中的復(fù)制處理;使參照側(cè)控制程序執(zhí)行開始的參照側(cè)開始處理。
[0297]這樣,即使在從參照側(cè)控制程序執(zhí)行開始起到執(zhí)行結(jié)束為止的期間由主側(cè)控制程序?qū)θ肿兞繀^(qū)域進行了改寫,也由于由參照側(cè)控制程序參照的變量同步緩存的內(nèi)容不會被改寫,因而即使參照側(cè)控制程序參照幾次該全局變量都能夠得到相同的值,從而能夠進行具有一致性的運算。
[0298](f8:排程例 2)
[0299]接著,說明本發(fā)明的第一實施方式的排程例2。
[0300]圖20是示出了與本發(fā)明的第一實施方式的排程例2相對應(yīng)的排程構(gòu)建數(shù)據(jù)234的圖。圖21是本發(fā)明的第一實施方式的排程例2的第k循環(huán)的時序圖。對于根據(jù)圖20的排程構(gòu)建數(shù)據(jù)234來生成圖21的序列的處理,若考慮排程例I則會不言自明,因而不詳細說明圖20的排程構(gòu)建數(shù)據(jù)234和圖21的序列之間的關(guān)系。
[0301]就排程例2而言,與上述的排程例I相比,不同點在于,輸入輸出線程(排程例I的輸入輸出A線程)分為輸出線程(輸出E線程)和輸入線程(輸入E線程)。另外,與排程例I的控制B線程的情況相比,不同點在于對控制F線程的開始條件指定有控制F任務(wù),因而利用控制F任務(wù)的任務(wù)開始過程來起動控制F線程。在控制F線程不使用輸入數(shù)據(jù)的情況下,通過不這樣等待輸入E線程的結(jié)束,而在輸入E線程的通信結(jié)束通知的等待時間使控制F線程的執(zhí)行開始,能夠提早結(jié)束控制F線程。
[0302]在排程例2中,說明分別獨立地設(shè)定輸出E線程和輸入E線程的情況??紤]作為現(xiàn)場網(wǎng)絡(luò)使用“EtherCAT”(注冊商標(biāo))的情況,例如考慮如下情況,即,在第k循環(huán)中發(fā)送來的幀因噪聲的影響等而在網(wǎng)絡(luò)傳送過程中丟失,導(dǎo)致在網(wǎng)絡(luò)中巡回一圈的幀未到達CPU單元13的情況。在排程例I及排程例2中,不生成通信結(jié)束通知,導(dǎo)致產(chǎn)生控制A任務(wù)或控制E任務(wù)在第k循環(huán)中未結(jié)束這樣的循環(huán)超過的現(xiàn)象。
[0303]在這樣的情況下,如排程例I那樣,若輸入輸出線程是一個線程,則在第k+Ι循環(huán)中再次等待通信結(jié)束通知,但若在網(wǎng)絡(luò)中幀本身丟失,則發(fā)生最終超過循環(huán)超過容許次數(shù)的錯誤。對此,在排程例2中,第k+Ι循環(huán)屬于在圖1lA中關(guān)于任務(wù)開始過程進行說明的“在遞增計數(shù)后執(zhí)行循環(huán)數(shù)超過執(zhí)行循環(huán)周期(η)而且任務(wù)結(jié)束標(biāo)識為閉(OFF)”這樣的條件。因此,第k+Ι循環(huán)的任務(wù)開始過程起動設(shè)定為后續(xù)起動對象的輸出E線程。從而,發(fā)送新的幀,在該幀在網(wǎng)絡(luò)中巡回一圈后回來時,能夠繼續(xù)進行如圖21所示的輸入E線程的通信結(jié)束通知以后的處理。
[0304]這樣,在采用了幀在網(wǎng)絡(luò)中巡回一圈的類型的現(xiàn)場網(wǎng)絡(luò)的情況下,如本排程例那樣,通過分開輸出線程和輸入線程,即使在網(wǎng)絡(luò)中幀丟失的情況下,也會使繼續(xù)進行規(guī)定周期的網(wǎng)絡(luò)通信的處理變得容易。
[0305](f9:排程例 3)
[0306]接著,說明本發(fā)明的第一實施方式的排程例3。
[0307]圖22是示出了與本發(fā)明的第一實施方式的排程例3相對應(yīng)的排程構(gòu)建數(shù)據(jù)234的圖。圖23是本發(fā)明的第一實施方式的排程例3的第k循環(huán)的時序圖。圖24是本發(fā)明的第一實施方式的排程例3的第k+Ι循環(huán)的時序圖。對于根據(jù)圖22的排程構(gòu)建數(shù)據(jù)234來生成圖23及圖24的序列的處理,若考慮排程例I則會不言自明,因而不詳細說明圖22的排程構(gòu)建數(shù)據(jù)234和圖23及圖24的序列之間的關(guān)系。
[0308]就排程例3而言,與上述的排程例I相比,不同點在于,執(zhí)行循環(huán)的周期較長,因而該周期中包含的作為控制線程的優(yōu)先級較低的任務(wù)的控制任務(wù)H (相當(dāng)于排程例I的控制任務(wù)B)中也包含有輸入輸出線程(輸入輸出H線程)。
[0309]輸入輸出G線程例如通過現(xiàn)場網(wǎng)絡(luò)來進行控制G線程的控制A程序所需的所有的輸入輸出和控制H線程的控制程序B所需的一部分的輸入輸出。輸入輸出H線程例如通過PLC系統(tǒng)總線11來進行控制H線程的控制B程序所需的剩余的輸入輸出。
[0310]在輸入輸出G線程中,利用同步輸出復(fù)制過程及同步輸入復(fù)制過程,相對于此,在輸入輸出H線程中,僅進行從屬于相同任務(wù)的用于進行控制H線程的輸入輸出,因而利用對各任務(wù)的執(zhí)行循環(huán)數(shù)不進行判斷的(過程本身不具有與他的任務(wù)的執(zhí)行循環(huán)采取同步的功能)輸出復(fù)制過程及輸入復(fù)制過程。
[0311]這樣,也可以在執(zhí)行循環(huán)的周期較長的任務(wù)中進行輸入輸出處理。另外,也可以設(shè)定僅進行輸入輸出處理的任務(wù)。以與每個輸入數(shù)據(jù)及輸出數(shù)據(jù)相對應(yīng)地以執(zhí)行控制程序230所需的周期進行輸入輸出處理的方式,進行排程構(gòu)建,由此能夠避免白白地以高的頻率進行大量的數(shù)據(jù)量的通信而浪費通信時間的情況。
[0312](HO:排程例 4)
[0313]接著,說明本發(fā)明的第一實施方式的排程例4。
[0314]圖25是示出了與本發(fā)明的第一實施方式的排程例4相對應(yīng)的排程構(gòu)建數(shù)據(jù)234的圖。圖26是本發(fā)明的第一實施方式的排程例4的第k循環(huán)的時序圖。圖27是本發(fā)明的第一實施方式的排程例4的第k+Ι循環(huán)的時序圖。對于根據(jù)圖25的排程構(gòu)建數(shù)據(jù)234來生成圖26及圖27的序列的處理,若考慮排程例I則會不言自明,因而不詳細說明圖25的排程構(gòu)建數(shù)據(jù)234和圖26及圖27的序列之間的關(guān)系。
[0315]就排程例4而言,與上述的排程例I相比,不同點在于,在控制J線程中執(zhí)行的控制程序是動態(tài)運算程序而不包含序列程序,而且,僅在控制K線程中執(zhí)行根據(jù)用戶的控制目的來生成的序列程序。其中,與排程例I相比,不同點還有:序列程序僅在控制K線程中執(zhí)行,伴隨與此,數(shù)據(jù)追蹤過程在控制K線程中執(zhí)行,另外,由于不需要在多個序列程序之間進行全局變量的同步,因而不使用變量配送過程及開始參照變量過程。
[0316]在控制J線程中執(zhí)行的控制程序僅有動態(tài)運算程序,是由于在圖25的(4)部分的“控制程序指定”中指定為“動態(tài)運算程序”。在圖25的(6)部分的“控制程序指定”中指定有在控制K線程中執(zhí)行的控制程序為“序列K程序”,在“動態(tài)線程指定”中指定在“控制J線程”中執(zhí)行包含在序列K程序中的指定動態(tài)指令。
[0317]例如,若在序列K程序中執(zhí)行“請從坐標(biāo)Xl至X2為止以速度V移動”這樣的動態(tài)指令,通過與此相對應(yīng)地執(zhí)行其后的最初的控制循環(huán)中的控制J線程的動態(tài)運算程序,動態(tài)運算程序執(zhí)行用于對此后向伺服電機驅(qū)動器發(fā)送的位置及速度的指令值進行反復(fù)計算的初始運算以及第一次的指令值計算。此后,到由動態(tài)指令指示的動作結(jié)束為止,即使沒有來自序列K程序的干預(yù),也可以通過控制J線程的動態(tài)運算程序的執(zhí)行來針對每個控制循環(huán)計算指令值。計算并輸出指令值的周期較短的一方能夠使電機的動作的誤差變小。若假定包含在執(zhí)行循環(huán)為一個控制循環(huán)的任務(wù)中的控制程序僅有動態(tài)運算程序,則容易將控制循環(huán)周期設(shè)定得短。從該角度,優(yōu)選排程例4。
[0318](fll:排程例 5)
[0319]接著,說明本發(fā)明的第一實施方式的排程例5。
[0320]圖28是示出了與本發(fā)明的第一實施方式的排程例5相對應(yīng)的排程構(gòu)建數(shù)據(jù)234的圖。圖29是本發(fā)明的第一實施方式的排程例5的第k循環(huán)的時序圖。對于根據(jù)圖28的排程構(gòu)建數(shù)據(jù)234來生成圖29的序列的處理,若考慮排程例I則會不言自明,因而不詳細說明圖28的排程構(gòu)建數(shù)據(jù)234和圖29的序列之間的關(guān)系。
[0321]就排程例5而言,與上述的排程例I相比,不同點在于,在執(zhí)行循環(huán)周期為一個控制循環(huán)周期的控制L任務(wù)中,執(zhí)行輸入輸出L線程、控制LI線程及控制L2線程。在控制LI線程中執(zhí)行的控制程序是序列L程序,在控制LI線程中不執(zhí)行動態(tài)運算程序。另一方面,在控制L2線程中執(zhí)行的控制程序僅有按照包含在序列L程序中的動態(tài)指令來執(zhí)行的動態(tài)
運算程序。
[0322]排程例5的特征在于,輸入輸出處理、包含動態(tài)指令的序列程序(用戶程序)以及動態(tài)運算程序,以該順序被反復(fù)執(zhí)行。就動態(tài)運算程序而言,在按照動態(tài)指令開始反復(fù)執(zhí)行時,在到動態(tài)指令所指示的動作結(jié)束為止的期間,能夠在序列程序不干預(yù)的狀態(tài)下被執(zhí)行。然而,存在如下情況,即,在到動態(tài)指令所指示的動作結(jié)束為止的期間,因使用了新的輸入數(shù)據(jù)的序列程序的運算結(jié)果而導(dǎo)致向動態(tài)運算程序發(fā)送的指示內(nèi)容被變更。在這樣的情況下,若采用上述特征的排程,則通過輸入數(shù)據(jù)的輸入,經(jīng)由利用了該輸入數(shù)據(jù)的序列運算而將對動作的變更指示發(fā)送至動態(tài)運算程序,能夠縮短到輸出反映了變更指示的動態(tài)指令值為止的期間的時間。另外,通過輸入使動態(tài)指令的執(zhí)行條件成立的輸入數(shù)據(jù),還能夠縮短到按照該動態(tài)指令輸出最初的動態(tài)指令值為止的期間的時間。
[0323]在排程例I中,在控制程序A包含序列程序和在該序列程序之后接著執(zhí)行的動態(tài)運算程序的情況下,也能夠得到同樣的效果。
[0324]對于采用如上述那樣的處理順序的CPU單元13的特征,能夠總結(jié)如下。
[0325]控制程序230包括:動態(tài)運算程序234,其計算用于對電機的動作進行控制的動態(tài)指令值;用戶程序236,其是根據(jù)用戶的控制目的而生成的,包括對動態(tài)運算程序234發(fā)送用于執(zhí)行該動態(tài)運算程序234所需的指示的處理。
[0326]排程構(gòu)建數(shù)據(jù)234包含對如下過程的行順序的指定,該過程使PLCl的CPU單元13依次反復(fù)執(zhí)行如下處理,即,通過通信電路(PLC系統(tǒng)總線控制器120或現(xiàn)場網(wǎng)絡(luò)控制器140或這兩者)進行的輸出數(shù)據(jù)的發(fā)送及輸入數(shù)據(jù)的接收、用戶程序236的執(zhí)行、動態(tài)運算程序234的執(zhí)行。但是,與輸出數(shù)據(jù)的發(fā)送和輸入數(shù)據(jù)的接收之間的執(zhí)行順序無關(guān)。
[0327](f 12:排程例 6)
[0328]接著,說明本發(fā)明的第一實施方式的排程例6。在排程例6中,示出了執(zhí)行輸入輸出P線程、控制P線程及控制Q線程這合計三個線程的情況。
[0329]圖30是與本發(fā)明的第一實施方式的排程例6相對應(yīng)的時序圖。參照圖30,輸入輸出P線程及控制P線程包含在執(zhí)行循環(huán)周期為個控制循環(huán)周期的任務(wù)中,控制Q線程包含在執(zhí)行循環(huán)周期為兩個控制循環(huán)周期的任務(wù)中。而且,在控制P線程中執(zhí)行的第一控制程序230-1和在控制Q線程中執(zhí)行的第二控制程序230-2,均包含動態(tài)運算程序234。另外,第一控制程序230-1及第二控制程序230-2中的至少一個程序包括了含有動態(tài)指令的用戶程序236。
[0330]在圖30中,從輸入輸出P線程向控制P線程及控制Q線程分別延伸的箭頭,表示輸入數(shù)據(jù)的流向。具體地,相當(dāng)于由同步輸入復(fù)制過程執(zhí)行的輸入數(shù)據(jù)的復(fù)制。存在如下情況,即,在第一控制程序230-1或第二控制程序230-2或這兩者包含用戶程序236的情況下,在該輸入數(shù)據(jù)中,除了包含由該用戶程序236使用的輸入數(shù)據(jù)之外,還包含由動態(tài)運算程序234使用的輸入數(shù)據(jù)(此外,還存在動態(tài)運算程序234不使用輸入數(shù)據(jù)而執(zhí)行運算的情況)。
[0331]同樣地,在圖30中,從控制P線程及控制Q線程向輸入輸出P線程分別延伸的箭頭,表示輸出數(shù)據(jù)的流向。具體地,相當(dāng)于由同步輸出復(fù)制過程執(zhí)行的輸出數(shù)據(jù)的復(fù)制。在第一控制程序230-1或第二控制程序230-2或這兩者包含用戶程序236的情況下,該輸出數(shù)據(jù)除了包含由該用戶程序236生成的輸出數(shù)據(jù)之外,在動態(tài)運算程序234處于激活狀態(tài)的(即,在每次執(zhí)行時計算指令值)期間內(nèi),還包含由該動態(tài)運算程序234生成的動態(tài)指令值數(shù)據(jù)。
[0332]圖31是用于說明在本發(fā)明的第一實施方式的排程例6中的控制程序中的程序結(jié)構(gòu)和指示的流程的示意圖。圖31中示出了能夠包含在第一控制程序230-1及第二控制程序230-2中的用戶程序236的變化(variation)的例子。S卩,圖31的(I)部分不出了僅有第一控制程序230-1包含用戶程序236的例子,圖31的(2)部分示出了僅有第二控制程序230-2包含用戶程序236的例子,圖31的(3)部分示出了第一控制程序230-1及第二控制程序230-2這雙方包含用戶程序236的例子。
[0333]在圖31中,從用戶程序236 (在圖31的(3)部分中是第一用戶程序236_1或第二用戶程序236-2)向動態(tài)運算程序234 (第一動態(tài)運算程序234-1或第二動態(tài)運算程序234-2)延伸的箭頭,表示執(zhí)行動態(tài)運算程序234所需的指示的流動。該指示例如在用戶程序236中記述為用于向定義動態(tài)控制內(nèi)容的動態(tài)功能塊(動態(tài)指令)輸入的輸入?yún)?shù)(輸入定數(shù)或輸入變量)。而且,在隨著用戶程序236的執(zhí)行而動態(tài)控制開始的條件成立從而執(zhí)行動態(tài)功能塊時,將該輸入?yún)?shù)賦予動態(tài)運算程序234。
[0334]就在控制程序包含用戶程序236及動態(tài)運算程序234時執(zhí)行這兩個程序的執(zhí)行順序而言,先執(zhí)行哪個程序都可以。在先執(zhí)行用戶程序236的情況下,優(yōu)選能夠?qū)⒂脩舫绦?36的執(zhí)行結(jié)果立即反映至動態(tài)運算程序234的執(zhí)行中。另一方面,在先執(zhí)行動態(tài)運算程序234的情況下,將用戶程序236的執(zhí)行結(jié)果在如下的執(zhí)行循環(huán)中反映至動態(tài)運算程序234的執(zhí)行中。[0335]參照圖31的(I)部分,說明僅在第一控制程序230-1中包含用戶程序236的方式。在能夠在所希望的控制循環(huán)時間內(nèi)執(zhí)行向第一動態(tài)運算程序234-1及第二動態(tài)運算程序234-2這雙方發(fā)送指示的用戶程序236和第一動態(tài)運算程序234-1的情況下,能夠采用圖31的(I)部分所示的例子。
[0336]S卩,在圖31的(I)部分所示的例子中,第一控制程序230-1包含如下的用戶程序236,該用戶程序236包含用于向第一動態(tài)運算程序234-1發(fā)送執(zhí)行該程序所需的指示的指令以及用于向第二動態(tài)運算程序234-2發(fā)送執(zhí)行該程序所需的指示的指令。
[0337]根據(jù)圖31的(I)部分所示的例子,在第一動態(tài)運算程序234-1的任意執(zhí)行循環(huán)中,都能夠從用戶程序236接收新的指示。從而,能夠?qū)⒂糜谧兏鼒?zhí)行過程中的電機動作的指示等迅速地反映至動態(tài)控制中。此外,在第二動態(tài)運算程序234-2的執(zhí)行循環(huán)的途中發(fā)送到了第二動態(tài)運算程序234-2的指示,在第二動態(tài)運算程序234-2的下一個執(zhí)行循環(huán)中被反映。進而,根據(jù)圖31的(I)部分所示的例子,能夠?qū)⒂脩舫绦?36概括為一個,因而其設(shè)計變得容易。
[0338]參照圖31的(2)部分,說明僅在第二控制程序230-2中包含用戶程序236的方式。在從所希望的控制循環(huán)時間中減去第一動態(tài)運算程序234-1的執(zhí)行時間后得到的能夠?qū)τ脩舫绦?36的執(zhí)行分配的時間較少的情況下,圖31的(2)部分所示的例子是最佳的方式。
[0339]S卩,在圖31的(2)部分所示的例子中,第二控制程序230-2包含如下的用戶程序236,該用戶程序236包含用于向第一動態(tài)運算程序234-1發(fā)送執(zhí)行該程序所需的指示的指令以及用于向第二動態(tài)運算程序234-2發(fā)送執(zhí)行該程序所需的指示的指令。
[0340]根據(jù)圖31的(2)部分所示的例子,能夠?qū)⒖刂蒲h(huán)時間縮短至足以執(zhí)行第一動態(tài)運算程序234-1的時間。但是,從用戶程序236向第一動態(tài)運算程序234-1發(fā)送的指示,能夠僅在第二控制程序230-2的執(zhí)行循環(huán)的周期內(nèi)發(fā)送。然而,在動態(tài)運算程序234從用戶程序236例如接收到“請從坐標(biāo)Xl向坐標(biāo)X2為止以速度V移動”這樣的指示而處于激活狀態(tài)時,在到該指示的執(zhí)行結(jié)束為止的期間內(nèi),能夠不接收來自用戶程序236的指示,而是針對每個執(zhí)行循環(huán)計算動態(tài)指令值數(shù)據(jù)。從而,在這樣的指示的執(zhí)行過程中,在不需發(fā)送用于使電機的動作中止的指示或向其他動作變更的指示而使其迅速反映的情況下,即使采用圖31的(2)部分所示的方式也沒問題。進而,根據(jù)圖31的(2)部分所示的例子,能夠?qū)⒂脩舫绦?36概括為一個,因而其設(shè)計變得容易。
[0341]參照圖31的(3)部分,說明在第一控制程序230-1中包含第一用戶程序236_1而且在第二控制程序230-2中包含第二用戶程序236-2的方式。
[0342]S卩,在圖31的(3)部分所示的例子中,用戶程序236由第一用戶程序236_1和第二用戶程序236-2構(gòu)成,其中,該第一用戶程序236-1包含用于向第一動態(tài)運算程序234-1發(fā)送執(zhí)行該程序所需的指示的指令,該第二用戶程序236-2包含用于向第二動態(tài)運算程序234-2發(fā)送執(zhí)行該程序所需的指示的指令。
[0343]根據(jù)圖31的(3)部分所示的例子,包含在第一控制程序230-1中的第一用戶程序236-1,不需進行與相第二動態(tài)運算程序234-2發(fā)送指示的處理相關(guān)的處理,因而能夠相對縮短執(zhí)行時間。從而,能夠相對縮短作為能夠執(zhí)行第一用戶程序236-1和第一動態(tài)運算程序234-1的時間的控制循環(huán)時間。進而,在第一動態(tài)運算程序234-1及第二動態(tài)運算程序234-2中的任意程序的執(zhí)行循環(huán)中,都能夠從第一用戶程序236-1及第二用戶程序236-2分別接收新的指示。
[0344]如上述的排程例6那樣,對于采用在多個控制程序中包含動態(tài)運算程序234的排程的CPU單元13的特征,能夠總結(jié)如下。
[0345]通信電路(PLC系統(tǒng)總線控制器120或現(xiàn)場網(wǎng)絡(luò)控制器140或這兩者)在控制循環(huán)周期內(nèi)發(fā)送輸出數(shù)據(jù)并接收輸入數(shù)據(jù)??刂瞥绦?30包含第一控制程序230-1及第二控制程序230-2。
[0346]第一控制程序230-1包含第一動態(tài)運算程序234-1,該第一動態(tài)運算程序234_1生成用于對電機的動作進行控制的第一動態(tài)指令值數(shù)據(jù)。第二控制程序230-2包含第二動態(tài)運算程序234-1,該第二動態(tài)運算程序234-1生成用于對電機的動作進行控制的第二動態(tài)指令值數(shù)據(jù)。而且,第一控制程序230-1及第二控制程序230-2中的至少一個程序包含如下的用戶程序236(第一用戶程序236-1或第二用戶程序236-2),該用戶程序236是根據(jù)用戶的控制目的來生成的,包含用于向第一動態(tài)運算程序234-1及第二動態(tài)運算程序234-1發(fā)送執(zhí)行這些程序所需的指示的指令。
[0347]排程構(gòu)建數(shù)據(jù)234使微處理器100針對與控制循環(huán)周期相同的周期的每個第一執(zhí)行循環(huán)開始執(zhí)行第一控制程序230-1,并且針對控制循環(huán)周期的二倍以上的整數(shù)倍的周期的每個第二執(zhí)行循環(huán)開始執(zhí)行第二控制程序230-2。進而,排程構(gòu)建數(shù)據(jù)234包含對如下的過程的執(zhí)行順序的指定,該過程,在第二執(zhí)行循環(huán)開始的控制循環(huán)中在第一控制程序230-1的執(zhí)行結(jié)束之后開始執(zhí)行第二控制程序230-2,并且在到該控制循環(huán)結(jié)束為止第二控制程序230-2未結(jié)束時,在下一個控制循環(huán)中在第一控制程序230-1的執(zhí)行結(jié)束之后開始執(zhí)行第二控制程序230-2的未執(zhí)行的部分。
[0348]于是,在具有動態(tài)控制功能的PLCl中,能夠為了需要高速處理的一部分動態(tài)控制處理而確保較短的周期的執(zhí)行循環(huán),并且還能夠以規(guī)定周期執(zhí)行這以外的動態(tài)控制處理。
[0349]例如,在控制對對象物進行切削加工的加工設(shè)備的情況下,能夠以短的周期執(zhí)行如與對刀具動作的控制相關(guān)的高速且高精度的控制所需的動態(tài)控制處理,并且還能夠以規(guī)定周期執(zhí)行如向加工設(shè)備搬入對象物或從加工設(shè)備搬出對象物這樣的相對地不需高速性的動態(tài)控制處理。
[0350](f 13:排程例 7)
[0351]接著,說明本發(fā)明的第一實施方式的排程例7。
[0352]圖32是示出了與本發(fā)明的第一實施方式的排程例7相對應(yīng)的排程構(gòu)建數(shù)據(jù)234的圖。圖33是本發(fā)明的第一實施方式的排程例7的第k循環(huán)的時序圖。圖34是本發(fā)明的第一實施方式的排程例7的第k+Ι循環(huán)的時序圖。對于根據(jù)圖32的排程構(gòu)建數(shù)據(jù)234來生成圖33及圖34的序列的處理,若考慮排程例I則會不言自明,因而不詳細說明圖32的排程構(gòu)建數(shù)據(jù)234和圖33及圖34的序列之間的關(guān)系。
[0353]適用排程例7的CPU單元13的微處理器100具有包含第一核及第二核的多個核。而且,以第一核執(zhí)行控制循環(huán)開始過程及控制R任務(wù),以第二核執(zhí)行控制S任務(wù)。
[0354]關(guān)于控制R任務(wù)的執(zhí)行,除了以下點以外,與排程例I的控制A任務(wù)相同,該點是指,在控制R任務(wù)的任務(wù)開始過程的執(zhí)行之后,不等待控制S任務(wù)的任務(wù)開始過程的執(zhí)行結(jié)束而輸入輸出R線程成為Run狀態(tài)。[0355]就控制S線程而言,與排程例I的控制B線程不同地,被輸入輸出R線程的后續(xù)起動過程起動時立即成為Run狀態(tài),與控制R線程并行地被執(zhí)行。另外,控制S線程不會被使第k+Ι循環(huán)開始的控制循環(huán)開始中斷執(zhí)行中斷,是而繼續(xù)執(zhí)行。進而,控制S線程還與第k+Ι循環(huán)中的輸入輸出R線程并行執(zhí)行。
[0356]控制S線程在利用第二核的資源的基礎(chǔ)上,還能夠與第k循環(huán)的輸入輸出R線程并行執(zhí)行,但就在第k循環(huán)中執(zhí)行開始的控制S線程而言,由于使用通過執(zhí)行第k循環(huán)中的輸入輸出R線程來輸入的輸入數(shù)據(jù),因而被輸入輸出R線程的后續(xù)起動過程起動。
[0357]對于上面說明的采用在具有多個核的微處理器100中執(zhí)行的排程的CPU單元13的特征,能夠總結(jié)如下。
[0358]微處理器100至少包含第一核及第二核。控制程序230包含第一控制程序和第二控制程序。排程構(gòu)建數(shù)據(jù)234包含對如下的過程的執(zhí)行順序的指定,該過程,在輸出數(shù)據(jù)的發(fā)送及輸入數(shù)據(jù)的接收結(jié)束之后,使第一核執(zhí)行第一控制程序,并且使第二核與第一控制程序的執(zhí)行并行地執(zhí)行第二控制程序。
[0359]這樣一來,能夠使PLCl采用特征性的輸入輸出處理和控制程序執(zhí)行之間的周期性(cyclic)處理,還能夠通過使具有多個核的微處理器100并行執(zhí)行程序來實現(xiàn)處理的高速化。
[0360](fl4:排程例8及排程例9)
[0361]根據(jù)本實施方式,能夠建立與以往的典型的PLCl相同的排程。在下面說明的排程例8及排程例9就是這樣的例子。
[0362]圖35是示出了與本發(fā)明的第一實施方式的排程例8相對應(yīng)的排程構(gòu)建數(shù)據(jù)234的圖。圖36是本發(fā)明的第一實施方式的排程例8的第k循環(huán)及第k+Ι循環(huán)的時序圖。對于根據(jù)圖35的排程構(gòu)建數(shù)據(jù)234來生成圖36的序列的處理,若考慮排程例I則會不言自明,因而不詳細說明圖35的排程構(gòu)建數(shù)據(jù)234和圖36的序列之間的關(guān)系。
[0363]在排程例8中,在一個線程(控制T線程)中,進行控制程序的執(zhí)行以及輸入輸出處理。另外,不利用控制循環(huán)開始中斷,而是在一個控制循環(huán)的任務(wù)執(zhí)行結(jié)束時立即開始下一個控制循環(huán)。這是由于,在圖35的(I)部分的“控制循環(huán)開始條件”中指定有“控制T任務(wù)”,而不是指定有“控制循環(huán)開始中斷”。在由系統(tǒng)程序210執(zhí)行的處理中,除了圖36所示的處理以外的包含與PLC輔助裝置8之間的通信處理等的其他處理,在通信結(jié)束通知等待時間內(nèi)執(zhí)行。將由該系統(tǒng)程序210執(zhí)行的其他的處理還稱為外圍處理。
[0364]作為排程例8的變形例,也可以通過將由系統(tǒng)程序210執(zhí)行的上述其他處理(外圍處理)嵌入到控制T線程中,來例如在執(zhí)行各控制循環(huán)的輸入復(fù)制過程之后執(zhí)行上述其他處理。
[0365]圖37是示出了與本發(fā)明的第一實施方式的排程例9相對應(yīng)的排程構(gòu)建數(shù)據(jù)234的圖。圖38是本發(fā)明的第一實施方式的排程例9的第k循環(huán)及第k+Ι循環(huán)的時序圖。對于根據(jù)圖37的排程構(gòu)建數(shù)據(jù)234來生成圖38的序列的處理,若考慮排程例I則會不言自明,因而不詳細說明圖35的排程構(gòu)建數(shù)據(jù)234和圖36的序列之間的關(guān)系。
[0366]在排程例8中,在執(zhí)行控制程序之后進行輸入輸出處理,但在排程例9中,依次執(zhí)行輸入處理、控制程序的執(zhí)行以及輸出處理。隨之在排程例9中,不僅使用輸入輸出指示過程,還使用輸入指示過程和輸出指示過程。[0367]進而,在排程例9中,在進行了輸出的通信結(jié)束通知之后,執(zhí)行循環(huán)計時過程。如在圖1lB中說明的那樣,循環(huán)計時過程具有如下功能,S卩,設(shè)定處理器內(nèi)置的計時器,從而獲取從控制循環(huán)開始經(jīng)過的經(jīng)過時間,并計算到控制循環(huán)時間結(jié)束為止的剩余時間,如果經(jīng)過了所計算出的剩余時間則進入計時中斷,設(shè)定為在計時中斷出現(xiàn)時使本線程再次起動,并具有使本線程中止(使其成為Sleep狀態(tài))的功能。此外,若在執(zhí)行循環(huán)計時過程的時間點已經(jīng)過了控制循環(huán)時間,則循環(huán)計時過程不設(shè)定計時中斷,而是隨即執(zhí)行后續(xù)起動過程。與利用控制循環(huán)開始中斷的情況不同地,不會因控制循環(huán)時間的經(jīng)過而強制中斷線程的執(zhí)行。通過使用循環(huán)計時過程,能夠在不使用控制循環(huán)開始中斷的狀態(tài)狹,使控制循環(huán)周期幾乎為恒定時間。在輸入及輸出的通信結(jié)束通知等待時間內(nèi)以及循環(huán)計時過程所設(shè)定的計時中斷的等待時間內(nèi),執(zhí)行由系統(tǒng)程序210執(zhí)行的上述其他處理(外圍處理)。
[0368]<G.第二實施方式>
[0369]在上述的第一實施方式中,說明了使用具有由任務(wù)和線程這樣的層次結(jié)構(gòu)的排程構(gòu)建的機構(gòu)的方法。相對于此,在第二實施方式中,說明建立排程時使用線程但不使用任務(wù)的方法。
[0370]在第二實施方式中,在由系統(tǒng)程序210執(zhí)行的對PLCl的控制動作的執(zhí)行準(zhǔn)備處理(圖7的步驟SI)中,與各線程相對應(yīng)地,在存儲單元(主存儲器104等)中設(shè)定有用于保存線程的執(zhí)行循環(huán)數(shù)的存儲區(qū)域、線程結(jié)束標(biāo)識的存儲區(qū)域、用于保存線程的執(zhí)行次數(shù)的存儲區(qū)域以及用于保存線程的執(zhí)行時間的存儲區(qū)域。
[0371]圖39A及圖39B時以表形式示出了本發(fā)明的第二實施方式中準(zhǔn)備的線程的設(shè)定項目和對各設(shè)定項目的說明的圖。在圖8所示的第一實施方式的任務(wù)的設(shè)定項目中,對作為任務(wù)開始條件的設(shè)定項目來表示的周期的設(shè)定,在圖39A及圖39B所示的第二實施方式中移轉(zhuǎn)到了對線程的開始條件的設(shè)定項目。另外,在第一實施方式中作為任務(wù)的設(shè)定項目的循環(huán)超過容許次數(shù),在第二實施方式中也移轉(zhuǎn)到了線程的設(shè)定項目。
[0372]圖40A及圖40B是示出了本發(fā)明的第二實施方式中準(zhǔn)備的過程的名稱及功能的圖。關(guān)于控制循環(huán)開始過程,在圖40A及圖40B中還示出了設(shè)定項目及對設(shè)定項目的說明。在第二實施方式中,也準(zhǔn)備了圖1lA的后續(xù)起動過程以后的各過程,但由于其內(nèi)容與圖1lA及圖1lB相同而未重復(fù)圖示。
[0373]在第二實施方式中,第一實施方式中的任務(wù)開始過程的功能實質(zhì)上移轉(zhuǎn)到了控制循環(huán)開始過程中,任務(wù)結(jié)束過程的功能實質(zhì)上移轉(zhuǎn)到了線程結(jié)束過程中。
[0374]圖41是與本發(fā)明的第二實施方式的排程例相對應(yīng)的排程構(gòu)建數(shù)據(jù)234的圖。圖42是本發(fā)明的第二實施方式的排程例的第k循環(huán)的時序圖。圖43是本發(fā)明的第二實施方式的排程例的第k+Ι循環(huán)的時序圖。對于根據(jù)圖41的排程構(gòu)建數(shù)據(jù)234來生成圖42及圖43的序列的處理,若參照圖39A、圖39B、圖40A及圖40B考慮第一實施方式的排程例I則會不言自明,因而不詳細說明圖41的排程構(gòu)建數(shù)據(jù)234和圖42及圖43的序列之間的關(guān)系。
[0375]第二實施方式的該排程例利用第二實施方式的機構(gòu)來實現(xiàn)了與第一實施方式的排程例I幾乎相同的排程。即,建立排程時利用線程但不用任務(wù)。因此,在第一實施方式中將任務(wù)作為對象進行的執(zhí)行次數(shù)的計數(shù)以及執(zhí)行時間的計測,在第二實施方式中將線程作為對象來進行。對于第一實施方式的其他排程例,也能夠同樣地利用第二實施方式的機構(gòu)來實現(xiàn)幾乎相同的排程。[0376]< H.第三實施方式>
[0377]在上述的第一實施方式中,說明了利用具有由任務(wù)和線程這樣的層次結(jié)構(gòu)的排程構(gòu)建的機構(gòu)的方法。相對于此,在第三實施方式中,說明不使用任務(wù)及線程,而是通過對過程賦予執(zhí)行編號來按照執(zhí)行編號的順序執(zhí)行過程由此建立排程的方法。
[0378]第三實施方式的排程構(gòu)建數(shù)據(jù)包含對要執(zhí)行的過程的指定、對所指定的各過程的執(zhí)行編號和執(zhí)行循環(huán)周期的指定。在通過對相同名稱的過程指定多次來分別指定了不同的執(zhí)行編號的情況下,針對每個執(zhí)行編號生成過程的目標(biāo)及實例。在以后的說明中,被指定的執(zhí)行編號不同的相同名稱的過程是相互區(qū)分的不同的過程。
[0379]在第三實施方式中,在系統(tǒng)程序210對PLCl的控制動作的執(zhí)行準(zhǔn)備處理(圖7的步驟SI)中,與各過程相對應(yīng)地,在存儲單元(主存儲器104等)中設(shè)定用于保存執(zhí)行循環(huán)數(shù)的存儲區(qū)域和已執(zhí)行標(biāo)識的存儲區(qū)域。
[0380]另外,第三實施方式的過程除了具有各過程固有的功能之外,還與任意過程共通地具有對過程的執(zhí)行進行控制的功能。
[0381]圖44是示出了本發(fā)明的第三實施方式的各過程共通具備的執(zhí)行控制功能所提供的處理的流程圖。參照圖44,若過程的執(zhí)行開始,則判斷本過程的已執(zhí)行標(biāo)識是否是關(guān)(OFF)(步驟S100)。在第三實施方式中,對于各過程的執(zhí)行是否結(jié)束,利用相對應(yīng)的已執(zhí)行標(biāo)識的狀態(tài)(關(guān)(OFF)或開(ON))來進行判斷。
[0382]若本過程的已執(zhí)行標(biāo)識不是關(guān)(OFF)(在步驟SlOO中為“否”),則處理進入步驟S106。
[0383]若本過程的已執(zhí)行標(biāo)識為關(guān)(OFF)(在步驟S100中為“是”),則執(zhí)行本過程的固有功能的處理(步驟S102)。此外,在本過程通過之前的處理而處于執(zhí)行中斷過程中的情況下,執(zhí)行未執(zhí)行的部分。而且,若本過程的固有功能的處理的執(zhí)行結(jié)束,則將本過程的已執(zhí)行標(biāo)識設(shè)定為開(ON)(步驟S104)。
[0384]在步驟S106中,判斷是否存在比本過程的執(zhí)行編號大的執(zhí)行編號的其他過程。若比本過程的執(zhí)行編號大的執(zhí)行編號的其他過程不存在(在步驟S106中為“否”),則本過程結(jié)束。
[0385]另一方面,若比本過程的執(zhí)行編號大的執(zhí)行編號的其他過程存在(在步驟S106中為“是”),則在本過程后接著起動執(zhí)行編號大的過程(步驟S108)。然后,本過程的執(zhí)行結(jié)束。
[0386]圖45是對于本發(fā)明的第三實施方式中準(zhǔn)備的過程之一的控制循環(huán)開始過程示出了其功能、設(shè)定項目及對設(shè)定項目的說明的圖。圖46A及圖46B是對于本發(fā)明的第三實施方式中準(zhǔn)備的控制循環(huán)開始過程以外的過程示出了各過程的名稱及功能的圖。
[0387]圖47是示出了與本發(fā)明的第三實施方式的排程例相對應(yīng)的排程構(gòu)建數(shù)據(jù)234的圖。在圖47的(I)部分中,對控制循環(huán)開始過程設(shè)定有作為控制循環(huán)開始條件的“控制循環(huán)開始中斷”。在圖47的(2)部分中,如前面的說明那樣,指定要執(zhí)行的過程,并且針對所指定的每個過程指定執(zhí)行編號及執(zhí)行循環(huán)周期。進而,對于控制程序執(zhí)行過程,還指定由該過程執(zhí)行的對象控制程序。在此,示出設(shè)定這樣的與第一實施方式的排程例I類似的排程的例子,例如,設(shè)定為以執(zhí)行循環(huán)周期“ I ”執(zhí)行控制A程序,以執(zhí)行循環(huán)周期“2”執(zhí)行控制B程序。
[0388]圖48是與圖47的排程構(gòu)建數(shù)據(jù)相對應(yīng)的排程例的第k循環(huán)的時序圖。圖49是與圖47的排程構(gòu)建數(shù)據(jù)相對應(yīng)的排程例的第k+Ι循環(huán)的時序圖。
[0389]參照圖47及圖48,在第k循環(huán)中,因控制循環(huán)開始中斷出現(xiàn)而執(zhí)行控制循環(huán)開始過程。如在圖45中說明的那樣,控制循環(huán)開始過程執(zhí)行對各過程的執(zhí)行循環(huán)數(shù)的遞增計數(shù)以及其他處理??刂蒲h(huán)開始過程,在第k循環(huán)中對全部的過程將執(zhí)行循環(huán)數(shù)設(shè)定為“1”,并且將已執(zhí)行標(biāo)識設(shè)定為關(guān)(OFF)。進而,控制循環(huán)開始過程首先起動執(zhí)行編號最小的過程(在圖47的例子中是同步輸出復(fù)制過程)。此后,按照各過程共通具備的執(zhí)行控制功能的處理步驟(圖44所示的流程圖),從執(zhí)行編號小的過程開始依次執(zhí)行各過程。各過程在執(zhí)行固有功能的處理之后已執(zhí)行標(biāo)識被設(shè)定為開(0N)。在圖47的例子中,在控制B程序的執(zhí)行過程中第k+Ι循環(huán)的控制循環(huán)開始中斷出現(xiàn),因而使控制B程序的執(zhí)行中斷。
[0390]參照圖47及圖49,在第k+Ι循環(huán)中,因控制循環(huán)開始中斷出現(xiàn)而執(zhí)行控制循環(huán)開始過程??刂蒲h(huán)開始過程對各過程的執(zhí)行循環(huán)數(shù)進行遞增計數(shù)之后,各過程的執(zhí)行循環(huán)數(shù)成為“2”。對于從執(zhí)行編號為“ I ”到“8”為止的過程,執(zhí)行循環(huán)周期為“ I ”,所以在該時間點超過了執(zhí)行循環(huán)數(shù)所指定的執(zhí)行循環(huán)周期。因此,控制循環(huán)開始過程將這些過程的執(zhí)行循環(huán)數(shù)設(shè)定為“1”,并且將相對應(yīng)的已執(zhí)行標(biāo)識設(shè)定為關(guān)(OFF)。另一方面,對于從執(zhí)行編號為“9”到“11”為止的過程,執(zhí)行循環(huán)周期為“2”,所以在該時間點未超過執(zhí)行循環(huán)數(shù)所指定的執(zhí)行循環(huán)周期。因此,控制循環(huán)開始過程使這些過程的執(zhí)行循環(huán)數(shù)及已執(zhí)行標(biāo)識保持現(xiàn)狀。此后,從執(zhí)行編號最小的過程(在圖47的例子中是同步輸出過程)開始執(zhí)行。
[0391]執(zhí)行循環(huán)周期為“I”的執(zhí)行編號為“I”到“8”為止的過程,被與第k循環(huán)中的情況同樣地執(zhí)行。就執(zhí)行編號“9”的開始參照變量過程而言,由于在第k循環(huán)中已執(zhí)行標(biāo)識被設(shè)定為開(ON)而保持原狀,因而按照圖44的流程,不執(zhí)行其固有功能,而啟動執(zhí)行編號“10”的控制程序執(zhí)行過程(參照圖44的步驟S100)。
[0392]就利用執(zhí)行編號“10”的控制程序執(zhí)行過程來執(zhí)行的控制程序B而言,在第k循環(huán)中處于執(zhí)行中斷過程中,因而執(zhí)行該控制程序B的未執(zhí)行的部分(參照圖44的步驟S102)。
[0393]接著,通過執(zhí)行編號“11”的變量配送過程的執(zhí)行結(jié)束,第k+Ι循環(huán)中的過程的執(zhí)
行結(jié)束。
[0394]接著,到第k+2循環(huán)的控制循環(huán)開始中斷出現(xiàn)為止的時間,用來執(zhí)行系統(tǒng)程序的其他處理(外圍處理)。
[0395]上述排程例的執(zhí)行內(nèi)容與上述的第一實施方式的排程例I類似。這樣,在本發(fā)明的第三實施方式中,針對每個過程,指定用于決定執(zhí)行順序的行編號和執(zhí)行循環(huán)周期,因而只要關(guān)注在各控制循環(huán)內(nèi)執(zhí)行的過程的執(zhí)行順序,就能夠構(gòu)建可得到與使用執(zhí)行循環(huán)周期不同的多個線程的情況相同的結(jié)果的排程。
[0396]在上述的第三實施方式的例子中不包含與執(zhí)行循環(huán)超過相對應(yīng)的功能,但也可以模仿第一實施方式及第二實施方式,來追加用于容許所設(shè)定的控制循環(huán)數(shù)為止的過程的執(zhí)行循環(huán)超過的功能。
[0397]也可以取代如上述第三實施方式那樣使過程本身具備執(zhí)行控制功能,來使系統(tǒng)程序210承擔(dān)與圖44相當(dāng)?shù)膱?zhí)行控制功能,并使系統(tǒng)程序210基于如圖47所示的排程構(gòu)建數(shù)據(jù)來逐個依次調(diào)出過程并執(zhí)行,也能夠?qū)崿F(xiàn)與第三實施方式相同的排程。
[0398]應(yīng)當(dāng)認為本公開的實施方式是在全部點的例示而非限制。本發(fā)明的范圍并不由上述說明來表示,而是由權(quán)利要求書來表示,意在包括在與權(quán)利要求書均等的意思和范圍內(nèi)的全部變更。
[0399]附圖標(biāo)記的說明
[0400]1PLC,2現(xiàn)場網(wǎng)絡(luò),3伺服電機驅(qū)動器,4伺服電機,5終端,6檢測開關(guān),7繼電器,8PLC輔助裝置,9CD-R0M,10連接電纜,IlPLC系統(tǒng)總線,12電源單元,13CPU單元,14、5310單元,15特殊單元,51終端總線,52通信連接器(coupler),81CPU,83RAM, 85鍵盤,86鼠標(biāo),87顯示器,88⑶-ROM驅(qū)動器,100微處理器,102芯片集,104主存儲器,106非易失性存儲器,108系統(tǒng)計時器,110USB連接器,120PLC系統(tǒng)總線控制器,122DMA控制電路,124PLC系統(tǒng)總線控制電路,126、146緩沖存儲器,130連接器,140現(xiàn)場網(wǎng)絡(luò)控制器,144現(xiàn)場網(wǎng)絡(luò)控制電路,200實時OS,210系統(tǒng)程序,212調(diào)度程序,214過程庫,222控制動作用線程及獨立過程,224、234排程構(gòu)建數(shù)據(jù),230控制程序,230-1第一控制程序,230-2第二控制程序,232序列指令運算程序,234動態(tài)運算程序,234-1第一動態(tài)運算程序,234-2第二動態(tài)運算程序,236用戶程序,236-1第一用戶程序,236-2第二用戶程序,3100S, 320輔助程序,321編輯程序,322編譯程序,323調(diào)試程序,324排程構(gòu)建數(shù)據(jù)模板,325排程構(gòu)建數(shù)據(jù)生成程序,326通信程序,330源程序,1041程序區(qū)域,1042控制程序的工作區(qū)域,1042a全局變量區(qū)域,1042b變量同步緩沖區(qū)域,1042c輸出同步緩沖區(qū)域,1042d輸入同步緩沖區(qū)域,1043PLC系統(tǒng)總線發(fā)送緩存,1044PLC系統(tǒng)總線接收緩存,1045現(xiàn)場網(wǎng)絡(luò)發(fā)送緩存,1046現(xiàn)場網(wǎng)絡(luò)接收緩存,SYS系統(tǒng)。
【權(quán)利要求】
1.一種PLC的CPU單元,是用于對控制對象進行控制的PLC (I)的CPU單元(13),其特征在于, 具有: 微處理器(100), 存儲單元(104、106), 通信電路(120、140); 所述存儲單元,用于保存系統(tǒng)程序(210)、控制程序(230)及排程構(gòu)建數(shù)據(jù)(224); 所述微處理器,執(zhí)行保存在所述存儲單元中的所述系統(tǒng)程序及所述控制程序; 所述通信電路,發(fā)送通過執(zhí)行所述控制程序而生成的輸出數(shù)據(jù),并且接收在執(zhí)行所述控制程序時要使用的輸入數(shù)據(jù); 所述系統(tǒng)程序包含過程庫(214),該過程庫(214)中至少收錄有用于對所述控制程序的執(zhí)行進行控制的過程和用于對所述輸出數(shù)據(jù)的輸出及所述輸入數(shù)據(jù)的輸入進行控制的過程; 在所述存儲單元中存儲有包含用于對收錄在所述過程庫中的過程的執(zhí)行順序進行指定的指定信息的所述排程構(gòu)建數(shù)據(jù)時,所述系統(tǒng)程序使所述微處理器按照包含在所述排程構(gòu)建數(shù)據(jù)中的針對過程的執(zhí)行順序的指定信息,來執(zhí)行收錄在所述過程庫中的過程。
2.如權(quán)利要求1所述的PLC的CPU單元,其特征在于, 所述排程構(gòu)建數(shù)據(jù),包含用于利用收錄在所述過程庫中的過程來生成線程的指定信息; 所述系統(tǒng)程序,包含按照包含在所述排程構(gòu)建數(shù)據(jù)中的用于生成所述線程的指定信息來生成線程的處理,以作為所述PLC的控制動作的執(zhí)行準(zhǔn)備處理。
3.如權(quán)利要求2所述的PLC的CPU單元,其特征在于, 所述排程構(gòu)建數(shù)據(jù),包含用于在線程的執(zhí)行過程中起動其他線程的指定信息,以作為與所述線程相關(guān)的數(shù)據(jù)。
4.如權(quán)利要求2所述的PLC的CPU單元,其特征在于, 所述排程構(gòu)建數(shù)據(jù),用于對成為反復(fù)執(zhí)行的單位的任務(wù)進行設(shè)定的指定信息,并且該任務(wù)包含一個或多個所述線程; 所述系統(tǒng)程序,包含按照所述排程構(gòu)建數(shù)據(jù)中的用于設(shè)定所述任務(wù)的指定信息來設(shè)定任務(wù)的處理,以作為所述PLC的控制動作的執(zhí)行準(zhǔn)備處理。
5.如權(quán)利要求1所述的PLC的CPU單元,其特征在于, 所述PLC的CPU單元,還具有用于獲取所述排程構(gòu)建數(shù)據(jù)的排程構(gòu)建數(shù)據(jù)獲取單元。
6.如權(quán)利要求1所述的PLC的CPU單元,其特征在于, 在所述存儲單元中,保存有包含用于反復(fù)執(zhí)行如下這些處理的所述針對過程的執(zhí)行順序的指定信息,這些處理包括: 發(fā)送所述輸出數(shù)據(jù), 接收所述輸入數(shù)據(jù), 通過執(zhí)行所述控制程序,從而使用所述輸入數(shù)據(jù)生成所述輸出數(shù)據(jù)。
7.如權(quán)利要求6所述的PLC的CPU單元,其特征在于, 所述PLC的CPU單元還具有用于設(shè)定控制循環(huán)周期的單元;所述通信電路,按照每個所述控制循環(huán),發(fā)送所述輸出數(shù)據(jù)及接收所述輸入數(shù)據(jù); 所述排程構(gòu)建數(shù)據(jù)包含如下的所述針對過程的執(zhí)行順序的指定信息,該過程用于使所述微處理器執(zhí)行如下處理:在所述控制程序已執(zhí)行結(jié)束的控制循環(huán)的下一個控制循環(huán)中,在由所述通信電路執(zhí)行發(fā)送輸出數(shù)據(jù)及接收輸入數(shù)據(jù)之后,使所述控制程序開始執(zhí)行;在所述控制程序未執(zhí)行結(jié)束的控制循環(huán)的下一個控制循環(huán)中,執(zhí)行所述控制程序中的未執(zhí)行的部分。
8.如權(quán)利要求6所述的PLC的CPU單元,其特征在于, 所述系統(tǒng)程序包含以下這些處理,以作為所述PLC的控制動作的執(zhí)行準(zhǔn)備處理,這些處理包括: 在所述存儲單元中生成用于保存所接收的輸入數(shù)據(jù)的接收緩存的處理, 針對由所述控制程序參照的每個輸入數(shù)據(jù),在所述存儲單元中生成由該控制程序作為輸入數(shù)據(jù)的參照對象的輸入同步緩存的處理; 所述排程構(gòu)建數(shù)據(jù)包含如下的所述針對過程的執(zhí)行順序的指定信息,該過程用于使所述微處理器執(zhí)行以下處理: 輸入復(fù)制處理,將所接收的所述輸入數(shù)據(jù)從所述接收緩存復(fù)制到與該輸入數(shù)據(jù)相對應(yīng)的所述輸入同步緩存中, 控制程序開始處理,使所述控制程序開始執(zhí)行。
9.如權(quán)利要求8所述的PLC的CPU單元,`其特征在于, 所述輸入數(shù)據(jù)的接收,是按照每個控制循環(huán)執(zhí)行的; 所述排程構(gòu)建數(shù)據(jù)包含如下的所述針對過程的執(zhí)行順序的指定信息,該過程用于使所述微處理器執(zhí)行如下處理:按照所述控制循環(huán)的整數(shù)倍的每個執(zhí)行循環(huán),執(zhí)行所述控制程序開始處理;將在所述控制程序的執(zhí)行循環(huán)開始后的所述控制循環(huán)中接收的輸入數(shù)據(jù)作為對象,執(zhí)行所述輸入復(fù)制處理。
10.如權(quán)利要求8所述的PLC的CPU單元,其特征在于, 所述系統(tǒng)程序還包含以下這些處理,以作為所述PLC的控制動作的執(zhí)行準(zhǔn)備處理,這些處理包括: 在所述存儲單元中生成用于保存應(yīng)發(fā)送的輸出數(shù)據(jù)的發(fā)送緩存的處理, 在所述存儲單元中,針對每個所述輸出數(shù)據(jù),生成用于保存復(fù)制到所述發(fā)送緩存中的所述輸出數(shù)據(jù)的輸出同步緩存的處理; 所述排程構(gòu)建數(shù)據(jù)還包含如下的所述針對過程的執(zhí)行順序的指定信息,該過程用于使所述微處理器執(zhí)行輸出復(fù)制處理,該輸出復(fù)制處理用于將所述輸出數(shù)據(jù)從所述輸出同步緩存復(fù)制到所述發(fā)送緩存中。
11.如權(quán)利要求10所述的PLC的CPU單元,其特征在于, 所述排程構(gòu)建數(shù)據(jù)包含如下的所述針對過程的執(zhí)行順序的指定信息,該過程用于使所述微處理器執(zhí)行如下處理:針對控制循環(huán)的整數(shù)倍的每個執(zhí)行循環(huán),執(zhí)行所述控制程序開始處理;在所述控制程序的執(zhí)行循環(huán)的最初的控制循環(huán)中,在之前的執(zhí)行循環(huán)中通過執(zhí)行所述控制程序而生成的所述輸出數(shù)據(jù)被從所述發(fā)送緩存發(fā)送的時刻,執(zhí)行所述輸出復(fù)制處理。
12.如權(quán)利要求6所述的PLC的CPU單元,其特征在于,所述存儲單元,還用于保存與所述控制程序所使用的變量相關(guān)的屬性數(shù)據(jù); 在所述變量是由多個所述控制程序參照的全局變量的情況下,所述屬性數(shù)據(jù)包含能夠改寫該變量的一個主側(cè)控制程序的指定信息以及僅能夠參照該變量的一個或多個參照側(cè)控制程序的指定信息; 所述系統(tǒng)程序包含以下處理,以作為所述PLC的控制動作的執(zhí)行準(zhǔn)備處理,這些處理包括: 在所述存儲單元中生成用于保存所述全局變量的全局變量區(qū)域的處理, 針對各參照側(cè)控制程序,按照由該參照側(cè)控制程序參照的每個全局變量,在由該參照側(cè)控制程序參照全局變量時,取代所述全局變量區(qū)域而在所述存儲單元中生成作為參照對象的變量同步緩存; 所述排程構(gòu)建數(shù)據(jù)包含如下的所述針對過程的執(zhí)行順序的指定信息,該過程用于使所述微處理器執(zhí)行以下這些處理,這些處理包括: 主側(cè)開始處理,使主側(cè)控制程序開始執(zhí)行, 變量復(fù)制處理,如果主側(cè)控制程序執(zhí)行結(jié)束,則將由該主側(cè)控制程序改寫的全局變量從所述全局變量區(qū)域復(fù)制到與該全局變量相對應(yīng)的所述變量同步緩存中, 參照側(cè)開始處理,使參照側(cè)控制程序開始執(zhí)行。
13.如權(quán)利要求6所述的PLC的CPU單元,其特征在于, 所述控制程序包括: 動態(tài)運算程序,計算用于對電機的動作進行控制的動態(tài)指令值, 用戶程序,是根據(jù)用戶的控制目的而生成的程序,包含對所述動態(tài)運算程序賦予其執(zhí)行所需的指示; 所述排程構(gòu)建數(shù)據(jù)包含如下的所述針對過程的執(zhí)行順序的指定信息,該過程用于使所述PLC的CPU單元反復(fù)依次執(zhí)行以下處理:利用所述通信電路發(fā)送所述輸出數(shù)據(jù)以及接收所述輸入數(shù)據(jù)、執(zhí)行所述用戶程序、執(zhí)行所述動態(tài)運算程序。
14.如權(quán)利要求6所述的PLC的CPU單元,其特征在于, 所述通信電路,以控制循環(huán)周期,發(fā)送所述輸出數(shù)據(jù)并接收所述輸入數(shù)據(jù); 所述控制程序包含第一控制程序及第二控制程序; 所述第一控制程序包含第一動態(tài)運算程序,該第一動態(tài)運算程序用于生成用于對電機的動作進行控制的第一動態(tài)指令值數(shù)據(jù); 所述第二控制程序包含第二動態(tài)運算程序,該第二動態(tài)運算程序用于生成用于對電機的動作進行控制的第二動態(tài)指令值數(shù)據(jù); 所述第一控制程序及所述第二控制程序中的至少一個控制程序包含用戶程序,該用戶程序是根據(jù)用戶的控制目的而生成的,包含向所述第一動態(tài)運算程序及所述第二動態(tài)運算程序賦予其執(zhí)行所需的指示的指令; 所述排程構(gòu)建數(shù)據(jù)包含如下的所述針對過程的執(zhí)行順序的指定信息,該過程用于使所述微處理器執(zhí)行以下這些處理,這些處理包括: 按照與所述控制循環(huán)周期相同的周期的每個第一執(zhí)行循環(huán),使所述第一控制程序開始執(zhí)行,按照所述控制循環(huán)周期的二以上的整數(shù)倍的周期的每個第二執(zhí)行循環(huán),使所述第二控制程序開始執(zhí)行,在所述第二執(zhí)行循環(huán)開始的所述控制循環(huán)中,在所述第一控制程序的執(zhí)行結(jié)束后使所述第二控制程序開始執(zhí)行,如果到該控制循環(huán)結(jié)束為止,所述第二控制程序尚未結(jié)束,則在下一個控制循環(huán)中,所述第一控制程序執(zhí)行結(jié)束之后,使所述第二控制程序中的未執(zhí)行的部分的執(zhí)行開始。
15.如權(quán)利要求6所述的PLC的CPU單元,其特征在于, 所述微處理器至少包含第一核及第二核; 所述控制程序包含第一控制程序和第二控制程序; 所述排程構(gòu)建數(shù)據(jù)包含如下的所述針對過程的執(zhí)行順序的指定信息,該過程用于在發(fā)送完所述輸出數(shù)據(jù)及接 收完所述輸入數(shù)據(jù)之后,使所述第一核執(zhí)行所述第一控制程序,并且使所述第二核與所述第一控制程序的執(zhí)行并行地執(zhí)行所述第二控制程序。
16.一種PLC用的系統(tǒng)程序(210),在具有微處理器(100)、存儲單元(104、106)及通信電路(120、140)的用于對控制對象進行控制的PLC (I)的CPU單元(13)中,該PLC用的系統(tǒng)程序被保存在所述存儲單元中并且被所述微處理器執(zhí)行,該PLC用的系統(tǒng)程序(210)的特征在于, 所述存儲單元,用于保存所述系統(tǒng)程序、控制程序(230)及排程構(gòu)建數(shù)據(jù)(224); 所述微處理器,執(zhí)行保存在所述存儲單元中的所述系統(tǒng)程序及所述控制程序; 所述通信電路,發(fā)送通過執(zhí)行所述控制程序而生成的輸出數(shù)據(jù),并且接收在執(zhí)行所述控制程序時要使用的輸入數(shù)據(jù); 所述系統(tǒng)程序包含過程庫,該過程庫中至少收錄有用于對所述控制程序的執(zhí)行進行控制的過程和用于對所述輸出數(shù)據(jù)的輸出及所述輸入數(shù)據(jù)的輸入進行控制的過程; 在所述存儲單元中存儲有包含用于對收錄在所述過程庫中的過程的執(zhí)行順序進行指定的指定信息的所述排程構(gòu)建數(shù)據(jù)時,所述系統(tǒng)程序使所述微處理器按照包含在所述排程構(gòu)建數(shù)據(jù)中的針對過程的執(zhí)行順序的指定信息,來執(zhí)行收錄在所述過程庫中的過程。
17.如權(quán)利要求16所述的PLC用的系統(tǒng)程序,其特征在于, 所述排程構(gòu)建數(shù)據(jù),包含用于利用收錄在所述過程庫中的過程來生成線程的指定信息; 所述系統(tǒng)程序,包含按照包含在所述排程構(gòu)建數(shù)據(jù)中的用于生成所述線程的指定信息來生成線程的處理,以作為所述PLC的控制動作的執(zhí)行準(zhǔn)備處理。
18.如權(quán)利要求17所述的PLC用的系統(tǒng)程序,其特征在于, 所述排程構(gòu)建數(shù)據(jù),包含用于在線程的執(zhí)行過程中起動其他線程的指定信息,以作為與所述線程相關(guān)的數(shù)據(jù)。
19.一種保存有PLC用的系統(tǒng)程序(210)的記錄介質(zhì),用于保存PLC用的系統(tǒng)程序(210),在具有微處理器(100)、存儲單元(104、106)及通信電路(120、140)的用于對控制對象進行控制的PLC (I)的CPU單元(13)中,該PLC用的系統(tǒng)程序被保存在所述存儲單元中并且被所述微處理器執(zhí)行,該記錄介質(zhì)的特征在于, 所述存儲單元,用于保存所述系統(tǒng)程序、控制程序(230)及排程構(gòu)建數(shù)據(jù)(224); 所述微處理器,執(zhí)行保存在所述存儲單元中的所述系統(tǒng)程序及所述控制程序; 所述通信電路,發(fā)送通過執(zhí)行所述控制程序而生成的輸出數(shù)據(jù),并且接收在執(zhí)行所述控制程序時要使用的輸入數(shù)據(jù);所述系統(tǒng)程序包含過程庫,該過程庫中至少收錄有用于對所述控制程序的執(zhí)行進行控制的過程和用于對所述輸出數(shù)據(jù)的輸出及所述輸入數(shù)據(jù)的輸入進行控制的過程; 在所述存儲單元中存儲有包含用于對收錄在所述過程庫中的過程的執(zhí)行順序進行指定的指定信息的所述排程構(gòu)建數(shù)據(jù)時,所述系統(tǒng)程序使所述微處理器按照包含在所述排程構(gòu)建數(shù)據(jù)中的針對過程的執(zhí)行順序的指定信息,來執(zhí)行收錄在所述過程庫中的過程。
20.如權(quán)利要求19所述的保存有PLC用的系統(tǒng)程序的記錄介質(zhì),其特征在于, 所述排程構(gòu)建數(shù)據(jù),包含用于利用收錄在所述過程庫中的過程來生成線程的指定信息; 所述系統(tǒng)程序,包含按照包含在所述排程構(gòu)建數(shù)據(jù)中的用于生成所述線程的指定信息來生成線程的處理,以作為所述PLC的控制動作的執(zhí)行準(zhǔn)備處理。
21.如權(quán)利要求20所述的保存有PLC用的系統(tǒng)程序的記錄介質(zhì),其特征在于, 所述排程構(gòu)建數(shù)據(jù),包含用于在線程的執(zhí)行過程中起動其他線程的指定信息,以作為與所述線程相關(guān)的數(shù)據(jù)。
22.—種PLC系統(tǒng),包含如權(quán)利要求5所述的PLC (I)的CPU單元(13)以及用于對所述PLC的使用進行輔助的PLC輔助裝置(8),其特征在于, 所述PLC輔助裝置具有存儲部(82、83、84)和運算部(81); 所述存儲部用于保存PLC輔助程序(320)及所述排程構(gòu)建數(shù)據(jù); 所述PLC輔助程序,使所述運算部執(zhí)行輸出處理,在該輸出處理中,以使所述PLC的CPU單元能夠獲取所述排程構(gòu)建數(shù)據(jù)的方式輸出該排程構(gòu)建數(shù)據(jù)。
23.—種PLC輔助裝置(8),用于輔助使用PLC (I)的CPU單元(13),該PLC (I)用于對控制對象進行控制,該PLC輔助裝置(8 )的特征在于, 所述PLC的CPU單元具有: 過程庫(214),其至少收錄有用于對控制程序的執(zhí)行進行控制的過程和用于對通過執(zhí)行所述控制程序而生成的輸出數(shù)據(jù)的輸出及執(zhí)行所述控制程序時使用的輸入數(shù)據(jù)的輸入進行控制的過程, 排程構(gòu)建數(shù)據(jù)獲取單元,其用于獲取排程構(gòu)建數(shù)據(jù),該排程構(gòu)建數(shù)據(jù)包含收錄在所述過程庫中的過程的執(zhí)行順序的指定信息; 所述PLC輔助裝置具有存儲部(82、83、84)和運算部(81); 所述存儲部,用于保存PLC輔助程序及所述排程構(gòu)建數(shù)據(jù); 所述PLC輔助程序,使所述運算部執(zhí)行輸出處理,在該輸出處理中,以使所述PLC的CPU單元能夠獲取所述排程構(gòu)建數(shù)據(jù)的方式輸出該排程構(gòu)建數(shù)據(jù)。
24.—種PLC輔助程序,用于輔助使用PLC (I)的CPU單元(13),該PLC (I)用于對控制對象進行控制,該PLC輔助程序(320)的特征在于, 所述PLC的CPU單元具有: 過程庫(214),其至少收錄有用于對控制程序的執(zhí)行進行控制的過程和用于對通過執(zhí)行所述控制程序而生成的輸出數(shù)據(jù)的輸出及執(zhí)行所述控制程序時使用的輸入數(shù)據(jù)的輸入進行控制的過程, 排程構(gòu)建數(shù)據(jù)獲取單元,其用于獲取排程構(gòu)建數(shù)據(jù),該排程構(gòu)建數(shù)據(jù)包含收錄在所述過程庫中的過程的執(zhí)行順序的指定信息;所述PLC輔助裝置具有存儲部(82、83、84)和運算部(81); 所述存儲部,用于保存所述PLC輔助程序及所述排程構(gòu)建數(shù)據(jù); 所述PLC輔助程序,使所述運算部執(zhí)行輸出處理,在該輸出處理中,以使所述PLC的CPU單元能夠獲取所述排程構(gòu)建數(shù)據(jù)的方式輸出該排程構(gòu)建數(shù)據(jù)。
25.一種保存有PLC輔助程序(320)的記錄介質(zhì),該PLC輔助程序(320)用于輔助使用PLC (I)的CPU單元(13),該PLC (I)用于對控制對象進行控制,該記錄介質(zhì)的特征在于,所述PLC的CPU單元具有: 過程庫(214),其至少收錄有用于對控制程序的執(zhí)行進行控制的過程和用于對通過執(zhí)行所述控制程序而生成的輸出數(shù)據(jù)的輸出及執(zhí)行所述控制程序時使用的輸入數(shù)據(jù)的輸入進行控制的過程, 排程構(gòu)建數(shù)據(jù)獲取單元,其用于獲取排程構(gòu)建數(shù)據(jù),該排程構(gòu)建數(shù)據(jù)包含收錄在所述過程庫中的過程的執(zhí)行順序的指定信息; 所述PLC輔助裝置具有存儲部(82、83、84)和運算部(81); 所述存儲部,用于保存所述PLC輔助程序及所述排程構(gòu)建數(shù)據(jù); 所述PLC輔助程序,使所述運算部執(zhí)行輸出處理,在該輸出處理中,以使所述PLC的CPU單元能夠獲取所述排程構(gòu)建數(shù)據(jù)的方式輸出該排程構(gòu)建數(shù)據(jù)。
【文檔編號】G06F9/48GK103562807SQ201280026760
【公開日】2014年2月5日 申請日期:2012年3月12日 優(yōu)先權(quán)日:2011年7月15日
【發(fā)明者】西山佳秀, 江口重行, 濱崎治 申請人:歐姆龍株式會社