![可編程序控制器 第8部分:編程語言的應(yīng)用與實(shí)現(xiàn)導(dǎo)則 征求意見稿_第1頁](http://file4.renrendoc.com/view5/M01/34/16/wKhkGGaaB1yAWqxIAAF4NHDUjD8333.jpg)
![可編程序控制器 第8部分:編程語言的應(yīng)用與實(shí)現(xiàn)導(dǎo)則 征求意見稿_第2頁](http://file4.renrendoc.com/view5/M01/34/16/wKhkGGaaB1yAWqxIAAF4NHDUjD83332.jpg)
![可編程序控制器 第8部分:編程語言的應(yīng)用與實(shí)現(xiàn)導(dǎo)則 征求意見稿_第3頁](http://file4.renrendoc.com/view5/M01/34/16/wKhkGGaaB1yAWqxIAAF4NHDUjD83333.jpg)
![可編程序控制器 第8部分:編程語言的應(yīng)用與實(shí)現(xiàn)導(dǎo)則 征求意見稿_第4頁](http://file4.renrendoc.com/view5/M01/34/16/wKhkGGaaB1yAWqxIAAF4NHDUjD83334.jpg)
![可編程序控制器 第8部分:編程語言的應(yīng)用與實(shí)現(xiàn)導(dǎo)則 征求意見稿_第5頁](http://file4.renrendoc.com/view5/M01/34/16/wKhkGGaaB1yAWqxIAAF4NHDUjD83335.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
GB/TXXXXX—XXXX/IEC/TR61131-4可編程序控制器第8部分:編程語言的應(yīng)用與實(shí)現(xiàn)導(dǎo)則注:GB/T15969.3和本文件都沒有明確解決可編程序ISO和IEC在以下網(wǎng)址中維護(hù)了標(biāo)準(zhǔn)術(shù)語數(shù)——IECElectropedia:http:4縮略語ETrig:邊緣觸發(fā)功能(EdgeTFB:功能塊(FunctionBlocIL:指令表(InstructionGB/TXXXXX—XXXX/IEC/TR61131-5NaN:非數(shù)值(Notanumber)OOP:面向?qū)ο缶幊蹋∣bjectOrientedPrograPLC:可編程序邏輯控制器(ProgrammablPOU:程序組織單元(ProgramOrganizationUniPADT:編程和調(diào)試工具(ProgrammingaRT:運(yùn)行時(shí)(Runtime)VMD:虛擬制造設(shè)備(VirtualManufacturingDevice)5概述lGB/T15969.3中定義的可編程序控制器系統(tǒng)中的用戶。這些用戶應(yīng)針對工業(yè)過行了補(bǔ)充說明,第8章提供了一些編程語言元素因此,對可編程序控制器用戶而言第6章和第7章最為有用,而對編程語隨著微電子技術(shù)和相關(guān)技術(shù)的快速革新,系統(tǒng)硬件的成本/性能比大幅下降?,F(xiàn)今,一個(gè)可編程控如圖1所示,這種系統(tǒng)的基本骨干是通信子系統(tǒng),它為分布式自動(dòng)裝置之間的信息交流提供機(jī)制。足其特定子任務(wù)要求所需的大小和性能。在其他環(huán)境中,可編程序控制器可以如圖2所示一樣被獨(dú)立應(yīng)GB/TXXXXX—XXXX/IEC/TR61131-6操作監(jiān)控操作監(jiān)控通信子系統(tǒng)邏輯控制混合控制循環(huán)控制操作監(jiān)控混合控制操作監(jiān)控混合控制操作監(jiān)控邏輯控制壓力機(jī)壓力機(jī)泵除了其低廉的硬件價(jià)格外,可編程序控制器也因其簡單的的操作和編程原理而在解決自動(dòng)化任務(wù)可編程序控制器通常采用圖3所示的循環(huán)或定期程序執(zhí)行原則。循環(huán)運(yùn)行的程序在一次執(zhí)行結(jié)束后的周期性執(zhí)行是由時(shí)鐘機(jī)制在相同間隔時(shí)間點(diǎn)觸發(fā)的。同一個(gè)控制器可以在不同的周期時(shí)間內(nèi)準(zhǔn)同步GB/TXXXXX—XXXX/IEC/TR61131-7這些原理的優(yōu)點(diǎn)是,允許使用與硬線邏輯或連續(xù)控制電路原理密切相關(guān)的元件來構(gòu)造可編程序控在線測試和診斷。因此,可編程序控制器的編程和調(diào)試工具(P時(shí)鐘觸發(fā)器時(shí)鐘觸發(fā)器:例如每80毫秒讀取輸入周期執(zhí)行執(zhí)行算法寫輸出讀取輸入執(zhí)行算法寫輸出循環(huán)執(zhí)行或從一個(gè)系列的控制器換到另一個(gè)系列的控制器,往往需要設(shè)計(jì)人員閱讀大量的的硬件和軟件的手引入了許多規(guī)范以支持在6.1中所描述的可編程序控制器的優(yōu)勢,盡管這涉及到不同制造商的控制器。GB/TXXXXX—XXXX/IEC/TR61131-8制造商和用戶組織(如PLCopen)通過廣泛地推廣和宣傳PLC編程語言標(biāo)準(zhǔn)化的益處和優(yōu)點(diǎn),加速了b)強(qiáng)數(shù)據(jù)類型不僅得到支持,而且還是內(nèi)在要求,這是消除編程錯(cuò)誤的主要來源;d)提供了在應(yīng)用程序之間使用VAR_ACCESS關(guān)鍵字設(shè)計(jì)通信功能。與程序在單一設(shè)備或不同設(shè)2)圖形化的功能塊圖(FBD)語言為同時(shí)運(yùn)作的電子元件網(wǎng)絡(luò)進(jìn)行建模,如加法器、乘法器、4)指令表(IL)語言用匯編語言對控制系統(tǒng)的底層程序設(shè)計(jì)進(jìn)行建模;g)順序功能圖(SFC)對時(shí)間驅(qū)動(dòng)和事件驅(qū)動(dòng)的順序控制設(shè)備和算法進(jìn)行建模。h)針對所要編程的特定應(yīng)用功能來靈活地選擇適合的語言,將提高處理控制問題的軟件解決方i)項(xiàng)目小組的每個(gè)應(yīng)用專家都能針對所處理問題的特殊功能來選擇適合的編程方式和語言,而個(gè)系列總是需要花費(fèi)精力,但這也有利于不同類型控制器間的控制軟件設(shè)計(jì)的復(fù)用。6.4語言項(xiàng)概述基本高級語言編程元素和他們之間的關(guān)系,如圖4和圖5的編程GB/TXXXXX—XXXX/IEC/TR61131-9+type+instance*+type+instance*<<type>>NamedType<{函數(shù)可以在任何邏輯體中調(diào)用,但不能是變量類型。}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ù)可以在任何邏輯體中調(diào)用,但不能是變量類型。}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通過支持面向?qū)ο筇匦远粌H是功能塊實(shí)例化進(jìn)行編程語言基礎(chǔ)概念擴(kuò)展,是第三版本中最大的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)應(yīng)從數(shù)據(jù)中推斷出來在6.1和6.3中已經(jīng)指出,GB/T15969.3的元素與工業(yè)過程測量、自動(dòng)化和控制中公認(rèn)的概念b)通過將所需的功能分配到一個(gè)或多個(gè)元件(通常是程序)中來進(jìn)行系統(tǒng)設(shè)計(jì)的分解。定義程序之常遵循系統(tǒng)的物理分區(qū);例如,在上述的加工單元中,可以為該單元的加工工位、測量工位和工站的主程序可能是一個(gè)描述要執(zhí)行的加工操作順序的SFC,而動(dòng)作可能包含執(zhí)行所需運(yùn)動(dòng)GB/TXXXXX—XXXX/IEC/TR61131-如本文件附錄A所述,可移植性被定義為系統(tǒng)功能可以從一個(gè)系統(tǒng)轉(zhuǎn)移到另一個(gè)系統(tǒng)的難易程度。l系統(tǒng)間的可移植性,即從一個(gè)PADT轉(zhuǎn)換另一個(gè)PADT如所述,GB/T1596域的特定模型而專門設(shè)計(jì)的。這就導(dǎo)致了使用IEC語言編寫的除非目標(biāo)系統(tǒng)中支持的功能集等于或超過源系統(tǒng)中支持的功能集,否則即使以文本語言編寫、符合要求被移植。一個(gè)典型的例子是,支持用不同數(shù)量的字符來區(qū)分兩個(gè)標(biāo)GB/TXXXXX—XXXX/IEC/TR61131-TYPETempLimit:REAL:=250.0;E由此新類型TempLimit聲明的任何變量的初始化值為默認(rèn)值250.0,而不是其他所有REAL類rBoilerMaxTemperature:TempLiPipeMaxTemperature:R型和子范圍類型通過避免使用非預(yù)期的變量值來提高程序的可靠性。雖然枚舉類型的使用大多可以靜TYPEColor:(Red,Yellow,Green);ENVAR_GLOBALbrickColor:Color;END_VAR到整數(shù)類型的轉(zhuǎn)換功能。這些值需要是不同的和可重復(fù)性的。只有當(dāng)color中的三個(gè)值至少一個(gè)被使用時(shí),才可以將值賦值給變量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ù)據(jù)應(yīng)使用GB/T15969.3中定義的或ULINT),以便進(jìn)行算術(shù)操作。類似地,提供了**_TO_BCD功能來將整數(shù)數(shù)據(jù)轉(zhuǎn)換為BCD編碼形式,以便傳輸?shù)酵獠吭O(shè)備。功能“IS_VALID_BCD”檢查一個(gè)變量是否代表一個(gè)REAL數(shù)據(jù)的數(shù)據(jù)格式根據(jù)ISO/IEC/IEEE605),),STRING數(shù)據(jù)類型提供了由8位字符組成的可變長度的文本數(shù)據(jù)的存儲,這在大多數(shù)應(yīng)用程序中是GB/T15969.3還提供了ISO/IEC10646字符集(UCS-2或相應(yīng)的Unicode格式U61131-3提供了在字符串中定義不可打印的字符的方法,這在為外部設(shè)備構(gòu)造消息時(shí)通常是需要的。例如,為了格式化報(bào)告,可能需要在發(fā)送給打印機(jī)的消息中嵌入“換頁符”和類似的控制字GB/TXXXXX—XXXX/IEC/TR61131-GB/T15969.3沒有指定當(dāng)分配操作試圖將當(dāng)前長度Lc,new分配給聲明最大長度為Lmd<Lc,new的字符串變量時(shí)會發(fā)生什么。用戶應(yīng)該意識到,在這種情況下,具體實(shí)現(xiàn)時(shí)可以產(chǎn)生錯(cuò)誤,或者可能截?cái)喾諫B/T15969.3提供了字符數(shù)據(jù)類型CHAR或——轉(zhuǎn)換功能要在STRING和CHAR之間以及WSTRING和WCHAR之間使用。a)準(zhǔn)確定義工藝階段的持續(xù)時(shí)間,例如,在熱處理中,某些材料的退火時(shí)間至關(guān)重要;c)根據(jù)一天的時(shí)間控制過程的開啟d)記錄關(guān)鍵模擬輸入的校準(zhǔn)日期,以便需要重新校準(zhǔn)時(shí)發(fā)出警告;電源故障后,應(yīng)用程序應(yīng)該中止過程并采取任何必要的措施,使工廠進(jìn)入安全狀態(tài);f)定義某些操作要完成的超時(shí)時(shí)間。例GB/TXXXXX—XXXX/IEC/TR61131-——數(shù)據(jù)類型LTIME是一個(gè)以納秒為單位的有符號的64位整數(shù)?!@種時(shí)間格式的值的更新精度是由具體實(shí)現(xiàn)決定的,即某值以納秒為單位,但它可以每微秒對于LDATE,開發(fā)者必須注意一個(gè)與正確開始日期不匹配的單LDT不計(jì)算閏秒,即一天總是由86400秒組成,非閏年由365天組成,閏年由366天組成。此行為與UNIX時(shí)間格式中定義的行為完全相同。LDT是從1970-01-01-00:00:00以64位有符號整數(shù)計(jì)算納秒,這意味著有效的時(shí)間跨度為1677-09-21-同樣沒有規(guī)定的是在插入閏秒的情況下的處理方法,可以在不可以從DATE_AND_TIME變量中提取TI有用。它們的使用可以避免代碼的重復(fù),并且在很多情況下還可以使程序更容易理解。圖7給出了一個(gè)使用數(shù)組變量的示例。在本例中,speeds是一個(gè)保存允許的線速度的數(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是默認(rèn)值GB/TXXXXX—XXXX/IEC/TR61131-By:=Lo.%B3//訪問Lo的第3字節(jié)7.2POU數(shù)據(jù)傳輸法類N/AN/AN/AN/AN/AN/AN/A址的內(nèi)部變量輸入、輸出和輸入-輸出變量可以作為功能、類或功能塊的方法以及功能塊體的參數(shù)來傳遞數(shù)據(jù)。被調(diào)用的功能、方法或主體的代碼被允許讀取輸入變量以及讀取或賦值輸出變量。類似地,輸入-輸出對于程序,只允許在資源構(gòu)造中的程序?qū)嵗穆暶髦羞M(jìn)行分GB/TXXXXX—XXXX/IEC/TR61131-限定符為“PUBLIC”或“INTERNAL”。這些變量可以在類或功能塊之外被訪問。與功此外,類、功能塊或程序中由VAR結(jié)構(gòu)定義的靜態(tài)內(nèi)部變量可以分配尚未完全由“AT%I*”或“AT%Q*”結(jié)構(gòu)指定的I/O地址。這些也可功能塊或程序都可以通過使用VAR_EXTERNAL關(guān)鍵字聲明與全局變量同名的外部變量來訪問全局變(*在一個(gè)配置、資源或程序中*)VAR_GLOBALMY_TEMPERATURE:INT;END_V(*從FUNCTION_BLOCK內(nèi)部進(jìn)行的訪問*)VAR_EXTERNALMY_TEMPERATURE:INT;END_VAR(*在一個(gè)配置、資源或程序中*)VAR_GLOBALMY_TEMPERATUREAT%IW22:INT;END_VAR(*從FUNCTION_BLOCK內(nèi)部進(jìn)行的訪問*)VAR_EXTERNALMY_TEMPERATURE:INT;END_VAR輸入-輸出變量是用于功能、方法、功能塊和程序的一種特殊變量。它們不直接表示任何數(shù)據(jù),而是引用類型適當(dāng)?shù)钠渌麛?shù)據(jù)。它們通過使用VAR_IN_OUT關(guān)鍵字進(jìn)行聲明。輸入-GB/TXXXXX—XXXX/IEC/TR61131-在POU中,輸入-輸出變量允許訪問變量的原始實(shí)例,而不是訪問變量的本地副本。例如,考慮圖次被調(diào)用時(shí),變量ACC將通過X1*X2的結(jié)果對進(jìn)行自加。不需要從復(fù)制ACC1.A的輸出值到變量ACC。由于功能的輸出沒有與之相關(guān)聯(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可以像功能塊那樣通過輸出變量或輸入-輸出變量或兩者一起傳遞值。功能仍然不包含任何內(nèi)部狀態(tài)信息?,F(xiàn)在,輸出變量的引入允許在標(biāo)準(zhǔn)的結(jié)果中。ENO是由標(biāo)準(zhǔn)功能提供的唯一附加輸出變量POU時(shí)使用“=>”操作符分配輸出變量的值。沒有整的聲明變量集提供實(shí)際參數(shù),但不包括執(zhí)調(diào)用的第一個(gè)參數(shù)應(yīng)作為當(dāng)前結(jié)果,所以非正式參數(shù)列表以第二個(gè)參GB/TXXXXX—XXXX/IEC/TR61131-A:=LIMIT(EN:=TRUE, CMD_TMR(START,T#300ms,OUT,ELAg)IL中的非正式功能調(diào)用fh)IL中的正式功能調(diào)用g)CALC10(START,FALSj)IL中的正式功能塊調(diào)用hX,Y:REAL;GB/TXXXXX—XXXX/IEC/TR61131-輸入、輸出和輸入-輸出變量可以在程序中聲明,但它們只能在資源聲明中的程序的實(shí)例聲明中分CONFIGURATIONCELL_1VAR_GLOBALw:UINT;END_VARVAR_GLOBALz1:BYTE;END_VARPROGRAMPINST1WITHSLOW_1:PROG1(x1:=%IX1.1//為程序輸入分配直接表示的變量PROGRAMPINST2WITHSLOW_1:PROG2(OUT1=>//將程序輸出分配給一個(gè)全局變量這是程序讀寫全局變量或直接表示變量的一種方法。程序讀/寫外部變量或讀/寫a)程序聲明本身并不依賴于全局變量的名稱或地址??梢詾槊總€(gè)程序?qū)嵗峙洳煌娜肿兞课?。聲明變量如果是外部變量或直接表示變量,讀/寫方向是隱式,需要檢查程序內(nèi)部的c)全局變量或直接表示的變量的值不會即時(shí)反映。作為輸入/輸出變量的自然行為,全局變量或直接代表變量的值在程序執(zhí)行前被復(fù)制到輸入變量中,而輸出變量的值在程序執(zhí)行后被復(fù)制到全局變量或直接代表變量中。在程序執(zhí)行過程中,即使分配的全局變量/直接表示GB/TXXXXX—XXXX/IEC/TR61131-映到指定的全局變量/直接代表變量上,這在全局變量被用于與在不同任務(wù)間進(jìn)行數(shù)7.3功能塊的使用身也不能被調(diào)用;這些操作是保留給功能塊結(jié)構(gòu)擴(kuò)展了這種OOP的理念,并在另一個(gè)子條中所討論的數(shù)據(jù)封裝和隱藏變量名的原則對于傳統(tǒng)的可編程序控制器系統(tǒng)的用戶來說可能這一要求可能被認(rèn)為與以下說法相矛盾:任何已經(jīng)被聲明的功能塊都可以被用于聲明另一個(gè)功能中。當(dāng)功能塊類型FBx在程序類型A的實(shí)例中被實(shí)例化兩次時(shí),就會產(chǎn)生兩個(gè)單獨(dú)的、不同的功能塊類GB/TXXXXX—XXXX/IEC/TR61131-FUNCTION_BLOCKFBxIECIECGB/TXXXXX—XXXX/IEC/TR61131-PROGRAMAFBAFBBFBxFBxFB1FBy可見的不可見的可見的FByFB1FBx對一個(gè)功能塊實(shí)例的變量的讀取訪問和對功能塊實(shí)例本身的調(diào)用之間是有區(qū)別的。讀取一個(gè)功能能塊輸出變量進(jìn)行顯式賦值。只允許在功能塊實(shí)例的主體能無法移植使用單個(gè)功能塊實(shí)例、多次調(diào)用的POU。更多以被看作是一個(gè)記錄當(dāng)前狀態(tài)的"存儲器"。由于這個(gè)原因,對具有相同輸入變量值的相同功能塊實(shí)例l所有可能的數(shù)據(jù)類型的變量的初始化都定義如果一個(gè)功能塊實(shí)例的輸入變量沒有都被分配值,就d使用功能塊的正式調(diào)用。一個(gè)功能塊的非正除了輸入和輸出之外,還可以在POU的變量聲明處使用關(guān)7,4功能塊實(shí)例和功能之間的區(qū)別GB/TXXXXX—XXXX/IEC/TR61131-b)調(diào)用功能的結(jié)果可以作為表達(dá)式或賦值語句中的一個(gè)值,但不能作為賦值操作的目標(biāo);引用一個(gè)功能塊實(shí)例的目的是為了通過其輸出變量進(jìn)行讀取或調(diào)用被引用的實(shí)例。這些操作也可功能塊實(shí)例的固定名稱直接引用的;而是通過POU的輸入或輸入-輸出變量間接引用。被引用的功能塊使用功能塊實(shí)例名稱作為參數(shù)的技術(shù)為用戶在編程中提供了許多新的可能性。這些特點(diǎn)使得訪問或調(diào)用一個(gè)功能塊類型的實(shí)例成為可能,而這種機(jī)制的有效應(yīng)用可以在處理具有相同行為的幾臺機(jī)器的問題中找到,其中每臺機(jī)器由一個(gè)功GB/TXXXXX—XXXX/IEC/TR61131-GB/TXXXXX—XXXX/IEC/TR61131-圖11a)到圖11c)給出了這種用法的示例,分別對應(yīng)于圖10a)到圖10c)給出的接口和變量聲明。EXPIRED:=I_TMR.Q;IO_TMR.QExpired------II-------…----------()GB/TXXXXX—XXXX/IEC/TR61131-實(shí)例。使用此功能,這個(gè)功能塊實(shí)例的私有數(shù)據(jù)區(qū)(因此也包括輸出變量)不允許調(diào)用通過輸入變量建立的間接引用的功能塊實(shí)例,因?yàn)檎{(diào)用該功能塊實(shí)例可能會更改私有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的實(shí)例名稱作為變量多個(gè)調(diào)用功能塊B的實(shí)例B1,會導(dǎo)致調(diào)用與變量實(shí)例名稱對應(yīng)的稱可以在其他類型的功能塊中作為外部變量使用。雖然這種功能塊的特定實(shí)例在不同的程序中可能會GB/TXXXXX—XXXX/IEC/TR61131-c)當(dāng)應(yīng)用程序不可避免地以圖形方式使用此類功能塊時(shí),PADT應(yīng)提供用于建立明確執(zhí)行控制的到下一次功能調(diào)用是相同的還不夠,還要確保被引用的功能塊實(shí)例的所有輸出變量的值是相同的。7.6程序的使用程序和GB/T15969.3-2007中的常對象特性。每個(gè)程序?qū)嵗龖?yīng)始終是一個(gè)只能分配給任務(wù)的獨(dú)立可執(zhí)行l(wèi)對于程序的輸入、輸出和輸入-輸出變量,它們可以在程序?qū)嵗龍?zhí)行之前和之后從全局變量或直接表示的變量進(jìn)行賦值。這種賦值可以在RESOURCE構(gòu)造中的程序?qū)嵗暶髦卸℅B/TXXXXX—XXXX/IEC/TR61131-c)通過作為程序外部變量使用的全局7.7面向?qū)ο蠹夹g(shù)面向?qū)ο笫蔷幊陶Z言的一個(gè)成熟的概念。在類是一組變量和方法的集合。變量和方法的可訪問性是通過使用關(guān)鍵字PUBLIC、PRIVATE、PROTECTED和INTERNAL定義盡管類實(shí)例的數(shù)據(jù)可以從類外部進(jìn)行讀寫操作,但操作在以下段落中,術(shù)語“類”也將用作CLASS和FUNCTION_BLOCK的行數(shù)或網(wǎng)絡(luò)數(shù)),這些不同的手段將不在此進(jìn)行討論。但是,衡量代碼的復(fù)雜度并將代如果一個(gè)功能塊的主體超過了一定的復(fù)雜度,則標(biāo)志著是需要將代碼劃分為方法并使用面向?qū)ο驡B/TXXXXX—XXXX/IEC/TR61131-METHODLoadMETHODCount_Up:BOMETHODCount_Down:Bm_CV:=m_CV-1;GB/TXXXXX—XXXX/IEC/TR61131-_ __種混淆的來源:不可能在輸入CU和CD都是TRUE的情況下調(diào)用功能塊。圖15顯示了在S功能塊的調(diào)用和對面向?qū)ο蠊δ軌K的調(diào)用。請注意,面向?qū)ο蠊δ軌K需要的變量數(shù)量也更少。然而,在使用時(shí),傳統(tǒng)的功能塊仍然顯示出一些優(yōu)勢。特別是在圖形語言中,調(diào)用一個(gè)功能塊的一個(gè)實(shí)例(圖16)比調(diào)用多個(gè)方法(圖17)更容易相同類型的傳統(tǒng)功能塊和其面向?qū)ο蟮淖凅w。將面向?qū)ο蟮陌姹咀鳛閷?shí)現(xiàn)標(biāo)準(zhǔn)功能塊的基礎(chǔ)將會是很——Public變量:可以從任何地方訪問GB/TXXXXX—XXXX/IEC/TR61131-下面的類根據(jù)預(yù)設(shè)的比例因數(shù)和偏移量(線性方程)進(jìn)行一個(gè)值的縮放。比例//根據(jù)線性方程執(zhí)行縮放VAR_INPUTVALUE:INT;END_VSET_SCALING:=FALSE;METHODPUBLICGET_FAMETHODPUBLICGET_OFFSET:GB/TXXXXX—XXXX/IEC/TR61131-繼承是一種在不復(fù)制代碼的情況下重用代碼的可行方式。一個(gè)類可以通過使用繼承允許一個(gè)類只能從一個(gè)基類派生。使用組合或接口允許從多個(gè)來源例如,看如下基類功能塊ETrig(邊緣FUNCTION_BLOCKABSTRACTETrxPreviousExecute:BOxPreviousAbortInProgress:BxAbortInProgress:BOMETHODPROTECTEDABSTRACTCyclicA//實(shí)現(xiàn)必須適當(dāng)?shù)卦O(shè)置變量xDone和xErrorMETHODPROTECTEDABSTRACTResetOutMETHODPROTECTEDABSTRACTAIFNOTxAbortInProgresIFNOTxExecuteANDxPreviousExecuELSIFxExecuteANDNOTxPreviousExecutexPreviousExecute:=TRIFxErrorANDNOTxPreviousAbortInProgrxAbortInProgress:=TRAbort();IFNOTxAbortInProgresxPreviousAbortInProgress:=xAbortInProg該功能塊被指定為具有類似行為的所有功能塊的抽象基礎(chǔ):一個(gè)功能塊在輸入的上升沿事件中啟動(dòng),運(yùn)行一個(gè)或多個(gè)周期并在完成后在輸出上產(chǎn)生一個(gè)變量xDone(如果操作成功完成)或xError(如果操作無在主體中,派生功能塊必須調(diào)用基本功能塊的連接的多個(gè)ETrig派生功能塊可以在同一GB/TXXXXX—XXXX/IEC/TR61131-除了簡單地添加新方法外,派生類還可以通過重寫基接口提供了以共同方式處理具有共同屬性的不同功能塊或類的可行方METHODgetErrorDescription:STRINGEND_METHODgetLastErrorTimeStamp:DATE_AND_TIMEEND_METMETHODgetTypeOfError:UINTEND_METCLASSAIMPLEMENTSIErro…接口可以看作是兩個(gè)類之間的約定。A類實(shí)現(xiàn)IErrorObject接口,B類使用該接口。接口的具體實(shí)現(xiàn)newObject:IErrorObject;//將檢查是否有任何注冊對象處于錯(cuò)誤狀態(tài),//并根據(jù)狀態(tài)處理GB/TXXXXX—XXXX/IEC/TR61131-//如果一個(gè)或多個(gè)對象處于錯(cuò)誤狀態(tài)或嚴(yán)重錯(cuò)誤狀態(tài),則返回TRUE…7.8可編程序控制器編程語言中的遞歸這種情況下,建議對可能的最深的調(diào)用棧進(jìn)行動(dòng)態(tài)檢查(棧7.9一個(gè)功能塊實(shí)例的多次調(diào)用VARaFB:FUNCTION_BLOCK_TYPE;END_VAR何問題;但在一個(gè)嚴(yán)格的單一賦值系統(tǒng)中,IF語句必須重新的預(yù)期目的。如果在上面的例子中,輸入IN的類型不是BOOL而是INT,那么就需要一個(gè)二進(jìn)制選擇功aFB(IN1:=SEL(G:=aBooleanExpress嚴(yán)格的單一賦值也可能會增加中間變量的數(shù)量,而這些中間變量是對功能塊輸入的賦值進(jìn)行解耦GB/TXXXXX—XXXX/IEC/TR61131-在SFC中也可以找到類似的多重分配的例子,一個(gè)功能塊的實(shí)例可以在一個(gè)以上的動(dòng)作中被調(diào)用。使用功能塊實(shí)例的多次調(diào)用的一個(gè)適當(dāng)示例是代碼同步的實(shí)現(xiàn),例如信號量、監(jiān)視器或約GB/TXXXXX—XXXX/IEC/TR61131-用時(shí)被設(shè)置為1,但F_TRIG實(shí)例的輸出Q總是需要至少兩次調(diào)用才能被設(shè)置為1。這種行為可以解釋如0變成了1,即檢測到了一個(gè)上升沿,因此R_TRIG實(shí)例的Q被設(shè)CLK的輸入是常數(shù)1(或TRUE),則輸出Q僅在第一次調(diào)用時(shí)為真,因?yàn)楹罄m(xù)狀態(tài)不可能從0更改為1。VARfirstCycle:R_TRIG;END_VARfirstCycle(CLK:=TRUEGB/TXXXXX—XXXX/IEC/TR61131-GB/T15969.3定義了布爾輸入EN和這些變量被用來在LD語言中提供通過功能的布爾“能流”。然而,它們也可用于其他語言,在消除使與EN和ENO變量結(jié)合使用,以實(shí)現(xiàn)無跳轉(zhuǎn)和標(biāo)簽GB/TXXXXX—XXXX/IEC/TR61131-JUMP或RETURN指令,否則所有指令和一個(gè)命名空間中的功能、功能塊或類之間應(yīng)該有邏輯關(guān)系。例如,命名空間FILE_ACCESS可以包含用于文件打開、文件關(guān)閉、文件讀取、文件寫入等操作的功GB/TXXXXX—XXXX/IEC/TR61131-SFC由一個(gè)或多個(gè)包含步和轉(zhuǎn)換的網(wǎng)絡(luò)組成。與每個(gè)步相關(guān)聯(lián)的是一組動(dòng)作。一個(gè)動(dòng)作表示與一分:它定義了動(dòng)作的執(zhí)行(也可以說它“控用(“置位”或“存儲”)、禁用(“復(fù)位”)、在時(shí)間延遲后啟用,或在有限時(shí)間內(nèi)GB/T15969.3要求了動(dòng)作控制塊塊本身實(shí)現(xiàn)。可以通過以下規(guī)則進(jìn)行非正式a)一個(gè)動(dòng)作在程序的各個(gè)部分中的動(dòng)作(功能)主要由以下特征決定:或程序的一部分中使用不同的動(dòng)作限定符定義動(dòng)作)動(dòng)作1)帶有“最后掃描”的控制,如圖23a2)不帶“最后掃描”的控制,如圖23b)。GB/TXXXXX—XXXX/IEC/TR61131-P0限定符的典型用途是在未實(shí)現(xiàn)特征1)的系統(tǒng)中替換“最后允許兩種動(dòng)作控制(“最后掃描”與“無最后掃描”)的存在限制了程序的可移植性。在嘗試將SFC從一個(gè)系統(tǒng)移植到另一個(gè)系統(tǒng)之前,用戶應(yīng)檢查在兩個(gè)不同的可編程序控制器系統(tǒng)中支持的對于是“最后掃描”還是“無最后掃描”,P0和P1的動(dòng)作的。也就是說,在帶最后掃描的P1或P0動(dòng)作期間,輸出Q為假(0),而在無最后掃描的P1和P0動(dòng)作期間,輸出Q為真(1)。試圖在對是否帶“最后掃描”過將輸出Q的狀態(tài)直接賦值給布爾變量來確定的。定test已經(jīng)被聲明為BOOL類型的變量。IECGB/TXXXXX—XXXX/IEC/TR61131-IECIEC當(dāng)步被激活后,即使該步變成不激活,動(dòng)作會被儲存,并且過了預(yù)設(shè)(S19.X=don'tcareifS14.Xfallsbefore5sec.)GB/TXXXXX—XXXX/IEC/TR61131-IECGB/TXXXXX—XXXX/IEC/TR61131-織單元(如程序或者功能塊)的控制下,動(dòng)作的代碼被持續(xù)使能得到執(zhí)行。當(dāng)Q從TRUE轉(zhuǎn)變到FALSE時(shí),代碼被最后執(zhí)行一次。在這最后一次執(zhí)行中,相應(yīng)的步標(biāo)志已l通過確保程序化的動(dòng)作不會被過早地打斷來保持計(jì)算數(shù) 為避免出現(xiàn)意外結(jié)果,編程人員應(yīng)牢記每個(gè)動(dòng)作至少評估兩次(一次在Q=1時(shí),一次在Q=0時(shí))。動(dòng)作的一個(gè)錯(cuò)誤主體,這將導(dǎo)致S15_CT等于激活次數(shù)的兩倍,下一次掃描中再次調(diào)用。圖24c)和d)分別說明了在ST和FBD語言中對GB/TXXXXX—XXXX/IEC/TR61131-S15_CTR(CU:=S15.X);S15一個(gè)SFC動(dòng)作是一個(gè)包含一整個(gè)SFC網(wǎng)絡(luò)的動(dòng)作。就像其他動(dòng)作一樣,一個(gè)SFC動(dòng)作可以與幾個(gè)步不推薦使用SFC動(dòng)作,因?yàn)榧词埂案浮眲?dòng)作一個(gè)功能塊的主體可以由一個(gè)SFC來定義;這將被表示為一個(gè)SFC功能中也包含了關(guān)于SFC當(dāng)前狀態(tài)的信息。然后每個(gè)實(shí)例可以獨(dú)立工作,使用相同的S具有相同的(文本或圖形)方式和相同的限制。特別是SFC功能塊的每個(gè)SFC網(wǎng)絡(luò)應(yīng)包含一個(gè)初始步。SFC功能塊的實(shí)例的執(zhí)行采用與所有其他功能塊相同的方式調(diào)用??梢暂斎胱兞?。例如,可以通過輸入變量(例如圖25中的T11)傳遞用于開始演變的布爾轉(zhuǎn)換條件。在SFC用的語言中可用的調(diào)用機(jī)制。然后使用比如在7.12.GB/TXXXXX—XXXX/IEC/TR61131-可編程序控制器總是用于實(shí)時(shí)地控制多個(gè)并行的工業(yè)過程。之前的程序執(zhí)行策略假定控制器能夠助編程人員更有效地利用這些特性,以下簡要解釋了一些最重要的在本闡述中,術(shù)語TASK指獨(dú)立運(yùn)行,且與其他任務(wù)(準(zhǔn))并行運(yùn)行的一組PROGRAM或TASKPER_2(INTERVAL:=t#50ms,PRPROGRAMP1WITHSLOW_1:F(x1:=前四行顯性定義了四個(gè)任務(wù)的特征。前三行規(guī)定了這些任務(wù)的執(zhí)行是以規(guī)定的時(shí)間間隔周期地被調(diào)度,而第四行規(guī)定了由布爾變量z2的上升沿觸GB/TXXXXX—XXXX/IEC/TR61131-選擇所執(zhí)行任務(wù)的策略決定了系統(tǒng)的響應(yīng)能力和處理能力的執(zhí)行效率。當(dāng)一個(gè)正在運(yùn)行的任務(wù)能被另一個(gè)任務(wù)打斷時(shí)(“搶占式調(diào)度”響應(yīng)能力任務(wù)的執(zhí)行必須與外部的進(jìn)程保持同步。需要該任務(wù)只能被另一個(gè)優(yōu)先級更高的任務(wù)中斷,對磁盤I/O速度的高要求通常決定了將數(shù)據(jù)存儲在連續(xù)的扇非搶占式調(diào)度要求只有在完全執(zhí)行了與當(dāng)前任務(wù)相關(guān)聯(lián)的所有POU之后,可編程序控制器處理器高的任務(wù)時(shí),根據(jù)相關(guān)聯(lián)的TASK塊的輸入,當(dāng)前正在執(zhí)行的GB/TXXXXX—XXXX/IEC/TR61131-使用搶占式調(diào)度的系統(tǒng)的反應(yīng)時(shí)間(即從通過其TASK塊來設(shè)置任務(wù)準(zhǔn)備執(zhí)行到開始執(zhí)行之間的時(shí)間)非常短,代價(jià)是需要一些附加的處理時(shí)間來保存和恢復(fù)上下當(dāng)一個(gè)非搶占式的可編程序控制器從一個(gè)任務(wù)切換到另一個(gè)任務(wù)時(shí),處理器中需要保存的數(shù)據(jù)量可以忽略不計(jì)。上下文切換本身的時(shí)間會很短,可能比搶占式上下文切換的情況下時(shí)間還短;但是當(dāng)最差情況下的響應(yīng)時(shí)間至少與運(yùn)行時(shí)間最長的功能塊或程序完整執(zhí)行所需要的時(shí)間一樣長。由于這不對于非搶占式調(diào)度(示例1它必須在三次激活中等待兩次,等待時(shí)間為4ms(t=10m編程序控制器的制造商應(yīng)提供充分的信息,使用戶能夠確定滿足這些規(guī)則的手段和注1:由于在GB/T15969.3-2017中很難敘述信號量的終止條件作為“等待循環(huán)”。SFC元素應(yīng)被用于此目的?!薄_@種限制適用于信號量,它也是一種它可能會導(dǎo)致程序組織單元的執(zhí)行被意外和不可追蹤另一種實(shí)現(xiàn)“進(jìn)程間同步”的機(jī)制可以通過使用OOP方法來實(shí)現(xiàn),如7.7.4GB/TXXXXX—XXXX/IEC/TR61131-c)在任務(wù)釋放操作設(shè)備之前,不可能將操作設(shè)備分配給其他任何任務(wù);d)有一個(gè)封閉的任務(wù)鏈,其中每個(gè)任務(wù)都被分配了鏈中下一個(gè)任務(wù)所需的操作設(shè)備。本文檔7.13.5中描述的通信功能塊可以使用郵箱或隊(duì)列,或兩者都使用。然而,所采用的特定機(jī)制戳就可以很容易地得到支持。例如,根據(jù)GB/T159GB/TXXXXX—XXXX/IEC/TR61131-VALUE:REAL;志數(shù)據(jù);用于根據(jù)存儲時(shí)間確定數(shù)據(jù)的有效性;并將錯(cuò)誤數(shù)據(jù)恢復(fù)ISO/IEC9506-5規(guī)定了在制造報(bào)文規(guī)范(MMS)上下文中用作虛擬制造設(shè)備(VMD)的可編程序控制為了在這種情況下也能夠?qū)ψ兞窟M(jìn)行符號尋址,該標(biāo)準(zhǔn)提供了使用其元素的定義內(nèi)存布局來定義此定義還允許內(nèi)存與不同的數(shù)據(jù)類型重疊。使用重疊的一個(gè)簡單用例是對數(shù)字符號的顯式讀取訪GB/TXXXXX—XXXX/IEC/TR61131-twoAT%B2:DINT;根據(jù)該定義,這兩個(gè)“sign”變量的值是直字節(jié)序功能可用于不同系統(tǒng)之間的數(shù)據(jù)交換,以轉(zhuǎn)換為適當(dāng)?shù)拇鎯Ω袷健W止?jié)序轉(zhuǎn)換功能將一個(gè)變量從實(shí)現(xiàn)者特定的、內(nèi)部使用的PLC字節(jié)序轉(zhuǎn)換為所要求的字使用較低數(shù)字的部分訪問會返回較低值部分,與指定的字節(jié)序無關(guān),即獨(dú)立于字節(jié)序,位偏移量0使用REAL或LREAL數(shù)進(jìn)行算術(shù)運(yùn)算會導(dǎo)致不正確的結(jié)果,例如非數(shù)值(NaN)或無窮大(+Inf,-驗(yàn)證功能將檢查給定的輸入?yún)?shù)是否包含一個(gè)有效值。因此可以識別錯(cuò)誤并直接在程序中做出反GB/TXXXXX—XXXX/IEC/TR61131-重載的功能IS_VALID是為數(shù)據(jù)類型REAL和LREAL定義的。如果實(shí)數(shù)不是有效的實(shí)數(shù)位模式,則一些實(shí)現(xiàn)者可能通過驗(yàn)證功能IS_VALID來支持額外的數(shù)據(jù)類型。這些擴(kuò)展的結(jié)果是特定于實(shí)現(xiàn)者ISO/IEC9506-5和GB/T15VAR_ACCESS...END_VAR結(jié)構(gòu)來聲明的變量。這種讀和寫是分別使用READ和WRITE功能塊完成的,建議在訪問遠(yuǎn)程可編程序控制器中的變量時(shí),始終使用VAR_ACCESS方法。因?yàn)檫@樣就有可能為變量使用有意義的名稱。如果遠(yuǎn)程可編程序控制器的程序被修改,I/O物理地址總是有可能被改變。將VAR_ACCESS名固定用于一些不同的可編程lSTATUS:輪詢一個(gè)遠(yuǎn)程設(shè)備以獲取設(shè)備驗(yàn)證信息??删幊绦蚩刂破髦芷谛缘豯READ:輪詢遠(yuǎn)程設(shè)備中的一個(gè)或多個(gè)變量的值??梢灾付ㄒ粋€(gè)變量表作為該功能入。經(jīng)過短暫的延遲后(由于通過網(wǎng)絡(luò)發(fā)送請求和得到響應(yīng)需要時(shí)間),遠(yuǎn)程變量的值就會呈現(xiàn)READ功能塊不提供由輸入變量來控制輪詢率的功能。應(yīng)用程序應(yīng)重新觸發(fā)該功能塊,以開始lWRITE:將一個(gè)或多個(gè)值寫入遠(yuǎn)程設(shè)備的一個(gè)或多個(gè)變量中??梢灾付ㄒ粋€(gè)變量名稱的列GB/TXXXXX—XXXX/IEC/TR61131-lUSEND:將一個(gè)或多個(gè)變量的值發(fā)送到一個(gè)遠(yuǎn)可以使用傳送到URCV功能塊中的變量程可編程序控制器應(yīng)用程序在收到這些值時(shí),加載一許多通信系統(tǒng)中,如果有太多的響應(yīng)在等待中,通信通道就會阻塞,所以推薦使用快速響應(yīng)符標(biāo)識的遠(yuǎn)程設(shè)備中。報(bào)警可以用嚴(yán)重程度來表征。該功能塊需要遠(yuǎn)程設(shè)備確認(rèn)接收到當(dāng)在GB/T15969.3中提供的選項(xiàng)中進(jìn)行選擇時(shí),應(yīng)考慮到編程技術(shù)對軟件質(zhì)量的影響。本7.15節(jié)指出了一些相對重要的影響,并推薦能實(shí)現(xiàn)更高軟件質(zhì)量的編程實(shí)踐,當(dāng)在這種情況下,應(yīng)使用SEND/RCV或USEND/URCV功能塊來保GB/TXXXXX—XXXX/IEC/TR61131-7.15.5通過任務(wù)對功能塊實(shí)例進(jìn)確定為保證數(shù)據(jù)一致性而提供的機(jī)制。由于這些機(jī)制與實(shí)現(xiàn)有關(guān),因此使用該特性的程序可能在符合WHILE和REPEAT語句不應(yīng)用來獲得過程間的同步,例如,用一個(gè)外部決定的終止條件作為“等為了避免意外和潛在危險(xiǎn)的影響,在此強(qiáng)烈提醒用戶在任何代碼間同步的情況下都不能違背這個(gè)c)另一種接口d)接口c)GB/TXXXXX—XXXX/IEC/TR61131-7.17依賴于實(shí)現(xiàn)的參數(shù)GB/TXXXXX—XXXX/IEC/TR61131-如果變量沒有被聲明為RETAIN或者NON_RE“不允許”使用輸入輸出參數(shù)的副作用8.2資源分配GB/TXXXXX—XXXX/IEC/TR61131-且在POU,例如程序、功能或功能塊被調(diào)用時(shí)執(zhí)行的相應(yīng)和可能含有的SFC狀態(tài)的信息。相比之下,功能變量的存儲是臨時(shí)的,并只在功能執(zhí)行的過程因此,這種數(shù)據(jù)通常從“?!保ㄏ冗M(jìn)后出的隊(duì)列)或“堆“8.3數(shù)據(jù)類型的實(shí)現(xiàn)為了減少浮點(diǎn)計(jì)算中可能出現(xiàn)的精度損失,在開始算有很多微處理器,尤其是數(shù)字信號處理器(DSP),有自己的內(nèi)部浮點(diǎn)格式。在這種情況下,實(shí)現(xiàn)者例如,對浮點(diǎn)算術(shù)表達(dá)式應(yīng)用關(guān)聯(lián)和分配法是一種變值優(yōu)化(由于有舍入的損60559中,只有在需要所有兼容的實(shí)現(xiàn)時(shí),這個(gè)舍入方向才會產(chǎn)生不同的結(jié)果。更糟糕的是,變值優(yōu)化甚至可能依賴于編譯為了消除對MIN和MAX功能解釋上的歧義,我們認(rèn)為它們的語義可以通過應(yīng)用以下定義從比較功GB/TXXXXX—XXXX/IEC/TR61131-變長字符串的最大長度和格式依賴于實(shí)現(xiàn),這意味著使用字符串?dāng)?shù)據(jù)類型的功能塊和算法可能無法在可編程序控制器之間移植,特別是在最大字符串長度明顯不同的儲在一個(gè)字節(jié)或字中,將最大的字符串長度分別限制在255或6553準(zhǔn)確表示30天、10分鐘和200毫秒的時(shí)間,即T#30d10m300ms;而使用32位浮點(diǎn)了直到2106年的日期和時(shí)間的天數(shù)。然而,這種格式不允許事件以優(yōu)于1秒的精度來其次,某些算術(shù)上的等價(jià)關(guān)系不再成立。例如,表達(dá)式(DATE#2000-01-01-DATE#2000-01-01+TIME#1ms)和(DATE#2000-01-01+TIME#1ms-DATE#2000-01-01)看起來是等價(jià)的,但實(shí)際上會因?yàn)槿绻枰叩木?,可以用GB/T15969.3-2017中定義的數(shù)據(jù)類型LDATE、LTIME_OF_DAY、LDATE_AND_TIME來存儲數(shù)值。數(shù)是從1970年1月1日零點(diǎn)開始計(jì)算的,而對于LTIME_OF_DAY,納秒數(shù)是從當(dāng)天零點(diǎn)開始計(jì)但是準(zhǔn)確度可能由實(shí)現(xiàn)者來決定,并且每微秒或毫秒都會更新。GB/TXXXXX—XXXX/IEC/TR61131-制。例如,對于大多數(shù)應(yīng)用來說,合理的限制是將數(shù)組變量限制在不超過三個(gè)維深度嵌套的數(shù)組索引也可能需要受到限制,因?yàn)樵诳删幊绦蚩刂破鲀?nèi)解決內(nèi)存地址所涉及的復(fù)雜loop.sp:=spList[loopParams[phase[recipe[job18.4功能和功能塊的執(zhí)行統(tǒng)動(dòng)作是將EN輸入復(fù)制到ENO輸出。這個(gè)變量在功能中持到下一次執(zhí)行。因此,即使是相同的參數(shù)(輸入變量),用的方式實(shí)現(xiàn)的,那么只需要將一個(gè)參數(shù)——實(shí)例數(shù)據(jù)結(jié)GB/TXXXXX—XXXX/IEC/TR61131-當(dāng)程序中的功能塊實(shí)例與一個(gè)獨(dú)立的任務(wù)相關(guān)聯(lián)時(shí),從程序中調(diào)用功能塊應(yīng)該為功能塊的輸入變期性或中斷驅(qū)動(dòng)的任務(wù)搶占執(zhí)行時(shí),這些功能塊的實(shí)際輸出值可能在程序中使用這些值進(jìn)行計(jì)算時(shí)發(fā)額外的數(shù)據(jù)類型限定符R_EDGE和F_EDGE僅適用于功能塊輸入變量。這些數(shù)據(jù)類“真”,否則為“假”。與功能塊實(shí)例相比,沒有對對象的調(diào)用,只有對對象方法的內(nèi)部數(shù)據(jù)是每次在激活(調(diào)用)時(shí)動(dòng)態(tài)初始化的。通常情況下,方法的數(shù)據(jù)是在棧中創(chuàng)建的。一個(gè)虛方法表將方法映射到具體的實(shí)現(xiàn),方法表的內(nèi)部表示GB/TXXXXX—XXXX/IEC/TR61131-a)動(dòng)作控制可以作為動(dòng)作控制塊實(shí)現(xiàn),也可以在優(yōu)化的代碼和數(shù)據(jù)結(jié)構(gòu)中實(shí)現(xiàn)相應(yīng)的功能;b)無論SFC出現(xiàn)在程序、FB或是SFC動(dòng)作中,都應(yīng)該用一致的方法來執(zhí)行SFC演進(jìn);c)如上文8.2所述,在為包含SFC的程序或功能塊分配存儲空間時(shí),有必要考慮存儲SFC狀態(tài)信息果有的話),步經(jīng)過的時(shí)間(如果支持的話),以及實(shí)現(xiàn)所要這種掃描的定義承認(rèn)了這樣的一個(gè)事實(shí):只要達(dá)到了最后一步,就不會有隱式的循環(huán)到初始步。絡(luò)的標(biāo)記,因?yàn)樗械霓D(zhuǎn)換都必須一步一步多個(gè)歸約步轉(zhuǎn)換為一個(gè)由一個(gè)步和一個(gè)轉(zhuǎn)換組成的SFC,如圖21SFC只包含AND分支,并且初始步不在GB/TXXXXX—XXXX/IEC/TR61131-a)由一個(gè)步、一個(gè)轉(zhuǎn)換、另一個(gè)步組成的b)由一個(gè)轉(zhuǎn)換、一個(gè)步、另一轉(zhuǎn)換組成的),算法將產(chǎn)生一個(gè)警告,因?yàn)椴豢赡苓M(jìn)一步歸約,兩個(gè)終止條件均GB/TXXXXX—XXXX/IEC/TR61131-a)根據(jù)終止規(guī)則1,不要求歸約c)一個(gè)不可歸約的(不安全的)SFCd)一個(gè)不可歸約的(不可達(dá)的)SFCGB/T15969.3定義了TASK結(jié)構(gòu),使得用戶可以指定l一個(gè)周期性任務(wù)在確定的時(shí)間間隔內(nèi)被定期觸發(fā),用戶通過將SIGNLE輸入連接到一個(gè)布爾變量,其上升沿代表觸發(fā)事件,并將INTERVAL輸入設(shè)置為非周期任務(wù)可以根據(jù)觸發(fā)事件的性質(zhì)進(jìn)行分類,事GB/TXXXXX—XXXX/IEC/TR61131-現(xiàn)者還應(yīng)該考慮提供默認(rèn)程序來處理更頻繁發(fā)生的事件類型,如重新啟動(dòng)和運(yùn)行時(shí)用于源程序中的語法或配置錯(cuò)誤。這些錯(cuò)誤可能會在用戶將它們a)系統(tǒng)應(yīng)在準(zhǔn)備執(zhí)行程序期間報(bào)c)系統(tǒng)應(yīng)在程序執(zhí)行期間報(bào)告錯(cuò)誤,并啟動(dòng)適當(dāng)?shù)南到y(tǒng)或用戶定義的錯(cuò)誤處理程也就是說,如果在每個(gè)選項(xiàng)3)的運(yùn)行時(shí)間之前無法檢測到錯(cuò)誤,則應(yīng)該警告用戶可能會發(fā)GB/TXXXXX—XXXX/IEC/TR61131-VAR_ACCESS中的數(shù)據(jù)類型沖突ED,RTb本表并沒有詳盡地列出所有可能的運(yùn)8.8.2包含了程序執(zhí)行過程中報(bào)告錯(cuò)誤和啟動(dòng)系統(tǒng)或用戶定義的錯(cuò)誤處理程序注:本規(guī)定的范圍僅限于用戶程序中的錯(cuò)誤;但是,實(shí)現(xiàn)者可以考慮提供類似的處理機(jī)GB/TXXXXX—XXXX/IEC/TR61131-);
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年企業(yè)文化展示系統(tǒng)合作協(xié)議書
- 2025年農(nóng)產(chǎn)品初加工機(jī)械合作協(xié)議書
- 八年級英語下冊 Unit 9 單元綜合測試卷(人教河南版 2025年春)
- 人教版 七年級英語下冊 UNIT 5 單元綜合測試卷(2025年春)
- 完整版幼兒園大班加減混合運(yùn)算
- 公司之間合作協(xié)議書范本模板
- 2025年鄉(xiāng)村山地承包合同標(biāo)準(zhǔn)版本(三篇)
- 2025年個(gè)人貸款保證合同(2篇)
- 2025年產(chǎn)學(xué)研校企合作協(xié)議標(biāo)準(zhǔn)版本(4篇)
- 2025年個(gè)人汽車抵押合同樣本(2篇)
- 鋰離子電池健康評估及剩余使用壽命預(yù)測方法研究
- c30混凝土路面施工方案
- 頸椎骨折的護(hù)理常規(guī)課件
- 電商運(yùn)營銷售計(jì)劃Excel模版
- 2022-2023學(xué)年上海市楊浦區(qū)上海同濟(jì)大附屬存志學(xué)校七年級數(shù)學(xué)第二學(xué)期期中綜合測試模擬試題含解析
- 稿件修改說明(模板)
- GB/T 33107-2016工業(yè)用碳酸二甲酯
- GB/T 16604-2017滌綸工業(yè)長絲
- 勞動(dòng)合同法經(jīng)典講義
- 工時(shí)定額編制標(biāo)準(zhǔn)(焊接)
- 三位數(shù)乘一位數(shù)練習(xí)題(精選100道)
評論
0/150
提交評論