最優編譯PLC命令的方法與流程
2023-06-01 19:20:01 2
本公開涉及一種最優編譯plc(可編程邏輯控制器)命令的方法,並且特別地,如下一種最優編譯plc命令的方法,其中,為了改進針對要由padt(編程和調試工具)編譯器編譯的plc命令的編譯處理方案,可以通過基於用戶的環境而選擇速率選項或大小選項而由針對速率或針對大小優化的編譯處理方案編譯該命令來優化用戶程序。
背景技術:
在工業現場處的系統例如工廠自動化系統採用了綜合控制裝置例如可編程邏輯控制器(plc)。plc配備有作為基礎單元的通用主處理單元(mpu)。mpu執行將用戶使用編程和調試工具(padt)編寫的程序轉換為plc可以識別的代碼的編譯過程。
因此,為了驅動plc,應該轉換由用戶使用padt編寫的程序以使得mpu可以識別它。
padt是執行編程、編輯和調試功能的軟體。padt執行在由用戶創建的項目中編譯命令以使得plc可以識別它並且然後下載到plc的功能。
此時,取決於採用的方法,該命令可以以多種方法由pdat編譯並可以例如在執行率和可修改性上改變。
同時,命令的處理速率和程序的大小是關於plc的性能的關鍵因素。具體地,處理速率越高,生產率可以增加,並且程序的大小越大,更多的輸入/輸出可以被控制。
在現有技術中,plc僅支持固定的命令處理速率和固定的程序大小,並且因此不能靈活地修改命令的處理速率和程序的大小來適合於系統的特性。
因此,存在以下問題:在實際應用中當命令處理速率很低或程序大小不足時,plc應該使用其較高的版本來替代或者應該改變系統。
技術實現要素:
本公開的一個方面是提供一種最優編譯plc(可編程邏輯控制器)命令的方法,並且特別地,如下一種最優編譯plc命令的方法,其中,為了改進針對要由padt(編程和調試工具)編譯器編譯的plc命令的編譯處理方案,可以通過基於用戶的環境而選擇速率選項或大小選項以使得可以由針對速率優化的編譯處理方案或針對大小優化的編譯處理方案編譯命令來優化用戶程序。
本公開的其他對象不限於上面描述的對象並且其他對象和優點可以由以下參照本公開的實施例描述的描述而領會。
根據本發明的一個方面,提供了一種編譯plc(可編程邏輯控制器)命令的方法,該方法包括:確定從針對要在plc中執行的程序中包含的命令的多個編譯處理方案選擇的一個編譯處理方案;並且基於所選編譯處理方案而執行針對速率或大小優化的命令編譯。
執行命令編譯可以包括:當所述所選編譯處理方案被確定為針對所述大小時,基於任意建立的標準確定所述所選編譯處理方案是否是簡單命令處理;當所述所選編譯處理方案被確定為簡單編譯處理方案時,由直接編譯處理方案以彙編語言執行所述命令編譯;並且當所述所選編譯處理方案被確定為不是簡單編譯處理方案時,通過參照針對所述速率優化的命令映射表識別以二進位文件存儲的命令處理函數的地址,然後調用所述命令處理函數,然後將被需要執行所述命令的命令處理函數複製到編譯區域以在當驅動所述plc時識別所述命令處理函數的地址,並且然後調用存儲的函數來執行所述命令,來以間接編譯處理方案執行所述命令編譯。
執行命令編譯可以包括:當所述所選編譯處理方案被確定為針對所述大小時,通過參照針對所述大小優化的命令映射表識別以二進位文件存儲的命令處理函數的地址,然後調用所述命令處理函數,然後將被需要執行所述命令的命令處理函數複製到編譯區域以在當驅動所述plc時識別所述命令處理函數的地址,並且然後調用所述存儲的函數以執行所述命令,來以間接編譯處理方案執行所述命令編譯。
執行命令編譯可以包括:當所述所選編譯處理方案被確定為默認時,基於任意建立的標準而確定所述所選編譯處理方案是否是簡單命令處理;當所述所選編譯處理方案被確定為簡單編譯處理方案時,由直接編譯處理方案執行所述命令編譯;並且當所述所選編譯處理方案被確定為不是簡單編譯處理方案時,通過參照默認下設置的命令映射表識別以二進位文件存儲的命令處理函數的地址,然後調用所述命令處理函數,然後將被需要執行所述命令的命令處理函數複製到編譯區域以在當驅動所述plc時識別所述命令處理函數的地址,並且然後調用所述存儲的函數以執行所述命令,來以間接編譯處理方案執行所述命令編譯。
確定一個編譯處理方案可以包括:提供對應於速率的第一選項框以及對應於大小的第二選項框;並且確定如果勾選了所述第一選項框,則所述速率選項被選中;如果勾選了所述第二選項框,則所述大小選項被選中;並且如果沒有選項框被勾選,則所述默認被選中。
最優編譯plc命令的方法可以基於所述plc中的程序大小或剩餘數據存儲容量而設置為自動選擇針對所述命令的多個編譯處理方案中的一個編譯處理方案。
設置為自動選擇一個編譯處理方案:可以設置為在正常情況下選擇針對所述速率的編譯處理方案或在當所述程序大小超過任意參考大小時選擇針對所述大小的編譯處理方案。
設置為自動選擇一個編譯處理方案可以設置為在正常情況下選擇針對所述速率的編譯處理方案或在當所述plc中的剩餘數據存儲容量低於任意參考容量時選擇針對所述大小的編譯處理方案。
根據本發明的另一個方面,本公開可以以下面的方式在padt(編程和調試工具)編譯器中改進編譯處理方案:基於用戶的環境選擇速率選項或大小選項來基於針對速率或大小優化的編譯處理方案而編譯命令,從而優化用戶程序。
根據本發明的又一方面,一種最優編譯plc程序的方法致使用戶選擇任意編譯處理方案以使得該plc程序可以被靈活地應用於各種系統。
例如,當選擇速率選項時,可以通過提供針對速率優化的編譯處理方案以各種方式來提高其速率。相反,當選擇大小選項時,其大小被優化以增加程序存儲容量的效率,並且當沒有選擇選項時,可以使用基本目標代碼來執行編譯。
附圖說明
圖1是示出了根據本公開的實施例的最優編譯plc命令的方法中的用戶代碼的框圖。
圖2是示出了根據本公開的實施例的最優編譯plc命令的方法中的開發人員的代碼的框圖。
圖3是示出了根據本公開的實施例的最優編譯plc命令的方法中的命令處理的框圖。
圖4是示出了根據本公開的實施例的最優編譯plc命令的方法的流程圖。
圖5是示出了根據本公開的實施例的設置編譯處理方案以最優編譯plc命令的過程的視圖。
圖6是示出了根據本公開的實施例的在最優編譯plc命令的方法中的生成目標文件的過程的框圖。
圖7是示出了根據本公開的實施例的最優編譯plc命令的方法的視圖。
圖8是示出了根據本公開的實施例的在最優編譯plc命令的方法中的直接編譯的視圖。
圖9是示出了根據本公開的實施例的在最優編譯plc命令的方法中的間接編譯的流程圖。
圖10是示出了根據本公開的另一個實施例的最優編譯plc命令的方法的流程圖。
具體實施方式
本公開可以被各種修改並且包括各種實施例。因此,一些具體實施例將藉由插圖在附圖中被舉例說明並且在下面的詳細描述中被描述。然而,這無意將本公開限制於具體實施例,並且要理解的是,它們涵蓋落入本公開的精神和保護範圍中所有修改、等同物或改變。
以下,根據本公開的優選實施例將參照附圖進行詳細地描述。
圖1是示出了根據本公開的實施例的最優編譯plc命令的方法中的用戶代碼的框圖。
參照圖1,用戶通過使用編程和調試工具(padt)編寫程序1。
圖2是示出了根據本公開的實施例的最優編譯plc命令的方法中的開發人員的代碼的框圖。
參照圖2,開發人員通過使用源編輯工具來創建命令處理函數代碼2。命令處理函數代碼2可以是例如voidmove(void)。由開發人員創建的命令處理函數代碼2由mpu專用編譯器3編譯為二進位格式的目標代碼4。mpu專用編譯器3可以為c語言或c++編譯器。
編譯後的二進位格式的目標代碼4在其上存儲命令處理函數。這些目標代碼4被用於基於命令而提取起始地址和大小,使得命令映射表被創建。
圖3是示出了根據本公開的實施例的最優編譯plc命令的方法中的命令處理的框圖。
參照圖3,示出了當用戶已在padt中編寫move命令時執行的過程。padt編譯器5可以基本上將由用戶編寫的程序轉換為使能plc運行的格式。為了執行該命令,應該基於該命令調用處理函數。
當用戶已通過padt編寫了move命令6時,在處理程序7期間可以調用move命令處理函數(8)。
如果調用了move命令,則參照命令映射表9識別存儲在二進位文件10中的move命令處理函數的地址(11),並且然後調用存儲在二進位文件10中的move命令處理函數代碼(12)。隨後,將move命令處理函數代碼插入到編譯區域中(13)。當如上面描述的編譯處理完成時,生成plc驅動文件14。
圖4是示出了根據本公開的實施例的最優編譯plc命令的方法的流程圖。圖5是示出了根據本公開的實施例的設置編譯處理方案以最優編譯plc命令的過程的視圖。
參照圖4,通過使用padt的階梯程序創建要在plc中執行的程序代碼(s100)。
此後,設置針對要在plc中執行的程序中包括的命令的多個編譯處理方案中的一個編譯處理方案(s200)。
例如,當前公開可以致使用戶勾選或釋放速率選項和大小選項以使得用於最優編譯處理的方案可以被設置。此時,如果沒有選項被選中,則可以設置的是,利用基本目標代碼的編譯被執行。同時,如果大小選項被選中,則可以設置的是,針對大小優化的編譯被執行。
參考圖5,示出了選擇速率選項或大小選項的選擇框10。選擇框10可以包括對應於速率選項的第一選擇框11和對應於大小選項的第二選擇框12。
如果第一框11已被勾選,則確定出該速率選項被選中。相反,如果第二選擇框12已被勾選,則確定出大小選項被選中。然而,如果在第一選擇框11和第二選擇框12上不存在任意勾選,則確定出默認選項被選中。
根據針對在要在plc中執行的程序中包含的命令的多個編譯處理方案中的一個所選編譯處理方案來執行命令編譯,並且因此生成plc驅動文件(s300)。
為了這樣做,確定出已從針對要在plc中執行的程序中包含的命令的多個編譯處理方案選擇了哪個編譯處理方案(s200)。
參照圖6,當所選編譯處理方案被確定為針對速率時,mpu專用編譯器以針對速率優化的二進位文件的格式生成目標代碼。
當所選編譯處理方案被確定為針對大小時,mpu專用編譯器以針對大小優化的二進位文件的格式生成目標代碼。
當所選編譯處理方案被確定為默認時,mpu專用編譯器以默認下設置的二進位格式生成目標代碼。
此後,當處理命令時,padt編譯器將由用戶編寫的程序轉換為使能plc運行的格式。
即,當所選編譯處理方案為針對速率時,padt編譯器使用針對速率優化的目標代碼來執行針對速率優化的命令編譯,從而生成plc驅動文件。同時,當所選編譯處理方案為針對大小時,padt編譯器使用針對大小優化的目標代碼來執行針對大小優化的命令編譯,從而生成plc驅動文件。
進一步地,當所選編譯處理方案為默認時,padt編譯器使用默認下設置的目標代碼來執行命令編譯,從而生成plc驅動文件。
如上面描述而生成的plc驅動文件被下載到plc(s400)。
圖7是示出了根據本公開的實施例的最優編譯plc命令的方法的視圖。
參照圖7,確定出針對要在plc中執行的程序中包含的命令的多個編譯處理方案選擇了哪個編譯處理方案(s301)。
當在s301中所選編譯處理方案被確定為針對速率時,基於任意建立的標準確定出所選編譯處理方案是否是簡單命令處理(s302)。關於其是否是簡單命令處理的標準為命令是否可以被直接編譯。如果該命令可以被直接編譯,則其符合簡單命令。
像這樣,當速率選項被選中時,padt編譯器檢查使用中的命令來確定該使用中的命令是否是一個可以由直接編譯處理方案編譯的命令。
例如,如果一個命令的代碼非常長並且複雜,則直接編譯不能被執行,這是因為其可能在cpu中被寫為c代碼。因此,當確定出該命令可以被直接編譯時,padt編譯器在針對速率優化的彙編語言中直接執行編譯。然而,當確定出該命令不能被直接編譯時,padt編譯器遵循與速率選項有關的被寫為c代碼的命令執行例程。
在此,如圖8中示出的,直接編譯是padt編譯器通過其執行並存儲命令的任意編譯處理方案。當用戶編寫任意命令時,padt編譯器在編譯時允許用於處理被存儲在plc編譯區域上的命令的所有代碼。然後,如果存在在程序處理中使用的任意命令,則可以在不需要調用任意單獨函數的情況下執行命令,這是因為針對該命令的執行代碼已被存儲在編譯區域上。
同時,針對間接編譯,當用戶由如圖9中示出的階梯程序編寫任意指令時,padt編譯器在處理編譯的同時檢查命令。padt編譯器參照存儲在padt上的命令映射表識別存儲在二進位文件中的命令處理函數的地址,並且然後調用該命令處理函數。然後,被需要執行該命令的命令處理函數被複製到plc的編譯區域中的結束部分。因此,當驅動該plc時,可以通過識別命令處理函數的地址並調用存儲的函數來進行命令處理。
當在s302中所選編譯處理方案被確定為簡單命令處理時,命令編譯由直接編譯處理方案在彙編語言中執行(s303)。
同時,當在s302中所選編譯處理方案被確定為不是簡單命令處理時,padt編譯器參照針對速率優化的命令映射表識別存儲在二進位文件中的命令處理函數的地址(s304)。隨後,基於命令處理函數的地址而調用命令處理函數(s305),需要執行該命令的命令處理函數被複製到編譯區域以使得命令編譯由間接編譯處理方案執行(s306)。因此,當驅動該plc時,可以通過識別命令處理函數的地址並調用存儲的函數來執行該命令。
同時,當在s301中所選編譯處理方案被確定為針對大小時,padt編譯器參照針對大小優化的命令映射表識別存儲在二進位文件中的命令處理函數的地址(s307)。隨後,基於命令處理函數的地址而調用命令處理函數(s308),需要執行該命令的函數被複製到編譯區域以使得命令編譯由間接編譯處理方案執行(s309)。因此,當驅動該plc時,可以通過識別命令處理函數plc的地址並調用存儲的函數來執行該命令。
像這樣,如果所選編譯處理方案為針對大小,則padt編譯器對使用中的命令執行間接編譯。間接編譯處理方案對減少整體程序大小是有用的,這是因為其會相對於相同命令僅複製一次執行例程。進一步地,當處理間接編譯時可以關聯於大小選項編譯在c代碼中創建的命令執行例程,從而減少了程序大小。
同時,當在s301中所選編譯處理方案被確定為默認時,基於任意建立的標準確定出所選編譯處理方案是否是簡單命令處理(s310)。
當在s310中所選編譯處理方案被確定為簡單命令處理時,命令編譯由直接編譯處理方案執行(s311)。
然而,當在s301中所選編譯處理方案被確定為不是簡單命令處理時,識別出參照默認下設置的命令映射表以二進位文件存儲的命令處理函數的地址(s312)。隨後,基於命令處理函數的地址而調用命令處理函數(s313),需要執行該命令的函數被複製到編譯區域以使得命令編譯由間接編譯處理方案執行(s314)。因此,當驅動該plc時,可以通過識別命令處理函數的地址並調用存儲的函數來執行該命令。
像這樣,用戶可以選擇針對適合於系統環境的命令的編譯處理方案。如果速率選項被選中,則編譯該plc程序來優化處理速率並且因此以相對於現有技術的32%的增加速率使能該控制。此外,如果大小選項被選中,則該程序可以以其大小相對於現有程序大小增加達至30%而被使用。因此,採用本公開的plc以其中它可以覆蓋的其處理速率和程序大小而變得靈活,使得其可以被應用於各種系統。
根據本公開,一種最優編譯plc程序的方法致使用戶選擇任意編譯處理方案,使得該plc程序可以被靈活地應用於各種系統。
圖10是示出了根據本公開的另一個實施例的最優編譯plc命令的方法的流程圖。
參照圖10,要在plc中執行的程序代碼通過使用padt的階梯程序而編寫(s510)。
基於plc中的程序大小或剩餘數據存儲容量,程序被設置為自動選擇針對要在plc中執行的程序中包含的命令的多個編譯處理方案中的一個編譯處理方案(s520)。
例如,為了自動選擇一個編譯處理方案,可以設置該程序以使得在正常情況下選擇針對速率的編譯處理方案而當程序大小超過任意參考大小時選擇針對大小的編譯處理方案。
另一個示例,為了自動選擇一個編譯處理方案,可以設置該程序以使得在正常情況下選擇針對速率的編譯處理方案而當plc中的剩餘數據存儲容量低於任意參考容量時選擇針對大小的編譯處理方案。
根據自動地從針對要在plc中執行的程序中包含的命令的多個編譯處理方案所選的一個編譯處理方案來執行命令編譯,並且因此生成plc驅動文件(s530)。
為了這樣做,確定出從針對要在plc中執行的程序中包含的命令的多個編譯處理方案選擇出了哪個編譯處理方案。
當所選編譯處理方案被確定為針對速率時,執行針對速率優化的命令編譯。當所選編譯處理方案確定為針對大小時,執行針對大小優化的命令編譯。
當所選編譯處理方案被確定為默認時,執行默認下設置的命令編譯來生成目標代碼,並且因此生成plc驅動文件。生成的plc驅動文件被下載到plc(s540)。
雖然上面已經描述了根據本公開的實施例,但是它們只是示範性的,並且本領域中的那些技術人員將理解的是,由此得出的各種修改和改變可以在落入本公開的保護範圍中的等效範圍內實現。因此,本公開的真實技術範圍應由附屬的權利要求限定。