




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
GB/TXXXXX—XXXX/IEC/TR61131-4可編程序控制器第8部分:編程語言的應用與實現(xiàn)導則注:GB/T15969.3和本文件都沒有明確解決可編程序ISO和IEC在以下網址中維護了標準術語數(shù)——IECElectropedia:http:4縮略語ETrig:邊緣觸發(fā)功能(EdgeTFB:功能塊(FunctionBlocIL:指令表(InstructionGB/TXXXXX—XXXX/IEC/TR61131-5NaN:非數(shù)值(Notanumber)OOP:面向對象編程(ObjectOrientedPrograPLC:可編程序邏輯控制器(ProgrammablPOU:程序組織單元(ProgramOrganizationUniPADT:編程和調試工具(ProgrammingaRT:運行時(Runtime)VMD:虛擬制造設備(VirtualManufacturingDevice)5概述lGB/T15969.3中定義的可編程序控制器系統(tǒng)中的用戶。這些用戶應針對工業(yè)過行了補充說明,第8章提供了一些編程語言元素因此,對可編程序控制器用戶而言第6章和第7章最為有用,而對編程語隨著微電子技術和相關技術的快速革新,系統(tǒng)硬件的成本/性能比大幅下降。現(xiàn)今,一個可編程控如圖1所示,這種系統(tǒng)的基本骨干是通信子系統(tǒng),它為分布式自動裝置之間的信息交流提供機制。足其特定子任務要求所需的大小和性能。在其他環(huán)境中,可編程序控制器可以如圖2所示一樣被獨立應GB/TXXXXX—XXXX/IEC/TR61131-6操作監(jiān)控操作監(jiān)控通信子系統(tǒng)邏輯控制混合控制循環(huán)控制操作監(jiān)控混合控制操作監(jiān)控混合控制操作監(jiān)控邏輯控制壓力機壓力機泵除了其低廉的硬件價格外,可編程序控制器也因其簡單的的操作和編程原理而在解決自動化任務可編程序控制器通常采用圖3所示的循環(huán)或定期程序執(zhí)行原則。循環(huán)運行的程序在一次執(zhí)行結束后的周期性執(zhí)行是由時鐘機制在相同間隔時間點觸發(fā)的。同一個控制器可以在不同的周期時間內準同步GB/TXXXXX—XXXX/IEC/TR61131-7這些原理的優(yōu)點是,允許使用與硬線邏輯或連續(xù)控制電路原理密切相關的元件來構造可編程序控在線測試和診斷。因此,可編程序控制器的編程和調試工具(P時鐘觸發(fā)器時鐘觸發(fā)器:例如每80毫秒讀取輸入周期執(zhí)行執(zhí)行算法寫輸出讀取輸入執(zhí)行算法寫輸出循環(huán)執(zhí)行或從一個系列的控制器換到另一個系列的控制器,往往需要設計人員閱讀大量的的硬件和軟件的手引入了許多規(guī)范以支持在6.1中所描述的可編程序控制器的優(yōu)勢,盡管這涉及到不同制造商的控制器。GB/TXXXXX—XXXX/IEC/TR61131-8制造商和用戶組織(如PLCopen)通過廣泛地推廣和宣傳PLC編程語言標準化的益處和優(yōu)點,加速了b)強數(shù)據類型不僅得到支持,而且還是內在要求,這是消除編程錯誤的主要來源;d)提供了在應用程序之間使用VAR_ACCESS關鍵字設計通信功能。與程序在單一設備或不同設2)圖形化的功能塊圖(FBD)語言為同時運作的電子元件網絡進行建模,如加法器、乘法器、4)指令表(IL)語言用匯編語言對控制系統(tǒng)的底層程序設計進行建模;g)順序功能圖(SFC)對時間驅動和事件驅動的順序控制設備和算法進行建模。h)針對所要編程的特定應用功能來靈活地選擇適合的語言,將提高處理控制問題的軟件解決方i)項目小組的每個應用專家都能針對所處理問題的特殊功能來選擇適合的編程方式和語言,而個系列總是需要花費精力,但這也有利于不同類型控制器間的控制軟件設計的復用。6.4語言項概述基本高級語言編程元素和他們之間的關系,如圖4和圖5的編程GB/TXXXXX—XXXX/IEC/TR61131-9+type+instance*+type+instance*<<type>>NamedType<{函數(shù)可以在任何邏輯體中調用,但不能是變量類型。}1+VAR_INPUT,VAR_OUTPUT,VAR_IN_OUT-VAR,VAR_TEMPΔ<<type>>PROGRAM+LogicBody()0..*<<type>>POU+VAR_INPUT,VAR_OUTPUT,VAR_IN_OUT<<type>>NamedType<{函數(shù)可以在任何邏輯體中調用,但不能是變量類型。}1+VAR_INPUT,VAR_OUTPUT,VAR_IN_OUT-VAR,VAR_TEMPΔ<<type>>PROGRAM+LogicBody()0..*<<type>>POU+VAR_INPUT,VAR_OUTPUT,VAR_IN_OUT0..*<<type>>FUNCTION_BlOCK >#VAR,VAR_TEMP0..*>V0..*<<type>>INTERFACE#SUPER0..1V<<type>>CLASS#VAR#SUPER0..1<<type>>METHOD(Signature)Name:STRING+<<type>>METHOD(implementation)+LogicBody()-VAR0..*+VAR_INPUT,VAR_OUTPUT,VAR_IN_OUT0..*<<type>>FUNCTION+VAR_INPUT,VAR_OUTPUT,VAR_IN_OUT0..*-VAR,VAR_TEMP>0..*V<<type>>ElementatyDataType<<type>>DirectlyDerived<<instance>>VariableDeclaration>>0..*>>>>0..10..10..10..1<<type>>Subrange<<type>><<type>>Subrange<<type>>Array<<type>>DataType<<type>><<type>>STRUCT<<type>>DataTypeWithNamedValue<<type>>Enumerated<<type>>Reference<<<<type>>Reference<<type>>UserDefinedDataType(Named)GB/TXXXXX—XXXX/IEC/TR61131-Task+TASK+RESOURCE+TASK+RESOURCE+SINGLE+INTERVAL+PRIORITY+Name\V0..1* +Type+Name\V0..1* +Type>*1+Name+ResourceType+VAR_EXTERNALV+VAR_EXTERNALVGlobalVariable+Name+Type++Name+Type+CONSTANT<0..1+Name+Type+InitialValue+PhysicalAddress+CONSTANT+RETAINVariableConfiguration+InstancePath+InstancePath+Type+InitialValue+PhysicalAddressAccessVariable++Alias+Type+InstancelPath+ReadWriteDirection通過支持面向對象特性而不僅是功能塊實例化進行編程語言基礎概念擴展,是第三版本中最大的l通過POU引入INTERFACE元素和IMPPUBLIC/INTERNAL/PROTECTGB/TXXXXX—XXXX/IEC/TR61131-在GB/T15969.3中的體現(xiàn)在6.1.1中INTERNAL隱藏外部對NAMESPACE中元素的GB/TXXXXX—XXXX/IEC/TR61131-如果沒有這種表示,系統(tǒng)的狀態(tài)應從數(shù)據中推斷出來在6.1和6.3中已經指出,GB/T15969.3的元素與工業(yè)過程測量、自動化和控制中公認的概念b)通過將所需的功能分配到一個或多個元件(通常是程序)中來進行系統(tǒng)設計的分解。定義程序之常遵循系統(tǒng)的物理分區(qū);例如,在上述的加工單元中,可以為該單元的加工工位、測量工位和工站的主程序可能是一個描述要執(zhí)行的加工操作順序的SFC,而動作可能包含執(zhí)行所需運動GB/TXXXXX—XXXX/IEC/TR61131-如本文件附錄A所述,可移植性被定義為系統(tǒng)功能可以從一個系統(tǒng)轉移到另一個系統(tǒng)的難易程度。l系統(tǒng)間的可移植性,即從一個PADT轉換另一個PADT如所述,GB/T1596域的特定模型而專門設計的。這就導致了使用IEC語言編寫的除非目標系統(tǒng)中支持的功能集等于或超過源系統(tǒng)中支持的功能集,否則即使以文本語言編寫、符合要求被移植。一個典型的例子是,支持用不同數(shù)量的字符來區(qū)分兩個標GB/TXXXXX—XXXX/IEC/TR61131-TYPETempLimit:REAL:=250.0;E由此新類型TempLimit聲明的任何變量的初始化值為默認值250.0,而不是其他所有REAL類rBoilerMaxTemperature:TempLiPipeMaxTemperature:R型和子范圍類型通過避免使用非預期的變量值來提高程序的可靠性。雖然枚舉類型的使用大多可以靜TYPEColor:(Red,Yellow,Green);ENVAR_GLOBALbrickColor:Color;END_VAR到整數(shù)類型的轉換功能。這些值需要是不同的和可重復性的。只有當color中的三個值至少一個被使用時,才可以將值賦值給變量brickColor。所有其他TYPEPaintColor:WORD(Blue:=1,Red:=2,YeGB/TXXXXX—XXXX/IEC/TR61131-VAR_GLOBALmyPaintColor:PaintColor:=BlueORYell這里定義了一種新的類型PaintColor。該類型可以具有與WORD相同的值,也可以在任何WORD可以使用的地方使用該類型。然而,Blue,Red,Yellow或Green可以用作初始值或直接分配給PaintColor類TYPEBrowseResultMaNodeClass:=0x0100,DisplayName:=0x1000…VAR_GLOBALResult:BrowseResultMask;END_VARIF(ResultANDIsReference)=TRUE賦值語句有效。然而,將上述的brickColor變量分配給Y或X.CURRENT_COLOTRAFFIC_COLOR:(Red,YelloCURRENT_COLOR:TRAFFICY:TRAFFIC_COLOR;GB/TXXXXX—XXXX/IEC/TR61131-由于不需要兼容的系統(tǒng)來支持BCD算法,因此BCD編碼的數(shù)據應使用GB/T15969.3中定義的或ULINT),以便進行算術操作。類似地,提供了**_TO_BCD功能來將整數(shù)數(shù)據轉換為BCD編碼形式,以便傳輸?shù)酵獠吭O備。功能“IS_VALID_BCD”檢查一個變量是否代表一個REAL數(shù)據的數(shù)據格式根據ISO/IEC/IEEE605),),STRING數(shù)據類型提供了由8位字符組成的可變長度的文本數(shù)據的存儲,這在大多數(shù)應用程序中是GB/T15969.3還提供了ISO/IEC10646字符集(UCS-2或相應的Unicode格式U61131-3提供了在字符串中定義不可打印的字符的方法,這在為外部設備構造消息時通常是需要的。例如,為了格式化報告,可能需要在發(fā)送給打印機的消息中嵌入“換頁符”和類似的控制字GB/TXXXXX—XXXX/IEC/TR61131-GB/T15969.3沒有指定當分配操作試圖將當前長度Lc,new分配給聲明最大長度為Lmd<Lc,new的字符串變量時會發(fā)生什么。用戶應該意識到,在這種情況下,具體實現(xiàn)時可以產生錯誤,或者可能截斷分GB/T15969.3提供了字符數(shù)據類型CHAR或——轉換功能要在STRING和CHAR之間以及WSTRING和WCHAR之間使用。a)準確定義工藝階段的持續(xù)時間,例如,在熱處理中,某些材料的退火時間至關重要;c)根據一天的時間控制過程的開啟d)記錄關鍵模擬輸入的校準日期,以便需要重新校準時發(fā)出警告;電源故障后,應用程序應該中止過程并采取任何必要的措施,使工廠進入安全狀態(tài);f)定義某些操作要完成的超時時間。例GB/TXXXXX—XXXX/IEC/TR61131-——數(shù)據類型LTIME是一個以納秒為單位的有符號的64位整數(shù)?!@種時間格式的值的更新精度是由具體實現(xiàn)決定的,即某值以納秒為單位,但它可以每微秒對于LDATE,開發(fā)者必須注意一個與正確開始日期不匹配的單LDT不計算閏秒,即一天總是由86400秒組成,非閏年由365天組成,閏年由366天組成。此行為與UNIX時間格式中定義的行為完全相同。LDT是從1970-01-01-00:00:00以64位有符號整數(shù)計算納秒,這意味著有效的時間跨度為1677-09-21-同樣沒有規(guī)定的是在插入閏秒的情況下的處理方法,可以在不可以從DATE_AND_TIME變量中提取TI有用。它們的使用可以避免代碼的重復,并且在很多情況下還可以使程序更容易理解。圖7給出了一個使用數(shù)組變量的示例。在本例中,speeds是一個保存允許的線速度的數(shù)組描述線狀態(tài),如0表示停止,1到3分別為增GB/TXXXXX—XXXX/IEC/TR61131-SPEED_ARRAY:ARRAY[0..3]POSITION_ARRAY:ARRAY[1..4]OFVAR_OUTPUTlineSpeed:REAL//訪問By的第0位//訪問By的第七位;%X是默認值GB/TXXXXX—XXXX/IEC/TR61131-By:=Lo.%B3//訪問Lo的第3字節(jié)7.2POU數(shù)據傳輸法類N/AN/AN/AN/AN/AN/AN/A址的內部變量輸入、輸出和輸入-輸出變量可以作為功能、類或功能塊的方法以及功能塊體的參數(shù)來傳遞數(shù)據。被調用的功能、方法或主體的代碼被允許讀取輸入變量以及讀取或賦值輸出變量。類似地,輸入-輸出對于程序,只允許在資源構造中的程序實例的聲明中進行分GB/TXXXXX—XXXX/IEC/TR61131-限定符為“PUBLIC”或“INTERNAL”。這些變量可以在類或功能塊之外被訪問。與功此外,類、功能塊或程序中由VAR結構定義的靜態(tài)內部變量可以分配尚未完全由“AT%I*”或“AT%Q*”結構指定的I/O地址。這些也可功能塊或程序都可以通過使用VAR_EXTERNAL關鍵字聲明與全局變量同名的外部變量來訪問全局變(*在一個配置、資源或程序中*)VAR_GLOBALMY_TEMPERATURE:INT;END_V(*從FUNCTION_BLOCK內部進行的訪問*)VAR_EXTERNALMY_TEMPERATURE:INT;END_VAR(*在一個配置、資源或程序中*)VAR_GLOBALMY_TEMPERATUREAT%IW22:INT;END_VAR(*從FUNCTION_BLOCK內部進行的訪問*)VAR_EXTERNALMY_TEMPERATURE:INT;END_VAR輸入-輸出變量是用于功能、方法、功能塊和程序的一種特殊變量。它們不直接表示任何數(shù)據,而是引用類型適當?shù)钠渌麛?shù)據。它們通過使用VAR_IN_OUT關鍵字進行聲明。輸入-GB/TXXXXX—XXXX/IEC/TR61131-在POU中,輸入-輸出變量允許訪問變量的原始實例,而不是訪問變量的本地副本。例如,考慮圖次被調用時,變量ACC將通過X1*X2的結果對進行自加。不需要從復制ACC1.A的輸出值到變量ACC。由于功能的輸出沒有與之相關聯(lián)的永久存儲空間,因此功能的輸出不能用作VAR_IN_OUT變量,F(xiàn)UNCTION_BLOCKACCUMEND_VARVAR_INPUTX:INT;END_VARIECGB/TXXXXX—XXXX/IEC/TR61131-VAR_INPUTX1,X2:INT;ENVAR_IN_OUTACC:INT;IECFUNCTION_BLOCKSVAR_INPUTX1,X2,X3,X4:INT;VAR_IN_OUTACC:INT;END_VAACC1,ACC2:ACCUM;END_VARIECIECIECGB/TXXXXX—XXXX/IEC/TR61131-IEC可以像功能塊那樣通過輸出變量或輸入-輸出變量或兩者一起傳遞值。功能仍然不包含任何內部狀態(tài)信息?,F(xiàn)在,輸出變量的引入允許在標準的結果中。ENO是由標準功能提供的唯一附加輸出變量POU時使用“=>”操作符分配輸出變量的值。沒有整的聲明變量集提供實際參數(shù),但不包括執(zhí)調用的第一個參數(shù)應作為當前結果,所以非正式參數(shù)列表以第二個參GB/TXXXXX—XXXX/IEC/TR61131-A:=LIMIT(EN:=TRUE, CMD_TMR(START,T#300ms,OUT,ELAg)IL中的非正式功能調用fh)IL中的正式功能調用g)CALC10(START,FALSj)IL中的正式功能塊調用hX,Y:REAL;GB/TXXXXX—XXXX/IEC/TR61131-輸入、輸出和輸入-輸出變量可以在程序中聲明,但它們只能在資源聲明中的程序的實例聲明中分CONFIGURATIONCELL_1VAR_GLOBALw:UINT;END_VARVAR_GLOBALz1:BYTE;END_VARPROGRAMPINST1WITHSLOW_1:PROG1(x1:=%IX1.1//為程序輸入分配直接表示的變量PROGRAMPINST2WITHSLOW_1:PROG2(OUT1=>//將程序輸出分配給一個全局變量這是程序讀寫全局變量或直接表示變量的一種方法。程序讀/寫外部變量或讀/寫a)程序聲明本身并不依賴于全局變量的名稱或地址??梢詾槊總€程序實例分配不同的全局變量晰。聲明變量如果是外部變量或直接表示變量,讀/寫方向是隱式,需要檢查程序內部的c)全局變量或直接表示的變量的值不會即時反映。作為輸入/輸出變量的自然行為,全局變量或直接代表變量的值在程序執(zhí)行前被復制到輸入變量中,而輸出變量的值在程序執(zhí)行后被復制到全局變量或直接代表變量中。在程序執(zhí)行過程中,即使分配的全局變量/直接表示GB/TXXXXX—XXXX/IEC/TR61131-映到指定的全局變量/直接代表變量上,這在全局變量被用于與在不同任務間進行數(shù)7.3功能塊的使用身也不能被調用;這些操作是保留給功能塊結構擴展了這種OOP的理念,并在另一個子條中所討論的數(shù)據封裝和隱藏變量名的原則對于傳統(tǒng)的可編程序控制器系統(tǒng)的用戶來說可能這一要求可能被認為與以下說法相矛盾:任何已經被聲明的功能塊都可以被用于聲明另一個功能中。當功能塊類型FBx在程序類型A的實例中被實例化兩次時,就會產生兩個單獨的、不同的功能塊類GB/TXXXXX—XXXX/IEC/TR61131-FUNCTION_BLOCKFBxIECIECGB/TXXXXX—XXXX/IEC/TR61131-PROGRAMAFBAFBBFBxFBxFB1FBy可見的不可見的可見的FByFB1FBx對一個功能塊實例的變量的讀取訪問和對功能塊實例本身的調用之間是有區(qū)別的。讀取一個功能能塊輸出變量進行顯式賦值。只允許在功能塊實例的主體能無法移植使用單個功能塊實例、多次調用的POU。更多以被看作是一個記錄當前狀態(tài)的"存儲器"。由于這個原因,對具有相同輸入變量值的相同功能塊實例l所有可能的數(shù)據類型的變量的初始化都定義如果一個功能塊實例的輸入變量沒有都被分配值,就d使用功能塊的正式調用。一個功能塊的非正除了輸入和輸出之外,還可以在POU的變量聲明處使用關7,4功能塊實例和功能之間的區(qū)別GB/TXXXXX—XXXX/IEC/TR61131-b)調用功能的結果可以作為表達式或賦值語句中的一個值,但不能作為賦值操作的目標;引用一個功能塊實例的目的是為了通過其輸出變量進行讀取或調用被引用的實例。這些操作也可功能塊實例的固定名稱直接引用的;而是通過POU的輸入或輸入-輸出變量間接引用。被引用的功能塊使用功能塊實例名稱作為參數(shù)的技術為用戶在編程中提供了許多新的可能性。這些特點使得訪問或調用一個功能塊類型的實例成為可能,而這種機制的有效應用可以在處理具有相同行為的幾臺機器的問題中找到,其中每臺機器由一個功GB/TXXXXX—XXXX/IEC/TR61131-GB/TXXXXX—XXXX/IEC/TR61131-圖11a)到圖11c)給出了這種用法的示例,分別對應于圖10a)到圖10c)給出的接口和變量聲明。EXPIRED:=I_TMR.Q;IO_TMR.QExpired------II-------…----------()GB/TXXXXX—XXXX/IEC/TR61131-實例。使用此功能,這個功能塊實例的私有數(shù)據區(qū)(因此也包括輸出變量)不允許調用通過輸入變量建立的間接引用的功能塊實例,因為調用該功能塊實例可能會更改私有FUNCTIONBLOCKBVAR_IN_OUTCOUNTER_FB:CTU;END_VARVARREACHED:BOOL;END_VAR(*InvocationofthevariableCOUNTER_FB*)COUNTER_FB(*AccesstooutputQofthevariableCOUNTER_FB*)REACHED:=COUNTER_FB.Q;ENDFUNCTIONBLOCKGB/TXXXXX—XXXX/IEC/TR61131-PROGRAMP2VARREACHED:BOOL;COUNTER1:CTU;COUNTER2:CTU;ENDVAR(*AccessvalueofCOUNTER1.Qbeforeinvocation*)REACHED:=COUNTER1.Q;(*InvocationofB1causesinvocationofCOUNTER1*)B1(COUNTER_FB:=COUNTER1);(*AccessvalueofCOUNTER1.Qafterinvocation*)REACHED:=COUNTER1.Q;(*InvocationofB1causesinvocationofCOUNTER2*)B1(COUNTER_FB:=COUNTER2);ENDPROGRAMGB/TXXXXX—XXXX/IEC/TR61131-COUNTER1.Q---REACHEDB1+-----------------------+COUNTER1---|COUNTER_FB---COUNTER_FB|---COUNTER1+-----------------------+COUNTER1.Q---REACHED+-----------------------+COUNTER2---|COUNTER_FB---COUNTER_FB|---COUNTER2+-----------------------+塊COUNTER_FB的實例名稱作為變量多個調用功能塊B的實例B1,會導致調用與變量實例名稱對應的稱可以在其他類型的功能塊中作為外部變量使用。雖然這種功能塊的特定實例在不同的程序中可能會GB/TXXXXX—XXXX/IEC/TR61131-c)當應用程序不可避免地以圖形方式使用此類功能塊時,PADT應提供用于建立明確執(zhí)行控制的到下一次功能調用是相同的還不夠,還要確保被引用的功能塊實例的所有輸出變量的值是相同的。7.6程序的使用程序和GB/T15969.3-2007中的常對象特性。每個程序實例應始終是一個只能分配給任務的獨立可執(zhí)行l(wèi)對于程序的輸入、輸出和輸入-輸出變量,它們可以在程序實例執(zhí)行之前和之后從全局變量或直接表示的變量進行賦值。這種賦值可以在RESOURCE構造中的程序實例聲明中定GB/TXXXXX—XXXX/IEC/TR61131-c)通過作為程序外部變量使用的全局7.7面向對象技術面向對象是編程語言的一個成熟的概念。在類是一組變量和方法的集合。變量和方法的可訪問性是通過使用關鍵字PUBLIC、PRIVATE、PROTECTED和INTERNAL定義盡管類實例的數(shù)據可以從類外部進行讀寫操作,但操作在以下段落中,術語“類”也將用作CLASS和FUNCTION_BLOCK的行數(shù)或網絡數(shù)),這些不同的手段將不在此進行討論。但是,衡量代碼的復雜度并將代如果一個功能塊的主體超過了一定的復雜度,則標志著是需要將代碼劃分為方法并使用面向對象GB/TXXXXX—XXXX/IEC/TR61131-METHODLoadMETHODCount_Up:BOMETHODCount_Down:Bm_CV:=m_CV-1;GB/TXXXXX—XXXX/IEC/TR61131-_ __種混淆的來源:不可能在輸入CU和CD都是TRUE的情況下調用功能塊。圖15顯示了在S功能塊的調用和對面向對象功能塊的調用。請注意,面向對象功能塊需要的變量數(shù)量也更少。然而,在使用時,傳統(tǒng)的功能塊仍然顯示出一些優(yōu)勢。特別是在圖形語言中,調用一個功能塊的一個實例(圖16)比調用多個方法(圖17)更容易相同類型的傳統(tǒng)功能塊和其面向對象的變體。將面向對象的版本作為實現(xiàn)標準功能塊的基礎將會是很——Public變量:可以從任何地方訪問GB/TXXXXX—XXXX/IEC/TR61131-下面的類根據預設的比例因數(shù)和偏移量(線性方程)進行一個值的縮放。比例//根據線性方程執(zhí)行縮放VAR_INPUTVALUE:INT;END_VSET_SCALING:=FALSE;METHODPUBLICGET_FAMETHODPUBLICGET_OFFSET:GB/TXXXXX—XXXX/IEC/TR61131-繼承是一種在不復制代碼的情況下重用代碼的可行方式。一個類可以通過使用繼承允許一個類只能從一個基類派生。使用組合或接口允許從多個來源例如,看如下基類功能塊ETrig(邊緣FUNCTION_BLOCKABSTRACTETrxPreviousExecute:BOxPreviousAbortInProgress:BxAbortInProgress:BOMETHODPROTECTEDABSTRACTCyclicA//實現(xiàn)必須適當?shù)卦O置變量xDone和xErrorMETHODPROTECTEDABSTRACTResetOutMETHODPROTECTEDABSTRACTAIFNOTxAbortInProgresIFNOTxExecuteANDxPreviousExecuELSIFxExecuteANDNOTxPreviousExecutexPreviousExecute:=TRIFxErrorANDNOTxPreviousAbortInProgrxAbortInProgress:=TRAbort();IFNOTxAbortInProgresxPreviousAbortInProgress:=xAbortInProg該功能塊被指定為具有類似行為的所有功能塊的抽象基礎:一個功能塊在輸入的上升沿事件中啟動,運行一個或多個周期并在完成后在輸出上產生一個變量xDone(如果操作成功完成)或xError(如果操作無在主體中,派生功能塊必須調用基本功能塊的連接的多個ETrig派生功能塊可以在同一GB/TXXXXX—XXXX/IEC/TR61131-除了簡單地添加新方法外,派生類還可以通過重寫基接口提供了以共同方式處理具有共同屬性的不同功能塊或類的可行方METHODgetErrorDescription:STRINGEND_METHODgetLastErrorTimeStamp:DATE_AND_TIMEEND_METMETHODgetTypeOfError:UINTEND_METCLASSAIMPLEMENTSIErro…接口可以看作是兩個類之間的約定。A類實現(xiàn)IErrorObject接口,B類使用該接口。接口的具體實現(xiàn)newObject:IErrorObject;//將檢查是否有任何注冊對象處于錯誤狀態(tài),//并根據狀態(tài)處理GB/TXXXXX—XXXX/IEC/TR61131-//如果一個或多個對象處于錯誤狀態(tài)或嚴重錯誤狀態(tài),則返回TRUE…7.8可編程序控制器編程語言中的遞歸這種情況下,建議對可能的最深的調用棧進行動態(tài)檢查(棧7.9一個功能塊實例的多次調用VARaFB:FUNCTION_BLOCK_TYPE;END_VAR何問題;但在一個嚴格的單一賦值系統(tǒng)中,IF語句必須重新的預期目的。如果在上面的例子中,輸入IN的類型不是BOOL而是INT,那么就需要一個二進制選擇功aFB(IN1:=SEL(G:=aBooleanExpress嚴格的單一賦值也可能會增加中間變量的數(shù)量,而這些中間變量是對功能塊輸入的賦值進行解耦GB/TXXXXX—XXXX/IEC/TR61131-在SFC中也可以找到類似的多重分配的例子,一個功能塊的實例可以在一個以上的動作中被調用。使用功能塊實例的多次調用的一個適當示例是代碼同步的實現(xiàn),例如信號量、監(jiān)視器或約GB/TXXXXX—XXXX/IEC/TR61131-用時被設置為1,但F_TRIG實例的輸出Q總是需要至少兩次調用才能被設置為1。這種行為可以解釋如0變成了1,即檢測到了一個上升沿,因此R_TRIG實例的Q被設CLK的輸入是常數(shù)1(或TRUE),則輸出Q僅在第一次調用時為真,因為后續(xù)狀態(tài)不可能從0更改為1。VARfirstCycle:R_TRIG;END_VARfirstCycle(CLK:=TRUEGB/TXXXXX—XXXX/IEC/TR61131-GB/T15969.3定義了布爾輸入EN和這些變量被用來在LD語言中提供通過功能的布爾“能流”。然而,它們也可用于其他語言,在消除使與EN和ENO變量結合使用,以實現(xiàn)無跳轉和標簽GB/TXXXXX—XXXX/IEC/TR61131-JUMP或RETURN指令,否則所有指令和一個命名空間中的功能、功能塊或類之間應該有邏輯關系。例如,命名空間FILE_ACCESS可以包含用于文件打開、文件關閉、文件讀取、文件寫入等操作的功GB/TXXXXX—XXXX/IEC/TR61131-SFC由一個或多個包含步和轉換的網絡組成。與每個步相關聯(lián)的是一組動作。一個動作表示與一分:它定義了動作的執(zhí)行(也可以說它“控用(“置位”或“存儲”)、禁用(“復位”)、在時間延遲后啟用,或在有限時間內GB/T15969.3要求了動作控制塊塊本身實現(xiàn)??梢酝ㄟ^以下規(guī)則進行非正式a)一個動作在程序的各個部分中的動作(功能)主要由以下特征決定:或程序的一部分中使用不同的動作限定符定義動作)動作1)帶有“最后掃描”的控制,如圖23a2)不帶“最后掃描”的控制,如圖23b)。GB/TXXXXX—XXXX/IEC/TR61131-P0限定符的典型用途是在未實現(xiàn)特征1)的系統(tǒng)中替換“最后允許兩種動作控制(“最后掃描”與“無最后掃描”)的存在限制了程序的可移植性。在嘗試將SFC從一個系統(tǒng)移植到另一個系統(tǒng)之前,用戶應檢查在兩個不同的可編程序控制器系統(tǒng)中支持的對于是“最后掃描”還是“無最后掃描”,P0和P1的動作的。也就是說,在帶最后掃描的P1或P0動作期間,輸出Q為假(0),而在無最后掃描的P1和P0動作期間,輸出Q為真(1)。試圖在對是否帶“最后掃描”過將輸出Q的狀態(tài)直接賦值給布爾變量來確定的。定test已經被聲明為BOOL類型的變量。IECGB/TXXXXX—XXXX/IEC/TR61131-IECIEC當步被激活后,即使該步變成不激活,動作會被儲存,并且過了預設(S19.X=don'tcareifS14.Xfallsbefore5sec.)GB/TXXXXX—XXXX/IEC/TR61131-IECGB/TXXXXX—XXXX/IEC/TR61131-織單元(如程序或者功能塊)的控制下,動作的代碼被持續(xù)使能得到執(zhí)行。當Q從TRUE轉變到FALSE時,代碼被最后執(zhí)行一次。在這最后一次執(zhí)行中,相應的步標志已l通過確保程序化的動作不會被過早地打斷來保持計算數(shù) 為避免出現(xiàn)意外結果,編程人員應牢記每個動作至少評估兩次(一次在Q=1時,一次在Q=0時)。動作的一個錯誤主體,這將導致S15_CT等于激活次數(shù)的兩倍,下一次掃描中再次調用。圖24c)和d)分別說明了在ST和FBD語言中對GB/TXXXXX—XXXX/IEC/TR61131-S15_CTR(CU:=S15.X);S15一個SFC動作是一個包含一整個SFC網絡的動作。就像其他動作一樣,一個SFC動作可以與幾個步不推薦使用SFC動作,因為即使“父”動作一個功能塊的主體可以由一個SFC來定義;這將被表示為一個SFC功能中也包含了關于SFC當前狀態(tài)的信息。然后每個實例可以獨立工作,使用相同的S具有相同的(文本或圖形)方式和相同的限制。特別是SFC功能塊的每個SFC網絡應包含一個初始步。SFC功能塊的實例的執(zhí)行采用與所有其他功能塊相同的方式調用。可以輸入變量。例如,可以通過輸入變量(例如圖25中的T11)傳遞用于開始演變的布爾轉換條件。在SFC用的語言中可用的調用機制。然后使用比如在7.12.GB/TXXXXX—XXXX/IEC/TR61131-可編程序控制器總是用于實時地控制多個并行的工業(yè)過程。之前的程序執(zhí)行策略假定控制器能夠助編程人員更有效地利用這些特性,以下簡要解釋了一些最重要的在本闡述中,術語TASK指獨立運行,且與其他任務(準)并行運行的一組PROGRAM或TASKPER_2(INTERVAL:=t#50ms,PRPROGRAMP1WITHSLOW_1:F(x1:=前四行顯性定義了四個任務的特征。前三行規(guī)定了這些任務的執(zhí)行是以規(guī)定的時間間隔周期地被調度,而第四行規(guī)定了由布爾變量z2的上升沿觸GB/TXXXXX—XXXX/IEC/TR61131-選擇所執(zhí)行任務的策略決定了系統(tǒng)的響應能力和處理能力的執(zhí)行效率。當一個正在運行的任務能被另一個任務打斷時(“搶占式調度”響應能力任務的執(zhí)行必須與外部的進程保持同步。需要該任務只能被另一個優(yōu)先級更高的任務中斷,對磁盤I/O速度的高要求通常決定了將數(shù)據存儲在連續(xù)的扇非搶占式調度要求只有在完全執(zhí)行了與當前任務相關聯(lián)的所有POU之后,可編程序控制器處理器高的任務時,根據相關聯(lián)的TASK塊的輸入,當前正在執(zhí)行的GB/TXXXXX—XXXX/IEC/TR61131-使用搶占式調度的系統(tǒng)的反應時間(即從通過其TASK塊來設置任務準備執(zhí)行到開始執(zhí)行之間的時間)非常短,代價是需要一些附加的處理時間來保存和恢復上下當一個非搶占式的可編程序控制器從一個任務切換到另一個任務時,處理器中需要保存的數(shù)據量可以忽略不計。上下文切換本身的時間會很短,可能比搶占式上下文切換的情況下時間還短;但是當最差情況下的響應時間至少與運行時間最長的功能塊或程序完整執(zhí)行所需要的時間一樣長。由于這不對于非搶占式調度(示例1它必須在三次激活中等待兩次,等待時間為4ms(t=10m編程序控制器的制造商應提供充分的信息,使用戶能夠確定滿足這些規(guī)則的手段和注1:由于在GB/T15969.3-2017中很難敘述信號量的終止條件作為“等待循環(huán)”。SFC元素應被用于此目的?!?。這種限制適用于信號量,它也是一種它可能會導致程序組織單元的執(zhí)行被意外和不可追蹤另一種實現(xiàn)“進程間同步”的機制可以通過使用OOP方法來實現(xiàn),如7.7.4GB/TXXXXX—XXXX/IEC/TR61131-c)在任務釋放操作設備之前,不可能將操作設備分配給其他任何任務;d)有一個封閉的任務鏈,其中每個任務都被分配了鏈中下一個任務所需的操作設備。本文檔7.13.5中描述的通信功能塊可以使用郵箱或隊列,或兩者都使用。然而,所采用的特定機制戳就可以很容易地得到支持。例如,根據GB/T159GB/TXXXXX—XXXX/IEC/TR61131-VALUE:REAL;志數(shù)據;用于根據存儲時間確定數(shù)據的有效性;并將錯誤數(shù)據恢復ISO/IEC9506-5規(guī)定了在制造報文規(guī)范(MMS)上下文中用作虛擬制造設備(VMD)的可編程序控制為了在這種情況下也能夠對變量進行符號尋址,該標準提供了使用其元素的定義內存布局來定義此定義還允許內存與不同的數(shù)據類型重疊。使用重疊的一個簡單用例是對數(shù)字符號的顯式讀取訪GB/TXXXXX—XXXX/IEC/TR61131-twoAT%B2:DINT;根據該定義,這兩個“sign”變量的值是直字節(jié)序功能可用于不同系統(tǒng)之間的數(shù)據交換,以轉換為適當?shù)拇鎯Ω袷健W止?jié)序轉換功能將一個變量從實現(xiàn)者特定的、內部使用的PLC字節(jié)序轉換為所要求的字使用較低數(shù)字的部分訪問會返回較低值部分,與指定的字節(jié)序無關,即獨立于字節(jié)序,位偏移量0使用REAL或LREAL數(shù)進行算術運算會導致不正確的結果,例如非數(shù)值(NaN)或無窮大(+Inf,-驗證功能將檢查給定的輸入參數(shù)是否包含一個有效值。因此可以識別錯誤并直接在程序中做出反GB/TXXXXX—XXXX/IEC/TR61131-重載的功能IS_VALID是為數(shù)據類型REAL和LREAL定義的。如果實數(shù)不是有效的實數(shù)位模式,則一些實現(xiàn)者可能通過驗證功能IS_VALID來支持額外的數(shù)據類型。這些擴展的結果是特定于實現(xiàn)者ISO/IEC9506-5和GB/T15VAR_ACCESS...END_VAR結構來聲明的變量。這種讀和寫是分別使用READ和WRITE功能塊完成的,建議在訪問遠程可編程序控制器中的變量時,始終使用VAR_ACCESS方法。因為這樣就有可能為變量使用有意義的名稱。如果遠程可編程序控制器的程序被修改,I/O物理地址總是有可能被改變。將VAR_ACCESS名固定用于一些不同的可編程lSTATUS:輪詢一個遠程設備以獲取設備驗證信息??删幊绦蚩刂破髦芷谛缘豯READ:輪詢遠程設備中的一個或多個變量的值??梢灾付ㄒ粋€變量表作為該功能入。經過短暫的延遲后(由于通過網絡發(fā)送請求和得到響應需要時間),遠程變量的值就會呈現(xiàn)READ功能塊不提供由輸入變量來控制輪詢率的功能。應用程序應重新觸發(fā)該功能塊,以開始lWRITE:將一個或多個值寫入遠程設備的一個或多個變量中??梢灾付ㄒ粋€變量名稱的列GB/TXXXXX—XXXX/IEC/TR61131-lUSEND:將一個或多個變量的值發(fā)送到一個遠可以使用傳送到URCV功能塊中的變量程可編程序控制器應用程序在收到這些值時,加載一許多通信系統(tǒng)中,如果有太多的響應在等待中,通信通道就會阻塞,所以推薦使用快速響應符標識的遠程設備中。報警可以用嚴重程度來表征。該功能塊需要遠程設備確認接收到當在GB/T15969.3中提供的選項中進行選擇時,應考慮到編程技術對軟件質量的影響。本7.15節(jié)指出了一些相對重要的影響,并推薦能實現(xiàn)更高軟件質量的編程實踐,當在這種情況下,應使用SEND/RCV或USEND/URCV功能塊來保GB/TXXXXX—XXXX/IEC/TR61131-7.15.5通過任務對功能塊實例進確定為保證數(shù)據一致性而提供的機制。由于這些機制與實現(xiàn)有關,因此使用該特性的程序可能在符合WHILE和REPEAT語句不應用來獲得過程間的同步,例如,用一個外部決定的終止條件作為“等為了避免意外和潛在危險的影響,在此強烈提醒用戶在任何代碼間同步的情況下都不能違背這個c)另一種接口d)接口c)GB/TXXXXX—XXXX/IEC/TR61131-7.17依賴于實現(xiàn)的參數(shù)GB/TXXXXX—XXXX/IEC/TR61131-如果變量沒有被聲明為RETAIN或者NON_RE“不允許”使用輸入輸出參數(shù)的副作用8.2資源分配GB/TXXXXX—XXXX/IEC/TR61131-且在POU,例如程序、功能或功能塊被調用時執(zhí)行的相應和可能含有的SFC狀態(tài)的信息。相比之下,功能變量的存儲是臨時的,并只在功能執(zhí)行的過程因此,這種數(shù)據通常從“?!保ㄏ冗M后出的隊列)或“堆“8.3數(shù)據類型的實現(xiàn)為了減少浮點計算中可能出現(xiàn)的精度損失,在開始算有很多微處理器,尤其是數(shù)字信號處理器(DSP),有自己的內部浮點格式。在這種情況下,實現(xiàn)者例如,對浮點算術表達式應用關聯(lián)和分配法是一種變值優(yōu)化(由于有舍入的損60559中,只有在需要所有兼容的實現(xiàn)時,這個舍入方向才會產生不同的結果。更糟糕的是,變值優(yōu)化甚至可能依賴于編譯為了消除對MIN和MAX功能解釋上的歧義,我們認為它們的語義可以通過應用以下定義從比較功GB/TXXXXX—XXXX/IEC/TR61131-變長字符串的最大長度和格式依賴于實現(xiàn),這意味著使用字符串數(shù)據類型的功能塊和算法可能無法在可編程序控制器之間移植,特別是在最大字符串長度明顯不同的儲在一個字節(jié)或字中,將最大的字符串長度分別限制在255或6553準確表示30天、10分鐘和200毫秒的時間,即T#30d10m300ms;而使用32位浮點了直到2106年的日期和時間的天數(shù)。然而,這種格式不允許事件以優(yōu)于1秒的精度來其次,某些算術上的等價關系不再成立。例如,表達式(DATE#2000-01-01-DATE#2000-01-01+TIME#1ms)和(DATE#2000-01-01+TIME#1ms-DATE#2000-01-01)看起來是等價的,但實際上會因為如果需要更高的精度,可以用GB/T15969.3-2017中定義的數(shù)據類型LDATE、LTIME_OF_DAY、LDATE_AND_TIME來存儲數(shù)值。數(shù)是從1970年1月1日零點開始計算的,而對于LTIME_OF_DAY,納秒數(shù)是從當天零點開始計但是準確度可能由實現(xiàn)者來決定,并且每微秒或毫秒都會更新。GB/TXXXXX—XXXX/IEC/TR61131-制。例如,對于大多數(shù)應用來說,合理的限制是將數(shù)組變量限制在不超過三個維深度嵌套的數(shù)組索引也可能需要受到限制,因為在可編程序控制器內解決內存地址所涉及的復雜loop.sp:=spList[loopParams[phase[recipe[job18.4功能和功能塊的執(zhí)行統(tǒng)動作是將EN輸入復制到ENO輸出。這個變量在功能中持到下一次執(zhí)行。因此,即使是相同的參數(shù)(輸入變量),用的方式實現(xiàn)的,那么只需要將一個參數(shù)——實例數(shù)據結GB/TXXXXX—XXXX/IEC/TR61131-當程序中的功能塊實例與一個獨立的任務相關聯(lián)時,從程序中調用功能塊應該為功能塊的輸入變期性或中斷驅動的任務搶占執(zhí)行時,這些功能塊的實際輸出值可能在程序中使用這些值進行計算時發(fā)額外的數(shù)據類型限定符R_EDGE和F_EDGE僅適用于功能塊輸入變量。這些數(shù)據類“真”,否則為“假”。與功能塊實例相比,沒有對對象的調用,只有對對象方法的內部數(shù)據是每次在激活(調用)時動態(tài)初始化的。通常情況下,方法的數(shù)據是在棧中創(chuàng)建的。一個虛方法表將方法映射到具體的實現(xiàn),方法表的內部表示GB/TXXXXX—XXXX/IEC/TR61131-a)動作控制可以作為動作控制塊實現(xiàn),也可以在優(yōu)化的代碼和數(shù)據結構中實現(xiàn)相應的功能;b)無論SFC出現(xiàn)在程序、FB或是SFC動作中,都應該用一致的方法來執(zhí)行SFC演進;c)如上文8.2所述,在為包含SFC的程序或功能塊分配存儲空間時,有必要考慮存儲SFC狀態(tài)信息果有的話),步經過的時間(如果支持的話),以及實現(xiàn)所要這種掃描的定義承認了這樣的一個事實:只要達到了最后一步,就不會有隱式的循環(huán)到初始步。絡的標記,因為所有的轉換都必須一步一步多個歸約步轉換為一個由一個步和一個轉換組成的SFC,如圖21SFC只包含AND分支,并且初始步不在GB/TXXXXX—XXXX/IEC/TR61131-a)由一個步、一個轉換、另一個步組成的b)由一個轉換、一個步、另一轉換組成的),算法將產生一個警告,因為不可能進一步歸約,兩個終止條件均GB/TXXXXX—XXXX/IEC/TR61131-a)根據終止規(guī)則1,不要求歸約c)一個不可歸約的(不安全的)SFCd)一個不可歸約的(不可達的)SFCGB/T15969.3定義了TASK結構,使得用戶可以指定l一個周期性任務在確定的時間間隔內被定期觸發(fā),用戶通過將SIGNLE輸入連接到一個布爾變量,其上升沿代表觸發(fā)事件,并將INTERVAL輸入設置為非周期任務可以根據觸發(fā)事件的性質進行分類,事GB/TXXXXX—XXXX/IEC/TR61131-現(xiàn)者還應該考慮提供默認程序來處理更頻繁發(fā)生的事件類型,如重新啟動和運行時用于源程序中的語法或配置錯誤。這些錯誤可能會在用戶將它們a)系統(tǒng)應在準備執(zhí)行程序期間報c)系統(tǒng)應在程序執(zhí)行期間報告錯誤,并啟動適當?shù)南到y(tǒng)或用戶定義的錯誤處理程也就是說,如果在每個選項3)的運行時間之前無法檢測到錯誤,則應該警告用戶可能會發(fā)GB/TXXXXX—XXXX/IEC/TR61131-VAR_ACCESS中的數(shù)據類型沖突ED,RTb本表并沒有詳盡地列出所有可能的運8.8.2包含了程序執(zhí)行過程中報告錯誤和啟動系統(tǒng)或用戶定義的錯誤處理程序注:本規(guī)定的范圍僅限于用戶程序中的錯誤;但是,實現(xiàn)者可以考慮提供類似的處理機GB/TXXXXX—XXXX/IEC/TR61131-);
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 聚焦2024藥師考試熱點解析試題及答案
- 如何通過專利布局應對行業(yè)變革的挑戰(zhàn)與策略試題及答案
- 系統(tǒng)架構設計師考試工作與家庭生活平衡試題及答案
- 積極心理學的基本理念試題及答案
- 激光技術證書考試復習策略試題及答案
- 智慧尋親面試題及答案
- 名師筆試試題及答案
- 能夠掌握的系統(tǒng)規(guī)劃與管理師考試試題及答案
- 知識產權管理體系的考試試題及答案
- 基礎ecexl考試題及答案
- 2024年大學英語四級單詞表不含高中
- 四川省成都市武侯區(qū)北京第二外國語學院成都附屬中學2024-2025學年八年級上學期期中考試英語試題(含答案無聽力原文及音頻)
- 【MOOC】老子的人生智慧-東北大學 中國大學慕課MOOC答案
- 售后服務組織架構及人員崗位職責
- 智能交通監(jiān)控系統(tǒng)運維服務方案(純方案-)
- 廢舊鋰電池回收利用技術課件
- 區(qū)域醫(yī)學檢測中心的建設與管理V3
- 北京市矢量地圖-可改顏色
- 技術轉移案例
- 旅游公司抖音代運營合同范本
- 草莓水果課件教學課件
評論
0/150
提交評論