( (M . %á ó+ signature_flag 4294967296''crc 4193987172CallTask__PlcTaskFunction RelativeStack+Output, IsCompiled, RelativeStack, Typified ptaskinfo _IMPLICIT_TASK_INFO *Input, IsCompiled, RelativeStack, Typifiedpapplicationinfo_IMPLICIT_APPLICATION_INFO Compiled, Typified, Located$89dabc1a-f794-4a99-ba91-1ea51be3ba39$00000000-0000-0000-0000-000000000000 131785522generate_implicit_init_function__Setup__Call__POUProgram$de1786e8-5c6e-5585-b03e-8ab179626a32 2728864722real32__to__any32indwType2External, Compiled, SuperGlobal, Typified, Located$adb07db6-6cb2-4889-b206-007b85f53578 4094399910any32__to__real32$bc57a7e2-ed11-422f-976f-8be4fc5666bf 2020165724 real32__eq in1!in2"$79084732-5d65-4953-878b-b9d1570ab3c3# 651050431$ real32__ne%$26c1b838-f805-4f80-b547-7a6b4efbbbb5& 1108587135' real32__lt($8897f859-01db-4c48-85cd-8862ad90c271)76373463* real32__le+$06045a98-b196-40fe-bbf3-cc6b9cd04fa6, 4168934275- real32__gt.$57dc0ec0-25cf-4c02-9dde-c27a20a79806/ 32024852910 real32__ge1$27ea9ccf-ca7d-4bbb-8a0b-76d96b1b096b2 10447566433real32__add4$4001e5c9-2959-421b-a1ea-3192b559210f5 2673141556real32__sub7$7af69ff9-2d09-4573-9668-4abfb8238c6b8 11036320749real32__mul:$07fdcf4d-2f32-4026-ba50-865a9a4cac44; 1466051322<real32__div=$7433aafb-0867-4fb3-b51c-62aedc81235f> 886904492?real32__abs@$a891677e-9887-4115-baf6-5bc18c14f21fA 3404262884Breal32__minC$7f040799-feda-40a7-b376-ee0db6e12abfD 4154332537Ereal32__maxF$c46be4ae-b278-40fc-8552-9cdb664b8607G 497866625H real32__limitIin3J$6049606a-24c9-4d04-8810-fd7a837dc535K 1847162626L real32__truncM$ef945a32-7190-4712-af4e-686069feba9eN 346942548Oreal32__tanP$84acc91c-76a8-41d8-8957-1617354730fcQ 843193954Rreal32__atanS$4e10f990-4cf5-4424-abd6-16195b2c1947T 2676881535Ureal32__sinV$b59097e9-0c6c-4edf-a18e-d34da5f674deW 4177298540Xreal32__asinY$12baf47b-573e-437a-b3eb-06f4c4745ccfZ 406941506[real32__cos\$21313f85-d945-4d56-bab3-9c0d70303453] 3446532930^real32__acos_$29048f1c-76ff-4555-a36d-61013b9112e7` 831403110a real32__lnb$412735d8-6e6f-49d1-8d62-aad6e08f4198c 2281156508dreal32__loge$bac2aa4e-fb73-4beb-bee8-1cbe13a49551f 1964720339greal32__exph$f127665c-c7d1-4290-b6be-8db37fc1df1ai 2929814886jreal32__exptk$bbbdf0cf-b7ce-4f53-af3f-df8a531c4d5dl 2945838411mreal32__sqrtn$cf137188-d4b3-4d76-b1f6-87afe6ee2148o 2367094826p int32__divq$16597b72-e6ca-4e3e-b487-0fab4f60f55dr 1538210473suint32__divt$1acf0b76-2778-4975-844a-6ec15f762b2eu 997952827v int32__modw$32f74310-0500-40a8-bcdc-38e3a235c1a5x 1194593076yuint32__modz$cd4339d7-cb4c-4660-b471-ee4a5c114ad0{ 3531525309| int32__abs}$62876995-1a07-4244-a3f0-8c8f63eec49c~ 147726259int32__limit$79dd4eba-d759-4918-8c09-9ba7cedb378c 1413729490 uint32__limit$46a8a0a1-a4c6-464a-a53c-87329443b190 2280991083 int32__mul$3330a6c6-0b50-4a3c-91f0-5ad24d44fbf5 1292175001uint32__mul$47a65ed1-25f8-43b6-85a3-dee72d9a73cd 4142655437 int32__shr$1128c6ef-4d56-40a2-a91f-4f5dc0185d98 4111070444uint32__shr$c1f5d873-aaf1-4f92-b314-c17c78644b9d 2164893551uint32__shl$1393b595-1c79-4a79-a17f-db4b5fda7a44 2239779883uint32__rol$af9cbc04-84b4-409b-8830-f18c8ed3a6ec 4051699624uint32__ror$181ef5ee-7190-4ce0-ada3-cca4fd45a289 695114823 get__time$79ad9f0e-3a56-4c79-af55-c1dafc05b5e6 2006625495__sys__rts__cycle slotLower slotUpper stTaskName¡AnyInt¢stApplicationName£$8f58c4c2-6bd5-47c7-a149-8588821180e6¤ 2641387053¥__sys__register__slot__pou¦nSlotNumber§dwFunctionPointer¨$70da5b5d-fcb8-48d4-ac57-7c4cb04e2caa© 3903245801ª__sys__unregister__slot__pou«$9e4827e4-6b50-4e6a-bc7b-adeb6c4dd526¬ 3363294660SysCpuDebugHandler®$d6a84056-f4d9-45ca-9a49-a66cec23e145¯hide° ± 242570791²_Implicit_Application_Info³Type´RelativeInstanceµ''NORMAL__COMMENT¶â rest of runtime info DO NOT USE ! pcArea : ARRAY [0..APPL_NUM_OF_STATIC_AREAS-1] OF POINTER TO BYTE //Pointer to data areas of this application unsigned short ausAreaType[APPL_NUM_OF_STATIC_AREAS]; /* Area type */ unsigned long aulAreaSize[APPL_NUM_OF_STATIC_AREAS]; /* Area size */ unsigned char StaticSessionIdPool[MEM_GET_STATIC_LEN_(APPL_NUM_OF_STATIC_SESSIONIDS, sizeof(unsigned long))]; unsigned char StaticForcePool[MEM_GET_STATIC_LEN(APPL_STATIC_FORCE_ENTRIES, ForceVarDesc)]; unsigned char StaticBPPool[MEM_GET_STATIC_LEN(APP_STATIC_BP_ENTRIES, Breakpoint)]; ·pParentApplication¸8Local, Structure, IsCompiled, RelativeInstance, Typified¹ pbyRightsºguidCode»guidData¼udState½ udOpState¾dwDoNotUse_0¿dwDoNotUse_1ÀdwDoNotUse_2ÁdwDoNotUse_3ÂdwDoNotUse_4ÃdwDoNotUse_5ÄdwDoNotUse_6ÅbAppendBootprojectÆbPersistentForceÇdwPSVersionÈdwTargetSettingVersionÉFB_INITÊ 3526140261ËMethodÌbInitRetainsÍbInCopyCodeÎ__INSTANCEPOINTERÏ4Input, IsCompiled, RelativeStack, Implicit, TypifiedÐ __Index__0Ñ2Local, IsCompiled, RelativeStack, NoInit, ImplicitÒ'NonVirtual, Compiled, Typified, LocatedÓ$ff589828-12c2-4e6a-9f0d-1d6dbb3264b6Ô__FB_PARTIALINITÕ 1565233622Ö2NonVirtual, Generated, Compiled, Typified, Located×?Structure, NonVirtual, Compiled, SuperGlobal, Typified, LocatedØ pack_modeÙ8Ú 1691734129Ûint64__to__any32Ü$e8c04d52-7d17-4965-9598-cb38a570750eÝ 2445978047Þany32__to__int64ß$fbd44dd8-302c-4269-9682-4e63f10e32eeà 716714719áreal32__to__any64â$4996aebf-7b1a-4606-9275-58c6595fe093ã 3713006940äany64__to__real32å$fba8c26a-b719-4b40-ab2a-36a9440d345bæ 2394705132ç int64__divè$5df34150-5072-488a-a457-a82fe4dddcafé 1872403673êuint64__divë$c72c0ae2-f6fb-4752-9d81-65e25c2adeddì 953205245í int64__modî$285230dc-fbd4-44eb-96d1-c35d9d1d95a4ï 593286487ðuint64__modñ$7cf5a04d-a334-4d66-8458-aa41fd3d3cb4ò 113053312óuint64__addô$bd215293-9d5f-451b-8b34-fbf355380a1fõ 3531041404ö int64__add÷$f853b3c3-030b-457f-9c6f-904c951d4c1bø 4246887690ù int64__subú$b74d723c-4571-496b-9991-776c19eac243û 924210632üuint64__subý$91c29cfe-4ed7-4aaf-862d-2b211eba3727þ 2220778925ÿ int64__mul$56cf99a8-dd26-40fc-bd98-c75e222d12a2 2033230057uint64__mul$9f1b41e0-0777-4b76-9af1-a82c5e0d5e37 3251236970 int64__min$938d42a9-f6db-4a23-944c-1eb5ddb2deee 4061158343uint64__min$f38314a9-aaa0-47b1-8175-b88faad4b296 3984229475 int64__max$0d9bcbbc-7c0b-403c-afcc-ba79b0a580ab 3479610202uint64__max$611c06e1-6846-4ba2-82b4-76c65f121ab0 2541544546uint64__xor$367ed89a-2489-42df-ab7c-864d2f1d2f78 721305799uint64__and$c5a4df4a-a8a2-4c18-a05f-5857c4899a0c 2965688650 uint64__or$32a1c099-4e89-49fc-b341-847a90f50e30 2371146893uint64__not$b178ef7a-1592-434b-b462-6c46fac2c8a4 1107659532 uint64__eq$cea9db66-1a76-4c47-b9a0-6577ad6e4e74 480444143 uint64__ne¡$a5ae5f79-8207-4854-943b-288c0a7d2b9b¢ 2021617967£ uint64__lt¤$2c377459-e121-40b9-9e5a-1118a48f743d¥ 1054973575¦ uint64__le§$ae239119-6f5f-4534-a1ee-b390262a39a3¨ 3255836883© uint64__gtª$1450c7da-db41-485f-83a7-d6227fc55a01« 2223951739¬ uint64__ge$20395126-4d3f-43d9-9df8-5b21c66b6dcb® 863509285¯ int64__eq°$e8ff23a5-d7c7-48b8-805a-b0c01e09cce3± 881440595² int64__ne³$18d11e8b-afdf-443e-82d2-046d71021018´ 238341524µ int64__lt¶$35ead342-0197-4bd8-ba6f-d3002ea536e8· 3414395280¸ int64__le¹$0a31942a-efba-4ddf-9c0d-7d4e887ec3caº 701077656» int64__gt¼$b93d8de7-8cc7-458d-b76b-54805d224bf8½ 3967736988¾ int64__ge¿$e3fa00fa-76dc-48d3-b18d-70546f8817d1À 1867067789Á int64__absÂ$83f47c43-8882-441b-809f-1bf3202ee267à 3263826000Äuint64__rolÅ$d9ff9b48-8cb1-41b0-92d2-319173b767fcÆ 3062520787Çuint64__rorÈ$8292f004-04fa-4067-bf44-2dd2c43db842É 3322149652Êuint64__shlË$4f5894be-5a41-4c9b-8659-e81c12575fc4Ì 2986584215Íuint64__shrÎ$821a527f-8831-4a09-b5da-58ca3b768f66Ï 2726094904Ð uint64__limitÑ$26311cc1-5920-4260-9336-be3754cf23cfÒ 2206011875Óint64__limitÔ$b3a15fa1-b9b4-4cad-91f6-3fd673edbae6Õ 1272716029Ö int64__shr×$427ca261-109e-4d61-a08b-24f6068e58daØ 655075154Ù get__ltimeÚ$aeaaf22a-a260-4bac-83d9-18ff949be644Û 3183966539Üreal32__to__real64Ý$9673b4f8-36d6-42ee-b5ca-e06e2602fab5Þ 3519950284ßreal64__to__real32à$68d11de2-a882-4f63-8e95-577fbe97dbefá 2972115768âreal64__to__any32ã$51322543-1fa0-4892-92ab-c1559ce724faä 2081721515åany32__to__real64æ$48ba7277-d0f9-4a61-8d0a-cfa10c9598a2ç 3454954494è real64__truncé$78aea275-8aff-407b-981c-8abf25d34255ê 3137264130ëreal64__tanì$8ee3c317-6d75-4714-ab7c-ad187c5db2eeí 3753412847îreal64__atanï$79d8c72b-fe9c-4bd0-8d79-62e93b3d01b9ð 836685353ñreal64__sinò$df65bfb9-6613-453b-b2b8-4fcb3789d916ó 352719585ôreal64__asinõ$dad7794c-0bfd-4662-adbc-f2c4e528d37bö 3054655764÷real64__cosø$22fbcf03-320c-4e2b-83ce-a942e5631489ù 546799055úreal64__acosû$a11f5103-2691-4d71-bad3-db29bf365b4bü 3328776656ý real64__lnþ$1c3bb0cc-2170-475c-b9b2-2c991a82ed64ÿ 698653130real64__log$9335cd5c-acb1-4e96-ad18-0076459fc955 3678959237real64__exp$4ffba013-6cc1-43e2-b6bb-6715ab108128 3062998530real64__expt$fdfe2381-2e31-4926-b6d4-4cf674ac1326 942060455real64__sqrt$4ffd7525-5270-4695-b699-ddbbc4b96fd3 3310343244 real64__eq$475d8087-1c89-48a4-8923-1690f76c80fd 2615714223 real64__ne$7229c098-2c5d-434a-9ab4-f35ad2b92202 4281675375 real64__lt$5de9e5f2-dd5e-4a6e-b860-18fd191e23ee 3115041223 real64__le$7301d2cc-2aa1-4de3-9bef-548d89987e86 1163558803 real64__gt$38f386c3-7170-454b-8528-c10a39021b2363213627 real64__ge$f9510bc1-1227-49ab-9870-64870fd1a5fb 175120083real64__add$9dc891f0-020c-40ef-b8a7-99b35c1d6808 1004225947¡real64__sub¢$2fd9375a-655d-4573-bd00-1bcc1c494227£ 1979560122¤real64__mul¥$e2479120-cb69-43ba-87fa-98e33b5112c2¦ 1666681994§real64__div¨$a1c7ca2c-f191-46d4-a7f5-1504f1ba9eb8© 1943489239ªreal64__abs«$99947bf9-0e45-48b1-ad7f-8efb60cecd95¬ 4275915668real64__min®$fb18f571-3f0d-4f1e-9a10-9bf219caed48¯ 3282809609°real64__max±$7b55e231-072f-4e70-a3f9-b4b1a98c1c66² 3952341867³ real64__limit´$b701090f-8dde-42e6-b8fe-5f22597768eeµ 960100917¶real64__to__any64·$d8153915-f13d-4be5-963e-2e0db8de9f44¸ 1431364689¹any64__to__real64º$97dc91e6-edb3-4c35-be5d-6e444884a6ee» 1535689152¼__sys__rts__cycle__2½ hTaskinfo¾$1230b333-5d6b-46b8-a973-900b5373db72¿ 1746117600Àexchange__and__addÁ$a39e5468-86fa-4e6d-affe-3e2e51db2150 1630658070Ãtest__and__setÄ$78879ef1-a378-4991-b06f-4f6324e3955fÅ 1051002070Æcompare__and__swapÇpAddressÈxwExpectedValueÉ xwNewValueÊ$84b9de1a-938d-454b-a526-1c5121467a99ËDoLinkÌ 2355386198Í __memcopyÎpDestÏpSrcÐdwSizeÑ$9d234cab-298b-4f80-8b06-238a4ecbdbf1Ò 1888671637Ó__stringcompareÔpStr1ÕpStr2Ö$9f5705df-d2f0-46b3-8c4d-6a4d6217fac6× 2923953018Ø__wstringcompareÙ$0bea6546-230e-4059-a0c6-574c96c9dcc9Ú 1251102159Û__cycle__code__PlcTaskÜ hTaskInfoÝ&Generated, Compiled, Typified, LocatedÞ$3d36549b-22ab-4d87-83c0-e64a83562690ß 2055098298àIBase__UnionáNoneâ__InterfaceãIBASEä5Local, Structure, IsCompiled, RelativeInstance, Unionå__vfTablePointeræ?Local, Structure, IsCompiled, RelativeInstance, Union, Typifiedç 1646999765è!Output, IsCompiled, RelativeStacké Input, IsCompiled, RelativeStackêIBASE__UNIONë*Input, IsCompiled, RelativeStack, ImplicitìNonVirtual, Compiled, Locatedí$d66845db-6264-4814-8201-14e00ce3a97dî\Structure, NonVirtual, Generated, Union, ImplicitInterfaceUnion, Compiled, Typified, Locatedï!base interfaces, 3.5.2.0 (system)ðm4export_32bit_nosignatureñ 124493086òIoMgrConfigGetConnectorByDriveróIOCONFIGCONNECTORôIoConfigConnectorõpIBaseöIBase÷ bIecDriverønIndexùpResultúRTS_IEC_RESULTû%External, Compiled, Typified, Locatedü$06985b41-279f-4177-be30-df6637cf2a9býiostandard, 3.5.15.0 (system)þ 1849640412ÿIoMgrConfigGetConnectorListppConnectorListpnCount$328a63c3-d551-4b32-9422-377bc6aac35e 2797965735IoMgrConfigGetDriver pConnectorpbIecDriver$af3d345a-c11f-478f-b5df-a99d8ebf08b6m4export_nosignature 120351857IoMgrCopyInputBEpChannelIOCONFIGCHANNELMAPIoConfigChannelMap$55d03518-4ee8-4b82-a8b3-766e40682994 3573238966IoMgrCopyInputLE$2c81bc43-6ab4-4b52-9f19-2965d9566ee8 3451368126IoMgrCopyOutputBE$7717607d-0e2d-4e6e-9262-8273e4cd68de 1606949052IoMgrCopyOutputLE$5bc7d463-6913-4718-8a12-5e49d1a76983 2201279776IoMgrGetBusCycleType$b68569cb-9baa-4ce2-a823-c8a751a0fb64 4163672564IoMgrGetConfigApplicationpszConfigApplicationpnMaxLen$b8648e29-04fc-41e1-a469-45f6d098f662 3960301101¡IoMgrGetDriverProperties¢hIoDrv£RTS_IEC_HANDLE¤ppProperties¥$bff24870-39d9-48f3-9d34-114cbabbe751¦ 2015607926§IoMgrGetFirstDriverInstance¨$0e6f29bf-e5f9-4dc0-9040-46a430baf6fd© 189232175ªIoMgrGetNextDriverInstance« pIBasePrev¬$2321c32b-bfa7-46fc-9f42-71436c2534daË | Reconfigure a single connector respectively the corresponding master. | In the reconfigure sequence we call the corresponding IO-driver at the connector the following way: | 1. disable the IO-configuration | 2. enable the IO-configuration | 3. update the mapping | This sequence is called asynchronously so the asynchronous state is transported in the parameter pudiState. :return: The runtime system error code (see CmpErrors.library)® 1931367312¯IoMgrReconfigure°7 Pointer to the corresponding connector to reconfigure ±ù Asynchronous state of the reconfigure operation. Can be one of the the following states (see CmpAsyncMgr.library for details: (ASYNCSTATE_INVALID | ASYNCSTATE_PENDING | ASYNCSTATE_ACTIVE | ASYNCSTATE_READY | ASYNCSTATE_ERROR | ASYNCSTATE_TIMEOUT)² pudiState³$912d5cf9-41b7-4ddc-870c-b8cb86c2711e´ 3203918504µIoMgrRegisterConfigApplication¶$b2f4c643-c7e5-48a2-9923-7da06f28f56f· 1108998563¸IoMgrRegisterInstance2¹ dwClassIdºpItf»$d0558e3e-16a7-4cff-b56f-4bf2bab8dca5¼ 1618632085½IoMgrSetDriverProperties¾ulProperties¿$11359e5a-6c6f-4ab0-ad02-13f1415fc629À 2473575876ÁIoMgrSetDriverProperty ulPropertyÃbValueÄ$0d12bb26-2b08-402c-9be4-7a3d1d749aacÅ 3971059502Æ IoMgrUnregisterConfigApplicationÇ$85fc8796-00e3-4500-8f02-96be88b1acabÈ 2198568135ÉIoMgrUnregisterInstanceÊ hInterfaceË$5c4cac23-de3f-40ac-b8bc-1fcdb219c4c9Ì 3870152214ÍConfigGetConnectorÎpIoConnectorListÏdwModuleTypeÐ dwInstanceÑiÒ*Local, IsCompiled, RelativeStack, TypifiedÓdwCurrentInstanceÔ$05448d5a-856f-498f-8d2c-f54d4a1d2b4bÕ 2183295846ÖConfigGetFirstChild×pFatherØnCountÙ$4ec186af-b262-48d5-b7fc-df5bbfcaba7dÚ 2505514326ÛConfigGetFirstConnectorÜwTypeÝ$f4b6faa7-ed59-4b86-ac5f-530a108dd065Þ 1184247126ßConfigGetNextChildà$24eb7af1-4fea-45c3-9f69-1d59d8d37254á 182680892âConfigGetNextConnectorã$0f720af6-4d60-4925-b3d9-aa0ac2cc321cä 2127479105åConfigGetParameteræIOCONFIGPARAMETERçIoConfigParameterèpIoConnectoré dwParameterIdê$69449550-bc7e-40a6-a2d3-5b7f5d2fe50aë 1690247643ìConfigGetParameterLengthí pParameterî$15163bae-b543-4ae9-85e3-287c9d15f161ï22967866ðConfigGetParameterValueByteñwValueòdwValueó$a482a558-eb9a-4b9b-92ef-440028b1a32eô 2864151311õConfigGetParameterValueDwordöbyValue÷$04e9467c-951f-4e5c-95cf-4a9100c257c9ø 1732278298ùConfigGetParameterValuePointerú$a0bb9009-1f2c-4f47-9efd-e6f6d57f364bû38318646üConfigGetParameterValueWordý$2520e670-523b-47bc-a617-0cf6550b9c99þ''DOCU__COMMENTÿÏ Mapping information for a single channel. Every I/O-channel is described as a parameter, but with special meanings. The datatype of a channel can be simple (BOOL, BYTE, WORD, etc.) or array of simple types. 1485173771& Pointer to the parameter description.? Pointer to the parameter in the process image on the IEC side. pbyIecAddress Bitoffset of the device. wParameterBitOffset5 Bitoffset of pbyIecAddress in the IEC process image.wIecAddressBitOffset Size in bits of the channel.wSizeÁ This parameter is now used for the base type information. This information is needed for a correct swapping action. -- wBaseTypeInformation : WORD; -- compiler relies on the name 'wDummy' herewDummy= Driver specific entry. Reserved for the usage in the driver.dwDriverSpecificXWORD 3799954164$9993a70e-7153-4204-9a17-aa75207d5f4a2Structure, NonVirtual, Compiled, Typified, Locatedw Connector information. Each device is described completely as a set of one input- and one or more output-conenctors. 3076999907P Type of the connector. See category "Connector types" for detailed information.N Connector options. See category "Connector options" for detailed information.wOptionsJ Connector flags. See category "Connector flags" for detailed information.dwFlagsd Registered instance handle of the IO-driver, that operates this device respectively this connector., Number of parameters in the parameter list.dwNumOfParametersO Pointer to the parameter list, that contains all parameters of this connector.pParameterList= Pointer to the father connector to describe the device tree. 2550773687 $7e08b7ae-f8e8-47d2-8a16-44662e62b8ce¡; Connector map to describe all IO-channels of one connector¢ 2929473580£IoConfigConnectorMap¤( Pointer to the corresponding connector.¥ IO-manager specific entry.¦dwIoMgrSpecific§, Number of channels in the channel map list.¨dwNumOfChannels© Pointer to channel map list.ªpChannelMapList« 3660353869¬IOCONFIGCONNECTORMAP$614b5eaf-fe26-4660-8316-12a2d58a3653®T Parameter description. This entry describes completely a parameter of an connector.¯ 837778035°E ID of the parameter. This ID is specified in the device description.±J Value (if is valud < 4 bytes) or a pointer to the value of the parameter.²Q Type class of the parameter. See category "Type class" for detailed information.³! Length of the parameter in bits.´wLenµ¬ Parameter value flags. See category "Parameter value flags" for detailed information. Bit 16 to 31 are used for extended parameters (size exceeding 65535 Bits,8192 Bytes)¶ 3168140343·$0c1f5741-c666-4ac4-8049-47e0d549144b¸# Mapping description for each task.¹ 2318185417ºIoConfigTaskMap» Index of the IEC task.¼dwTaskId½N Input or output type. See category "Task map types" for detailed information.¾5 Number of connector maps int the connector map list.¿wNumOfConnectorMapÀ# Pointer to the connector map list.ÁpConnectorMapList 3888132684ÃIOCONFIGTASKMAPÄ$1e2d8176-ccc8-45ec-9578-1060ca08f642Å 2962471661ÆIoMgrConfigGetConnectorÇpConnectorListÈ$12573be7-5a8e-4ae9-8d45-6c29427b520eÉ 3097191027ÊIoMgrConfigGetFirstChildË$044f0bef-f59d-43ad-8496-90bb6703c2b5Ì 451793610ÍIoMgrConfigGetFirstConnectorÎ$2858dd16-f4fc-4483-bcdf-311c983114f4Ï 797436920ÐIoMgrConfigGetNextChildÑ$e9fb4157-4aac-42be-ac94-2b7115a46f96Ò 2780622961ÓIoMgrConfigGetNextConnectorÔ$9eb80208-afcd-40cc-b7ef-e6ba0e5e4845Õ 3349297925ÖIoMgrConfigGetParameter×$6d324e8a-97b5-4b18-a273-d5a249575d94Ø 3729716360Ù IoMgrConfigGetParameterValueByteÚ$7f0fa515-c756-4bdf-b369-2bc20d75cf4bÛ 1871208306Ü!IoMgrConfigGetParameterValueDwordÝ$edf4b27c-1558-4b38-8740-7733f1cd6224Þ 1664861923ß#IoMgrConfigGetParameterValuePointerà$c7e307ad-2f7f-41c3-a984-0cf8acc87b55á 1378701427â IoMgrConfigGetParameterValueWordã$534433e7-0f3d-4b97-9452-dcee4c3f5982ä 1801502966åIoMgrConfigResetDiagnosisæ$883f4d8a-c225-480c-ab37-0adbd1349dfeç 3771515593èIoMgrConfigSetDiagnosisé$a48fea34-3f67-4013-a0ba-98007fb1f0ffê m4export_hideë 3966152356ìEVTPARAM_CmpIoMgrí 2142005226îEVTPARAM_CMPIOMGRï$0c7ba0e4-3fb3-4e68-be6f-1f18acd66874ð 1571261114ñIoMgrGetModuleDiagnosisò$0e3b12d3-3da9-4300-b32d-a55b095483d1ó 3297191157ô IoMgrIdentifyõ$8f29ce56-8080-4f31-921c-c80d1e131a4bö¿ This function acquires the mutual-exclusion locks for the given operations for critical sections inside the I/O driver's implementation of IoDrvReadInputs(), IoDrvWriteOutputs(), and IoDrvStartBusCycle(). The locks can be released with the function ``IoMgrLockLeave()``. While a lock is held, any other thread is blocked from acquiring the lock and waits until the lock is released. IMPLEMENTATION NOTE: The behavior of the ``dwLockScope`` parameter can't be implemented on all platforms. Platforms without synchronization functionality may not be able to implement this behavior. IoMgrEmbedded of the CODESYSControlEmbedded runtime system for example can only disable and enable all interrupts. :return: error code + ERR_OK: Locks were successfully acquired. + ERR_PARAMETER: The ``pbyIoDrv`` parameter is ``NULL`` (only implementations that use this parameter), or the ``dwLockScope`` parameter has none of the GVL LockScopes set (only implementations that use this parameter). + ERR_FAILED: No driver entry for pbyIoDrv found in device pool.÷ 890733340øIoMgrLockEnterùZ Handle to the driver instance which is returned by the function IoMgrRegisterInstance2().úX The operations for which to acquire locks. See GVL LockScopes for detailed information.ûdwLockScopeü$4fd687bb-454e-46c6-92d3-30d2728a3718ý This function releases the mutual-exclusion locks (that were acquired with the function ``IoMgrLockEnter()``) for the given operations. IMPLEMENTATION NOTE: The behavior of the ``dwLockScope`` parameter can't be implemented on all platforms. Platforms without synchronization functionality may not be able to implement this behavior. IoMgrEmbedded of the CODESYSControlEmbedded runtime system for example can only disable and enable all interrupts. :return: error code + ERR_OK: Locks were successfully released. + ERR_PARAMETER: The ``pbyIoDrv`` parameter is ``NULL`` (only implementations that use this parameter), or the ``dwLockScope`` parameter has none of the GVL LockScopes set (only implementations that use this parameter). + ERR_FAILED: No driver entry for pbyIoDrv found in device pool.þ 1023158587ÿIoMgrLockLeave\ The operations for which to release the locks. See GVL LockScopes for detailed information.$50cd89f4-1210-43ef-b6c6-2969fa64e786 1003358786IoMgrReadInputspTaskMap $d5fc4c8b-d7aa-4c58-861a-b02328639e3c 4078812334IoMgrScanModules$86e554e2-e3be-4617-a91e-b1c3df71e91f 166652967IoMgrStartBusCycle$4a65f552-4c1b-4aa4-92a4-4c8eb2dd5024× Start the bus cycle for a specific connector, and pass the type of this call as an additional option. This way, the driver knows in which conditions (see BusCycleType) was called, by calling IoMgrGetBusCycleType(). 2327419416IoMgrStartBusCycle2$baa69047-4c1f-4c1a-b87c-8471ac7a7ad6 2973243251IoMgrUpdateConfiguration$8e8c1b49-af35-45e8-8dd6-4183dc7c1266 1154303272IoMgrUpdateConfiguration2$d75b572a-b27e-4240-94e8-0565f641933c 169153132IoMgrUpdateMappingpTaskMapList$f05cd498-57b1-4b93-bdc2-c8e263237f40 2002746541IoMgrUpdateMapping2$f51df010-35a8-4d39-b7ab-b84c2159ac76 2557345171IoMgrWatchdogTrigger$adc50bde-6417-4daf-91a3-310b13750941 3660854195¡IoMgrWriteOutputs¢$f3cda08a-24ef-4920-8b1f-737f86549f8b£ 3548116447¤IoMgrReadParameter¥pData¦ dwBitSize§dwBitOffset¨$0f6cb342-4622-47eb-8029-2ed7ce38f7e4© 2902783976ªIoMgrWriteParameter«$59947c7d-7697-4b40-a6f3-1458a495024c¬ 2598087253$ConfigGetParameterValueByte_Internal®pbyValue¯Byte°$ad79290f-4fb0-4668-a246-1230e7f20a89± 743185784²%ConfigGetParameterValueDword_Internal³pdwValue´DWordµ$1682af8a-160c-45a7-8955-5be9ff8acfb2¶ 1882665782·$ConfigGetParameterValueWord_Internal¸pwValue¹Wordº$d13aa643-3f97-483d-bb6d-577d824c73e4» 3023225215¼private_iomgr_memcpy½pDst¾iSize¿$c3db5c9e-2306-4784-86d3-ddc840e503d2À 450027817ÁLogToDeviceÂpMessageÃ$87fa260a-0206-486b-b1c7-ddcd71ec0182ÄJbreakpoint logging functions, 3.5.5.0 (3s - smart software solutions gmbh)Åä Appending of a string to a target string. The string to append and the target have both a maximum length of 255. If there is no more room in the target, the remaining characters will be missing. There won't be an error. .. cds:ranges:: :HEAD: |StringRange255| :TAIL: |StringRange255| .. |StringRange255| replace:: [NULL_STRING,TERMINATED_STRING_LEN0..TERMINATED_STRING_LEN127,TERMINATED_STRING_LEN128..TERMINATED_STRING_LEN255,UNTERMINATED_STRING] Æ 3222489690ÇAppendToStringÈ& Head part of the concatenated result ÉHEADÊ% Tail part of the concatenated resultËTAILÌIntÍindex1ÎindexRetÏ$2534de7b-0ca5-4f62-a5ca-98671b8c49e2Ð linkalwaysÑ 1647294876Ò__DataSegmentsÓnNumOfSegmentsÔ pDataSegmentsÕ __SEGMENTINFOÖ __SegmentInfo× 4060142437Ø__DATASEGMENTSÙ$6d5ee79a-0165-410b-9a03-2dcb86d77084Ú 4207933064Û 1489859144ÜdisplaymodeÝhexÞdsKindOfß__DATASEGMENTFLAGSàuiAreaáudOffsetâudSizeãudHighestUsedAddressä 176517104å$86a3bd70-f6af-446c-a3ca-d70c9d74cefbæ 224398676ç 3195237607è__BasePropertyInfoépVarAdrê 930619704ë__BASEPROPERTYINFOì$31ba9dec-acd8-475d-b624-39b6068c7eafí 461629027î 236822733ï__PropertyInfoStructðpGetterñpSetterò pInstanceó 4145388846ô__PROPERTYINFOSTRUCTõ$85b65d0b-a93f-4e02-80e4-fafd3f54abc3ö 1714484629÷ 3751468166ø__POUInfoStructù dwCRCCodeúdwCRCInterfaceûudiNameStringIndexüusiAreaCodeLocationýusiAreaFPPointerLocationþudiOffsetCodeLocationÿudiOffsetFPPointerLocation 519335429__POUINFOSTRUCT$8467172f-0c66-4acf-9d6b-245b2445da14 2202995516 2428029082 __FBInfoStructdwCRCVFTableudiAreaVFTableLocationudiOffsetVFTableLocation 1621815094__FBINFOSTRUCT$1964cd27-f960-4298-b539-cf555cb4552c 2130618155 901311032__MethodInfoStructudiParentPOUIndex 2699900021__METHODINFOSTRUCT$d277c0d4-0a58-4c92-97d1-0453f8828707 3731023454 2494911014__DUTInfoStruct 2398341060__DUTINFOSTRUCT$76a1e5d2-9eb5-4a1b-a8e7-baf1b7eb9716 1327871788 3489042165__GVLInfoStruct 1374809287__GVLINFOSTRUCT$a40cb7c8-28fe-4494-89ac-d9ba39db98a8 2456846774 994902498¡AnyType¢pValue£diSize¤ TypeClass¥ TYPE_CLASS¦ 3543456108§ANYTYPE¨$b60a5c90-aa6c-4c3f-8332-c02981c0bf59© 696726884ª 2125849342«__CodeLocationStruct¬udiCodeSize 2823972544®__CODELOCATIONSTRUCT¯$bb81851c-8557-43fd-ad66-2f0071e45f53° 802123132± 147588528²__ImplicitReferenceTypesInit³$270c4366-521b-4273-856a-24cad42924c9´ 2353654990µ__TaskSpecificInfo¶ TaskIndex· pTaskInfo¸ 2567373613¹__TASKSPECIFICINFOº$5f3af15b-046d-4359-9fb1-4011c841ebb0» 1278195045¼qualified_only½ 406642837¾__CheckedInterfaceAssign¿InterfaceInputÀ correctionÁ$09818148-288b-4e68-aaac-88d3699e851b 4255647081à __memcmp__iecÄptr1Åptr2Æ$0ac70c4a-9600-4218-ba11-7d8ad957fb05Ç 4118428513Èany32__to__stringÉ diExponentÊdwMantËdiExp10ÌpstrÍdiAfterKommaÎudPowÏdwTODÐdwDateÑpszHelpÒ(Compiled, SuperGlobal, Typified, LocatedÓ$52f276ac-71ea-475d-be1d-c34d7442869eÔF new and better way to convert single precision float values to stringÕ 812339439Önew__real32__to__string× Area: 65535, Offset: 0x0 (0)ØindexÙpdwÚdwÛbSignÜdecexponentÝbinexponentÞbinmantissaßdecmantissaàstrMantissaRawástrMantissaâpstrMantissaãnLenä bFirstCharånNewExponentænPointPositionçnIndexMantissaNewèbNanébInfêExponentëbNegExponentìnTensínOnesî__CONVERSION_CONSTANTSïFðAdrñPFòBoolóbContainsPointôCHAR_0õFLocal, ReplacedConstant, Constant, IsCompiled, RelativeStack, Typifiedö CHAR_POINT÷ CHAR_MINUSøCHAR_Eù$a891eece-ca29-4db8-b9cf-c1a855c9feacú 4263303623ûany64__to__stringüdintHighýudintLowþ udintHighÿLWordulDivulDigbFirstnDigitsnWidth count$3cce6ca9-0c61-42bf-9945-73fd93e91f59 748513653real64__to__stringsz pszSource pszHelpSourcepszDestDIntnSigniExp10nExpSignbSdiEliMxNanxInf$2a265c59-789e-4c94-a95e-f5f70529f084__GETINTERFACEPOINTER__GETINTERFACEREFERENCE__MAIN__VFINITCONFDYNLICCHALLENGEDEMOMODEEXPIREDDEMOMODESTARTEDFB_EXITGENERATEEXCEPTION GETCODEMETERLICENSEVALUE¡GETDEMOLICENSE¢GETLICENSEVALUE£GETLICENSEVALUEBIT¤GETPURELICENSEVALUE¥GETUSERLICENSEVALUE¦LICENSEMISSING§LOGERRORMESSAGE¨READLICENSEFILE©REQDYNLICCHALLENGEªSTORELICENSE«UDINTVALUEOFLINE¬VALUEOFLINEhide_all_locals®l This FB manages the access to license values. There is one global instance of it with the name ``g_olm``.¯ 1762817067°OLM_OnlineLicenseManager± FunctionBlock²_hFile³-Local, IsCompiled, RelativeInstance, Typified´ _udiTargetµ_udiType¶_udiCPU·_udiOS¸_abyFileContent¹gc_uiMaxFileSizeº_uiFileSize» _xFileRead¼_uiStoredLicenses½_udiDynLicReqID¾_udiDynLicReqValue¿_udiDynLicChallengeÀ _xDemoMessageÁ _semaStoreÂ_adwLicensesStoredÃgc_uiMaxStoredLicÄ__VFTABLEPOINTERÅ=Local, IsCompiled, RelativeInstance, NoInit, Implicit, NoCopyÆ 3309119800ÇOLM_ONLINELICENSEMANAGERÈ __Index__1É$85fe17fb-708c-43f1-921d-b15ce3e6d622Ê 726124912ËReadLicenseFileÌresÍuxiSizeÎ udiTargetÏ udiTargetMASKÐudiTypeÑudiCPUÒudiOSÓpsSerialÔpdiÕ uiCheckSumÖabyGen×bØStringÙOnlineLicenseManagerÚstComponentÛstFileÜstrÝtiÞ$Compiled, Typified, Located, Privateß$245266f5-25c0-4347-ba16-cf8db3cb1448à83slicense, 3.5.14.0 (3s - smart software solutions gmbh)á÷ With this method a component that previously asked for a license and received a negative result can post an error log message in a unified way Hence this method should be called after GetUserLicenseValue has been called and returned no license.â 3647277004ãLicenseMissingä name of the componentåstrComponentæ$c917544e-997c-4a95-85b8-b296375d8bdbç 3970679331èUdintValueOfLineéstrIdê$482e9fa5-988d-470b-a26c-e7f543b44f5fë 699475816ìGetLicenseValueBitíudiLicenseIDîusiBitï udiLicenseð$0dd60a5f-bcb6-4ca9-bbbe-47aee3a7178añ 2096955056òfb_initó$05fb8a48-e7b2-4a22-ad11-1fd89ee4b04eô 1640385473õGenerateExceptionö$3e4d0264-ac0c-4627-a2fa-6f413a9caafe÷ 3646185970øLogErrorMessageù$35438eb1-a664-41a5-9c91-1c77ddde2b52úw With this method a component can propagade in a uniform way that its demo mode has expired and it has stopped to work.û 3922114547üDemoModeExpiredý$e0a0ee36-9b29-4376-92d8-210830590ceaþ 2895160340ÿ__GetInterfacePointer pRef 3063148035 fb_exit $fce63f6e-52d8-4464-9446-53dd8cc9eff7 167456217 GetPureLicenseValue xNotFromCache xFromCache udi udiCPUOS ui udiWibu $23227458-e40f-430b-b25c-630ba433fec3 4203605720 StoreLicense udiValue $3c47975d-1574-4342-8c3b-38c7e032490c This method allows to ask for the license value of a component (specified by udiLicenseID) :return: Possible values: +-------------+------------------------------------------------------+ | 0 | no valid license installed | +-------------+------------------------------------------------------+ | 16#FFFFFFFF | demo mode (lasts for 30 min) | +-------------+------------------------------------------------------+ | else | license value; interpretation depends on component | +-------------+------------------------------------------------------+ 1784112674 GetUserLicenseValue O ID of the component that asks for its license value (centrally assigned by 3S) $faf62368-1791-496f-9aac-1dcccaddbebb 1553897900 ConfDynLicChallenge udiNewLicenseValue udiChallenge udiLicenseValue $3c2f7c5c-8743-4910-b672-93d5c08a11db 4275231191 GetCodemeterLicenseValue udiProductCode $2fd2d7ac-965c-4a78-9a9b-c721a84cea62 1869023576¡ GetDemoLicense¢ stHelp£ $3dea640c-ce74-46db-89a9-6a2e7e8a089c¤ With this method a component can propagade in a uniform way that it is running in demo mode and will - after a certain time - stop. This method should be called after it is clear that the license will stay in demo mode, in particular the (possibly later / after initialization phase) confirmation of dynamic licenses should be taken into account. Therefore it is recommended for the OEM to confirm dynamic licenses *during the initialization* (after global init slot 40000) and *before the application* is started.¥ 3669514694¦ DemoModeStarted§ $c9961dd4-2fb3-4d0b-9b3f-67937056004c¨ 3864497688© __GetInterfaceReferenceª nInterfaceId« 4293952¬ GetLicenseValue param® CMPEVENTMGR¯ CmpEventMgr° EVENTPARAM± EventParam² eventparam³ EVENTIDS´ CmpMgr_LicenseRequestµ $d5b19f2e-90e0-4b05-a5e8-3068951f9d50¶ 1280744906· 3890662013¸ ValueOfLine¹ pbyº uiEndOfLine» j¼ usiBitOffs½ byOrig¾ byPerm¿ byBuffÀ byOldÁ xEndOfLine $969097ae-9ac4-46e5-a05b-018cd3f16004à 584426206Ä ReqDynLicChallengeÅ udiTimeÆ $477a8134-64d2-4992-ac2b-50ed5f5a8858Ç 1774802008È Alias, IsCompiled, TypifiedÉ Alias, Compiled, TypifiedÊ $1f187897-1eca-4745-9dd7-6e656076701fË &systypes2 interfaces, 3.5.4.0 (system)Ì 3827756189Í $5de0d991-1359-4458-ba16-a7e779ed9ddcÎ 565296024Ï 8 EventID of the event. Contains the class and the event Ð EventIdÑ Component ID of the provider. Ò CmpIdProviderÓ 0 Id of the parameter structure (see pParameter) Ô usParamIdÕ 5 Version of the parameter structure (see pParameter) Ö usVersion× R Pointer to the event specific parameter, that is specified by Id (see usParamId) Ø 3380528868Ù $708ad4f5-2a48-4fd2-8d88-fb3b143a33a4Ú cmpeventmgr, 3.5.14.0 (system)Û 154268403Ü ulLicenseIDÝ ulLicenseValueÞ 2430688636ß CMPMGR_LICENSEREQUESTà $ec71f5d5-b2a8-42f3-8e75-3a56c8942752á __OffsetI_TESTRESULTFORMATTERâ LOGTESTSUITERESULTSã 1989740091ä I_TestResultFormatterå Interfaceæ 4590928ç LogTestSuiteResultsè TestResultsé GVL_PARAM_CFUNITê GVL_Param_CfUnitë MaxNumberOfTestSuitesì ST_TESTSUITERESULTí ST_TestSuiteResultî I_TESTRESULTFORMATTERï $6ab3f0b5-21a7-4cd5-8126-d8af5506b662ð $fa75ee61-43fb-4767-8061-125a3a9e3424ñ cfunit, 1.1.0.0 (open source)ò Compiled, Typifiedó Á Detects a rising edge of a boolean signal .. code-block:: codesys (* Example declaration *) RTRIGInst : R_TRIG ; (* Example in ST *) RTRIGInst(CLK := VarBOOL1); VarBOOL2 := RTRIGInst.Q; .. cds:ranges:: :CLK: [TRUE,FALSE] :~CLK_OLD: [TRUE,FALSE] :Q: [TRUE,FALSE] ô 754564685õ R_TRIGö Boolean signal to be checked÷ CLKø -Input, IsCompiled, RelativeInstance, Typifiedù ``TRUE``: Rising edge detectedú Qû .Output, IsCompiled, RelativeInstance, Typifiedü Mý 3552750443þ $752f4be3-bcd1-4b9f-8c29-de66d869ade4ÿ 2057466445 2279655128 725723096 2849467804 standard, 3.5.14.0 (system) ³ This function block reports the results from the tests using CmpLog functionality. It sends the results into the DeviceLog (which can print Errors, Warnings and Messages). 4192911373 FB_CdsTestResultLogger __INTERFACEPOINTER__376 PrintedTestSuiteResultNumber UInt PrintedTestSuiteTrigger 8 This flag is set once the final end result has printed PrintedFinalTestResults @ This flag is set once the test suites result have been printed PrintedTestSuitesResults 1092721245 FB_CDSTESTRESULTLOGGER $d14d6247-3ce3-459f-be22-6ee3520279ed 3006019631 StringToPrint T_MAXSTRING T_MaxString TestsInTestSuiteCounter MaxNumberOfTestsForEachTestSuite NumberOfTestSuites NumberOfTestCases NumberOfSuccessfulTestCases NumberOfFailedTestCases #GeneralTestResultsTestSuitesCounter $5da87d69-39f1-48e4-bedb-3bc6f1ecc539 1109025389 1863379842 2079809534¡ 612864726¢ 2899725525£ I_TestResultFormatter__Union¤ 1286751965¥ I_TESTRESULTFORMATTER__UNION¦ CLOSE§ OPEN¨ READ© SAVEª 1695361983« FB_FileControl¬ ACCESS_MODE SYSFILE® SysFile¯ AM_WRITE_PLUS° FileAccessMode± FileHandle² SYSTYPES³ SysTypes´ 2535989555µ FB_FILECONTROL¶ $c9bec8fc-2de3-45f4-b839-e6c4276a6b5a· 1889971345¸ 2355446001¹ 3308839526º Read» Call with ADR();¼ pString½ Call with SIZEOF(); ¾ Size¿ FileSizeÀ RTS_IEC_SIZEÁ $3984ae50-1cdb-4045-af99-0bb56917afb2 Closes the current fileà 4214760544Ä CloseÅ $519e9011-283c-40b1-afd4-31686c5b81feÆ 2474451454Ç \ Saves the contents of the buffer into a file Be sure to call Open() before calling Save()È 2206094130É SaveÊ Call with SIZEOF();Ë $c4146a99-50c6-4ce0-88ab-794dbfb1af62Ì Opens a fileÍ 2914156665Î OpenÏ p File name can contain an absolute or relative path to the file. Path entries must be separated with a Slash (/)Ð filepath/output.xmlÑ FileNameÒ AM_APPEND_PLUSÓ $1873bb2c-c6a3-4681-8948-02aa2bad0a9bÔ 527503827Õ __GETBUFFERSIZEÖ __GETLENGTH× __SETAPPENDØ __SETLENGTHÙ __SETPREPENDÚ CLEARÛ COPYÜ CUTOFFÝ FINDÞ FINDBACKß SETà M This functionblock acts as a stream buffer for use with FB_XmlControl á 460344340â FB_StreamBufferã pStrBufä udiBufSizeå udiLengthæ propertyç setè Appends a string to the bufferé message_guidê $ddd7c0b6-46f9-4fa9-946e-0da608268245ë Appendì getí Read current Buffersizeî $879a667c-416e-4879-91ff-6641233ded93ï BufferSizeð $80c3b0fb-2bdc-4829-89c6-017e171b31ebñ Lengthò Prepends a string to the bufferó $c4fdd2db-7736-4bc5-a06f-ba3a29618794ô Prependõ 3894529336ö CutOff÷ udiStartPosø udiCutLenù XmlErrorú E_XMLERRORû iLoopü pByteCutý pByteBufferþ FB_STREAMBUFFERÿ $8914e4f8-8b6c-48c3-ba1f-e0642038624a$fbccbed5-94ee-455b-a9d5-e8b750ed732e Find a searchstring in the buffer and returns its position. It's possible to add a preffered startposition within buffer 2249836283Find sSearchString udiLoopiSearchpBufferpSearch$7e38490a-9555-451d-957e-fef284a567e3 3770588605FindBack udiSearch$7d08b204-2078-4fde-81eb-e04d71986196 3443550296__setPrependTempBufGVL_PARAM_XMLCONTROLGVL_Param_XmlControlMaxFileSizepTempBufpByteIn$4ce6b49b-00bd-4bd1-9dcd-2e9ecfab167b 3531527356 679612793__getLength$063f44b5-d97e-4feb-bc58-4bdd7430c0c31 Copies a string from the character buffer 24631700CopyudiStartudiEnd udiCopyLen¡ pByteCopy¢$b796dd60-63f5-4b75-acc5-8fa40e24be46£+ Clears the buffer and sets the length to 0¤ 245412907¥Clear¦$5f0bbce2-2600-4a2e-8c6f-4b957ad03395§ 3105935666¨ 1526185124©__setLengthª$c516394c-e0bf-40e3-8a00-92e5ec5cc151« 3911693793¬__getBufferSize$c7ad50d6-c68e-4f97-8e99-a8d5c013ef7a® 2742528156¯ Sets the Buffer ° 2765814553±Set² Set buffer adress (ADR ...)³pbyAdr´ Set buffer size (SIZEOF ...)µudiSize¶$59092938-ca22-4896-8f54-1c854a0bd883· 1070739256¸ 431188798¹ 3726327849º__setAppend»$2498d17a-6a8a-4bf1-a5ce-9c1a248a9710¼CLEARBUFFER½CLOSETAG¾ NEWCOMMENT¿NEWPARAMETERÀNEWTAGÁ NEWTAGDATA NEXTPARAMETERÃNEXTTAGÄ SETBUFFERÅ TOSTARTBUFFERÆWRITEDOCUMENTHEADERÇå Organizes parsing and composing of XML data. Data can be treated as STRING or char array. Filebuffersize is default 4096 bytes and can be set via Gvl_Param_XmlControl Usage example: 1. Initiate VAR XML : FB_XMLControl; Buffer: STRING(GVL_Param_XmlControl.udiMaxFileSize); //or Buffer: ARRAY [0..GVL_Param_XmlControl.udiMaxFileSize] OF BYTE; END_VAR XML.pBuffer: = ADR (buffer); XML.LenBuffer: = SIZEOF (buffer); Add your own preferred fileheader like so: XML: <?xml version="1.0" encoding="UTF-8"?> XML.WriteDocumentHeader( '<?xml version="1.0" encoding="UTF-8"?>'); 2. Compose a tag with a parameters: XML: <MyTag ParaName = "11" /> XML.newTag(sTagName: = 'MyTag'); XML.newPara(sName: = 'ParaName', sPara: = sValue); XML.CloseTag(); 3. Add tag value: XML: <MyTag> MyText </ MyTag> XML.newTag(sName := 'MyTag'); XML.newTagData(sTagData :='MyText'); XML.CloseTag(); 4. Jump to the beginning of the XML data XML.toStartBuffer(); 5. Add a comment: XML: <!-- MyComment --> XML.newComment(sTagName: = 'MyComment'); 6. Returns the next tag from the current position in buffer XML.NextTag(); 7. Output the parameter of the tag XML.NextPara(sPara: = LastValue); Feedback: sPara returns the value found (string) È 4271593562É FB_XmlControlÊBufferËTagListÌsTagsÍTagListSeekÎ sTagsSeekÏTagÐsTagÑxTagOpenÒiSelectÓiSelectStartÔ iSelectEndÕiSelectStartParaÖiSelectEndPara×iSelectTagCloseØiSelectStartValueÙiSelectEndValueÚudiSearchPosÛ<ÜTAG_OPENÝ7Local, Constant, IsCompiled, RelativeInstance, TypifiedÞ>ß TAG_CLOSEà/>á END_TAG_CLOSEâ ãSPACEä=åEQUALSæ"çQUOTEè\é BACK_SLASHê/ë FORWARD_SLASHì<!-- íOPEN_COMMENTî -->ï CLOSE_COMMENTð ñTABò óCR_LFô$4fdf30b6-5fe7-4452-ad0a-85e866e236d0õm Must be called after opening a new tag XML.NewParameter(Name: = 'ParaName', Value: = 'Value'); ö 2634837430÷NewParameterøNameùValueú FB_XMLCONTROLû$60c10606-ff09-4f9b-a3dd-0b54d0f565c7ü$f48b7de2-5c07-4763-a8be-3d8ab3c1f58cý 2112014703þI Closes a Tag: XML: <MyTag />' Method: XML.CloseTag(); ÿ 1350786801CloseTag$eedd2aac-2425-4325-8128-bfe1e984f3f7P Creates a new Tag: XML: <MyTag> XML.NewTag(Name: = 'MyTag'); 3405068434NewTag $c44bdbda-725a-4943-a5cc-fa5ea9485541 2345788106 4091577810NextTag$d039b781-905d-4b69-b5aa-bb0323e598de 311623939 NextParameter Parameter$4394d0a2-f7bc-4847-9625-00022c462a79ª Add your own preffered fileheader like: XML: <?xml version="1.0" encoding="UTF-8"?> XML.WriteDocumentHeader('<?xml version="1.0" encoding="UTF-8"?>'); 1129208895WriteDocumentHeaderHeader$14bf2549-9e7d-451f-8ab5-fe662eb30712c Adds a comment; XML: <!-- MyComment --> XML.NewComment(Comment: = 'MyComment'); 1839979298 NewCommentComment$0f41fa45-b92e-4e7e-b2b3-ecb5d5918326 1660387904$267105d4-b124-4c5c-a359-0434c4992afc 3578040079 3559116989 629852686 NewTagDataData$e4679d3f-10eb-47fd-936c-97e3aaaa3768 3231874346¡ SetBuffer¢iSizeOf£$cbfaa6d5-eab9-48d0-a339-a8bf334e344e¤1 Clears the contents of the entire buffer ¥ 1859166792¦ClearBuffer§$651b4460-232e-47e8-95ba-ecea1541fbb9¨G Jump to the beginning of the XML data XML.ToStartBuffer(); © 480465930ª ToStartBuffer«$cb065068-a6c8-48d5-8c1d-535a21365348¬ 792755172 OPENSAVECLOSE®x This function block reports the results from the tests into a xUnit compatible XmlFile see xUnit XML Template ¯ 886807295°FB_XmlResultFormatter±* Default path for storing the output file ²./output.xml³ szFilename´ Default file access mode µstFileAccessMode¶File·Xml¸ FB_XMLControl¹xBufferInitialisedºMinus»WritingTestSuiteResultNumber¼AreAllTestsFinishedTrigger½WritingFinalTestResults¾@ This flag is set once the test suites result have been written ¿ReadyWritingTestSuitesResultsÀ 797895307ÁFB_XMLRESULTFORMATTERÂ$6597c0b3-0890-4d5d-8d3a-2d0d0b2355dbà 3982966825ÄNumberOfSkippedTestsÅCurTestSuiteÆ$32c3ccd7-3470-4554-b54c-b3a0a6491553Ç 3964891648È 1911703512É 173356519Ê OpenSaveCloseË$84256533-6eb5-465b-b1e5-db6f61e2e6c3Ì 3684701766Í«FB_Init is always available implicitly and it is used primarily for initialization. The return value is not evaluated. For a specific influence, you can also declare the methods explicitly and provide additional code there with the standard initialization code. You can evaluate the return value.Î 1205183587ÏFB_InitÐE TRUE: the retain variables are initialized (reset warm / reset cold)ÑP TRUE: the instance will be copied to the copy code afterward (online change) Ò$0f23c47b-7245-415e-b489-0ae429217263Ó 3984686499ÔST_TestCaseResultÕTestNameÖ TestClassName×SkippedØ 2862998697ÙST_TESTCASERESULTÚ$827f1374-79d7-484a-b090-e913f2fd7e61Û 3654019189Ü Full class nameÝW Should be 0..GVL_Param_TcUnit.MaxNumberOfTestSuites-1 but gives unknown compiler errorÞIdentityß NumberOfTestsàNumberOfFailedTestsáTestCaseResultsâ 2727633817ã$5d16604c-bc9e-413c-8d4d-01667ea07b24äGETGENERALTESTRESULTSåGETTESTSUITERESULTSæ^ This function block holds results of the complete test run, i.e. results for all test suites ç 3609055345èFB_TestResultsé The total number of test suitesê5 The total number of test cases (for all test suites)ë? The total number of test cases that had all ASSERTS successfulìC The total number of test cases that had at least one ASSERT failedí. Test results for each individiual test suite îTestSuiteResultsï Misc variables ðStoringTestSuiteResultNumberñStoringTestSuiteTriggeròStoredTestSuiteResultsóStoredGeneralTestResultsô 2772295229õ TestSuiteNameöTestToBeStored÷FB_TESTøFB_TestùFB_TESTRESULTSú$dcfade2b-3801-4064-9466-67a7a848e8d0û 3733259722ü 2712372026ýGetGeneralTestResultsþNoOfTestSuitesÿ NoOfTestCases NoOfSuccessfulTestCases NoOfFailedTestCases $531d5d08-5de3-4c4f-9365-451e69239140 3328074054 GetTestSuiteResults $3d7cfdb1-16a3-456d-be0a-82cecf4820a8 2050565673 1157713369 565388467 ABORTRUNNINGTESTSUITETESTS RUNTESTSUITETESTS ] This function block is responsible for holding track of the tests and executing them. 4236016373 FB_CfUnitRunner L Indication of whether all test suites have reported that they are finished AllTestSuitesFinished 3 Prints the results to Log to display the results. LogTestResultFormatter TestResultPrinter XmlTestResultFormatter XmlPublisher Test result information w If this flag is set, it means that some external event triggered the request to abort running the test suites AbortRunningTestSuites 1585667064 FB_CFUNITRUNNER $857e16d6-a26c-468a-935e-aa7317c263b9 2542736242 2449661844 ` This function sets a flag which makes the runner stop running the tests in the test suites 573665699 AbortRunningTestSuiteTests $3fcbd569-749a-493c-a697-2c976fa6e96a¡ 2950497563¢ 2121166836£ 2836251582¤ RunTestSuiteTests¥ Counter¦ BusyPrinting§ ¦ We need to hold a temporary state of the statistics (failed, successful, total amount of test cases etc) as we don't consider the tests to be completely finished until all test suites have executed completely. The reason we want to do it this way is because a test suite can run over several cycles. Only once all tests are finished (which might take many cycles), do we gather correct statistics ¨ NumberOfTestSuitesFinished_Temp© NumberOfTestCases_Tempª NumberOfFailedTestCases_Temp« NumberOfSuccessfulTestCases_Temp¬ $d333e6c4-a1da-4b5b-91b3-4b4808e6c299 2671643726® $a429e267-db3b-4872-871e-1ca509b971e2¯ 161063444° $fc07005b-6ac8-404d-b2cd-f68d25f42f8e± GETNAME² ISFAILED³ ISFINISHED´ SETFAILEDµ SETFINISHED¶ SETNAME· ? This function block holds all data that defines a test. ¸ 929400243¹ C Indication of whether this test has had at least one failed assertº TestIsFailed» TestIsFinished¼ 1117055996½ IsFinished¾ $813a9067-b864-4739-9c14-830160e0eabc¿ $a51e9086-33ec-4162-acad-93a76961e893À 2617315923Á 2860593324 4294720336à 2009680975Ä 686902952Å SetNameÆ $4c12f6eb-bbe4-4872-ac89-4411e2e81414Ç 1394032034È SetFailedÉ $b840b41b-4045-4fd9-b97d-0bf226c46fb3Ê 340246040Ë IsFailedÌ $e42409e3-251f-4133-8b14-3630785983d6Í 486247262Î 2121735863Ï GetNameÐ $94757f0e-9979-49d0-ad9f-e35c823175d4Ñ 2325423616Ò SetFinishedÓ $e1245d1c-be22-4d60-bc91-fe0262827234Ô external_nameÕ Task_InfoÖ Task information out of the task configuration Task configuration menbers which are used with |IecTaskCreate| are marked with [c], status members are marked with [s]. Note for SIL2: This information is already inside of the data area, so we don't need to tag it as safe anywhere.× 61652668Ø Task_Info2Ù ! [c] Version of the structure (2)Ú dwVersionÛ [c] Name of the task, mandatoryÜ pszNameÝ % [c] IEC priority of the task (0..31)Þ nPriorityß 9 [c] Kind of task. See corresponding category |TaskType|.à KindOfTaská $ [c] Is TRUE, if watchdog is enabledâ bWatchdogã C [c] Is TRUE, if profiling is enabled (not used, FALSE recommended)ä bProfilingå E [c] Function pointer to the event check routine, see |IecTaskCreate|æ dwEventFunctionPointerç 7 [c] Name of the event, if it is an external event taskè pszExternalEventé F [c] Function pointer to the task code, mandatory, see |IecTaskCreate|ê dwTaskEntryFunctionPointerë [c] Watchdog sensitivityì dwWatchdogSensitivityí [c] Interval in microsecondsî dwIntervalï " [c] Watchdog time in microsecondsð dwWatchdogTimeñ 5 [s] Cycle time in microseconds (last execution time)ò dwCycleTimeó ' [s] Average cycle time in microsecondsô dwAverageCycleTimeõ ' [s] Maximum cycle time in microsecondsö dwMaxCycleTime÷ ' [s] Minumum cycle time in microsecondsø dwMinCycleTimeù [s] Jitter in microsecondsú iJitterû [s] Minimal jitterü iJitterMiný [s] Maximal jitterþ iJitterMaxÿ [s] Cycle counterdwCycleCount( [s] Task state. See category TaskState.iState3 [s] Number jitter statistical distribution entrieswNumOfJitterDistributions , [s] Statistical jitter distribution entriespJitterDistributionJITTER_DISTRIBUTIONJitter_Distribution [s] Timeslicing enabledbTimeSlicingbyDummy- [s] Cycle counter for execution of user codedwIECCycleCount 2750948561 TASK_INFO2$a1e9fbd6-93bf-46b3-bfe6-3b3118b8971acmpiectask, 3.5.14.0 (system)) reads the taskinfo from the current task 380229896GetCurTaskInfopCurTask CMPIECTASK CmpIecTaskpCurTaskInfoCurTaskInfo 4105761433GETCURTASKINFO$21adb24c-373e-4435-8059-bba210563e99 2413748294 1915908239 4214002233 2906446323¡ 227646264¢U_ExpectedOrActual£boolExpectedOrActual¤bitExpectedOrActual¥byteExpectedOrActual¦dwordExpectedOrActual§lwordExpectedOrActual¨stringExpectedOrActual©udintExpectedOrActualªuintExpectedOrActual«usintExpectedOrActual¬sintExpectedOrActualintExpectedOrActual®wordExpectedOrActual¯dintExpectedOrActual°lintExpectedOrActual±ulintExpectedOrActual²realExpectedOrActual³lrealExpectedOrActual´wstringExpectedOrActualµtimeExpectedOrActual¶ltimeExpectedOrActual·dateExpectedOrActual¸dateandtimeExpectedOrActual¹timeofdayExpectedOrActualº25436326»U_EXPECTEDORACTUAL¼$539c30a7-a560-469c-8422-aaf8c09f45d9½9Structure, NonVirtual, Union, Compiled, Typified, Located¾ 2825047456¿ST_AssertResultÀExpectedÁActualÂMessageÃTestInstancePathÄ 1612349127ÅST_ASSERTRESULTÆ$63e20a3e-c451-4aff-a3c2-cc9b3a584290Ç 1583981908ÈST_AssertResultInstancesÉAssertResultÊ* Amount of instances of the "AssertResult"ËDetectionCountÌD Amount of instance of the "AssertResult" in this specific PLC-cycleÍDetectionCountThisCycleÎ93536004ÏST_ASSERTRESULTINSTANCESÐ$018c91ab-7038-42ef-b6e4-5007ea06204fÑADDASSERTRESULTÒ3COPYDETECTIONCOUNTANDRESETDETECTIONCOUNTINTHISCYCLEÓCREATEASSERTRESULTINSTANCEÔGETDETECTIONCOUNTÕGETDETECTIONCOUNTTHISCYCLEÖ$INCREASEDETECTIONCOUNTTHISCYCLEBYONE×REPORTRESULTØ This function block is responsible for keeping track of which asserts that have been made. The reason we need to keep track of these is because if the user does the same assert twice (because of running a test suite over several PLC-cycles) we want to know it so we don't print several times (if the assert fails). An instance of an assert is keyed/identified with the following parameters as key: - Value of expected - Value of actual - Message (string) - Test instance path (string) Ù 2083454144ÚFB_AssertResultStaticÛ> The total number of instances of each of the "AssertResults" Ü AssertResultsÝMaxNumberOfAssertsÞ$ The total number of unique asserts ßTotalAssertsà. Function block to get the current task cycle áGetCurrentTaskIndexâAssertResultInstancesã The last PLC cycle count ä CycleCountå Only run first cycle æFirstCycleExecutedç 1249903082èFB_ASSERTRESULTSTATICé$9683a633-879e-475e-a97f-0742f9ecfd04ê 692841312ë 1389387818ì 2372914603í3CopyDetectionCountAndResetDetectionCountInThisCycleîIteratorCounterï$a8cc95e0-191e-40c8-a6bc-8d58d9231bfað hasanytypeñ 324331413ò$IncreaseDetectionCountThisCycleByOneóuselocationôExpected.pValueõExpected__pValueö2Local, IsCompiled, RelativeStack, NoInit, Typified÷Expected.TypeClassøExpected__typeClassùExpected.diSizeúExpected__sizeOfûanytypeclassüANYý Actual.pValueþActual__pValueÿActual.TypeClassActual__typeClass Actual.diSizeActual__sizeOf$b4a5f59b-b092-46e9-a592-20ecca6c06c9 1534235042 1576367466 875312424CreateAssertResultInstance$0e48fb23-038c-40ed-90ff-ee834be2653d 4040583768GetDetectionCountThisCycle$9f89a925-0785-44b9-83cb-36f87d5bc546 1863076118GetDetectionCount$75f01348-487a-4441-a0e3-f41feb6c1781¸ This method is called in every assert and returns whether this particular assert has already been called. The reason one would like to know whether this assert has already been reported or not is to not report it several times to any logging service. Because a test-suite can consist of several tests, and certain tests can require the test to run over several cycles it means that certain asserts could be called several times and thus we need to keep track of which asserts we've already reported. The user of the framework should not need to care for any of this and he/she should be able to call the asserts in any way they FIND suitable. To know what assert this is we need to check for the total combination of: - Test message - Test instance path - Expected value - Actual value Theoretically we can have a situation where a test has three different asserts, each and one with the same test message/test instance path/actual value/expected value but called within the same or different cycles. In order for us to handle all situations we need a simple algorithm that works according to: - Keep track of how many instances the combination of test message/test instance path/expected value/actual value we have. So for example, if we have called Assert(Exp := 5, Act := 5, 'Hello there', 'PRG.InstanceTestSuite.Test') two times in one cycle, we have two instances of that combination. This is done according to: - Iterate all existing reports. - If we have a new PLC-cycle, set the current detection-count to zero. - If new report does not match in any of the above fields, create it (together with current PLC-cycle). Also store the information that we have one instance of this combination and +1 on the detection-count. - If new report matches in all of the above, +1 in the detection-count. If this detection-count is larger than the stored detection-count for this combination, create a new report and add +1 to the storage of the detection-count. 2144796275ReportResultAlreadyReported LocationIndexDataTypesNotEqualsDataSizeNotEqualsDataContentNotEqualsCurrentCycleCountDetectionCountTempFoundOneAdditionalIdenticalAssert$675e4dfe-54f1-4dc0-a6fd-481bc63973c5 3239381763AddAssertResult$22afb213-95b2-4bfd-ada6-e7cf020d9c1d 3525697315 ST_AssertArrayResult¡% Size in bytes of the expecteds-array¢ ExpectedsSize£% The data type of the expecteds-array¤ExpectedsTypeClass¥ TYPECLASS¦# Size in bytes of the actuals-array§ActualsSize¨# The data type of the actuals-array©ActualsTypeClassª 2307666740«ST_ASSERTARRAYRESULT¬$a97be192-7eab-4934-bf94-f1c1e71902f6 1707683493®ST_AssertArrayResultInstances¯AssertArrayResult°/ Amount of instances of the "AssertArrayResult"±I Amount of instance of the "AssertArrayResult" in this specific PLC-cycle² 2861258322³ST_ASSERTARRAYRESULTINSTANCES´$32c33d09-e3c1-4756-8559-edad569b31f5µADDASSERTARRAYRESULT¶ This function block is responsible for keeping track of which array-asserts that have been made. The reason we need to keep track of these is because if the user does the same assert twice (because of running a test suite over several PLC-cycles) we want to know it so we don't print several times (if the assert fails). An instance of an array-assert is keyed/identified with the following parameters as key: - Array-size (in bytes) of the expecteds - Datatype of the expecteds - Array-size (in bytes) of the actuals - Datatype of the actuals - Message (string) - Test instance path (string) · 285741936¸FB_AssertArrayResultStatic¹C The total amount of instances of each of the "AssertArrayResults" ºAssertArrayResults»$ The total amount of unique asserts ¼TotalArrayAsserts½AssertArrayResultInstances¾ 3879263428¿FB_ASSERTARRAYRESULTSTATICÀ$b20832df-51fb-47f1-8077-6f683834a939Á 4126057407 2905686437à 4129591207Ä$a7fb8083-d80a-4b1b-8816-a954d21029f6Å 4220474593Æ 2080793920Ç 2799846253È$f9a4ac71-1920-4a28-b414-2ab956ba44baÉ 2199397778Ê$a67f455d-9f04-4265-a3ae-ec73cfedab30Ë 1425005247Ì$da11a180-ba29-4114-ba12-6fb4c00ea850͸ This method is called in every assert and returns whether this particular assert has already been called. The reason one would like to know whether this assert has already been reported or not is to not report it several times to any logging service. Because a test-suite can consist of several tests, and certain tests can require the test to run over several cycles it means that certain asserts could be called several times and thus we need to keep track of which asserts we've already reported. The user of the framework should not need to care for any of this and he/she should be able to call the asserts in any way they FIND suitable. To know what assert this is we need to check for the total combination of: - Test message - Test instance path - Expecteds size (in bytes) - Actuals size (in bytes) - Expecteds datatype - Actuals datatype Theoretically we can have a situation where a test has three different asserts, each and one with the same test message/test instance path/actuals size&datatype/expecteds size&datatype but called within the same or different cycles. In order for us to handle all situations we need a simple algorithm that works according to: - Keep track of how many instances the combination of test message/test instance path/expecteds size&datatype/ actuals size&datatype we have. So for example, if we have called Assert(Exp := [5,4,3], Act := [5,4,3], 'Hello there', 'PRG.InstanceTestSuite.Test') two times in one cycle, we have two instances of that combination. This is done according to: - Iterate all existing reports. - If we have a new PLC-cycle, set the current detection-count to zero. - If new report does not match in any of the above fields, create it (together with current PLC-cycle). Also store the information that we have one instance of this combination and +1 on the detection-count. - If new report matches in all of the above, +1 in the detection-count. If this detection-count is larger than the stored detection-count for this combination, create a new report and add +1 to the storage of the detection-count. Î 334711663Ï$9acdaaa9-94c5-4747-8072-7b7279f5cd81Ð 2602585500Ñ$909102be-4739-47e1-abb5-2b1a0d9602c4Ò 1114810495ÓAddAssertArrayResultÔ$60d61a50-adb0-4323-b700-3d64bcdd7ef0Õ __OffsetI_ASSERTMESSAGEFORMATTERÖLOGASSERTFAILURE× 355528328ØI_AssertMessageFormatterÙ 4291550583ÚLogAssertFailureÛI_ASSERTMESSAGEFORMATTERÜ$35efab01-6ac8-46a5-a5e1-adb4f1f5f9b2Ý$71246e7e-3534-44b1-a788-c1f37427a096Þ¾ This function block is responsible for printing the results of the assertions using the built-in LOGSTR functionality provided in this library. This sends the result to the DeviceLog. ß 856032233àFB_LogAssertMessageFormatterá__INTERFACEPOINTER__652â 3082900915ãFB_LOGASSERTMESSAGEFORMATTERä$54911d7d-b4a4-43a8-a981-a2fc14a13f71å 1702637047æ 3821178837ç 498102394è 2988799914é,AdjustAssertFailureMessageToMax252CharLengthê/FB_ADJUSTASSERTFAILUREMESSAGETOMAX252CHARLENGTHë/FB_AdjustAssertFailureMessageToMax252CharLengthìTestInstancePathCleanedíTestInstancePathFinalîReturnValueïTestInstancePathProcessedðMessageProcessedñ$48cbc6b0-5380-44b8-a045-57b6ad9f189dò 4086985287ó 694510288ôI_AssertMessageFormatter__Unionõ 1092183428öI_ASSERTMESSAGEFORMATTER__UNION÷ADDTESTøADDTESTNAMETOINSTANCEPATHùAREALLTESTSFINISHEDúASSERTARRAY2DEQUALS_LREALûASSERTARRAY2DEQUALS_REALüASSERTARRAY3DEQUALS_LREALýASSERTARRAY3DEQUALS_REALþASSERTARRAYEQUALS_BOOLÿASSERTARRAYEQUALS_BYTEASSERTARRAYEQUALS_DINTASSERTARRAYEQUALS_DWORDASSERTARRAYEQUALS_INTASSERTARRAYEQUALS_LINTASSERTARRAYEQUALS_LREAL ASSERTARRAYEQUALS_LWORDASSERTARRAYEQUALS_REALASSERTARRAYEQUALS_SINTASSERTARRAYEQUALS_UDINTASSERTARRAYEQUALS_UINTASSERTARRAYEQUALS_ULINTASSERTARRAYEQUALS_USINTASSERTARRAYEQUALS_WORDASSERTEQUALSASSERTEQUALS_BOOLASSERTEQUALS_BYTEASSERTEQUALS_DATEASSERTEQUALS_DATE_AND_TIMEASSERTEQUALS_DINTASSERTEQUALS_DWORDASSERTEQUALS_INTASSERTEQUALS_LINTASSERTEQUALS_LREALASSERTEQUALS_LTIMEASSERTEQUALS_LWORDASSERTEQUALS_REALASSERTEQUALS_SINTASSERTEQUALS_STRINGASSERTEQUALS_TIMEASSERTEQUALS_TIME_OF_DAYASSERTEQUALS_UDINTASSERTEQUALS_UINT ASSERTEQUALS_ULINT¡ASSERTEQUALS_USINT¢ASSERTEQUALS_WORD£ASSERTFALSE¤ ASSERTTRUE¥FINDTESTSUITEINSTANCEPATH¦GETINSTANCEPATH§GETNUMBEROFFAILEDTESTS¨GETNUMBEROFSUCCESSFULTESTS©GETNUMBEROFTESTSªGETTESTBYPOSITION«ISTESTFINISHED¬ SETTESTFAILEDSETTESTFINISHED®call_after_init¯ reflection°Á This function block is responsible for holding the internal state of the test suite. Every test suite can have one or more tests, and every test can do one or more asserts. Itâs also responsible for providing all the assert-methods for asserting different data types. Only failed assertions are recorded. ± 1004086117²FB_TestSuite³ instance-path´noinitµInstancePath¶5Local, IsCompiled, RelativeInstance, NoInit, Typified·Ê We need to have access to specific information of the current task that this test suite is executed in. This is for instance necessary when we need to know whether a test is defined already. The definition of a test that is defined already is that we call on it with the same name twice in the same cycle ¸Tests¹ Rising trigger of whether we have already notified the user of that the test name pointed to by the current position is a duplicate ºTestDuplicateNameTrigger» Last cycle count index for a specific test. Used to detect whether this test has already been defined in the current test suite ¼TestCycleCountIndex½ Prints the failed asserts to DeviceLog to display the assert message. This assert formatter can be replaced with something else than the DeviceLog ¾LogAssertMessageFormatter¿AssertMessageFormatterÀæ | Asserts that two REALs are equal TO within a positive delta. IF they are NOT, an assertion error is created. Parameters: | Expected â REAL expected value | Actual â REAL actual value | Delta â The maximum delta between the absolute value of expected and actual for which both numbers are still considered equal | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : REAL := 1234.5; b : REAL := 1234.4; END_VAR TEST('Test_REAL_Equals'); AssertEquals_REAL(Expected := a, Actual := b, Delta := 0.1, Message := 'Values differ'); TEST_FINISHED(); Failing example: VAR a : REAL := 1234.5; b : REAL := 1234.4; END_VAR TEST('Test_REAL_Differ'); AssertEquals_REAL(Expected := a, Actual := b, Delta := 0.05, Message := 'Values differ'); TEST_FINISHED(); Á 3935931743ÂAssertArrayEquals_REALà REAL array with expected valuesÄvariable_length_arrayÅ DimensionsÆ1Ç ExpectedsÈ REAL array with actual valuesÉActualsʤ The maximum delta between the value of expected and actual for which both numbers are still considered equal, proportional to the Expected value in that array cellËDeltaÌ0 The identifying message for the assertion errorÍEqualsÎ SizeEqualsÏIndexÐExpectedStringÑActualStringÒSizeOfExpectedsÓ SizeOfActualsÔExpectedsIndexÕActualsIndexÖimplicit_input×Expecteds__Array__InfoØ__ARRAY__DIM__INFOÙActuals__Array__InfoÚFB_TESTSUITEÛ$c42ec40e-0859-4258-a3b2-11b258dab324Ü$f80c23f2-119d-406b-ae11-06d1991bf64dÝð | Asserts that two BOOLs are equal. If they are not, an assertion error is created. Parameters: | Expected â BOOL expected value | Actual â BOOL actual value | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : BOOL := TRUE; b : BOOL := TRUE; END_VAR TEST('Test_BOOL_Equals'); AssertEquals_BOOL(Expected := a, Actual := b, Message := 'Bools differ'); TEST_FINISHED(); Failing example: .. code-block:: codesys VAR a : BOOL := TRUE; b : BOOL := FALSE; END_VAR TEST('Test_BOOL_Differ'); AssertEquals_BOOL(Expected := a, Actual := b, Message := 'Bools differ'); TEST_FINISHED();Þ 1285440394ßAssertEquals_BOOLà BOOL expected valueá BOOL actual valueâ$0c41b405-ea35-4450-93cc-7c3349bdf754ãÈ | Asserts that two WORD arrays are equal. If they are not, an assertion error is created. Parameters: | Expecteds â WORD array with expected values | Actuals â WORD array with actual values | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : ARRAY[1..5] OF WORD := [16#AAAA, 16#BBBB, 16#CCCC, 16#DDDD, 16#EEEE]; b : ARRAY[1..5] OF WORD := [16#AAAA, 16#BBBB, 16#CCCC, 16#DDDD, 16#EEEE]; END_VAR TEST('Test_WORD_Array_Equals'); AssertArrayEquals_WORD(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); Failing example 1: .. code-block:: codesys VAR a : ARRAY[1..5] OF WORD := [16#0000, 16#3333, 16#5555, 16#7777, 16#BBBB]; b : ARRAY[1..7] OF WORD := [16#0000, 16#3333, 16#5555, 16#7777, 16#BBBB, 16#FFFF, 16#1122]; END_VAR TEST('Test_WORD_Array_DifferInSize'); AssertArrayEquals_WORD(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); Failing example 2: .. code-block:: codesys VAR a : ARRAY[1..7] OF WORD := [16#2323, 16#876A, 16#4CD4, 16#F3DC, 16#BBBB, 16#FFFF, 16#1133]; b : ARRAY[1..7] OF WORD := [16#2323, 16#876A, 16#4CD4, 16#F3DC, 16#BBBB, 16#FFFF, 16#1122]; END_VAR TEST('Test_WORD_Array_DifferInContent'); AssertArrayEquals_WORD(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED();ä 2226873030åAssertArrayEquals_WORDæ WORD array with expected valuesç WORD array with actual valuesèExpectedDWordStringéActualDWordStringê$16eada18-ce2b-459d-a8d9-277e84766935ëÄ | Asserts that two STRINGs are equal. If they are not, an assertion error is created. Parameters: | Expected â STRING expected value | Actual â STRING actual value | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : STRING := 'Hello there'; b : STRING := 'Hello there'; END_VAR TEST('Test_STRING_Equals'); AssertEquals_STRING(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED(); Failing example: .. code-block:: codesys VAR a : STRING := 'This is a string'; b : STRING := 'This is another string'; END_VAR TEST('Test_STRING_Differ'); AssertEquals_STRING(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED(); ì 696659643íAssertEquals_STRINGî STRING expected valueï STRING actual valueð$cad7fed3-5db3-4371-9240-856c3c740489ñ | Asserts that two ULINTs are equal. If they are not, an assertion error is created. Parameters: | Expected â ULINT expected value | Actual â ULINT actual value | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : ULINT := 45683838383; b : ULINT := 45683838383; END_VAR TEST('Test_ULINT_Equals'); AssertEquals_ULINT(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED(); Failing example: .. code-block:: codesys VAR a : ULINT := 10000; b : ULINT := 53685437234; END_VAR TEST('Test_ULINT_Differ'); AssertEquals_ULINT(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED();ò 1081954271óAssertEquals_ULINTô ULINT expected valueõ ULINT actual valueö$6f1e7566-33c3-4f9c-b92d-7828feb26211÷Ñ | Asserts that two USINT arrays are equal. If they are not, an assertion error is created. Parameters: | Expecteds â USINT array with expected values | Actuals â USINT array with actual values | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : ARRAY[0..100] OF USINT := [42, 100(33)]; b : ARRAY[0..100] OF USINT := [42, 100(33)]; END_VAR TEST('Test_USINT_Array_Equals'); AssertArrayEquals_USINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); Failing example 1: .. code-block:: codesys VAR a : ARRAY[0..100] OF USINT := [101(42)]; b : ARRAY[0..70] OF USINT := [71(42)]; END_VAR TEST('Test_USINT_Array_DifferInSize'); AssertArrayEquals_USINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); Failing example 2: .. code-block:: codesys VAR a : ARRAY[0..10] OF USINT := [0,1,2,3,6(4),5]; b : ARRAY[0..10] OF USINT := [0,1,2,3,6(5),6]; END_VAR TEST('Test_USINT_Array_DifferInContent'); AssertArrayEquals_USINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED();ø 887618224ùAssertArrayEquals_USINTú! USINT array with expected valuesû USINT array with actual valuesü$b3215098-2f26-48bf-a7e4-ee1a0803a968ý 3215331727þGetNumberOfSuccessfulTestsÿ$635213dc-96ca-4be6-9c0d-c0454c29d34d | Asserts that two BYTE arrays are equal. If they are not, an assertion error is created. Parameters: | Expecteds â BYTE array with expected values | Actuals â BYTE array with actual values | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : ARRAY[1..3] OF BYTE := [16#FD, 16#34, 16#9E]; b : ARRAY[1..3] OF BYTE := [16#FD, 16#34, 16#9E]; END_VAR TEST('Test_BYTE_Array_Equals'); AssertArrayEquals_BYTE(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); Failing example 1: .. code-block:: codesys VAR a : ARRAY[1..2] OF BYTE := [16#AB, 16#CD]; b : ARRAY[1..5] OF BYTE := [16#AB, 16#CD, 16#EF, 16#01, 16#23]; END_VAR TEST('Test_BYTE_Array_DiffersInSize'); AssertArrayEquals_BYTE(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); Failing example 2: .. code-block:: codesys VAR a : ARRAY[0..3] OF BYTE := [16#AB, 16#AA, 16#BB, 16#89]; b : ARRAY[0..3] OF BYTE := [16#AB, 16#CD, 16#BB, 16#89]; END_VAR TEST('Test_BYTE_Array_DiffersInContent'); AssertArrayEquals_BYTE(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); 843385749AssertArrayEquals_BYTE BYTE array with expected values BYTE array with actual values ExpectedByteStringActualByteString$375a5287-a3e9-4833-ac17-bab8f3f0fdc9 2859496217 SetTestFailed$3adab5a4-e3e4-4dd7-8096-bf6ad3b874d9ý | Asserts that two WORDs are equal. If they are not, an assertion error is created. Parameters: | Expected â WORD expected value | Actual â WORD actual value | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : WORD := 16#ABCD; b : WORD := 16#ABCD; END_VAR TEST('Test_WORD_Equals'); AssertEquals_WORD(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED(); Failing example: .. code-block:: codesys VAR a : WORD := 16#EF01; b : WORD := 16#2345; END_VAR TEST('Test_WORD_Differ'); AssertEquals_WORD(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED(); 1389270635AssertEquals_WORD WORD expected value WORD actual value$85132cdb-0553-4070-be9a-976fcddd873dÞ | Asserts that two ULINT arrays are equal. If they are not, an assertion error is created. Parameters: | Expecteds â ULINT array with expected values | Actuals â ULINT array with actual values | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : ARRAY[0..3] OF ULINT := [0, 18_446_744_073_709_551_615, 9_400_000_000_000, 3_213_000_444_000]; b : ARRAY[0..3] OF ULINT := [0, 18_446_744_073_709_551_615, 9_400_000_000_000, 3_213_000_444_000]; END_VAR TEST('Test_ULINT_Array_Equals'); AssertArrayEquals_ULINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); Failing example 1: .. code-block:: codesys VAR a : ARRAY[0..1] OF ULINT := [0, 9_400_000_000_000]; b : ARRAY[0..0] OF ULINT := [0]; END_VAR TEST('Test_ULINT_Array_DifferInSize'); AssertArrayEquals_ULINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); Failing example 2: .. code-block:: codesys VAR a : ARRAY[0..1] OF ULINT := [3_213_000_444_000, 9_400_000_000_000]; b : ARRAY[0..1] OF ULINT := [3_213_000_444_000, 18_446_744_073_709_551_615]; END_VAR TEST('Test_ULINT_Array_DifferInContent'); AssertArrayEquals_ULINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); 3439473642AssertArrayEquals_ULINT! ULINT array with expected values ULINT array with actual values$916529a0-57b3-4947-a5b8-e7b9ff17f35f 4055043037IsTestFinished$1ef139e2-1210-4139-ba5c-329f8493b09c | Asserts that two LINTs are equal. If they are not, an assertion error is created. Parameters: | Expected â LINT expected value | Actual â LINT actual value | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : LINT := -123456789; b : LINT := -123456789; END_VAR TEST('Test_LINT_Equals'); AssertEquals_LINT(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED(); Failing example: .. code-block:: codesys VAR a : LINT := -451416345; b : LINT := 589532453; END_VAR TEST('Test_LINT_Differ'); AssertEquals_LINT(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED();9335976AssertEquals_LINT LINT expected value LINT actual value$9dc34017-cbc7-41a9-83a2-941f39cc7271 | Asserts that two objects (of any type) are equal. If they are not, an assertion error is created. | For REAL and LREAL itâs recommended to use the AssertEquals_REAL or AssertEquals_LREAL respectively | as these give the possibility to specify a delta between the expected and actual value. Parameters: | Expected â Expected value | Actual â Actual value | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : INT := 5; b : INT := 5; END_VAR TEST('Test_ANY_Equals'); AssertEquals(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED(); Failing example: .. code-block:: codesys VAR a : INT := 5; b : UINT := 5; END_VAR TEST('Test_ANY_Differ_DataType'); AssertEquals(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED();¡ 2024349150¢AssertEquals£ Expected value¤$ The value to check against expected¥Count¦ExpectedDataString§ActualDataString¨ AnyComparator©FB_ANYCOMPARATORªFB_AnyComparator«boolExpected¬ boolActualbyteExpected® byteActual¯dateExpected° dateActual±dateAndTimeExpected²dateAndTimeActual³dintExpected´ dintActualµ dwordExpected¶dwordActual·intExpected¸ intActual¹lintExpectedº lintActual» lrealExpected¼lrealActual½ ltimeExpected¾ltimeActual¿ lwordExpectedÀlwordActualÁrealExpected realActualÃsintExpectedÄ sintActualÅstringExpectedÆstringActualÇtimeExpectedÈ timeActualÉtimeOfDayExpectedÊtimeOfDayActualË udintExpectedÌudintActualÍuintExpectedÎ uintActualÏ ulintExpectedÐulintActualÑ usintExpectedÒusintActualÓwordExpectedÔ wordActualÕ$092092ee-35b6-45cc-a1ac-e428e5d747baÖª | Asserts that two TIME_OF_DAYs are equal. If they are not, an assertion error is created. Parameters: | Expected â TIME_OF_DAY expected value | Actual â TIME_OF_DAY actual value | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : TIME_OF_DAY := TIME_OF_DAY#06:21:11.492; b : TIME_OF_DAY := TIME_OF_DAY#06:21:11.492; END_VAR TEST('Test_TIME_OF_DAY_Equals'); AssertEquals_TIME_OF_DAY(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED(); Failing example: .. code-block:: codesys VAR a : TIME_OF_DAY := TIME_OF_DAY#15:36:30.123; b : TIME_OF_DAY := TIME_OF_DAY#06:21:11.492; END_VAR TEST('Test_TIME_OF_DAY_Differ'); AssertEquals_TIME_OF_DAY(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED();× 262122215ØAssertEquals_TIME_OF_DAYÙ TIME_OF_DAY expected valueÚ TIME_OF_DAY actual valueÛ$d892dd01-3d32-4eb1-9f95-980dff16616cÜô | Asserts that two USINTs are equal. If they are not, an assertion error is created. Parameters: | Expected â USINT expected value | Actual â USINT actual value | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : USINT := 5; b : USINT := 5; END_VAR TEST('Test_USINT_Equals'); AssertEquals_USINT(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED(); Failing example: .. code-block:: codesys VAR a : USINT := 3; b : USINT := 7; END_VAR TEST('Test_USINT_Differ'); AssertEquals_USINT(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED();Ý 2368473972ÞAssertEquals_USINTß USINT expected valueà USINT actual valueá$7f12117a-f0ab-475b-ba47-c8a5c801a9acâ² | Asserts that two DINT arrays are equal. If they are not, an assertion error is created. Parameters: | Expecteds â DINT array with expected values | Actuals â DINT array with actual values | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : ARRAY[2..7] OF DINT := [64, 98, 2147483647, -2147483648, 0, -63987538]; b : ARRAY[2..7] OF DINT := [64, 98, 2147483647, -2147483648, 0, -63987538]; END_VAR TEST('Test_DINT_Array_Equals'); AssertArrayEquals_DINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); Failing example 1: .. code-block:: codesys VAR a : ARRAY[3..4] OF DINT := [-11, 2147483647]; b : ARRAY[4..6] OF DINT := [-11, 2147483647, 0]; END_VAR TEST('Test_DINT_Array_DifferInSize'); AssertArrayEquals_DINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); Failing example 2: .. code-block:: codesys VAR a : ARRAY[3..5] OF DINT := [-4746, -2147483645, 0]; b : ARRAY[3..5] OF DINT := [-4746, -2147483641, 0]; END_VAR TEST('Test_DINT_Array_DifferInContent'); AssertArrayEquals_DINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED();ã 448306293äAssertArrayEquals_DINTå DINT array with expected valuesæ DINT array with actual valuesç$4f0d9b20-0c78-467d-a52a-6badbd5d37ccèï | Asserts that two SINTs are equal. If they are not, an assertion error is created. Parameters: | Expected â SINT expected value | Actual â SINT actual value | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : SINT := -128; b : SINT := -128; END_VAR TEST('Test_SINT_Equals'); AssertEquals_SINT(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED(); Failing example: .. code-block:: codesys VAR a : SINT := 127; b : SINT := -30; END_VAR TEST('Test_SINT_Differ'); AssertEquals_SINT(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED();é 2975568326êAssertEquals_SINTë SINT expected valueì SINT actual valueí$10052dfe-cfcb-4a5a-aa97-151e272ce217î 3094313462ïGetNumberOfTestsð$6f67c6d5-c29e-4577-8651-51bd6db3ab63ñ | Asserts that two LREALs are equal to within a positive delta. If they are not, an assertion error is created. Parameters: | Expected â LREAL expected value | Actual â LREAL actual value | Delta â The maximum delta between the absolute value of expected and actual for which both numbers are still considered equal | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : LREAL := 1234567.89; b : LREAL := 1234567.76; END_VAR TEST('Test_LREAL_Equals'); AssertEquals_LREAL(Expected := a, Actual := b, Delta := 0.2, Message := 'Values differ'); TEST_FINISHED(); Failing example: .. code-block:: codesys VAR a : LREAL := 1234567.89; b : LREAL := 1234567.76; END_VAR TEST('Test_LREAL_Differ'); AssertEquals_LREAL(Expected := a, Actual := b, Delta := 0.1, Message := 'Values differ'); TEST_FINISHED(); ò 3690545254óAssertEquals_LREALô LREAL expected valueõ LREAL actual valueöv The maximum delta between the absolute value of expected and actual for which both numbers are still considered equal÷$205d107c-0a2d-44f7-b68a-eb06720b6a6bø 4117816331ùÍ Parameters: | Expecteds â REAL 2d array with expected values | Actuals â REAL 2d array with actual values | Delta - REAL The maximum delta between the value of expected and actual for which both numbers are still considered equal, proportional to the Expected value in that array cell | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys <insert positive testexample here> TEST_FINISHED(); Failing example 1: .. code-block:: codesys <insert failing testexample1 here> TEST_FINISHED(); Failing example 2: .. code-block:: codesys <insert failing testexample2 here> TEST_FINISHED();ú 4044968825ûAssertArray2dEquals_REALü# REAL 2d array with expected valuesý2þ! REAL 2d array with actual valuesÿ& Index when looping through DimensionsDimensionIndex2 Lower bounds of Expecteds array in each dimensionLowerBoundExpecteds2 Upper bounds of Expecteds array in each dimensionUpperBoundExpecteds 0 Lower bounds of Actuals array in each dimensionLowerBoundActuals0 Upper bounds of Actuals array in each dimensionUpperBoundActuals* Size of Expecteds array in each dimension( Size of Actuals array in each dimension? Current Array index offsets from Lower Bound in each dimensionOffsetD Array of current Expected array indexes when looping through arraysExpectedArrayIndexB Array of current Actual array indexes when looping through arraysActualArrayIndex Single expected value Single actual value$dc3b5666-7b5a-49ae-9837-cbb9bedd911a 598611264AddTestNameToInstancePathCompleteTestInstancePath$abecfe2f-b0e2-4118-a1c6-bb248556b776 Asserts that a condition is true. If it is not, an assertion error is created. Parameters: | Condition â Condition to be checked | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : WORD := 16#ABCD; b : WORD := 16#0123; END_VAR TEST('AssertThatWORDsAreNotEqual'); AssertTrue(Condition := (a <> b), Message := 'WORDs are equal'); TEST_FINISHED(); Failing example: .. code-block:: codesys VAR a : WORD := 16#ABCD; b : WORD := 16#0123; END_VAR TEST('AssertThatWORDsAreEqual'); AssertTrue(Condition := (a = b), Message := 'WORDs are not equal'); TEST_FINISHED(); 1043909239 AssertTrue Condition to be checked Condition$c415013c-c271-42ba-83ad-6c2c653d8f2eÐ Parameters: | Expecteds â LREAL 3d array with expected values | Actuals â LREAL 3d array with actual values | Delta - LREAL The maximum delta between the value of expected and actual for which both numbers are still considered equal, proportional to the Expected value in that array cell | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys <insert positive testexample here> TEST_FINISHED(); Failing example 1: .. code-block:: codesys <insert failing testexample1 here> TEST_FINISHED(); Failing example 2: .. code-block:: codesys <insert failing testexample2 here> TEST_FINISHED(); 3893451479 AssertArray3dEquals_LREAL¡$ LREAL 3d array with expected values¢3£" LREAL 3d array with actual values¤$251da4d5-4df8-4eed-b154-a479323eb0d5¥é | Asserts that two INTs are equal. If they are not, an assertion error is created. Parameters: | Expected â INT expected value | Actual â INT actual value | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : INT := -12345; b : INT := -12345; END_VAR TEST('Test_INT_Equals'); AssertEquals_INT(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED(); Failing example: .. code-block:: codesys VAR a : INT := -32000; b : INT := 15423; END_VAR TEST('Test_INT_Differ'); AssertEquals_INT(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED();¦ 292426684§AssertEquals_INT¨ INT expected value© INT actual valueª$7c61106e-9bcd-4577-a949-ab96d8862e41«¤ | Asserts that two DATEs are equal. If they are not, an assertion error is created. Parameters: | Expected â DATE expected value | Actual â DATE actual value | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : DATE := DATE#1996-05-06; b : DATE := DATE#1996-05-06; END_VAR TEST('Test_DATE_Equals'); AssertEquals_DATE(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED(); Failing example: .. code-block:: codesys VAR a : DATE := DATE#1996-05-06; b : DATE := DATE#2019-01-20; END_VAR TEST('Test_DATE_Differ'); AssertEquals_DATE(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED(); ¬ 246969074AssertEquals_DATE® DATE expected value¯ DATE actual value°$1645ab79-f969-41aa-a170-f589a5757e7f± | Asserts that two DWORDs are equal. If they are not, an assertion error is created. Parameters: | Expected â DWORD expected value | Actual â DWORD actual value | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : DWORD := 16#7890ABCD; b : DWORD := 16#7890ABCD; END_VAR TEST('Test_DWORD_Equals'); AssertEquals_DWORD(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED(); Failing example: .. code-block:: codesys VAR a : DWORD := 16#12345678; b : DWORD := 16#90ABCDEF; END_VAR TEST('Test_DWORD_Differ'); AssertEquals_DWORD(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED();² 1252105877³AssertEquals_DWORD´ DWORD expected valueµ DWORD actual value¶$3ce6ba77-0ab2-46fc-a7c9-978b376b93be·é | Asserts that two REALs are equal to within a positive delta. If they are not, an assertion error is created. Parameters: | Expected â REAL expected value | Actual â REAL actual value | Delta â The maximum delta between the absolute value of expected and actual for which both numbers are still considered equal | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : REAL := 1234.5; b : REAL := 1234.4; END_VAR TEST('Test_REAL_Equals'); AssertEquals_REAL(Expected := a, Actual := b, Delta := 0.1, Message := 'Values differ'); TEST_FINISHED(); Failing example: .. code-block:: codesys VAR a : REAL := 1234.5; b : REAL := 1234.4; END_VAR TEST('Test_REAL_Differ'); AssertEquals_REAL(Expected := a, Actual := b, Delta := 0.05, Message := 'Values differ'); TEST_FINISHED();¸ 4233966449¹AssertEquals_REALº REAL expected value» REAL actual value¼$fba4feaf-27d0-4f8b-9014-3895f7bb9cc7½ | Asserts that two UDINTs are equal. If they are not, an assertion error is created. Parameters: | Expected â UDINT expected value | Actual â UDINT actual value | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : UDINT := 21845123; b : UDINT := 21845123; END_VAR TEST('Test_UDINT_Equals'); AssertEquals_UDINT(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED(); Failing example: .. code-block:: codesys VAR a : UDINT := 34124214; b : UDINT := 52343244; END_VAR TEST('Test_UDINT_Differ'); AssertEquals_UDINT(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED();¾ 3714610654¿AssertEquals_UDINTÀ UDINT expected valueÁ UDINT actual valueÂ$9c21e8db-62d7-4e5c-8e00-cd508f4f5abcÃþ | Asserts that two LTIMEs are equal. If they are not, an assertion error is created. Parameters: | Expected â LTIME expected value | Actual â LTIME actual value | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : LTIME := LTIME#213503D23H34M33S709MS551US615NS; b : LTIME := LTIME#213503D23H34M33S709MS551US615NS; END_VAR TEST('Test_LTIME_Equals'); AssertEquals_LTIME(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED(); Failing example: .. code-block:: codesys VAR a : LTIME := LTIME#213503D23H34M33S709MS551US615NS; b : LTIME := LTIME#1000D15H23M12S34MS2US44NS; END_VAR TEST('Test_LTIME_Differ'); AssertEquals_LTIME(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED();Ä 3081469954ÅAssertEquals_LTIMEÆ LTIME expected valueÇ LTIME actual valueÈ$05ea6378-c553-40a9-9e6b-8f3736f63098É· | Asserts that two SINT arrays are equal. If they are not, an assertion error is created. Parameters: | Expecteds â SINT array with expected values | Actuals â SINT array with actual values | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : ARRAY[0..3] OF SINT := [-128, 127, -34, 62]; b : ARRAY[0..3] OF SINT := [-128, 127, -34, 62]; END_VAR TEST('Test_SINT_Array_Equals'); AssertArrayEquals_SINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); Failing example 1: .. code-block:: codesys VAR a : ARRAY[0..0] OF SINT := [-128]; b : ARRAY[0..1] OF SINT := [-128, 127]; END_VAR TEST('Test_SINT_Array_DifferInSize'); AssertArrayEquals_SINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); Failing example 2: .. code-block:: codesys VAR a : ARRAY[0..0] OF SINT := [-128]; b : ARRAY[0..0] OF SINT := [127]; END_VAR TEST('Test_SINT_Array_DifferInContent'); AssertArrayEquals_SINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED();Ê 167706794ËAssertArrayEquals_SINTÌ SINT array with expected valuesÍ SINT array with actual valuesÎ$133c577e-0641-4157-b42b-46dbf29f788eÏ | Asserts that two TIMEs are equal. If they are not, an assertion error is created. Parameters: | Expected â TIME expected value | Actual â TIME actual value | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : TIME := T#11H34M13S244MS; b : TIME := T#11H34M13S244MS; END_VAR TEST('Test_TIME_Equals'); AssertEquals_TIME(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED(); Failing example: .. code-block:: codesys VAR a : TIME := T#12H34M15S10MS; b : TIME := T#11H34M13S244MS; END_VAR TEST('Test_TIME_Differ'); AssertEquals_TIME(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED();Ð 3910873930ÑAssertEquals_TIMEÒ TIME expected valueÓ TIME actual valueÔ$717a0cdd-16a7-4f45-90f3-f5700dba9369Õì | Asserts that two DATE_AND_TIMEs are equal. If they are not, an assertion error is created. Parameters: | Expected â DATE_AND_TIME expected value | Actual â DATE_AND_TIME actual value | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : DATE_AND_TIME := DATE_AND_TIME#2019-01-20-13:54:30; b : DATE_AND_TIME := DATE_AND_TIME#2019-01-20-13:54:30; END_VAR TEST('Test_DATE_AND_TIME_Equals'); AssertEquals_DATE_AND_TIME(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED(); Failing example: .. code-block:: codesys VAR a : DATE_AND_TIME := DATE_AND_TIME#1996-05-06-15:36:30; b : DATE_AND_TIME := DATE_AND_TIME#1972-03-29-00:00:00; END_VAR TEST('Test_DATE_AND_TIME_Differ'); AssertEquals_DATE_AND_TIME(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED();Ö 1401989022×AssertEquals_DATE_AND_TIMEØ DATE_AND_TIME expected valueÙ DATE_AND_TIME actual valueÚ$42befc01-2199-49e2-b7ef-cf909b8890f9ÛÍ Parameters: | Expecteds â REAL 3d array with expected values | Actuals â REAL 3d array with actual values | Delta - REAL The maximum delta between the value of expected and actual for which both numbers are still considered equal, proportional to the Expected value in that array cell | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys <insert positive testexample here> TEST_FINISHED(); Failing example 1: .. code-block:: codesys <insert failing testexample1 here> TEST_FINISHED(); Failing example 2: .. code-block:: codesys <insert failing testexample2 here> TEST_FINISHED();Ü 1606741492ÝAssertArray3dEquals_REALÞ# REAL 3d array with expected valuesß! REAL 3d array with actual valuesà$0dc8fccf-4b9a-4206-8d9f-212f576edb04á 4262076380âFB_initãH if TRUE, the retain variables are initialized (warm start / cold start)äO if TRUE, the instance afterwards gets moved into the copy code (online change)å$9273f5af-0583-448b-bab6-3359f03f9b91æ | Asserts that two DINTs are equal. If they are not, an assertion error is created. Parameters: | Expected â BYTE expected value | Actual â BYTE actual value | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : DINT := -80000; b : DINT := -80000; END_VAR TEST('Test_DINT_Equals'); AssertEquals_DINT(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED(); Failing example: .. code-block:: codesys VAR a : DINT := -55555; b : DINT := 70000; END_VAR TEST('Test_DINT_Differ'); AssertEquals_DINT(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED(); ç 1997820164èAssertEquals_DINTé DINT expected valueê DINT actual valueë$b7177b75-64df-4021-85c6-c366f61f5f89ìä | Asserts that two UDINT arrays are equal. If they are not, an assertion error is created. Parameters: | Expecteds â UDINT array with expected values | Actuals â UDINT array with actual values | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : ARRAY[1..3] OF UDINT := [0, 4294967295, 5000]; b : ARRAY[1..3] OF UDINT := [0, 4294967295, 5000]; END_VAR TEST('Test_UDINT_Array_Equals'); AssertArrayEquals_UDINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); Failing example 1: .. code-block:: codesys a : ARRAY[-5..-4] OF UDINT := [4294967295, 0]; b : ARRAY[0..2] OF UDINT := [4294967295, 0, 5000]; END_VAR TEST('Test_UDINT_Array_DifferInSize'); AssertArrayEquals_UDINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); Failing example 2: .. code-block:: codesys VAR a : ARRAY[-5..-4] OF UDINT := [4294967295, 5]; b : ARRAY[0..1] OF UDINT := [4294967295, 4]; END_VAR TEST('Test_UDINT_Array_DifferInContent'); AssertArrayEquals_UDINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED();í 523934130îAssertArrayEquals_UDINTï! UDINT array with expected valuesð UDINT array with actual valuesñ$5f690331-57e2-4ea1-b1d7-ab65b52dc848ò | Asserts that two INT arrays are equal. If they are not, an assertion error is created. Parameters: | Expecteds â INT array with expected values | Actuals â INT array with actual values | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : ARRAY[-5..1] OF INT := [64, 98, -32768, 32767, 5478, -378, 42]; b : ARRAY[1..7] OF INT := [64, 98, -32768, 32767, 5478, -378, 42]; END_VAR TEST('Test_INT_Array_Equals'); AssertArrayEquals_INT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); Failing example 1: .. code-block:: codesys VAR a : ARRAY[-4..3] OF INT := [64, 98, -32768, 32767, 5478, -378, 42, 6234]; b : ARRAY[1..5] OF INT := [64, 98, -32768, 32767, 5478]; END_VAR TEST('Test_INT_Array_DifferInSize'); AssertArrayEquals_INT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); Failing example 2: .. code-block:: codesys VAR a : ARRAY[-8..-6] OF INT := [42, -23, -32768]; b : ARRAY[1..3] OF INT := [42, 24, -32768]; END_VAR TEST('Test_INT_Array_DifferInContent'); AssertArrayEquals_INT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED();ó 528458294ôAssertArrayEquals_INTõ INT array with expected valuesö INT array with actual values÷$d54cf111-a7e7-4f51-bdf4-9853e055f62dø | Asserts that a condition is false. If it is not, an assertion error is created. Parameters: | Condition â Condition to be checked | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : INT := -33; b : INT := -44; END_VAR TEST('AssertThatINTsAreNotEqual'); AssertFalse(Condition := (a = b), Message := 'INTs are equal'); TEST_FINISHED(); Failing example: .. code-block:: codesys VAR a : INT := -33; b : INT := -44; END_VAR TEST('AssertThatINTsAreEqual'); AssertFalse(Condition := (a <> b), Message := 'INTs are equal'); TEST_FINISHED(); ù 1993015657úAssertFalseû$022665a8-9003-4aaa-8ef4-bd39fe196883ü 614213211ýGetNumberOfFailedTestsþFailedTestsCountÿ$12e4522b-e67f-439a-af1d-8713231888aaÈ | Asserts that two LINT arrays are equal. If they are not, an assertion error is created. Parameters: | Expecteds â LINT array with expected values | Actuals â LINT array with actual values | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : ARRAY[-1..0] OF LINT := [9_223_372_036_854_775_807, -9_223_372_036_854_775_808]; b : ARRAY[4..5] OF LINT := [9_223_372_036_854_775_807, -9_223_372_036_854_775_808]; END_VAR TEST('Test_LINT_Array_Equals'); AssertArrayEquals_LINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); Failing example 1: .. code-block:: codesys VAR a : ARRAY[-1..1] OF LINT := [9_223_372_036_854_775_807, -9_223_372_036_854_775_808, 55]; b : ARRAY[4..5] OF LINT := [9_223_372_036_854_775_807, -9_223_372_036_854_775_808]; END_VAR TEST('Test_LINT_Array_DifferInSize'); AssertArrayEquals_LINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); Failing example 2: .. code-block:: codesys VAR a : ARRAY[-1..1] OF LINT := [9_223_372_036_854_775_807, -9_223_372_036_853_775_808, 55]; b : ARRAY[4..6] OF LINT := [9_223_372_036_854_775_807, -9_223_372_036_854_775_808, 55]; END_VAR TEST('Test_LINT_Array_DifferInContent'); AssertArrayEquals_LINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); 2145025305AssertArrayEquals_LINT LINT array with expected values LINT array with actual values $d7e53e6b-caed-4867-9ef5-3ccb7ae16bf8í | Asserts that two LWORD arrays are equal. If they are not, an assertion error is created. Parameters: | Expecteds â LWORD array with expected values | Actuals â LWORD array with actual values | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : ARRAY[1..2] OF LWORD := [16#01234567890ABCDE, 16#EDCBA09876543210]; b : ARRAY[1..2] OF LWORD := [16#01234567890ABCDE, 16#EDCBA09876543210]; END_VAR TEST('Test_LWORD_Array_Equals'); AssertArrayEquals_LWORD(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); Failing example 1: .. code-block:: codesys VAR a : ARRAY[1..1] OF LWORD := [16#EDCBA09876543210]; b : ARRAY[1..2] OF LWORD := [16#01234567890ABCDE, 16#EDCBA09876543210]; END_VAR TEST('Test_LWORD_Array_DifferInSize'); AssertArrayEquals_LWORD(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); Failing example 2: .. code-block:: codesys VAR a : ARRAY[1..1] OF LWORD := [16#EDCBA09876543210]; b : ARRAY[1..1] OF LWORD := [16#01234567890ABCDE]; END_VAR TEST('Test_LWORD_Array_DifferInContent'); AssertArrayEquals_LWORD(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); 2393999758AssertArrayEquals_LWORD! LWORD array with expected values LWORD array with actual values$7bc0c786-fccc-46e3-b38f-2013c44bfcb0S This method returns the test at the n'th position, ranging from 1.. NumberOfTests 316618143GetTestByPositionPosition$3795ba6c-bb70-4d36-8d46-fa6431157992¼ | Asserts that two LWORDs are equal. If they are not, an assertion error is created. Parameters: | Expected â LWORD expected value | Actual â LWORD actual value | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : LWORD := 16#0123456789ABCDEF; b : LWORD := 16#0123456789ABCDEF; END_VAR TEST('Test_LWORD_Equals'); AssertEquals_LWORD(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED(); Failing example: .. code-block:: codesys VAR a : LWORD := 16#0123656789ABCBEC; b : LWORD := 16#0123256789ABCAEE; END_VAR TEST('Test_LWORD_Differ'); AssertEquals_LWORD(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED(); 2981194089AssertEquals_LWORD LWORD expected value LWORD actual value$08b090fb-911b-49fa-a51a-7f5edfd3dd2cÐ Parameters: | Expecteds â LREAL 2d array with expected values | Actuals â LREAL 2d array with actual values | Delta - LREAL The maximum delta between the value of expected and actual for which both numbers are still considered equal, proportional to the Expected value in that array cell | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys <insert positive testexample here> TEST_FINISHED(); Failing example 1: .. code-block:: codesys <insert failing testexample1 here> TEST_FINISHED(); Failing example 2: .. code-block:: codesys <insert failing testexample2 here> TEST_FINISHED(); 3118050793AssertArray2dEquals_LREAL$ LREAL 2d array with expected values" LREAL 2d array with actual values$964c2fec-9de7-47ae-bee4-23c559ae4a3f 355422951ß Asserts that two BOOL arrays are equal. If they are not, an assertion error is created. Parameters: * Expecteds â BOOL array with expected values * Actuals â BOOL array with actual values * Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : ARRAY[1..5] OF BOOL := [TRUE, FALSE, TRUE, FALSE, TRUE]; b : ARRAY[1..5] OF BOOL := [TRUE, FALSE, TRUE, FALSE, TRUE]; END_VAR TEST('Test_BOOL_Array_Equals'); AssertArrayEquals_BOOL(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); Failing example 1: .. code-block:: codesys VAR a : ARRAY[1..6] OF BOOL := [TRUE, TRUE, TRUE, TRUE, TRUE, TRUE]; b : ARRAY[1..4] OF BOOL := [TRUE, TRUE, TRUE, TRUE]; END_VAR TEST('Test_BYTE_Array_DiffersInSize'); AssertArrayEquals_BOOL(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); Failing example 2: .. code-block:: codesys VAR a : ARRAY[0..5] OF BOOL := [TRUE, TRUE, FALSE, TRUE, FALSE, TRUE]; b : ARRAY[0..5] OF BOOL := [TRUE, TRUE, TRUE, TRUE, FALSE, FALSE]; END_VAR TEST('Test_BYTE_Array_DiffersInContent'); AssertArrayEquals_BOOL(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); 2327915240 AssertArrayEquals_BOOL¡ BOOL array with expected values¢ BOOL array with actual values£$3d4059ab-c241-4859-9a9f-090cab6db606¤ 1486870384¥AreAllTestsFinished¦$2b211901-49a8-4e51-90e1-4b1e298f9e0c§ 1475975773¨AddTest©ErrorMessageªFunctionCallResult«TestWithThisNameAlreadyExists¬LowerCasedTestNameTrimmedTestName®$d383011f-6bea-4b05-9018-ea4782ad2837¯ 2609692221° | Asserts that two DWORD arrays are equal. If they are not, an assertion error is created. Parameters: | Expecteds â DWORD array with expected values | Actuals â DWORD array with actual values | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : ARRAY[2..3] OF DWORD := [16#6789ABCD, 16#EF012345]; b : ARRAY[1..2] OF DWORD := [16#6789ABCD, 16#EF012345]; END_VAR TEST('Test_DWORD_Array_Equals'); AssertArrayEquals_DWORD(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); Failing example 1: .. code-block:: codesys VAR a : ARRAY[-2..1] OF DWORD := [16#6789ABCD, 16#EF012345, 16#67890ABC, 16#DDDDDDDD]; b : ARRAY[-3..-2] OF DWORD := [16#6789ABCD, 16#EF012345]; END_VAR TEST('Test_DWORD_Array_DifferInSize'); AssertArrayEquals_DWORD(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); Failing example 2: .. code-block:: codesys VAR a : ARRAY[-2..1] OF DWORD := [16#6789ABCD, 16#EFAA2346, 16#ABABABAB, 16#EEEEEEEE]; b : ARRAY[-2..1] OF DWORD := [16#6789ABCD, 16#EF012345, 16#ABABABAB, 16#EEEEEEEE]; END_VAR TEST('Test_DWORD_Array_DifferInContent'); AssertArrayEquals_DWORD(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED();± 2193117219²AssertArrayEquals_DWORD³! DWORD array with expected values´ DWORD array with actual valuesµ$eec9d02d-95a1-4885-9906-ad4b2d0f4cab¶= Searches for the instance path of the calling function block· 1936542576¸FindTestSuiteInstancePath¹$e69a4510-81a2-4d65-94e4-52c06ac49944ºö | Asserts that two BYTEs are equal. If they are not, an assertion error is created. Parameters: | Expected â BYTE expected value | Actual â BYTE actual value | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : BYTE := 16#CD; b : BYTE := 16#CD; END_VAR TEST('Test_BYTE_Equals'); AssertEquals_BYTE(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED(); Failing example: .. code-block:: codesys VAR a : BYTE := 16#AB; b : BYTE := 16#CD; END_VAR TEST('Test_BYTE_Differ'); AssertEquals_BYTE(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED();» 268346097¼AssertEquals_BYTE½ BYTE expected value¾ BYTE actual value¿$c039f3f1-9c41-4f5e-93a3-393ce160979aÀ÷ | Asserts that two UINTs are equal. If they are not, an assertion error is created. Parameters: | Expected â UINT expected value | Actual â UINT actual value | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : UINT := 65535; b : UINT := 65535; END_VAR TEST('Test_UINT_Equals'); AssertEquals_UINT(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED(); Failing example: .. code-block:: codesys VAR a : UINT := 64322; b : UINT := 32312; END_VAR TEST('Test_UINT_Differ'); AssertEquals_UINT(Expected := a, Actual := b, Message := 'Values differ'); TEST_FINISHED(); Á 455476556ÂAssertEquals_UINTà UINT expected valueÄ UINT actual valueÅ$86b960b9-ebc0-46af-91ed-94a423f501dcÆ 2084092420ÇGetInstancePathÈ$178fa338-5ed3-417b-8f4d-e9f120ace4b9É Marks the test as finished in this testsuite. Returns TRUE if test was found, and FALSE if a test with this name was not found in this testsuite Ê 3967847859ËSetTestFinishedÌ$1ec94335-80d7-46d3-a0f0-345f8eda2ea4ÍÓ | Asserts that two UINT arrays are equal. If they are not, an assertion error is created. Parameters: | Expecteds â UINT array with expected values | Actuals â UINT array with actual values | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : ARRAY[0..4] OF UINT := [0, 65535, 2000, 34123, 59]; b : ARRAY[0..4] OF UINT := [0, 65535, 2000, 34123, 59]; END_VAR TEST('Test_UINT_Array_Equals'); AssertArrayEquals_UINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); Failing example 1: .. code-block:: codesys VAR a : ARRAY[0..2] OF UINT := [0, 4, 8]; b : ARRAY[0..3] OF UINT := [0, 4, 8, 12]; END_VAR TEST('Test_UINT_Array_DifferInSize'); AssertArrayEquals_UINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED(); Failing example 2: .. code-block:: codesys VAR a : ARRAY[0..3] OF UINT := [0, 4, 8, 99]; b : ARRAY[0..3] OF UINT := [0, 4, 8, 12]; END_VAR TEST('Test_UINT_Array_DifferInContent'); AssertArrayEquals_UINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); TEST_FINISHED();Î 1542196384ÏAssertArrayEquals_UINTÐ UINT array with expected valuesÑ UINT array with actual valuesÒ$358571ac-0a0d-4e71-8097-c7943f718fceÓ 405680698Ô | Asserts that two LREALs are equal TO within a positive delta. IF they are NOT, an assertion error is created. Parameters: | Expected â LREAL expected value | Actual â LREAL actual value | Delta â The maximum delta between the absolute value of expected and actual for which both numbers are still considered equal | Message â The identifying message for the assertion error Positive example: .. code-block:: codesys VAR a : LREAL := 1234567.89; b : LREAL := 1234567.76; END_VAR TEST('Test_LREAL_Equals'); AssertEquals_LREAL(Expected := a, Actual := b, Delta := 0.2, Message := 'Values differ'); TEST_FINISHED(); Failing example: VAR a : LREAL := 1234567.89; b : LREAL := 1234567.76; END_VAR TEST('Test_LREAL_Differ'); AssertEquals_LREAL(Expected := a, Actual := b, Delta := 0.1, Message := 'Values differ'); TEST_FINISHED(); Õ 3785330774ÖAssertArrayEquals_LREAL×! LREAL array with expected valuesØ LREAL array with actual valuesÙ$fbc23ff0-cdf6-43f2-82cd-e6f3a7903664Ú Jitter distributionÛ 3779252147Ü Maximal rangeÝ wRangeMaxÞ Jitters events negativeßwCountJitterNegà Jitter event positiveáwCountJitterPosâ 1489059357ã$f914311f-5c52-4cd5-b2c8-3263a1508247äË This function block is responsible for making sure that the asserted test instance path and test message are not loo long. The total printed message can not be more than 252 characters long. å 3001289633æ Test instance pathçMsgFmtStringè Test messageé StringArgêMsgFmtStringProcessedëStringArgProcessedìMsgFmtStringTempí...TestName too longîTestNameTooLongï...TestMsg too longðTestMsgTooLongñX This is actually 253, but if StrArg-argument is used (which it is in TcUnit) it is 252.ò'MSG_FMT_STRING_MAX_AMOUNT_OF_CHARACTERSóILocal, ReplacedConstant, Constant, IsCompiled, RelativeInstance, Typifiedô 228984903õ$d7648cea-fb9f-427f-b157-93784e5b7cabö 3505840675÷ 197406720ø 2734844869ù 3297551346ú 2662650258ûdiLowerüdiUpperý 3465986364þ$c2d24aa9-2fc9-4f89-80ac-14d9f558122aÿ 319472823Ë This FB compares two instances of any object type and returns whether they are the same type, size and value or not. This is necessary for two reasons: 1. So that we can know exactly what differs between the two input parameters 2. It's not possible to do a comparison (= or <>) between two instances of ANY. 797308994AnyValueOne.pValueAnyValueOne__pValueAnyValueOne.TypeClass AnyValueOne__typeClassAnyValueOne.diSizeAnyValueOne__sizeOfAnyValueOneAnyValueTwo.pValueAnyValueTwo__pValueAnyValueTwo.TypeClassAnyValueTwo__typeClassAnyValueTwo.diSizeAnyValueTwo__sizeOfAnyValueTwo< The data type of the two ANY input parameters are not equal< The data size of the two ANY input parameters are not equal? The data content of the two ANY input parameters are not equal 3159686021$e4f95c0d-0ece-47a8-977f-f9d45a4f920e 390107427211252403 173265148 958090425 2765784940_Implicit_Task_InfoKindOf_IMPLICIT_KINDOFTASKbProfilingTaskdwLastCycleTimediJitter diJitterMin¡diJitterMax¢wTaskStatus£_IMPLICIT_JITTER_DISTRIBUTION¤_Implicit_Jitter_Distribution¥bWithinSPSTimeSlicing¦bShouldBlock§bActive¨nCoreConfigured©nCoreCurrentª pTaskGroup«_IMPLICIT_TASKGROUP_INFO¬_Implicit_TaskGroup_InfopszParentTaskName® 3064147540¯$c4b8e551-3215-5dbb-9355-8dcf3e162bd6° 4288098520± 1363320977² 235137531³$87c49645-6ce5-5bcf-bae6-132a41e0c4aa´ 2880228939µ 2164913627¶pszGroupName·dwTaskGroupOptions¸ diMaxCores¹parrdwCoreBitsº 638065670»$3f237607-46ae-5106-b06d-831888578227¼ 187872831½ 2860490203¾$e6fb6cf6-9591-477a-a303-fdedaad04613¿ __OffsetIBASEÀADDREFÁ FB_REINITÂQUERYINTERFACEÃRELEASEÄcompatibility_idÅ$76B148E2-3A84-40c4-8BF2-2FBE56618A2FÆ 2439911566Ç$de784a2a-6a84-4c6b-a64b-74bfc4713c79È 1835024534ÉFB_ExitÊ$d4f5d20f-e146-4306-9ffb-0b952fe8bdb2Ë 805362587ÌQueryInterfaceÍ InterfaceID ÎiidÏ$eac54f77-5545-412a-8930-013043c93f65Ð 3642965170ÑReleaseÒ$13829801-a5ee-4705-bf92-a3430e33fe75Ó 951162479ÔAddRefÕ$63704945-b29a-4e6d-b620-0cc4c326d5f8Ö 189822725× FB_ReinitØ$e129df86-3969-4c96-8e86-63bc2fcd6c83Ù 331523042ÚVERSIONÛuiMajorÜuiMinorÝ uiServicePackÞuiPatchß 3231598516à$5181460b-9464-4c0f-82f2-1f9633a4c34eá 1518820524âTWOPLUSTWOEQUALSFOURãZEROPLUSZEROEQUALSZEROäCfUnitå 4004392889æFB_Sum_Testç 2468246447èFB_SUM_TESTé$69b661ca-5faa-43bb-8b8a-2cae13b2cfe4ê 3804393560ëTwoPlusTwoEqualsFourìSumíFB_SUMîFB_SumïResultðExpectedSumñ$071ba4c3-fe0d-4b0b-be72-a320c9d403a4ò 470409468ó 4018862981ôZeroPlusZeroEqualsZeroõ$ac47aa92-0e7a-4876-b0ac-7ef29219d372ö 635803319÷ 1660718324ø 3010342448ù 212020793ú 476154767ûPRG_TESTü fbSum_Testý1Local, IsCompiled, Absolut, Initialized, Typifiedþ$5e8cc903-e536-40be-a096-d6b305fbb618ÿ 1368625671onetworesult 323964421$8328f7d8-1dbc-4e08-98b0-eb6438d2b355 855406638 228684100 2173869412 1334945094 204906898 2338394504_Implicit_Task_Config_InfoTODO eventtaskswVersionnNumOfTaskspszApplicationNameptasks 3669029852_IMPLICIT_TASK_CONFIG_INFO$00bdef65-acea-502d-a09a-9b27b86d5df1 1234088797 1833442206__sys__setup__tasks$a7f75517-fce3-59d9-a7f4-75773ea190a0 <SIL2/> 830427680LogAdd2hLoggerudiCmpID udiClassID udiErrorID udiInfoID pszInfo¡$f782c8f1-3e37-44f5-9ca0-ba40c1145169¢cmplog, 3.5.5.0 (system)£ 2222278874¤__HelpConvertDate¥ppstr¦nYear§nMonth¨nDay©DayOfMonthTableª$1c137676-f66f-428c-af12-54699e1772b8« 2130786092¬__HelpConvertTimedwHour®dwMinute¯dwSecond° dwMilliSecond±$13c0f538-7207-41d3-8311-a322a7c20a0e² 3586288056³__HelpConvertTimeWithUnit´dwDayµ$50f01a4a-c350-4e6e-9dfa-0c242ec58ce8¶ 371843759· __HelpConvert¸UDInt¹$fdd0113a-d0f8-4f19-bc73-fa6acf9ecc59º 1562513299» __ExtractReal¼L True iff f is infinity, diM = 1 for +Infinity and -1 for -Infinity, iE is 0½f¾iE¿diMÀxNaNÁuiEÂudiMÃ$b4fbe026-742b-4541-9a4b-a710de7d376cÄ 2223293048Å__HelpConvertLTimeWithUnitÆlwDayÇlwHourÈlwMinuteÉlwSecondÊ lwMilliSecondË lwMicroSecondÌlwNanoSecondÍ$9b7fa8d4-59a0-43f0-a610-be7bd5350ad9Î 1212736547Ï__ExtractLRealÐdÑudiEÒuliMÓ$0ffc8285-5cf0-4854-bfbf-cfca06799935Ô 3132572671Õ__HelpRealConvertÖpnBegin×nDigØdBeginÙdDivÚbNegÛ nHelpBeginÜdDiffÝ$e6a8a736-c389-4a55-8363-2e30c26fed79ÞÈ Concatenates two strings ``CONCAT(STR1,STR2)`` means: Connect ``STR1`` and ``STR2`` to a single string ``STR1STR2``. .. code-block:: codesys (* Example declaration *) VarSTRING1 : STRING ; (* Example in ST , result is 'SUSIWILLI' *) VarSTRING1 := CONCAT ('SUSI','WILLI'); :return: Concatenated string, max. 255 characters. If the result doesn't fit into these 255 bytes, it will be silently truncated. No error is produced. .. cds:ranges:: :STR1: |StringRange255| :STR2: |StringRange255| .. |StringRange255| replace:: [NULL_STRING,TERMINATED_STRING_LEN0..TERMINATED_STRING_LEN127,TERMINATED_STRING_LEN128..TERMINATED_STRING_LEN255,UNTERMINATED_STRING] ß 2972623772àCONCATá1 String 1 to be concatenated, max. 255 charactersâSTR1ã1 String 2 to be concatenated, max. 255 charactersäSTR2å 4221632325æLicenseFunctionsçdwStructSizeèpfGetUserLicenseValueépfConfDynLicChallengeêpfReqDynLicChallengeë 1958349117ìLICENSEFUNCTIONSí$54113402-1f1a-4625-9cf5-98f840f808d4î$component manager, 3.5.13.0 (system)ï 3247230088ðCMRegisterLicenseFunctionsñlicenseFunctionsò$9d4b8b53-13e6-49d1-812f-48d05c3b6bdeó 674459537ôUnregisterLicenseFunctionsõlfö$fad78c76-def3-4349-88ac-a7d7b1026100÷49087098øSysTargetGetIdùpulTargetIdú/External, Compiled, Typified, Located, Internalû$2882c277-8c61-400a-b7f8-fedf8770b0b5ü 1255376976ýSysTargetGetTypeþpulTypeÿ$8626ba32-8246-4efc-a245-c6603743ef15 2879083722RegisterLicenseFunctions$3a698490-0f8e-4b05-ba85-54b389411e5bCodeMGetContentByFirmcode2 3702754381 CodeMGetContentByFirmcodeduiFirmcodeduiProductcodelicenseEntryRTS_CMBOXENTRY*Inout, IsCompiled, RelativeStack, Typified$22f4fc39-59c8-43ad-9dcc-9e20e4b9a58bcmpcodemeter, 3.5.5.0 (system) 669955528 musBoxMaskmulBoxSerial mflFiCtrlmulFirmCodemusFirmAccessCountermusFirmItemRefmulFirmUpdateCountermulFirmPreciseTimemausFirmItemTextmulProductCode mulFeatureMapmulUnitCountermulLicenseQuantitymusProductItemRef 3504795969$b624d05d-ae57-4b33-b835-ddb290871f29<Structure, NonVirtual, Compiled, Typified, Located, Internalignore_link_all 3026495541¡"CodeMGetFeatureMapByFirmcode_local¢%Compiled, Typified, Located, Internal£$8c1740e2-dc30-4803-9b05-2837c6a74377¤ 2158031774¥myUDINT_TO_STRING¦i2§byt¨$126f9170-8764-47f4-b18b-ad639b548e48© 1069101478ªCMAddComponent«pszComponent¬udiCmpId udiVersion®$90843a1a-36bb-40cc-8a00-b137a07f82dd¯ 4264633759°SysFileOpen±szFile²am³$4e9f3f6c-f1b2-41f5-8e6e-4c9d0f916cb0´ 2222749035µSysFileGetSizeByHandle¶hFile·$203db6ac-ecc2-4b85-b1e0-d533c0597079¸ 3647132921¹SysFileReadº pbyBuffer»ulSize¼$db542d11-09a1-412e-ba36-040235d1f6a6½ 3248367802¾SysFileClose¿$81419da6-4d52-4d99-806c-f8e599dcca66ÀØ <description> Test and set a bit in an ULONG variable in one processor step. This operation is to provide a multitasking save operation. </description> <result><p>RESULT: Returns the runtime system error code (see CmpErrors.library). ERR_OK: If bit could be set and was set before, ERR_FAILED: If bit is still set </p></result>Á 3306130432ÂSysCpuTestAndSetà <param name="pulValue" type="IN">Pointer to the unsigned value to test and set a bit inside in one atomic processor step</param> ÄpulValueÅp <param name="ulBit" type="IN">Bit number inside the variable to test and set. 0=first bit, 31=last bit</param> ÆulBitÇ$1b91f178-37d6-463f-a613-9f24443e9396È!syscpuhandling, 3.5.13.0 (system)É 2702096027ÊmySTRING_TO_UDINTËuiBaseÌ$7c03f9aa-a908-4345-8fdc-2902079aa956ÍÊ Returns the number of characters of a string .. code-block:: codesys (* Example declaration *) VarINT1 : INT ; (* Example in ST , result is '4 *) VarINT1 := LEN ('SUSI'); :return: Length of string ``STR`` .. cds:ranges:: :STR: |StringRange255| .. |StringRange255| replace:: [NULL_STRING,TERMINATED_STRING_LEN0..TERMINATED_STRING_LEN127,TERMINATED_STRING_LEN128..TERMINATED_STRING_LEN255,UNTERMINATED_STRING] Î 2091238964ÏLENÐ String to be analyzed ÑSTRÒpÓ$d60923f9-da06-44f9-ab52-de513236e3e2Ô Searches for the position of a partial string within a string. ``FIND(STR1, STR2)`` means: Find the position of the first character where ``STR2`` appears in ``STR1`` for the first time. If STR2 is not found in STR1, then OUT:=0. .. code-block:: codesys (* Example declaration *) arINT1 : INT ; (* Example in ST , result is '4' *) arINT1 := FIND ('abcdef','de'); :return: Character position of the first occurance of ``STR2`` in ``STR1``. If no occurance is found, result is 0 .. cds:ranges:: :STR1: |StringRange255| :STR2: |StringRange255| .. |StringRange255| replace:: [NULL_STRING,TERMINATED_STRING_LEN0..TERMINATED_STRING_LEN127,TERMINATED_STRING_LEN128..TERMINATED_STRING_LEN255,UNTERMINATED_STRING] Õ 3278768737Ö* String within which ``STR2`` is searched ×/ String whose position is searched in ``STR1`` ØpszComp1ÙpszComp2Ú$182b0d71-64b9-4f59-8550-dfdea6ddbf15Ûç Returns a specific number of characters of a string, starting from left ``LEFT (STR, SIZE)`` means: Return the first ``SIZE`` characters from the left in string ``STR`` .. code-block:: codesys (* Example declaration *) VarSTRING1 : STRING ; (* Example in ST , result is 'SUS' *) VarSTRING1 := LEFT ('SUSI',3); :return: Resulting string .. cds:ranges:: :STR: |StringRange255| :SIZE: [0..255] .. |StringRange255| replace:: [NULL_STRING,TERMINATED_STRING_LEN0..TERMINATED_STRING_LEN127,TERMINATED_STRING_LEN128..TERMINATED_STRING_LEN255,UNTERMINATED_STRING] Ü 3595690875ÝLEFTÞ String to be analyzedß Number of characters àSIZEá$305543de-642d-43ec-a366-8f771da1539d⺠Returns a specific number of characters of a string, starting from a specific position ``MID (STR, LEN, POS)`` means: Retrieve ``LEN`` characters from the ``STR`` string beginning with the character at position ``POS``. .. code-block:: codesys (* Example declaration *) VarSTRING1 : STRING ; (* Example in ST , result is 'US' *) VarSTRING1 := MID ('SUSI',2,2); :return: Partial string of ``STR`` .. cds:ranges:: :STR: |StringRange255| :LEN: [0..255] :POS: [0,1..255] .. |StringRange255| replace:: [NULL_STRING,TERMINATED_STRING_LEN0..TERMINATED_STRING_LEN127,TERMINATED_STRING_LEN128..TERMINATED_STRING_LEN255,UNTERMINATED_STRING] ã 176614815äMIDå, Number of characters, counted from the leftæ& Start position for the partial stringçPOSè$83426200-a15f-4a0f-939b-ec775900aa99éë Returns a specific number of characters of a string, starting from right ``RIGHT (STR, SIZE)`` means: Return the first ``SIZE`` characters from the right in string ``STR`` .. code-block:: codesys (* Example declaration *) VarSTRING1 : STRING ; (* Example in ST , result is 'USI' *) VarSTRING1 := RIGHT ('SUSI',3); :return: Resulting string .. cds:ranges:: :STR: |StringRange255| :SIZE: [0..255] .. |StringRange255| replace:: [NULL_STRING,TERMINATED_STRING_LEN0..TERMINATED_STRING_LEN127,TERMINATED_STRING_LEN128..TERMINATED_STRING_LEN255,UNTERMINATED_STRING] ê 1359190538ëRIGHTì Number of characters ílîiResultï$e1f7857b-7abd-48e8-91d6-d6b740f939c9ð Adds a message to the log, if the message is longer then 127 characters ithe entry splits into two log messages (max 255 chars = 2 log entries) Usage example: LOGSTR( msgCtrlMask := UDINT_TO_DWORD( CmpLog.LogClass.LOG_INFO ), msgFmtStr := 'Ammount of tests : %s', strArg := uiTestAmmount ); results into the following logstring Ammount of tests : 3 ñ 2043841041òWRITE_DEVICE_LOGó/ use UDINT_TO_DWORD( CmpLog.LogClass.LOG_.... )ômsgCtrlMaskõ( Usage example: ' Ammount of tests : %s'ö msgFmtStr÷ Usage example: uiTestAmmountøstrArgùUSIntú uiMaxSizeûsTextüiCharPosý$4faf44db-355b-4967-8254-5b291732f959þj Close a file specified by handle :return: Returns the runtime system error code (see CmpErrors.library)ÿ Handle of the filesysfile, 3.5.15.0 (system)À | Open or create file. A standard path will be added to the filename, if no path is specified in the file name. | If a file extension is specified in the settings, this path will be used (see category settings). .. note:: File name can contain an absolute or relative path to the file. Path entries must be separated with a Slash (/) and not with a Backslash (\\)! :return: Handle to the file or RTS_INVALID_HANDLE if failed File name. File name can contain an absolute or relative path to the file. Path entries must be separated with a Slash (/) and not with a Backslash (\\)!Î | Requested access mode to the file. See |ACCESS_MODE| for details. | Here find some examples: :AM_READ: If file does not exist, an error is returned. If the file exists, the file will be opened :AM_WRITE: If file does not exist, a new file will be created. If the file exists, it will be overwritten! :AM_APPEND: If the file does not exist, an error is returned. If the file exists, the file will be opened = Pointer to runtime system error code (see CmpErrors.library) \ Read number of bytes out of the file :return: Number of bytes read from file. 0=if failed Handle of the file Pointer to buffer for read dataL Number of bytes to read from file. Must be less or equal the buffer size! Write number of bytes to the file. File must be opened with |AM_WRITE| or |AM_APPEND|. :return: Number of bytes written to the file. 0=if failed 1793200295SysFileWrite/ Pointer to buffer with data to write to file M Number of bytes to write in the file. Must be less or equal the buffer size!$a0372ebf-eb9b-4113-942f-e5da73df71dd <category>Project information</category> * <description> * Contains the project information as specified in the project information dialog in CoDeSys. To use this, the checkbox * "Automatically generate POUs for property access" in the project information dialog be enabled. * </description> * <element name="stProjectName" type="OUT">Project name without ending</element> * <element name="stTitle" type="OUT">Title</element> * <element name="stVersion" type="OUT">Version as string in the format "x.x.x.x"</element> * <element name="stAuthor" type="OUT">Author</element> * <element name="stDescription" type="OUT">Description</element> 3365268717PROJECT_INFO stProjectstTitle stVersionstAuthor stDescription 1178342348$c1e43dbd-7721-4bd4-a684-c21620fe030fcmpapp, 3.5.15.0 (system)8 reads the application info from the current application 3589885213GetCurProjInfoCMPAPPCmpApppCurApp APPLICATION¡pCurProjInfo¢ 1186304137£GETCURPROJINFO¤$a1b4b1d0-961b-443c-bfbc-d2cb7b8d4e24¥ 3673772398¦ 1934937439§ 2447250513¨ 4156868057© 3449547646ª6F_RemoveInstancePathAndProjectNameFromTestInstancePath«CharacterPositionOfProjectName¬ProjectNameWithDot$7816860e-5623-4ff0-b466-902e340371e3® 3203763967¯ POINTER TO parent application ° pAppParent±* Id of the application. Is always unique. ²iId³ GUID for IEC code ´CodeGuidµ GUID for IEC data ¶DataGuid·> State of the application. See definitions Application states ¸udiState¹R Operating state of the application. See definitions Application operation states º udiOpState» Handle to bootproject ¼hBootproject½ Handle to debug task ¾ hDebugTask¿ Global Init Function ÀpfGlobalInitÁ Global Exit Function ÂpfGlobalExità Handle a pool of session-ids ÄhSessionIdPoolÅ Handle a pool of force entries Æ hForcePoolÇ Handle a pool of breakpoints ÈhBPPoolÉ Is persistent force enabled Ê Application name ËszNameÌMAX_LEN_APPLNAMEÍ7Version number of Programming system (set in download) ÎudiPSVersionÏ?Version number of Target settings used by PS (set in download) ÐudiTargetSettingVersionÑ 1512497683Ò$91664799-0da5-417a-9e5e-db9ec74ea6f2Ó[ Removes leading spaces from the character string and returns the reduced character string.Ô 1900748652ÕF_LTrimÖ$6ef917e6-7f9e-46f0-99fd-87a9a9b883ad×O Truncates all trailing spaces from the specified value and returns the result.Ø 3142262884ÙF_RTrimÚ$29c1cd9e-70b7-43a9-8e3e-f8e8ed84bff7Ûd The F_ToLCase function converts a specified string to lowercase. Contains portions of OSCAT BASICÜ 886767803Ý F_ToLCaseÞPTßposà$4177f901-1a7a-4eea-8fe8-63097fea53f3ᯠThis function converts a decimal number into a hexadecimal STRING (base 16). If the actual number of significant digits is less than the iPrecision parameter, the resulting STRING is filled with zeros FROM the left. If the number of significant digits is greater than the iPrecision parameter, the resulting string is not cut off! If the iPrecision parameter and the in parameter are zero, the resulting string is empty.â 1972422664ãBYTE_TO_HEXSTRä) The decimal number requiring conversion.åINæ. Minimum number of displayed digits (digits). ç iPrecisionè[ This parameter determines whether lower or upper case letters are used in the conversion. ébLoCaseêm_Formatë$83e397b4-6883-4c4e-9910-e0278934299aì This function converts a decimal number into a hexadecimal STRING (base 16). If the actual number of significant digits is less than the iPrecision parameter, the resulting STRING is filled with zeros FROM the left. If the number of significant digits is greater than the iPrecision parameter, the resulting string is not cut off! If the iPrecision parameter and the in parameter are zero, the resulting string is empty. This is modified version of the DWORD_TO_STRH made by OSCAT, version 1.3, programmer hugo. í 3725441371îDWORD_TO_HEXSTRï4 Minimum number of displayed digits (digits). ðtempñptòm_NumberOfDigitsóm_precisionô$37af6bb4-598b-402b-99e0-bd140fa86122õ 1557660451öLWORD_TO_HEXSTR÷$6f6ad65d-94c9-44e7-b5f7-5394a261509cø± This function converts a decimal number into a hexadecimal STRING (base 16). If the actual number of significant digits is less than the iPrecision parameter, the resulting STRING is filled with zeros FROM the left. If the number of significant digits is greater than the iPrecision parameter, the resulting string is not cut off! If the iPrecision parameter and the in parameter are zero, the resulting string is empty. ù 952797014úWORD_TO_HEXSTRû$028c7654-6828-48cd-8703-659f86aef415ü? Copies buffer with size of N bytes from source to destination ý 1485283582þMEMCPYÿdestAddrCAAPVOIDsrcAddrn$7d591bcc-b453-4853-8327-1622b58624cc ; Realize a target specific data type for general pointers. 2901015905 Prefix: p $607a79a2-c60b-4e09-b161-a4f6d8099b004caa types extern, 3.5.13.0 (caa technical workgroup)e This function takes the type-class of a ANY-variable and returns the STRING representation of it. 3242817338F_AnyTypeClassToStringAnyTypeClass$9e1352f3-5f86-40fd-88db-b6807b901391O Funktion to get own task handle :return: Returns the current IEC task handle 4249138636IecTaskGetCurrentK Pointer that returns the runtime system error code (see CmpErrors.library)$b1d506b4-a9e7-4ec3-8e73-e6697d723ffbt Function returns the task information of the specified task :return: Return a pointer to the task info structure 4205902187IecTaskGetInfo3 Handle to the specified taskhIecTaskpti$941fd632-1e71-4fc0-a13a-6074eb0adf1c 2092783167F_AnyToUnionValueAnyValue.pValueAnyValue__pValueAnyValue.TypeClass AnyValue__typeClass¡AnyValue.diSize¢AnyValue__sizeOf£AnyValue¤$04a97242-7600-4a30-a234-b9e3b1c2770c¥ 3394829069¦F_IsAnyEqualToUnionValue§uExpectedOrActual¨ExpectedOrActual.pValue©ExpectedOrActual__pValueªExpectedOrActual.TypeClass«ExpectedOrActual__typeClass¬ExpectedOrActual.diSizeExpectedOrActual__sizeOf®ExpectedOrActual¯AnyExpectedOrActual°$1ab30776-5b8c-4eb4-8ece-b0c087a9b905±F This function runs all test suites that have been initialized. ² 740068242³RUN´$bd49b256-e7ba-4b73-b669-380d1f428417µc This function declares a new test (if it has not been already declared in an earlier cycle) ¶ 3903357050·TEST¸CounterTestSuiteAddress¹$8dd61791-c583-4b5e-b392-3e0ecf487849º2 Sets the currently running test as finished » 563735047¼ TEST_FINISHED½$9922b45b-fca5-4323-be8f-93710371a816¾Ç Extracts the components of a REAL floating point number without interpreting them. Extracts the sign, (biased) exponent, and mantissa of a REAL value. We assume the IEEE 754 binary32 format. All values, including NaN and Infinity are supported. See http://en.wikipedia.org/wiki/Single_precision_floating-point_format¿ 2007885473À__ExtractRealRawÁC The mantissa as stored in the REAL, without the leading bit 24 setÂpudiÃ$3d3aa07e-b7ec-4780-af79-d77e0e2cb50fÄ 1475096513Å__HelpLConvertÆ$26023af2-e263-44c0-b290-4197ca6caa6aÇ 202956791È__ExtractLRealRawÉpuliÊuliË$e543e1fd-2bb8-4ac1-a749-ebad37d711fcÌ 1673363469ÍFctConfDynLicChallengeÎ$f9972cfc-8a33-4e40-85fb-7109a5d893d5Ï 2401095727ÐFctGetUserLicenseValueÑ$c20edd8e-8e57-4f8a-87df-58345eb4164fÒ 2469315043ÓFctReqDynLicChallengeÔ$a38e7aa2-cfa8-41d5-adf5-85021e7b5eaaÕ 1900323445ÖCMUnregisterLicenseFunctions×$f1a79dd5-021a-4cf4-ad25-7ec56df08e56ØCodeMGetContentByFirmcode_localÙÑ Replaces a specific number of characters of a string by another string ``REPLACE(STR1, STR2, L, P)`` means: Replace ``L`` characters from ``STR1`` by ``STR2``, beginning with the character in the ``P`` position. .. code-block:: codesys (* Example declaration *) VarSTRING1 : STRING ; (* Example in ST , result is 'SKYSI' *) VarSTRING1 := REPLACE ('SUXYSI','K',2,2); :return: Resulting string .. cds:ranges:: :STR1: |StringRange255| :STR2: |StringRange255| :L: [0..255] :P: [0,1..255] .. |StringRange255| replace:: [NULL_STRING,TERMINATED_STRING_LEN0..TERMINATED_STRING_LEN127,TERMINATED_STRING_LEN128..TERMINATED_STRING_LEN255,UNTERMINATED_STRING] Ú 517832753ÛREPLACEÜ# String of which a part is replacedÝ) String which replaces a part of ``STR1``Þ) Number of characters, counting from leftßLàs Start position of the characters to be replaced. ``P = 1`` or ``P = 0`` are both addressing the first characteráPâ indexDestãindexSourceä$f57e2f3d-6edd-4042-ac47-a14833c273c8å 448115908æ LogOptionsç Name OF logger è Logger active/inactive ébEnableê See above log types ëuiTypeì0 Log filter. It is a combination of log classes íuiFilterî MAX number OF LOG entries ïiMaxEntriesð Max file size ñiMaxFileSizeò Max number of files ó iMaxFilesô 2267289889õ LOGOPTIONSö$f29300f0-f83d-490d-9603-d3255fa3095b÷ 2950684213øST_LogùCMPLOGúCmpLogûAssignüLOGTYPESýLogTypesþLT_STDÿhLogCreated 3954219779ST_LOG$6fa083cf-0816-49b4-9f1f-643d3266b682ADDLOGENTRY PRVCREATENEWLOGGER? registers a Log component in devicelog and accept log messages 2253974937CmpCfLoghCmp hStdLoggervendorIdcmpId 3274057501CMPCFLOG$e54b0b42-bf68-4a14-aacc-2136ead10c0b 3109562382 1341592248P if TRUE, the instance afterwards gets moved into the copy code (online change) $4b49c03c-b562-4a6d-a8a9-76b527f97a0e 1919457194AddLogEntry udiClassId udiErrorId udiInfoId$f39143e0-de49-4075-8bca-59cb6ff62612 281198645$3ba547bb-218f-4ecb-aa09-3033908bd527 2650069375 1638336279 3519561854prvCreateNewLogger $e2af6d5a-2680-44e7-b66a-3c3897d9cb0a¡ Deletes a number of characters from a string ``DELETE (STR, L, POS)`` means: Delete ``L`` characters from ``STR``, beginning with the character in the ``POS`` position. .. code-block:: codesys (* Example declaration *) VarSTRING1 : STRING ; (* Example in ST , result is 'SUSI' *) VarSTRING1 := DELETE ('SUXYSI',2,3); :return: String remaining after deletion .. cds:ranges:: :STR: |StringRange255| :LEN: [0..255] :POS: [0,1..255] .. |StringRange255| replace:: [NULL_STRING,TERMINATED_STRING_LEN0..TERMINATED_STRING_LEN127,TERMINATED_STRING_LEN128..TERMINATED_STRING_LEN255,UNTERMINATED_STRING] ¢ 1739723417£DELETE¤ String to be modfied¥A Length of the partial string to be deleted, number of characters¦Z Position in ``STR`` after which the deletion starts. Counted from left, starting with 1§indexResult¨bSkip©$11510cc9-b7a0-4dd6-8600-402b1638691eª 2665969477« AppGetCurrent¬$7b15c08a-0653-4e21-bae0-a0b9c0885693 1239233586®AppGetApplicationInfo¯APPLICATION_INFO°pApp±$a1d0114c-e318-46c3-9f61-93c7e287c132²Ï <category>Application information</category> * <description> * Contains the application information as specified in the application property dialog in CoDeSys. * </description> * <element name="pstProjectName" type="OUT">Pointer project name</element> * <element name="pstAuthor" type="OUT">Pointer to author</element> * <element name="pstVersion" type="OUT">Pointer to version as string in the format "x.x.x.x"</element> * <element name="pstDescription" type="OUT">Pointer to description</element> * <element name="pstProfile" type="OUT">Pointer to used CoDeSys profile name</element> * <element name="dtLastChanges" type="OUT">Time and date of last modification of the application (UTC)</element> ³ 2334584805´pstProjectNameµ pstAuthor¶ pstVersion·pstDescription¸ pstProfile¹ dtLastChangesº 3658178702»$d8358556-d5ee-4109-b0bb-55d3f6ee3e15¼ 1693369342½TO_LOWER¾$1e55f1d2-e8f8-4c11-a343-0d7e1cf88411¿ 2020938782ÀPrintfÁ. The buffer, where the result will be returned cbpResultÃ" The capacity of the result bufferÄuiResultCapacityÅ0 The format string used for formatting the valueÆ cbpFormatÇV A pointer to the begin of the piece of memory, where the value to format is stored.ÈG A __SYSTEM.TYPE_CLASS value describing the type of the value to formatÉ typeClassÊ$ba8d48f4-b190-46c7-be6b-9336508c391cË iecstringutils, 3.5.8.0 (system)ÌIecTaskGetInfo2Í 711891942ÎIecTaskGetInfo2_InternalÏ TASK_INFOÐ$c6d3a5e1-7385-4753-b73c-f3b0df563229Ñ 2900023005Ò tIntervalÓ tWatchdogTimeÔ tCycleTimeÕtAverageCycleTimeÖ tMaxCycleTime× tMinCycleTimeØ 3657274649Ù$b83e07ab-a3d0-41a5-8f83-2de38b279984Ú 3040543732ÛCMRemoveComponentÜ hComponentÝ$11bbd436-1d57-4172-8904-e44dc772fedbÞ 3645932812ßLogCloseà$c8aaeb24-0f38-477e-9044-1ecd207cbde3á 1735259385â LogDeleteã$52842e3b-7e02-4eaf-bb44-a5db3758476cä 2881342543åLogOpenæ$8b85ed35-90d0-4d91-aef7-00ef0b080aadç 1116480908è LogCreateépOptionsê$b35829e6-d182-4ea6-91ec-f4e82032a361ëY Does a sprintf for the given format string and the given variable. Will not return NULL!ìk link even in simulation mode prevent introducing a signature check lately to prevent compatibility flawsí 120951582î StuSprintfï the formatstringð pstFormatñ2 the address of the variable that shall be printedò8 the type of the variable as a __SYSTEM.TYPE_CLASS valueó udiVarTypeô+ the buffer where the text is to be printedõ the size of the buffer in bytesödwBufferSize÷$4933794d-6fe5-4285-9a7e-ea7baab7d3f3østringutils, 3.5.14.0 (system)ù 4251811505ú"I_TestResultFormatter__Struct__376ûGLocal, IsCompiled, RelativeInstance, NoInit, Implicit, NoCopy, Typifiedü 358323719ý"I_TESTRESULTFORMATTER__STRUCT__376þ=Structure, NonVirtual, Generated, Compiled, Typified, Locatedÿ 3524596434%I_AssertMessageFormatter__Struct__652 2449608530%I_ASSERTMESSAGEFORMATTER__STRUCT__652 205898594IBase__Struct__700 __INTERFACEPOINTER__700 3371573693IBASE__STRUCT__700__download__code__online__change__codeglobal__init__bInitRetains__Index __bInCopyCodeGLOBAL__EXIT"__DATASEGMENTFLAGS__305__GVL__Init#__COMPILE_CONSTANTS__306__GVL__Init__WATCHVARS__307__GVL__Init1__ALLOCATEDIMPLICITREFERENCETYPES__308__GVL__Init#CONSTANTS__309__SYSTEM____GVL__InitTYPE_CLASS__614__GVL__Init$_IMPLICIT_KINDOFTASK__688__GVL__Init/_IMPLICIT_TASK_CONFIG_VARIABLES__749__GVL__Init/_IMPLICIT_TARGET_INFO_VARIABLES__137__GVL__Init!__APPLICATIONNAME__138__GVL__Init%__TASKSPECIFICINFOGVL__139__GVL__Init__TYPECLASS__754__GVL__Init&__CONVERSION_CONSTANTS__759__GVL__Init'__LCONVERSION_CONSTANTS__840__GVL__Init __SETUP__CALL__POU__1__GVL__InitPRG_TEST__714__GVL__InitAPPLICATION_CONTENT Offsets in stringtable!¡SizeOf¢udiInfoSize£udiInfoVersion¤ uiNumPOUs¥ uiNumDUTs¦ uiNumGVLs§uiNumFBs¨uiNumMethods© uiNumLibsªarPOUs«arDUTs¬arGVLsarFBs® arMethods¯arLibs°stringtable±Output, IsCompiled²Input, IsCompiled³Input, IsCompiled, Implicit´CompiledµNonVirtual, Generated, Compiled¶1Structure, Generated, Compiled, Typified, Located·RemovedAfterDownload¸__RELOCATE__CODE¹__PAreaOffsetsNewº__dwVersion»__PAreaOffsetsIn¼ __pAdrHelp½__i¾__j¿__RELOCATE__RESULTÀ __dwOffsetÁ__wHighÂ__wLowÃ__wCountÄ__PRELOCATIONTABLEÅ__PAreaOffsetsÆ8Generated, NoCompareWithNew, Compiled, Typified, LocatedÇ 669599553È__DataSegmentFlagsÉ VarGlobalÊ) special flag to indicate an area segmentËDA_DataÌ=Local, ReplacedConstant, Constant, Enum, IsCompiled, TypifiedÍDA_ConstantÎDA_InputÏ DA_OutputÐ DA_MemoryÑ DA_RetainÒDA_CodeÓDA_AreaÔ DA_PersistentÕEnum, Compiled, TypifiedÖ$36b719e5-3a34-450b-b806-362248c6fc69× 2121841030Ø__COMPILE_CONSTANTSÙsystem_variableÚ__CONTAINS_COPY_CODEÛAReplacedConstant, Constant, Global, IsCompiled, Absolut, TypifiedÜ$db173c48-0431-4ee2-8080-d72c759a68e3Ý 629370838Þ__WatchVarsßCompiled, Typified, Internalà$e4086481-b65b-4bfc-821c-c1f278b8711dá72176917â!__AllocatedImplicitReferenceTypesã'Generated, Compiled, Typified, Internalä$4e6b58d5-7a7d-4d43-b710-af56f2531e62å 3976988861æ Constantsç Like x86, ARM etcè bLittleEndianéA the runtime version number as defined by the device description.êRuntimeVersionë<Constant, Global, IsCompiled, Absolut, Initialized, TypifiedìS the compiler version as defined in the build options (not OEM Customized Version!)íCompilerVersionî. TRUE if project is running in simulation modeïbSimulationModeðe Number of Bits per Register. Possible values: 16 (c16x, 186), 32 (x86, ARM, PPC ...), 64 (x86-64Bit)ñ nRegisterSizeòa the pack mode as defined in the device description. Should match to the pack mode of the runtimeó nPackModeô Does the target support an FPUõbFPUSupportö4 the runtime version coded in the nibbles of a DWORD÷RuntimeVersionNumericø5 the compiler version coded in the nibbles of a DWORDùCompilerVersionNumericú( Does the target support multiple cores?ûbMulticoreSupportüR The optimal vector size for a vector of lreals, or 1 if no vectors are available.ývcOptimalLREALþQ The optimal vector size for a vector of reals, or 1 if no vectors are available.ÿ vcOptimalREAL)Compiled, Typified, SystemNamespaceForced$c912f995-f4b5-48bd-9416-f36b0846c0e1 997431391 TYPE_BOOLTYPE_BIT TYPE_BYTE TYPE_WORD TYPE_DWORD TYPE_LWORD TYPE_SINTTYPE_INT TYPE_DINT TYPE_LINT TYPE_USINT TYPE_UINT TYPE_UDINT TYPE_ULINT TYPE_REAL TYPE_LREALTYPE_STRINGTYPE_WSTRING TYPE_TIME TYPE_DATETYPE_DATEANDTIMETYPE_TIMEOFDAYTYPE_POINTERTYPE_REFERENCE TYPE_SUBRANGE TYPE_ENUM TYPE_ARRAYTYPE_PARAMSTYPE_USERDEF TYPE_NONE¡TYPE_ANY¢TYPE_ANYBIT£TYPE_ANYDATE¤TYPE_ANYINT¥TYPE_ANYNUM¦TYPE_ANYREAL§ TYPE_LAZY¨ TYPE_LTIME© TYPE_BITCONSTª$f4fafa0b-0199-4a4a-82c6-354c2db388c0« 3708279434¬_Implicit_KindOfTask_implicit_cyclic®_implicit_event¯_implicit_external°_implicit_freewheeling±_implicit_parentsync²$4de95593-5bf6-58ff-b441-4c5377cafb5c³no_precompile_checks´ 2056577253µ_Implicit_Task_Config_Variables¶$edbaea9e-4c96-4841-8011-c765e4c4467f·__APPLICATIONNAME¸__ApplicationName¹ IEC-TasksºPlcTask»__task_string_table¼2Global, IsCompiled, Absolut, Initialized, Typified½$__Implicit_Jitter_Distribution_Array¾__Implicit_TaskCoreBitsArray_0¿__Implicit_TaskGroupArrayÀ__CYCLE__CODE__PLCTASKÁ __PlcTaskÂig_task_config_infoÃ'Compiled, InhibitOnlineChange, TypifiedÄ$64723cfa-b8f1-544a-bcdf-306d0665d5ebÅ__ARRAYDATA__759__2Æ__ApplicationInfoVariablesÇno_initÈ appContentÉNConstant, Global, IsCompiled, Absolut, NoInit, OnlChangeInit, NoCopy, TypifiedÊ__BlobInit__931__0Ë__DataSegmentInfoVariablesÌinit_on_onlchangeÍarrdataSegmentsÎAGlobal, IsCompiled, Absolut, OnlChangeInit, Initialized, TypifiedÏdataSegmentsÐ__BlobInit__759__0Ñ__BlobInit__759__1ÒIMPLICIT__DEFINITIONSÓPOU__0__START__ADDRESSÔ-Global, IsCompiled, Absolut, NoInit, ImplicitÕPOU__1__START__ADDRESSÖPOU__52__START__ADDRESS×POU__136__START__ADDRESSØPOU__702__START__ADDRESSÙPOU__159__START__ADDRESSÚPOU__160__START__ADDRESSÛPOU__161__START__ADDRESSÜPOU__162__START__ADDRESSÝPOU__163__START__ADDRESSÞPOU__164__START__ADDRESSßPOU__165__START__ADDRESSàPOU__166__START__ADDRESSáPOU__167__START__ADDRESSâPOU__168__START__ADDRESSãPOU__169__START__ADDRESSäPOU__172__START__ADDRESSåPOU__175__START__ADDRESSæPOU__178__START__ADDRESSçPOU__181__START__ADDRESSèPOU__184__START__ADDRESSéPOU__199__START__ADDRESSêPOU__216__START__ADDRESSëPOU__217__START__ADDRESSìPOU__218__START__ADDRESSíPOU__219__START__ADDRESSîPOU__238__START__ADDRESSïPOU__239__START__ADDRESSðPOU__245__START__ADDRESSñPOU__250__START__ADDRESSòPOU__255__START__ADDRESSóPOU__260__START__ADDRESSôPOU__265__START__ADDRESSõPOU__270__START__ADDRESSöPOU__275__START__ADDRESS÷POU__280__START__ADDRESSøPOU__285__START__ADDRESSùPOU__290__START__ADDRESSúPOU__295__START__ADDRESSûPOU__297__START__ADDRESSüPOU__301__START__ADDRESSýPOU__303__START__ADDRESSþPOU__304__START__ADDRESSÿPOU__310__START__ADDRESSPOU__311__START__ADDRESSPOU__312__START__ADDRESSPOU__313__START__ADDRESSPOU__322__START__ADDRESSPOU__337__START__ADDRESS POU__335__START__ADDRESSPOU__340__START__ADDRESSPOU__332__START__ADDRESSPOU__327__START__ADDRESSPOU__328__START__ADDRESSPOU__336__START__ADDRESSPOU__324__START__ADDRESSPOU__319__START__ADDRESSPOU__326__START__ADDRESSPOU__333__START__ADDRESSPOU__339__START__ADDRESSPOU__334__START__ADDRESSPOU__323__START__ADDRESSPOU__329__START__ADDRESSPOU__330__START__ADDRESSPOU__325__START__ADDRESSPOU__320__START__ADDRESSPOU__331__START__ADDRESSPOU__321__START__ADDRESSPOU__341__START__ADDRESSPOU__338__START__ADDRESSPOU__346__START__ADDRESSPOU__350__START__ADDRESSPOU__398__START__ADDRESSPOU__395__START__ADDRESSPOU__397__START__ADDRESSPOU__396__START__ADDRESS POU__394__START__ADDRESS¡POU__370__START__ADDRESS¢POU__375__START__ADDRESS£POU__372__START__ADDRESS¤POU__371__START__ADDRESS¥POU__373__START__ADDRESS¦POU__374__START__ADDRESS§POU__378__START__ADDRESS¨POU__420__START__ADDRESS©POU__418__START__ADDRESSªPOU__423__START__ADDRESS«POU__425__START__ADDRESS¬POU__422__START__ADDRESSPOU__419__START__ADDRESS®POU__426__START__ADDRESS¯POU__424__START__ADDRESS°POU__421__START__ADDRESS±POU__468__START__ADDRESS²POU__470__START__ADDRESS³POU__471__START__ADDRESS´POU__464__START__ADDRESSµPOU__459__START__ADDRESS¶POU__460__START__ADDRESS·POU__467__START__ADDRESS¸POU__466__START__ADDRESS¹POU__465__START__ADDRESSºPOU__463__START__ADDRESS»POU__457__START__ADDRESS¼POU__461__START__ADDRESS½POU__472__START__ADDRESS¾POU__469__START__ADDRESS¿POU__458__START__ADDRESSÀPOU__462__START__ADDRESSÁPOU__443__START__ADDRESSÂPOU__435__START__ADDRESSÃPOU__440__START__ADDRESSÄPOU__444__START__ADDRESSÅPOU__441__START__ADDRESSÆPOU__447__START__ADDRESSÇPOU__446__START__ADDRESSÈPOU__450__START__ADDRESSÉPOU__442__START__ADDRESSÊPOU__436__START__ADDRESSËPOU__434__START__ADDRESSÌPOU__438__START__ADDRESSÍPOU__445__START__ADDRESSÎPOU__448__START__ADDRESSÏPOU__439__START__ADDRESSÐPOU__449__START__ADDRESSÑPOU__437__START__ADDRESSÒPOU__404__START__ADDRESSÓPOU__409__START__ADDRESSÔPOU__406__START__ADDRESSÕPOU__405__START__ADDRESSÖPOU__410__START__ADDRESS×POU__407__START__ADDRESSØPOU__408__START__ADDRESSÙPOU__387__START__ADDRESSÚPOU__383__START__ADDRESSÛPOU__483__START__ADDRESSÜPOU__481__START__ADDRESSÝPOU__486__START__ADDRESSÞPOU__487__START__ADDRESSßPOU__484__START__ADDRESSàPOU__482__START__ADDRESSáPOU__485__START__ADDRESSâPOU__359__START__ADDRESSãPOU__357__START__ADDRESSäPOU__362__START__ADDRESSåPOU__361__START__ADDRESSæPOU__360__START__ADDRESSçPOU__358__START__ADDRESSèPOU__363__START__ADDRESSéPOU__501__START__ADDRESSêPOU__494__START__ADDRESSëPOU__498__START__ADDRESSìPOU__496__START__ADDRESSíPOU__495__START__ADDRESSîPOU__504__START__ADDRESSïPOU__502__START__ADDRESSðPOU__500__START__ADDRESSñPOU__497__START__ADDRESSòPOU__499__START__ADDRESSóPOU__503__START__ADDRESSôPOU__583__START__ADDRESSõPOU__580__START__ADDRESSöPOU__577__START__ADDRESS÷POU__579__START__ADDRESSøPOU__578__START__ADDRESSùPOU__576__START__ADDRESSúPOU__610__START__ADDRESSûPOU__607__START__ADDRESSüPOU__613__START__ADDRESSýPOU__595__START__ADDRESSþPOU__593__START__ADDRESSÿPOU__600__START__ADDRESSPOU__598__START__ADDRESSPOU__603__START__ADDRESSPOU__594__START__ADDRESSPOU__596__START__ADDRESSPOU__599__START__ADDRESS POU__602__START__ADDRESSPOU__601__START__ADDRESSPOU__604__START__ADDRESSPOU__597__START__ADDRESSPOU__635__START__ADDRESSPOU__639__START__ADDRESSPOU__623__START__ADDRESSPOU__621__START__ADDRESSPOU__628__START__ADDRESSPOU__631__START__ADDRESSPOU__622__START__ADDRESSPOU__624__START__ADDRESSPOU__627__START__ADDRESSPOU__630__START__ADDRESSPOU__629__START__ADDRESSPOU__632__START__ADDRESSPOU__626__START__ADDRESSPOU__625__START__ADDRESSPOU__646__START__ADDRESSPOU__650__START__ADDRESSPOU__648__START__ADDRESSPOU__647__START__ADDRESSPOU__651__START__ADDRESSPOU__649__START__ADDRESSPOU__654__START__ADDRESSPOU__529__START__ADDRESSPOU__537__START__ADDRESS POU__535__START__ADDRESS¡POU__550__START__ADDRESS¢POU__555__START__ADDRESS£POU__534__START__ADDRESS¤POU__564__START__ADDRESS¥POU__522__START__ADDRESS¦POU__568__START__ADDRESS§POU__557__START__ADDRESS¨POU__533__START__ADDRESS©POU__567__START__ADDRESSªPOU__544__START__ADDRESS«POU__536__START__ADDRESS¬POU__552__START__ADDRESSPOU__556__START__ADDRESS®POU__523__START__ADDRESS¯POU__549__START__ADDRESS°POU__565__START__ADDRESS±POU__545__START__ADDRESS²POU__512__START__ADDRESS³POU__518__START__ADDRESS´POU__515__START__ADDRESSµPOU__559__START__ADDRESS¶POU__519__START__ADDRESS·POU__543__START__ADDRESS¸POU__539__START__ADDRESS¹POU__542__START__ADDRESSºPOU__548__START__ADDRESS»POU__553__START__ADDRESS¼POU__546__START__ADDRESS½POU__530__START__ADDRESS¾POU__551__START__ADDRESS¿POU__540__START__ADDRESSÀPOU__520__START__ADDRESSÁPOU__560__START__ADDRESSÂPOU__541__START__ADDRESSÃPOU__531__START__ADDRESSÄPOU__525__START__ADDRESSÅPOU__558__START__ADDRESSÆPOU__563__START__ADDRESSÇPOU__526__START__ADDRESSÈPOU__528__START__ADDRESSÉPOU__566__START__ADDRESSÊPOU__547__START__ADDRESSËPOU__517__START__ADDRESSÌPOU__513__START__ADDRESSÍPOU__521__START__ADDRESSÎPOU__516__START__ADDRESSÏPOU__514__START__ADDRESSÐPOU__511__START__ADDRESSÑPOU__524__START__ADDRESSÒPOU__561__START__ADDRESSÓPOU__538__START__ADDRESSÔPOU__554__START__ADDRESSÕPOU__562__START__ADDRESSÖPOU__569__START__ADDRESS×POU__532__START__ADDRESSØPOU__510__START__ADDRESSÙPOU__527__START__ADDRESSÚPOU__586__START__ADDRESSÛPOU__666__START__ADDRESSÜPOU__663__START__ADDRESSÝPOU__665__START__ADDRESSÞPOU__664__START__ADDRESSßPOU__662__START__ADDRESSàPOU__671__START__ADDRESSáPOU__682__START__ADDRESSâPOU__679__START__ADDRESSãPOU__681__START__ADDRESSäPOU__680__START__ADDRESSåPOU__678__START__ADDRESSæPOU__687__START__ADDRESSçPOU__693__START__ADDRESSèPOU__698__START__ADDRESSéPOU__713__START__ADDRESSêPOU__725__START__ADDRESSëPOU__728__START__ADDRESSìPOU__727__START__ADDRESSíPOU__729__START__ADDRESSîPOU__726__START__ADDRESSïPOU__724__START__ADDRESSðPOU__723__START__ADDRESSñPOU__722__START__ADDRESSòPOU__714__START__ADDRESSóPOU__738__START__ADDRESSôPOU__742__START__ADDRESSõPOU__740__START__ADDRESSöPOU__739__START__ADDRESS÷POU__741__START__ADDRESSøPOU__737__START__ADDRESSùPOU__748__START__ADDRESSúPOU__755__START__ADDRESSûPOU__756__START__ADDRESSüPOU__757__START__ADDRESSýPOU__758__START__ADDRESSþPOU__760__START__ADDRESSÿPOU__761__START__ADDRESSPOU__762__START__ADDRESSPOU__763__START__ADDRESSPOU__764__START__ADDRESSPOU__768__START__ADDRESSPOU__769__START__ADDRESS POU__772__START__ADDRESSPOU__776__START__ADDRESSPOU__780__START__ADDRESSPOU__777__START__ADDRESSPOU__781__START__ADDRESSPOU__790__START__ADDRESSPOU__791__START__ADDRESSPOU__792__START__ADDRESSPOU__793__START__ADDRESSPOU__794__START__ADDRESSPOU__795__START__ADDRESSPOU__796__START__ADDRESSPOU__815__START__ADDRESSPOU__812__START__ADDRESSPOU__809__START__ADDRESSPOU__811__START__ADDRESSPOU__810__START__ADDRESSPOU__808__START__ADDRESSPOU__801__START__ADDRESSPOU__818__START__ADDRESSPOU__820__START__ADDRESSPOU__821__START__ADDRESSPOU__822__START__ADDRESSPOU__823__START__ADDRESSPOU__824__START__ADDRESSPOU__825__START__ADDRESSPOU__826__START__ADDRESS POU__827__START__ADDRESS¡POU__829__START__ADDRESS¢POU__831__START__ADDRESS£POU__832__START__ADDRESS¤POU__833__START__ADDRESS¥POU__834__START__ADDRESS¦POU__835__START__ADDRESS§POU__836__START__ADDRESS¨POU__837__START__ADDRESS©POU__838__START__ADDRESSªPOU__839__START__ADDRESS«POU__841__START__ADDRESS¬POU__842__START__ADDRESSPOU__843__START__ADDRESS®POU__846__START__ADDRESS¯POU__853__START__ADDRESS°POU__850__START__ADDRESS±POU__861__START__ADDRESS²POU__859__START__ADDRESS³POU__865__START__ADDRESS´POU__863__START__ADDRESSµPOU__864__START__ADDRESS¶POU__860__START__ADDRESS·POU__862__START__ADDRESS¸POU__866__START__ADDRESS¹POU__867__START__ADDRESSºPOU__872__START__ADDRESS»POU__873__START__ADDRESS¼POU__874__START__ADDRESS½POU__878__START__ADDRESS¾POU__894__START__ADDRESS¿POU__895__START__ADDRESSÀPOU__896__START__ADDRESSÁPOU__897__START__ADDRESSÂPOU__898__START__ADDRESSÃPOU__899__START__ADDRESSÄPOU__900__START__ADDRESSÅPOU__901__START__ADDRESSÆPOU__902__START__ADDRESSÇPOU__903__START__ADDRESSÈPOU__904__START__ADDRESSÉPOU__905__START__ADDRESSÊPOU__906__START__ADDRESSËPOU__907__START__ADDRESSÌPOU__908__START__ADDRESSÍPOU__909__START__ADDRESSÎPOU__910__START__ADDRESSÏPOU__911__START__ADDRESSÐPOU__912__START__ADDRESSÑPOU__913__START__ADDRESSÒ%NoInit, Generated, Compiled, InternalÓ__GLOBAL_RELOC_DEFINITIONSÔ__RELOCATIONTABLEÕ-Global, IsCompiled, Absolut, NoInit, TypifiedÖ__RELOCATIONTABLENEW×%Global, IsCompiled, Absolut, TypifiedØ 2061191735Ù_Implicit_Target_Info_VariablesÚ__targetInfoÛCompiled, SuperGlobal, TypifiedÜ$0de9e5f1-f2f0-4550-99b9-b0c9c5d532d1Ý 3724943997Þ__ParentApplicationNameß$7e624f9d-69d6-42d1-923c-54726d605ee6à 2535173239á__TaskSpecificInfoGVLâtaskSpecificInfosãtaskEntryAddressätaskInfoInvalidå NUM_TASKSæMAX_STACK_SIZEç$90165385-435d-46ce-bd91-03a9cc5300c5è 3459977258é__TypeClassê__TYPECLASSë%Enum, Compiled, SuperGlobal, Typifiedì$93b6cd3f-8269-4c38-ace2-cca38ff00963ícontains_blobinitconstî 3183657202ï blobinitconstðinitial_value_crcñ 4251903600òEó 4043848204ôFDEZõ EXP_MASK_REALöEXP_OFFSET_REAL÷MANT_MASK_REALøRES_EXP_REALù EXP_BIAS_REALúNAN_REALû PINF_REALü NINF_REALý$8282e63e-5bdc-4a17-9c51-c6019a0fc9ebþ 3735606965ÿ__LCONVERSION_CONSTANTSULIntEXP_MASK_LREALEXP_OFFSET_LREALMANT_MASK_LREAL RES_EXP_LREAL EXP_BIAS_LREAL NAN_LREAL PINF_LREAL NINF_LREAL$7b8ad65d-ee2e-4a1e-8258-daddee07b488CODE__INIT__VFTABLESVFTABLE__314VFTABLE__388VFTABLE__364VFTABLE__412VFTABLE__451VFTABLE__428VFTABLE__399VFTABLE__475VFTABLE__351VFTABLE__488VFTABLE__570VFTABLE__587VFTABLE__615VFTABLE__640VFTABLE__505VFTABLE__656VFTABLE__672VFTABLE__715VFTABLE__730VFTABLE__802VFTABLE__854 /NoInit, NoCopy, Compiled, SuperGlobal, Typified¡IMPLICIT_FUNCTION_POINTERS¢SIGNATURE__0__FP__ADDRESS£#Global, IsCompiled, Absolut, NoInit¤SIGNATURE__1__FP__ADDRESS¥SIGNATURE__2__FP__ADDRESS¦SIGNATURE__3__FP__ADDRESS§SIGNATURE__4__FP__ADDRESS¨SIGNATURE__5__FP__ADDRESS©SIGNATURE__6__FP__ADDRESSªSIGNATURE__7__FP__ADDRESS«SIGNATURE__8__FP__ADDRESS¬SIGNATURE__9__FP__ADDRESSSIGNATURE__10__FP__ADDRESS®SIGNATURE__11__FP__ADDRESS¯SIGNATURE__12__FP__ADDRESS°SIGNATURE__13__FP__ADDRESS±SIGNATURE__14__FP__ADDRESS²SIGNATURE__15__FP__ADDRESS³SIGNATURE__16__FP__ADDRESS´SIGNATURE__17__FP__ADDRESSµSIGNATURE__18__FP__ADDRESS¶SIGNATURE__19__FP__ADDRESS·SIGNATURE__20__FP__ADDRESS¸SIGNATURE__21__FP__ADDRESS¹SIGNATURE__22__FP__ADDRESSºSIGNATURE__23__FP__ADDRESS»SIGNATURE__24__FP__ADDRESS¼SIGNATURE__25__FP__ADDRESS½SIGNATURE__26__FP__ADDRESS¾SIGNATURE__27__FP__ADDRESS¿SIGNATURE__28__FP__ADDRESSÀSIGNATURE__29__FP__ADDRESSÁSIGNATURE__30__FP__ADDRESSÂSIGNATURE__31__FP__ADDRESSÃSIGNATURE__32__FP__ADDRESSÄSIGNATURE__33__FP__ADDRESSÅSIGNATURE__34__FP__ADDRESSÆSIGNATURE__35__FP__ADDRESSÇSIGNATURE__36__FP__ADDRESSÈSIGNATURE__37__FP__ADDRESSÉSIGNATURE__38__FP__ADDRESSÊSIGNATURE__39__FP__ADDRESSËSIGNATURE__40__FP__ADDRESSÌSIGNATURE__41__FP__ADDRESSÍSIGNATURE__42__FP__ADDRESSÎSIGNATURE__43__FP__ADDRESSÏSIGNATURE__44__FP__ADDRESSÐSIGNATURE__45__FP__ADDRESSÑSIGNATURE__46__FP__ADDRESSÒSIGNATURE__47__FP__ADDRESSÓSIGNATURE__48__FP__ADDRESSÔSIGNATURE__52__FP__ADDRESSÕSIGNATURE__53__FP__ADDRESSÖSIGNATURE__54__FP__ADDRESS×SIGNATURE__55__FP__ADDRESSØSIGNATURE__56__FP__ADDRESSÙSIGNATURE__57__FP__ADDRESSÚSIGNATURE__58__FP__ADDRESSÛSIGNATURE__59__FP__ADDRESSÜSIGNATURE__60__FP__ADDRESSÝSIGNATURE__61__FP__ADDRESSÞSIGNATURE__62__FP__ADDRESSßSIGNATURE__63__FP__ADDRESSàSIGNATURE__64__FP__ADDRESSáSIGNATURE__65__FP__ADDRESSâSIGNATURE__66__FP__ADDRESSãSIGNATURE__67__FP__ADDRESSäSIGNATURE__68__FP__ADDRESSåSIGNATURE__69__FP__ADDRESSæSIGNATURE__70__FP__ADDRESSçSIGNATURE__71__FP__ADDRESSèSIGNATURE__72__FP__ADDRESSéSIGNATURE__73__FP__ADDRESSêSIGNATURE__74__FP__ADDRESSëSIGNATURE__75__FP__ADDRESSìSIGNATURE__76__FP__ADDRESSíSIGNATURE__77__FP__ADDRESSîSIGNATURE__78__FP__ADDRESSïSIGNATURE__79__FP__ADDRESSðSIGNATURE__80__FP__ADDRESSñSIGNATURE__81__FP__ADDRESSòSIGNATURE__82__FP__ADDRESSóSIGNATURE__83__FP__ADDRESSôSIGNATURE__84__FP__ADDRESSõSIGNATURE__85__FP__ADDRESSöSIGNATURE__86__FP__ADDRESS÷SIGNATURE__87__FP__ADDRESSøSIGNATURE__88__FP__ADDRESSùSIGNATURE__89__FP__ADDRESSúSIGNATURE__90__FP__ADDRESSûSIGNATURE__91__FP__ADDRESSüSIGNATURE__92__FP__ADDRESSýSIGNATURE__93__FP__ADDRESSþSIGNATURE__94__FP__ADDRESSÿSIGNATURE__95__FP__ADDRESS SIGNATURE__96__FP__ADDRESS SIGNATURE__97__FP__ADDRESS SIGNATURE__98__FP__ADDRESS SIGNATURE__99__FP__ADDRESS SIGNATURE__100__FP__ADDRESS SIGNATURE__101__FP__ADDRESS SIGNATURE__102__FP__ADDRESS SIGNATURE__103__FP__ADDRESS SIGNATURE__104__FP__ADDRESS SIGNATURE__105__FP__ADDRESS SIGNATURE__106__FP__ADDRESS SIGNATURE__107__FP__ADDRESS SIGNATURE__108__FP__ADDRESS SIGNATURE__109__FP__ADDRESS SIGNATURE__110__FP__ADDRESS SIGNATURE__111__FP__ADDRESS SIGNATURE__112__FP__ADDRESS SIGNATURE__113__FP__ADDRESS SIGNATURE__114__FP__ADDRESS SIGNATURE__115__FP__ADDRESS SIGNATURE__116__FP__ADDRESS SIGNATURE__117__FP__ADDRESS SIGNATURE__118__FP__ADDRESS SIGNATURE__119__FP__ADDRESS SIGNATURE__120__FP__ADDRESS SIGNATURE__121__FP__ADDRESS SIGNATURE__122__FP__ADDRESS SIGNATURE__123__FP__ADDRESS SIGNATURE__124__FP__ADDRESS SIGNATURE__125__FP__ADDRESS SIGNATURE__126__FP__ADDRESS SIGNATURE__127__FP__ADDRESS SIGNATURE__128__FP__ADDRESS¡ SIGNATURE__129__FP__ADDRESS¢ SIGNATURE__130__FP__ADDRESS£ SIGNATURE__131__FP__ADDRESS¤ SIGNATURE__132__FP__ADDRESS¥ SIGNATURE__133__FP__ADDRESS¦ SIGNATURE__134__FP__ADDRESS§ SIGNATURE__135__FP__ADDRESS¨ SIGNATURE__136__FP__ADDRESS© SIGNATURE__702__FP__ADDRESSª SIGNATURE__140__FP__ADDRESS« SIGNATURE__141__FP__ADDRESS¬ SIGNATURE__142__FP__ADDRESS SIGNATURE__143__FP__ADDRESS® SIGNATURE__144__FP__ADDRESS¯ SIGNATURE__145__FP__ADDRESS° SIGNATURE__146__FP__ADDRESS± SIGNATURE__147__FP__ADDRESS² SIGNATURE__148__FP__ADDRESS³ SIGNATURE__149__FP__ADDRESS´ SIGNATURE__150__FP__ADDRESSµ SIGNATURE__151__FP__ADDRESS¶ SIGNATURE__152__FP__ADDRESS· SIGNATURE__153__FP__ADDRESS¸ SIGNATURE__154__FP__ADDRESS¹ SIGNATURE__155__FP__ADDRESSº SIGNATURE__156__FP__ADDRESS» SIGNATURE__157__FP__ADDRESS¼ SIGNATURE__158__FP__ADDRESS½ SIGNATURE__159__FP__ADDRESS¾ SIGNATURE__160__FP__ADDRESS¿ SIGNATURE__161__FP__ADDRESSÀ SIGNATURE__162__FP__ADDRESSÁ SIGNATURE__163__FP__ADDRESS SIGNATURE__164__FP__ADDRESSà SIGNATURE__165__FP__ADDRESSÄ SIGNATURE__166__FP__ADDRESSÅ SIGNATURE__167__FP__ADDRESSÆ SIGNATURE__168__FP__ADDRESSÇ SIGNATURE__169__FP__ADDRESSÈ SIGNATURE__172__FP__ADDRESSÉ SIGNATURE__175__FP__ADDRESSÊ SIGNATURE__178__FP__ADDRESSË SIGNATURE__181__FP__ADDRESSÌ SIGNATURE__184__FP__ADDRESSÍ SIGNATURE__185__FP__ADDRESSÎ SIGNATURE__186__FP__ADDRESSÏ SIGNATURE__187__FP__ADDRESSÐ SIGNATURE__188__FP__ADDRESSÑ SIGNATURE__189__FP__ADDRESSÒ SIGNATURE__190__FP__ADDRESSÓ SIGNATURE__191__FP__ADDRESSÔ SIGNATURE__192__FP__ADDRESSÕ SIGNATURE__193__FP__ADDRESSÖ SIGNATURE__194__FP__ADDRESS× SIGNATURE__195__FP__ADDRESSØ SIGNATURE__196__FP__ADDRESSÙ SIGNATURE__199__FP__ADDRESSÚ SIGNATURE__200__FP__ADDRESSÛ SIGNATURE__201__FP__ADDRESSÜ SIGNATURE__202__FP__ADDRESSÝ SIGNATURE__203__FP__ADDRESSÞ SIGNATURE__204__FP__ADDRESSß SIGNATURE__205__FP__ADDRESSà SIGNATURE__206__FP__ADDRESSá SIGNATURE__207__FP__ADDRESSâ SIGNATURE__208__FP__ADDRESSã SIGNATURE__209__FP__ADDRESSä SIGNATURE__210__FP__ADDRESSå SIGNATURE__211__FP__ADDRESSæ SIGNATURE__212__FP__ADDRESSç SIGNATURE__213__FP__ADDRESSè SIGNATURE__214__FP__ADDRESSé SIGNATURE__215__FP__ADDRESSê SIGNATURE__216__FP__ADDRESSë SIGNATURE__217__FP__ADDRESSì SIGNATURE__218__FP__ADDRESSí SIGNATURE__219__FP__ADDRESSî SIGNATURE__238__FP__ADDRESSï SIGNATURE__239__FP__ADDRESSð SIGNATURE__245__FP__ADDRESSñ SIGNATURE__246__FP__ADDRESSò SIGNATURE__250__FP__ADDRESSó SIGNATURE__251__FP__ADDRESSô SIGNATURE__255__FP__ADDRESSõ SIGNATURE__256__FP__ADDRESSö SIGNATURE__260__FP__ADDRESS÷ SIGNATURE__261__FP__ADDRESSø SIGNATURE__265__FP__ADDRESSù SIGNATURE__266__FP__ADDRESSú SIGNATURE__270__FP__ADDRESSû SIGNATURE__271__FP__ADDRESSü SIGNATURE__275__FP__ADDRESSý SIGNATURE__276__FP__ADDRESSþ SIGNATURE__280__FP__ADDRESSÿ SIGNATURE__281__FP__ADDRESS!SIGNATURE__285__FP__ADDRESS!SIGNATURE__286__FP__ADDRESS!SIGNATURE__290__FP__ADDRESS!SIGNATURE__291__FP__ADDRESS!SIGNATURE__295__FP__ADDRESS !SIGNATURE__296__FP__ADDRESS!SIGNATURE__297__FP__ADDRESS!SIGNATURE__301__FP__ADDRESS!SIGNATURE__302__FP__ADDRESS!SIGNATURE__303__FP__ADDRESS!SIGNATURE__304__FP__ADDRESS!SIGNATURE__310__FP__ADDRESS!SIGNATURE__311__FP__ADDRESS!SIGNATURE__312__FP__ADDRESS!SIGNATURE__313__FP__ADDRESS!SIGNATURE__322__FP__ADDRESS!SIGNATURE__337__FP__ADDRESS!SIGNATURE__335__FP__ADDRESS!SIGNATURE__340__FP__ADDRESS!SIGNATURE__332__FP__ADDRESS!SIGNATURE__327__FP__ADDRESS!SIGNATURE__328__FP__ADDRESS!SIGNATURE__336__FP__ADDRESS!SIGNATURE__324__FP__ADDRESS!SIGNATURE__319__FP__ADDRESS!SIGNATURE__326__FP__ADDRESS!SIGNATURE__333__FP__ADDRESS!SIGNATURE__339__FP__ADDRESS!SIGNATURE__334__FP__ADDRESS!SIGNATURE__323__FP__ADDRESS!SIGNATURE__329__FP__ADDRESS!SIGNATURE__330__FP__ADDRESS !SIGNATURE__325__FP__ADDRESS¡!SIGNATURE__320__FP__ADDRESS¢!SIGNATURE__331__FP__ADDRESS£!SIGNATURE__321__FP__ADDRESS¤!SIGNATURE__341__FP__ADDRESS¥!SIGNATURE__338__FP__ADDRESS¦!SIGNATURE__346__FP__ADDRESS§!SIGNATURE__350__FP__ADDRESS¨!SIGNATURE__398__FP__ADDRESS©!SIGNATURE__395__FP__ADDRESSª!SIGNATURE__397__FP__ADDRESS«!SIGNATURE__396__FP__ADDRESS¬!SIGNATURE__394__FP__ADDRESS!SIGNATURE__370__FP__ADDRESS®!SIGNATURE__375__FP__ADDRESS¯!SIGNATURE__372__FP__ADDRESS°!SIGNATURE__371__FP__ADDRESS±!SIGNATURE__373__FP__ADDRESS²!SIGNATURE__374__FP__ADDRESS³!SIGNATURE__378__FP__ADDRESS´!SIGNATURE__420__FP__ADDRESSµ!SIGNATURE__418__FP__ADDRESS¶!SIGNATURE__423__FP__ADDRESS·!SIGNATURE__425__FP__ADDRESS¸!SIGNATURE__422__FP__ADDRESS¹!SIGNATURE__419__FP__ADDRESSº!SIGNATURE__426__FP__ADDRESS»!SIGNATURE__424__FP__ADDRESS¼!SIGNATURE__421__FP__ADDRESS½!SIGNATURE__468__FP__ADDRESS¾!SIGNATURE__470__FP__ADDRESS¿!SIGNATURE__471__FP__ADDRESSÀ!SIGNATURE__464__FP__ADDRESSÁ!SIGNATURE__459__FP__ADDRESSÂ!SIGNATURE__460__FP__ADDRESSÃ!SIGNATURE__467__FP__ADDRESSÄ!SIGNATURE__466__FP__ADDRESSÅ!SIGNATURE__465__FP__ADDRESSÆ!SIGNATURE__463__FP__ADDRESSÇ!SIGNATURE__457__FP__ADDRESSÈ!SIGNATURE__461__FP__ADDRESSÉ!SIGNATURE__472__FP__ADDRESSÊ!SIGNATURE__469__FP__ADDRESSË!SIGNATURE__458__FP__ADDRESSÌ!SIGNATURE__462__FP__ADDRESSÍ!SIGNATURE__443__FP__ADDRESSÎ!SIGNATURE__435__FP__ADDRESSÏ!SIGNATURE__440__FP__ADDRESSÐ!SIGNATURE__444__FP__ADDRESSÑ!SIGNATURE__441__FP__ADDRESSÒ!SIGNATURE__447__FP__ADDRESSÓ!SIGNATURE__446__FP__ADDRESSÔ!SIGNATURE__450__FP__ADDRESSÕ!SIGNATURE__442__FP__ADDRESSÖ!SIGNATURE__436__FP__ADDRESS×!SIGNATURE__434__FP__ADDRESSØ!SIGNATURE__438__FP__ADDRESSÙ!SIGNATURE__445__FP__ADDRESSÚ!SIGNATURE__448__FP__ADDRESSÛ!SIGNATURE__439__FP__ADDRESSÜ!SIGNATURE__449__FP__ADDRESSÝ!SIGNATURE__437__FP__ADDRESSÞ!SIGNATURE__404__FP__ADDRESSß!SIGNATURE__409__FP__ADDRESSà!SIGNATURE__406__FP__ADDRESSá!SIGNATURE__405__FP__ADDRESSâ!SIGNATURE__410__FP__ADDRESSã!SIGNATURE__407__FP__ADDRESSä!SIGNATURE__408__FP__ADDRESSå!SIGNATURE__387__FP__ADDRESSæ!SIGNATURE__383__FP__ADDRESSç!SIGNATURE__483__FP__ADDRESSè!SIGNATURE__481__FP__ADDRESSé!SIGNATURE__486__FP__ADDRESSê!SIGNATURE__487__FP__ADDRESSë!SIGNATURE__484__FP__ADDRESSì!SIGNATURE__482__FP__ADDRESSí!SIGNATURE__485__FP__ADDRESSî!SIGNATURE__359__FP__ADDRESSï!SIGNATURE__357__FP__ADDRESSð!SIGNATURE__362__FP__ADDRESSñ!SIGNATURE__361__FP__ADDRESSò!SIGNATURE__360__FP__ADDRESSó!SIGNATURE__358__FP__ADDRESSô!SIGNATURE__363__FP__ADDRESSõ!SIGNATURE__501__FP__ADDRESSö!SIGNATURE__494__FP__ADDRESS÷!SIGNATURE__498__FP__ADDRESSø!SIGNATURE__496__FP__ADDRESSù!SIGNATURE__495__FP__ADDRESSú!SIGNATURE__504__FP__ADDRESSû!SIGNATURE__502__FP__ADDRESSü!SIGNATURE__500__FP__ADDRESSý!SIGNATURE__497__FP__ADDRESSþ!SIGNATURE__499__FP__ADDRESSÿ!SIGNATURE__503__FP__ADDRESS"SIGNATURE__583__FP__ADDRESS"SIGNATURE__580__FP__ADDRESS"SIGNATURE__577__FP__ADDRESS"SIGNATURE__579__FP__ADDRESS"SIGNATURE__578__FP__ADDRESS "SIGNATURE__576__FP__ADDRESS"SIGNATURE__610__FP__ADDRESS"SIGNATURE__607__FP__ADDRESS"SIGNATURE__613__FP__ADDRESS"SIGNATURE__595__FP__ADDRESS"SIGNATURE__593__FP__ADDRESS"SIGNATURE__600__FP__ADDRESS"SIGNATURE__598__FP__ADDRESS"SIGNATURE__603__FP__ADDRESS"SIGNATURE__594__FP__ADDRESS"SIGNATURE__596__FP__ADDRESS"SIGNATURE__599__FP__ADDRESS"SIGNATURE__602__FP__ADDRESS"SIGNATURE__601__FP__ADDRESS"SIGNATURE__604__FP__ADDRESS"SIGNATURE__597__FP__ADDRESS"SIGNATURE__635__FP__ADDRESS"SIGNATURE__639__FP__ADDRESS"SIGNATURE__623__FP__ADDRESS"SIGNATURE__621__FP__ADDRESS"SIGNATURE__628__FP__ADDRESS"SIGNATURE__631__FP__ADDRESS"SIGNATURE__622__FP__ADDRESS"SIGNATURE__624__FP__ADDRESS"SIGNATURE__627__FP__ADDRESS"SIGNATURE__630__FP__ADDRESS"SIGNATURE__629__FP__ADDRESS "SIGNATURE__632__FP__ADDRESS¡"SIGNATURE__626__FP__ADDRESS¢"SIGNATURE__625__FP__ADDRESS£"SIGNATURE__646__FP__ADDRESS¤"SIGNATURE__650__FP__ADDRESS¥"SIGNATURE__648__FP__ADDRESS¦"SIGNATURE__647__FP__ADDRESS§"SIGNATURE__651__FP__ADDRESS¨"SIGNATURE__649__FP__ADDRESS©"SIGNATURE__654__FP__ADDRESSª"SIGNATURE__529__FP__ADDRESS«"SIGNATURE__537__FP__ADDRESS¬"SIGNATURE__535__FP__ADDRESS"SIGNATURE__550__FP__ADDRESS®"SIGNATURE__555__FP__ADDRESS¯"SIGNATURE__534__FP__ADDRESS°"SIGNATURE__564__FP__ADDRESS±"SIGNATURE__522__FP__ADDRESS²"SIGNATURE__568__FP__ADDRESS³"SIGNATURE__557__FP__ADDRESS´"SIGNATURE__533__FP__ADDRESSµ"SIGNATURE__567__FP__ADDRESS¶"SIGNATURE__544__FP__ADDRESS·"SIGNATURE__536__FP__ADDRESS¸"SIGNATURE__552__FP__ADDRESS¹"SIGNATURE__556__FP__ADDRESSº"SIGNATURE__523__FP__ADDRESS»"SIGNATURE__549__FP__ADDRESS¼"SIGNATURE__565__FP__ADDRESS½"SIGNATURE__545__FP__ADDRESS¾"SIGNATURE__512__FP__ADDRESS¿"SIGNATURE__518__FP__ADDRESSÀ"SIGNATURE__515__FP__ADDRESSÁ"SIGNATURE__559__FP__ADDRESSÂ"SIGNATURE__519__FP__ADDRESSÃ"SIGNATURE__543__FP__ADDRESSÄ"SIGNATURE__539__FP__ADDRESSÅ"SIGNATURE__542__FP__ADDRESSÆ"SIGNATURE__548__FP__ADDRESSÇ"SIGNATURE__553__FP__ADDRESSÈ"SIGNATURE__546__FP__ADDRESSÉ"SIGNATURE__530__FP__ADDRESSÊ"SIGNATURE__551__FP__ADDRESSË"SIGNATURE__540__FP__ADDRESSÌ"SIGNATURE__520__FP__ADDRESSÍ"SIGNATURE__560__FP__ADDRESSÎ"SIGNATURE__541__FP__ADDRESSÏ"SIGNATURE__531__FP__ADDRESSÐ"SIGNATURE__525__FP__ADDRESSÑ"SIGNATURE__558__FP__ADDRESSÒ"SIGNATURE__563__FP__ADDRESSÓ"SIGNATURE__526__FP__ADDRESSÔ"SIGNATURE__528__FP__ADDRESSÕ"SIGNATURE__566__FP__ADDRESSÖ"SIGNATURE__547__FP__ADDRESS×"SIGNATURE__517__FP__ADDRESSØ"SIGNATURE__513__FP__ADDRESSÙ"SIGNATURE__521__FP__ADDRESSÚ"SIGNATURE__516__FP__ADDRESSÛ"SIGNATURE__514__FP__ADDRESSÜ"SIGNATURE__511__FP__ADDRESSÝ"SIGNATURE__524__FP__ADDRESSÞ"SIGNATURE__561__FP__ADDRESSß"SIGNATURE__538__FP__ADDRESSà"SIGNATURE__554__FP__ADDRESSá"SIGNATURE__562__FP__ADDRESSâ"SIGNATURE__569__FP__ADDRESSã"SIGNATURE__532__FP__ADDRESSä"SIGNATURE__510__FP__ADDRESSå"SIGNATURE__527__FP__ADDRESSæ"SIGNATURE__586__FP__ADDRESSç"SIGNATURE__666__FP__ADDRESSè"SIGNATURE__663__FP__ADDRESSé"SIGNATURE__665__FP__ADDRESSê"SIGNATURE__664__FP__ADDRESSë"SIGNATURE__662__FP__ADDRESSì"SIGNATURE__671__FP__ADDRESSí"SIGNATURE__670__FP__ADDRESSî"SIGNATURE__682__FP__ADDRESSï"SIGNATURE__679__FP__ADDRESSð"SIGNATURE__681__FP__ADDRESSñ"SIGNATURE__680__FP__ADDRESSò"SIGNATURE__678__FP__ADDRESSó"SIGNATURE__687__FP__ADDRESSô"SIGNATURE__686__FP__ADDRESSõ"SIGNATURE__693__FP__ADDRESSö"SIGNATURE__692__FP__ADDRESS÷"SIGNATURE__698__FP__ADDRESSø"SIGNATURE__697__FP__ADDRESSù"SIGNATURE__713__FP__ADDRESSú"SIGNATURE__712__FP__ADDRESSû"SIGNATURE__725__FP__ADDRESSü"SIGNATURE__728__FP__ADDRESSý"SIGNATURE__727__FP__ADDRESSþ"SIGNATURE__729__FP__ADDRESSÿ"SIGNATURE__726__FP__ADDRESS#SIGNATURE__724__FP__ADDRESS#SIGNATURE__723__FP__ADDRESS#SIGNATURE__722__FP__ADDRESS#SIGNATURE__714__FP__ADDRESS#SIGNATURE__738__FP__ADDRESS #SIGNATURE__742__FP__ADDRESS#SIGNATURE__740__FP__ADDRESS#SIGNATURE__739__FP__ADDRESS#SIGNATURE__741__FP__ADDRESS#SIGNATURE__737__FP__ADDRESS#SIGNATURE__748__FP__ADDRESS#SIGNATURE__747__FP__ADDRESS#SIGNATURE__743__FP__ADDRESS#SIGNATURE__751__FP__ADDRESS#SIGNATURE__755__FP__ADDRESS#SIGNATURE__756__FP__ADDRESS#SIGNATURE__757__FP__ADDRESS#SIGNATURE__758__FP__ADDRESS#SIGNATURE__760__FP__ADDRESS#SIGNATURE__761__FP__ADDRESS#SIGNATURE__762__FP__ADDRESS#SIGNATURE__763__FP__ADDRESS#SIGNATURE__764__FP__ADDRESS#SIGNATURE__768__FP__ADDRESS#SIGNATURE__765__FP__ADDRESS#SIGNATURE__769__FP__ADDRESS#SIGNATURE__770__FP__ADDRESS#SIGNATURE__771__FP__ADDRESS#SIGNATURE__772__FP__ADDRESS#SIGNATURE__773__FP__ADDRESS#SIGNATURE__776__FP__ADDRESS#SIGNATURE__780__FP__ADDRESS #SIGNATURE__777__FP__ADDRESS¡#SIGNATURE__781__FP__ADDRESS¢#SIGNATURE__782__FP__ADDRESS£#SIGNATURE__783__FP__ADDRESS¤#SIGNATURE__786__FP__ADDRESS¥#SIGNATURE__787__FP__ADDRESS¦#SIGNATURE__788__FP__ADDRESS§#SIGNATURE__789__FP__ADDRESS¨#SIGNATURE__790__FP__ADDRESS©#SIGNATURE__791__FP__ADDRESSª#SIGNATURE__792__FP__ADDRESS«#SIGNATURE__793__FP__ADDRESS¬#SIGNATURE__794__FP__ADDRESS#SIGNATURE__795__FP__ADDRESS®#SIGNATURE__796__FP__ADDRESS¯#SIGNATURE__797__FP__ADDRESS°#SIGNATURE__798__FP__ADDRESS±#SIGNATURE__799__FP__ADDRESS²#SIGNATURE__800__FP__ADDRESS³#SIGNATURE__815__FP__ADDRESS´#SIGNATURE__812__FP__ADDRESSµ#SIGNATURE__809__FP__ADDRESS¶#SIGNATURE__811__FP__ADDRESS·#SIGNATURE__810__FP__ADDRESS¸#SIGNATURE__808__FP__ADDRESS¹#SIGNATURE__801__FP__ADDRESSº#SIGNATURE__818__FP__ADDRESS»#SIGNATURE__820__FP__ADDRESS¼#SIGNATURE__821__FP__ADDRESS½#SIGNATURE__822__FP__ADDRESS¾#SIGNATURE__823__FP__ADDRESS¿#SIGNATURE__824__FP__ADDRESSÀ#SIGNATURE__825__FP__ADDRESSÁ#SIGNATURE__826__FP__ADDRESSÂ#SIGNATURE__827__FP__ADDRESSÃ#SIGNATURE__829__FP__ADDRESSÄ#SIGNATURE__830__FP__ADDRESSÅ#SIGNATURE__831__FP__ADDRESSÆ#SIGNATURE__832__FP__ADDRESSÇ#SIGNATURE__833__FP__ADDRESSÈ#SIGNATURE__834__FP__ADDRESSÉ#SIGNATURE__835__FP__ADDRESSÊ#SIGNATURE__836__FP__ADDRESSË#SIGNATURE__837__FP__ADDRESSÌ#SIGNATURE__838__FP__ADDRESSÍ#SIGNATURE__839__FP__ADDRESSÎ#SIGNATURE__841__FP__ADDRESSÏ#SIGNATURE__842__FP__ADDRESSÐ#SIGNATURE__843__FP__ADDRESSÑ#SIGNATURE__844__FP__ADDRESSÒ#SIGNATURE__845__FP__ADDRESSÓ#SIGNATURE__846__FP__ADDRESSÔ#SIGNATURE__853__FP__ADDRESSÕ#SIGNATURE__850__FP__ADDRESSÖ#SIGNATURE__861__FP__ADDRESS×#SIGNATURE__859__FP__ADDRESSØ#SIGNATURE__865__FP__ADDRESSÙ#SIGNATURE__863__FP__ADDRESSÚ#SIGNATURE__864__FP__ADDRESSÛ#SIGNATURE__860__FP__ADDRESSÜ#SIGNATURE__862__FP__ADDRESSÝ#SIGNATURE__866__FP__ADDRESSÞ#SIGNATURE__867__FP__ADDRESSß#SIGNATURE__868__FP__ADDRESSà#SIGNATURE__869__FP__ADDRESSá#SIGNATURE__872__FP__ADDRESSâ#SIGNATURE__873__FP__ADDRESSã#SIGNATURE__874__FP__ADDRESSä#SIGNATURE__875__FP__ADDRESSå#SIGNATURE__878__FP__ADDRESSæ#SIGNATURE__881__FP__ADDRESSç#SIGNATURE__882__FP__ADDRESSè#SIGNATURE__883__FP__ADDRESSé#SIGNATURE__884__FP__ADDRESSê#SIGNATURE__885__FP__ADDRESSë#SIGNATURE__886__FP__ADDRESSì#SIGNATURE__888__FP__ADDRESSí#SIGNATURE__890__FP__ADDRESSî#SIGNATURE__892__FP__ADDRESSï#SIGNATURE__894__FP__ADDRESSð#SIGNATURE__895__FP__ADDRESSñ#SIGNATURE__896__FP__ADDRESSò#SIGNATURE__897__FP__ADDRESSó#SIGNATURE__898__FP__ADDRESSô#SIGNATURE__899__FP__ADDRESSõ#SIGNATURE__900__FP__ADDRESSö#SIGNATURE__901__FP__ADDRESS÷#SIGNATURE__902__FP__ADDRESSø#SIGNATURE__903__FP__ADDRESSù#SIGNATURE__904__FP__ADDRESSú#SIGNATURE__905__FP__ADDRESSû#SIGNATURE__906__FP__ADDRESSü#SIGNATURE__907__FP__ADDRESSý#SIGNATURE__908__FP__ADDRESSþ#SIGNATURE__909__FP__ADDRESSÿ#SIGNATURE__910__FP__ADDRESS$SIGNATURE__911__FP__ADDRESS$SIGNATURE__912__FP__ADDRESS$SIGNATURE__913__FP__ADDRESS$9NoInit, NoCompareWithNew, Compiled, SuperGlobal, Internal$3 Base type and swapping information for io channels $ 2906528882$BaseTypeInformation$7 The low byte contains the base clase of the io channel$ CMLBT_Mask$7 If this bit is set, the base type information is valid$CMLBT_IS_SET$E Enable flag, if this bit is set to 0, the swapping must be disabled.$CMLBT_ENABLE$$ca9ad7fa-6105-44aa-b100-d441fed9fb53$ Fieldbus independent parameters$ 3214716919$BusIndependentParameterIDs$A Parameter to identify netX devices.TRUE indicates a netX device.$FIP_NETX_DEVICE$S Master Watchdog TIME. 0 deactivates the watchdog, 1-0xFFFF sets the watchdog TIME.$FIP_WATCHDOG$- Slot number of the NetX device e.g. PCI slot$FIP_NETX_SLOT_NUMBER$8 A NetX chip may have up to four communication channels.$FIP_NETX_CHANNEL_NUMBER$ Wait time for the BUS_ON signal of the master in the IO Driver. If it is set to 0, the IO driver does not wait for the BUS ON signal.$FIP_BUS_ON_TIMEOUT$e Name of the device, if target setting deviceconfiguration:enableAdditionalParameters is set to TRUE.$FIP_DEVICENAME$s Hashcode of DeviceIdentification, if target setting deficeconfiguration:enableAdditionalParameters is set to TRUE.$FIP_DEVICEIDENTIFICATION_HASH$, Value of UpdateIOInStop (see PLC settings). $FIP_UPDATE_IO_IN_STOP¡$0 Used for Safety. Describing the used protocols.¢$FIP_SAFETY_PROTOCOL£$Q Contains the version of the fieldbus config schema e.g. 16#03050100 for V3.5.1.0¤$FIP_CONFIG_VERSION¥$i Number of parameters beginning at 0x7f000019 (max. 256 Parameters) describing the used safety protocols.¦$FIP_NUMBER_OF_SAFETY_PROTOCOLS§$ First Safety Protocol Parameter¨$FIP_FIRST_SAFETY_PROTOCOL_PARAM©$ Last Safety Protocol Parameterª$FIP_LAST_SAFETY_PROTOCOL_PARAM«$$4a181e1a-4536-4b69-9aaa-cb9b31f14916¬$N Connector flags: Flags that specifies diagnostic informations of a connector $ 1256596728®$ConnectorFlags¯$ Connector enabled°$ CF_ENABLE±$8 Connector provides diagnosis for the associated device.²$CF_DIAG_PROVIDER³$g Only valid if CF_DIAG_PROVIDER is set. Specifies if device is currently enabled (used by Reconfigure).´$CF_DEVICE_ENABLEDµ$ Demo License is active¶$CF_DEMOLICENSE_ACTIVE·$ A driver is available¸$CF_DRIVER_AVAILABLE¹$" Connector found (device detected)º$CF_CONNECTOR_FOUND»$ Connector configured¼$CF_CONNECTOR_CONFIGURED½$ Connector active¾$CF_CONNECTOR_ACTIVE¿$ Bus errorÀ$CF_CONNECTOR_BUS_ERRORÁ$ General connector errorÂ$CF_CONNECTOR_ERRORÃ$! Diagnostic information availableÄ$!CF_CONNECTOR_DIAGNOSTIC_AVAILABLEÅ$8 Passive mode of the second master in redundancy systemsÆ$CF_CONNECTOR_PASSIVEÇ$0An Error was automatically cleared by the driverÈ$CF_ERROR_CLEAREDÉ$$c718ceaa-635a-4cfd-ba2c-768a82c26857Ê$A Connector options: Options to specify properties of a connector Ë$ 2882327493Ì$ConnectorOptionsÍ$ No optionÎ$CO_NONEÏ$¸ Scan the IO-configuration with segmented transfer is supported. In this case, the call of IoDrvScanModules() can return ERR_PENDING to get further calls to transmit more scan results.Ð$CO_SCAN_PENDING_SUPPORTEDÑ$$62a7a276-ff5c-4692-9d2b-ead8aef2ed09Ò$= Types of connectors. "0x8000..0x8FFF" are Special ConnectorsÓ$ 4271018223Ô$ConnectorTypesÕ$6 Programmable connector (can be programmed by CoDeSys)Ö$CT_PROGRAMMABLE×$! Connector is only parametrizableØ$CT_PARAMETRIZABLEÙ$ CANbusÚ$ CT_CAN_BUSÛ$ CANopen MasterÜ$ CT_CAN_MASTERÝ$ CANopen Remote SlaveÞ$CT_CAN_SLAVEß$ CANopen Local Device à$ CT_CAN_DEVICEá$ CANopen Safetyâ$CT_CANOPEN_SAFETYã$ J1939 Managerä$CT_J1939_MANAGERå$ J1939 ECUæ$CT_J1939_ECUç$ CANopen Safety Slaveè$CT_CANOPEN_SAFETY_SLAVEé$ Profibus Masterê$CT_PROFIBUS_MASTERë$ Profibus Slaveì$CT_PROFIBUS_SLAVEí$ Profibus Deviceî$CT_PROFIBUS_DEVICEï$ Profibus modular Masterð$CT_PROFIBUS_MOD_MASTERñ$ Profibus modular Slaveò$CT_PROFIBUS_MOD_SLAVEó$ Profibus DeviceNet Masterô$CT_DEVICENET_MASTERõ$ Profibus DeviceNet Slaveö$CT_DEVICENET_SLAVE÷$ DeviceNet Deviceø$CT_DEVICENET_DEVICEù$ EtherCAT Masterú$CT_ETHERCAT_MASTERû$ EtherCAT Slaveü$CT_ETHERCAT_SLAVEý$ EtherCAT Deviceþ$CT_ETHERCAT_DEVICEÿ$ EtherNet/IP Scanner%CT_ENIP_SCANNER% EtherNet/IP Remote Adapter%CT_ENIP_REMOTE_ADAPTER% PCI Master% CT_PCI_MASTER % PCI Slave%CT_PCI_SLAVE%$c87be3b5-dafe-4495-952e-a6dffce8842d% 3062691420%DriverPropertyFlags% IO-driver realizes bit-consistency by its own (atomar bit access). If this flag is 0, the bit-consistency is provided by the IO-Manager.%DRVPROP_CONSISTENCY%¨ The io driver needs a cyclic call TO the IoDrvWatchdogTrigger INTERFACE FUNCTION. The io manager will call the io driver approximately every Watchdogtime/2. The Watchdogtime must be set in the IoConfig parameters (ID 0x70000001). ATTENTION: The io manager will pass a NULL pointer as parameter pConnector to the IIoDrv interface function IoDrvWatchdogTrigger. If this flag is 0, the driver must trigger the watchdog itself.%DRVPROP_WATCHDOG%u IO-driver can support redundancy. If the flag DRVPROP_REDUNDANCY is 1, the redundancy is provided by the IO-Manager.%DRVPROP_REDUNDANCY%I If the flag DRVPROP_ACTIVE is 1, the master is active otherwise passive.%DRVPROP_ACTIVE% The flag DRVPROP_ERROR_ACTIVE is used to tell the redundancy component that the active master has an error and it should switchover (only on active plc).%DRVPROP_ERROR_ACTIVE%j The flag DRVPROP_ERROR_PASSIVE can be set to inform redundancy component that the communication was lost.%DRVPROP_ERROR_PASSIVE% If this property is set, the interface function IoDrvGetModuleDiagnosis() of the driver is called cyclically from a background task. NOTE: In this case, IoDrvGetModuleDiagnosis is called with: IoDrvGetModuleDiagnosis(hIoDrv, NULL); This must be handled correctly in the IO-driver! %DRVPROP_BACKGROUND_GETDIAG%à Disable synchronization for ReadInputs/WriteOutputs/StartBusCycle in the I/O Manager (CmpIoMgr). In this case the I/O driver has to implement the synchronization of these functions itself. CmpIoMgr provides the following functions that can be used by the I/O driver for synchronization: IoMgrLockEnter(), IoMgrLockLeave() %DRVPROP_NO_SYNC%$49ec242b-5a81-4d85-9c22-00f1a2026752% Scopes for mutual-exclusion locks to be used with the ``dwLockScope`` parameters of the functions ``IoMgrLockEnter()`` and ``IoMgrLockLeave()``. Note: Use both locks ``IOMGR_LOCK_WRITE_OUTPUTS OR IOMGR_LOCK_READ_INPUTS`` in the function ``IoDrvStartBusCycle()``.% 1750284199% LockScopes%F Lock critical sections in IoDrvReadInputs() and IoDrvStartBusCycle().%IOMGR_LOCK_READ_INPUTS %H Lock critical sections in IoDrvWriteOutputs() and IoDrvStartBusCycle().¡%IOMGR_LOCK_WRITE_OUTPUTS¢%$8293b298-c8b3-457c-a427-e9ab569ef5b0£% Parameter value flags¤% 2737844889¥%ParameterValueFlags¦%A Functional access TO the parameter, Value is a FUNCTION POINTER.§%PVF_FUNCTION¨% Value is a pointer to the value©%PVF_POINTERª%F Value can be interpreted directly as a value (max. 32 Bit datatypes).«% PVF_VALUE¬% Parameter can be read.%PVF_READ®% Parameter can be written¯% PVF_WRITE°%a Output is bidirectional. There will be a call in IoDrvWriteOutputs as well as in IoDrvReadInputs±%PVF_BIDIRECTIONAL²%$f917dec1-6a21-4f14-b013-9452261c64db³%# Types of IO-channels in a task map´% 3184734194µ%TaskMapTypes¶% Input connector maps·% TMT_INPUTS¸% Output connector maps¹%TMT_OUTPUTSº%$5b8f49a3-c5d0-4510-93fe-4205d28c3905»% 2201444556¼%EventIDs½%CMPID_CmpIoMgr¾% Parameter ID¿%EVTPARAMID_CmpIoMgrÀ% Parameter versionÁ%EVTVERSION_CmpIoMgrÂ%3Event is sent before updating the IO-configuration.Ã%EVT_PrepareUpdateConfigurationÄ%2Event is sent after updating the IO-configuration.Å%EVT_UpdateConfigurationDoneÆ%6Event is sent after the config application is started.Ç%EVT_ConfigAppStartedDoneÈ%7Event is sent before the config application is stopped.É%EVT_PrepareConfigAppStoppedÊ%6Event is sent after the config application is stopped.Ë%EVT_ConfigAppStoppedDoneÌ%$a036c876-a9b4-48d2-ad0b-64d64266326bÍ%0 Type of the bus cycle to differenciate between:Î% 1947881383Ï%BusCycleTypeÐ%9 Bus Cycle is executed at the beginning of the task cycleÑ% BCT_STARTÒ%3 Bus Cycle is executed at the end of the task cycleÓ%BCT_ENDÔ%$cd022f44-7898-4d97-b223-ba8a1334a3feÕ%analysisÖ%-27, -31, -33, -43×% 4038458023Ø%SVN_Info_SummaryÙ%® Version-Summary-Tag ähnlich zu svnversion.exe. * Beispiel, '12:34M' bedeutet MINREV=12, MAXREV=34, Geändert. * (Siehe SVN-Dokumentation für weitere Informationen) Ú%35125MÛ%sVersionSummaryÜ%$1e48524d-73cb-46d1-b590-36eb2c1a7c3fÝ%-27, -31, -33, -43, -113Þ% 1943799135ß%SVN_Info_SummaryWà%WStringá%wsVersionSummaryâ%$9755c5b0-2092-4717-b940-0c916fcb381cã% 3734062428ä%SVN_Info_URIå% Die SVN-URL des Projekts: æ%^svn://server04/LibrariesV3Source/branches/V3.5.15.0/Intern/IoDriverBase/IoStandard/IoStandard/ç%wURLè%$b1ef4121-f1a4-4c26-958e-7db6863465e5é% 4210413777ê%SVN_Info_Revisionsë%* Die kleinste Revision der Arbeitskopie. ì%LIntí% liMinRevisionî%* Die höchste Revision der Arbeitskopie. ï% liMaxRevisionð%$58c55deb-e981-48ac-bd9d-96ba99db81acñ% 4231687110ò%SVN_Info_Flagsó% TRUE, wenn die Arbeitskopie unvollständig ist * (z.B. die letzte Aktualisierung wegen Verbindungsproblemen abgebrochen, oder lückenhaftes Checkout) ô%xIncompleteõ%( TRUE, wenn es lokale Ãnderungen gibt ö% xModified÷%/ TRUE, wenn es umgeschaltete Unterbäume gibt ø% xSwitchedù% TRUE, wenn die Version sauber ist. * (MINREVISION == MAXREVISION, nicht unvollständig, nicht geändert, nicht umgeschaltet.) ú%xCleanû%$8e8e011c-3eb6-4b86-9c71-d98f353a1692ü%â Warnung: Die Werte der "letzen Ãnderung" hier ist nur genau, wenn der Status ihres Arbeitsverzeichnisses sauber ist. Beispielsweise sind die Werte ungenau, wenn gemischte Revisionen oder lokale Ãnderungen vorhanden sind. ý% 1257847159þ%SVN_Info_LastChangeÿ%È Datum und Uhrzeit der letzten Ãnderung als IEC DateTime(UTC). Sie können die IEC Time Bibliotheken verwenden, um auf die lokale Zeit der SPS umzurechnen und nach Ihren Wünschen zu formattieren. &DateAndTime&dtLastChangeUtc&È Letzte Ãnderung vorformatiert im Format "2006-07-22 21:42:37 -0700 (Sat, 22 Jul 2006)" (analog zum * SVN-Schlüsselwort $Date$ Keyword), mit Verwendung der lokalen Zeitdes Entwicklungsrechners. &,2019-06-05 08:48:56 +0200 (Wed, 05 Jun 2019)&wsLastChangeLocal & Der Autor des letzen Commits. &b.brueckmann&wsLastChangeAuthor&$a141e132-98bc-4040-98d9-5ab52651951a&global_init_slot&40000& 2434124423& GVL_hidden&gc_CLASSID_License&Time&gc_tDemo&g_tDemoTime&g_olm&AGlobal, IsCompiled, Absolut, Initialized, OnlChangeExit, Typified& g_udiStart&$60802aa3-0da6-43f2-b1c6-612c13d38103& 3998489052&$6c565d0a-715a-4bda-9c41-364072c0854f&RTS_ACCESS_MODE& 3616192811&AM_READ&AM_WRITE& AM_APPEND&AM_READ_PLUS&"Enum, Compiled, Typified, Internal&$f6709db2-0787-4cc0-984b-80f9dc50344c&F{attribute 'conditionalshow' := '3SLib_Developer'} {attribute 'hide'} & 4261187534¡& Variables¢&stLogString£& pLogString¤&$cd51317e-3db2-44da-bb88-6b22ca144fe3¥& no_assign¦& 1142006893§& GVL_CfUnit¨&CfUnitRunner©&W Indication of whether the last instantiated test suite has an assert instance created ª&TestSuiteAssertRegistered«&! Current test suite being called ¬&CurrentTestSuiteBeingCalled&# Current name of test being called ®&CurrentTestNameBeingCalled¯&C Whether or not the current test being called has finished running °&CurrentTestIsFinished±&û This is a flag that indicates that the current test should be ignored, and thus that all assertions under it should be ignored as well. A test can be ignored either because the user has requested so, or because the test is a duplicate name ²&IgnoreCurrentTest³&b The assert function block instance should be 1:1 mapped to the test suite instance path. ´&NumberOfInitializedTestSuitesµ&TestSuiteAddresses¶&$78472b76-c9a4-4b27-a580-8e7898edc3d7·& parameterlist¸& 4284228194¹&$cadec786-f15c-46d7-8a5f-f8454136b189º&strict»& 2220631024¼& E_XmlError½&Ok¾&ErrorMaxBufferLen¿&ErrorStringLenÀ&ErrorÁ&$05a4fdda-1086-47b5-ad10-7c2bac568355Â& 391875452Ã&B Maximum filesize in bytes (32 kb default, reserved in PLC memory)Ä&: Filepath for testresults.xml, e.g.: for use with jenkins Å&testresults.xmlÆ&FilePathÇ&$69588962-bd3e-4958-957e-7bfb94609af1È& 356200577É& GVL_SystemÊ& _ST_LoggerË& _CmpCfLogÌ&$7e465938-43b3-4ac5-bae5-c19fce2bd2bfÍ&¥ | Access mode | File modes to open a file. .. note:: For all ``*_PLUS`` modes be aware, that after reading from a file, writing can only be done after a call to |SysFileGetPos| or |SysFileSetPos|! If you call |SysFileWrite| right after |SysFileRead|, the file pointer could be on an invalid position! Correct example:: SysFileRead(); SysFileGetPos(); SysFileWrite();Î&K Open an existing file with Read access. If file does not exist, Open failsÏ&L Create new file with Write access. If file does exist, content is discardedÐ&Z Open an existing file with Append (only write) access. If file does not exist, Open failsÑ&Q Open an existing file with Read/Write access. If file does not exist, Open failsÒ&Q Create new file with Read/Write access. If file does exist, content is discardedÓ&g Open an existing file with Append (read/write) access. If file does not exist, Open creates a new fileÔ&$52A6FD6D-031C-41c0-A818-0F45FE19AF8FÕ& 3969002541Ö&TYPE_INTERFACE×&$18308f84-bb54-40d0-ae45-a2e8c891c222Ø& 1265334668Ù&ErrorsÚ& OkÛ&ERR_OKÜ&5 General error - to be used only for internal errors Ý& ERR_FAILEDÞ&% Invalid parameter for this operationß& ERR_PARAMETERà&e Function cannot be executed, since component has not been initialized yet. It may work later, thoughá&ERR_NOTINITIALIZEDâ& Version conflictã&ERR_VERSIONä& Operation timed outå&ERR_TIMEOUTæ&- Insufficient memory to carry out the requestç&ERR_NOBUFFERè&( For async-calls: call not complete, yeté&ERR_PENDINGê&! To many pending calls. Try laterë&ERR_NUMPENDINGì& The function is not implementedí&ERR_NOTIMPLEMENTEDî&% No object with the provided id foundï& ERR_INVALIDIDð& Integer overflowñ&ERR_OVERFLOWò&, The size of a buffer is to small or invalidó&ERR_BUFFERSIZEô&- No object with this specified name availableõ& ERR_NO_OBJECTö& No heap memory available÷&ERR_NOMEMORYø&0 An object with the same name is still availableù& ERR_DUPLICATEú&> Heap memory was written out of bounds! Memory overwrite errorû&ERR_MEMORY_OVERWRITEü& Invalid handle TO an objectý&ERR_INVALID_HANDLEþ& End OF object reachedÿ&ERR_END_OF_OBJECT' No changes done' ERR_NO_CHANGE' Invalid OR unknown INTERFACE'ERR_INVALID_INTERFACE' Functionality NOT supported 'ERR_NOT_SUPPORTED'$ No access rights FOR THIS operation'ERR_NO_ACCESS_RIGHTS'( Specified limits OF a resource exceeded'ERR_OUT_OF_LIMITS'M Remaining entries that could NOT be transmitted because OF buffer limitation'ERR_ENTRIES_REMAINING' Invalid online sessionid'ERR_INVALID_SESSION_ID' Exception occurred' ERR_EXCEPTION'& Signature mismatch OF an api FUNCTION'ERR_SIGNATURE_MISMATCH' Version mismatch'ERR_VERSION_MISMATCH' TYPE mismatch'ERR_TYPE_MISMATCH' ID mismatch'ERR_ID_MISMATCH' Consistency error'ERR_NO_CONSISTENCY' No COMM_CYCLE needed'ERR_NO_COMM_CYCLE'' DO NOT suspend task after an exception'ERR_DONT_SUSPEND_TASK'* Memory cannot be locked in THIS operation'ERR_MEMORY_LOCK_FAILED ' License missing FOR the runtime¡'ERR_LICENSE_MISSING¢' Operation denied£'ERR_OPERATION_DENIED¤' Device error¥' ERR_DEVICE¦' Disk full§' ERR_DISK_FULL¨' Internal use in runtime©'ERR_CRC_FAILEDª'ERR_MEDIA_ERASE«'T File error. e.g. cannot open a file FOR writing because it could be write PROTECTED¬'ERR_FILE_ERROR' No RETAIN memory available®'ERR_NO_RETAIN_MEMORY¯'/ Specified minimum-limit of a resource exceeded°'ERR_OUT_OF_LIMITS_MIN±'/ Specified maximum-limit of a resource exceeded²'ERR_OUT_OF_LIMITS_MAX³' Size mismatch ´'ERR_SIZE_MISMATCHµ'> Operation is not yet finished, call function again to proceed¶'ERR_CALL_AGAIN·'+ Operation has nothing TO DO. No execution.¸'ERR_NOTHING_TO_DO¹'¹ Some security checks have failed. THIS is a generic error code TO report THIS error over PUBLIC channels. In THIS CASE the error code doesn't provide a detailed cause for the error. */º'ERR_SECURITY_CHECKS_FAILED»'ERR_INVALID_SEQUENCE¼'f Dereferencing an IEC reference in IecVarAccess failed due to invalid destination address, e. G. NULL.½'ERR_INVALID_REFERENCE¾'1 Conversion of string encodings was not lossless.¿'ERR_CONVERSION_INCOMPLETEÀ' Socket not initialized Á'ERR_SOCK_NOTINITIALIZEDÂ'& The provided socket handle is invalidÃ'ERR_SOCK_NOTSOCKETÄ'$ The address family is NOT supportedÅ'ERR_SOCK_AFUNSUPPORTEDÆ' Protocol is NOT supportedÇ'ERR_SOCK_PROTOUNSUPPORTEDÈ'( NOT enough buffer TO handle the requestÉ'ERR_SOCK_NOBUFFERÊ'8 Socket is in nonblocking mode but THIS call would blockË'ERR_SOCK_WOULDBLOCKÌ'' The provided address is already in useÍ'ERR_SOCK_ADDRINUSEÎ'7 The provided address is NOT available on THIS computerÏ'ERR_SOCK_ADDRNOTAVAILABLEÐ'/ Connection has been refused BY the remote hostÑ'ERR_SOCK_CONNREFUSEDÒ'ERR_SOCK_TIMEDOUTÓ' The host has NOT been foundÔ'ERR_SOCK_HOSTNOTFOUNDÕ' Host is unreachableÖ'ERR_SOCK_HOSTUNREACHABLE×' Socket is already connectedØ'ERR_SOCK_ISCONNECTEDÙ' The socket is NOT connectedÚ'ERR_SOCK_NOTCONNECTEDÛ'' Shutdown has been called on the socketÜ'ERR_SOCK_SHUTDOWNÝ'P FOR sockets OF TYPE DGRAM. The package TO send exceeds the maximum package sizeÞ'ERR_SOCK_MSGSIZEß'B Socket has been gracefully closed. No more send/receives allowed à'ERR_SOCK_CLOSEDá', Tag missing in online communication buffer â'ERR_L7_TAG_MISSINGã' Unknown command groupä'ERR_L7_UNKNOWNCMDGROUPå'/ Unknown command (within a valid command group)æ'ERR_L7_UNKNOWNCMDç' Level 7 service incompleteè'ERR_L7_INCOMPLETEé'# Certificate validation error codesê'ERR_CERT_OKë'B illegal error (FOR uninitialized values, TO avoid ERR_CERT_OK) */ì'"ERR_CERT_UNABLE_TO_GET_ISSUER_CERTí'ERR_CERT_UNABLE_TO_GET_CRLî')ERR_CERT_UNABLE_TO_DECRYPT_CERT_SIGNATUREï'(ERR_CERT_UNABLE_TO_DECRYPT_CRL_SIGNATUREð'+ERR_CERT_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEYñ'ERR_CERT_SIGNATURE_FAILUREò'ERR_CERT_CRL_SIGNATURE_FAILUREó'ERR_CERT_NOT_YET_VALIDô'ERR_CERT_HAS_EXPIREDõ'ERR_CERT_CRL_NOT_YET_VALIDö'ERR_CERT_CRL_HAS_EXPIRED÷''ERR_CERT_ERROR_IN_CERT_NOT_BEFORE_FIELDø'&ERR_CERT_ERROR_IN_CERT_NOT_AFTER_FIELDù''ERR_CERT_ERROR_IN_CRL_LAST_UPDATE_FIELDú''ERR_CERT_ERROR_IN_CRL_NEXT_UPDATE_FIELDû'ERR_CERT_OUT_OF_MEMü'$ERR_CERT_DEPTH_ZERO_SELF_SIGNED_CERTý'"ERR_CERT_SELF_SIGNED_CERT_IN_CHAINþ'*ERR_CERT_UNABLE_TO_GET_ISSUER_CERT_LOCALLYÿ'(ERR_CERT_UNABLE_TO_VERIFY_LEAF_SIGNATURE(ERR_CERT_CHAIN_TOO_LONG(ERR_CERT_REVOKED(ERR_CERT_INVALID_CA(ERR_CERT_PATH_LENGTH_EXCEEDED(ERR_CERT_INVALID_PURPOSE (ERR_CERT_UNTRUSTED(ERR_CERT_REJECTED(7 These are 'informational' when looking for issuer cert( ERR_CERT_SUBJECT_ISSUER_MISMATCH(ERR_CERT_AKID_SKID_MISMATCH($ERR_CERT_AKID_ISSUER_SERIAL_MISMATCH(ERR_CERT_KEYUSAGE_NO_CERTSIGN(!ERR_CERT_UNABLE_TO_GET_CRL_ISSUER(%ERR_CERT_UNHANDLED_CRITICAL_EXTENSION(ERR_CERT_KEYUSAGE_NO_CRL_SIGN()ERR_CERT_UNHANDLED_CRITICAL_CRL_EXTENSION(ERR_CERT_INVALID_NON_CA(#ERR_CERT_PROXY_PATH_LENGTH_EXCEEDED(&ERR_CERT_KEYUSAGE_NO_DIGITAL_SIGNATURE('ERR_CERT_PROXY_CERTIFICATES_NOT_ALLOWED(ERR_CERT_INVALID_EXTENSION(!ERR_CERT_INVALID_POLICY_EXTENSION(ERR_CERT_NO_EXPLICIT_POLICY(ERR_CERT_DIFFERENT_CRL_SCOPE(&ERR_CERT_UNSUPPORTED_EXTENSION_FEATURE(ERR_CERT_UNNESTED_RESOURCE(ERR_CERT_PERMITTED_VIOLATION(ERR_CERT_EXCLUDED_VIOLATION(ERR_CERT_SUBTREE_MINMAX($ERR_CERT_UNSUPPORTED_CONSTRAINT_TYPE(&ERR_CERT_UNSUPPORTED_CONSTRAINT_SYNTAX( ERR_CERT_UNSUPPORTED_NAME_SYNTAX ("ERR_CERT_CRL_PATH_VALIDATION_ERROR¡( The application is not happy¢(!ERR_CERT_APPLICATION_VERIFICATION£(ERR_CERT_MISSING¤(ERR_CERT_UNKNOWN_ERROR¥($adcc37d5-f407-4f11-9834-0c31bac94657¦((cmperrors2 interfaces, 3.5.15.0 (system)§( 1784674971¨(LogConstants©( STD_LOGGERª(LOG_STD_LOGGER«(Pointer¬(RTS_INVALID_HANDLE(LOG_INVALID_HANDLE®($4084b11d-b9ee-47b9-ad20-f9bc4eeb6bb6¯( 1666259597°(LogClass±(LOG_NONE²(LOG_INFO³(LOG_WARNING´( LOG_ERRORµ( LOG_EXCEPTION¶( LOG_DEBUG·(LOG_USER_NOTIFY¸(LOG_ALL¹($4daa954b-f889-4b97-a05f-93d44b64f374º( 3164948391»(LT_HIGHSPEED¼(LT_SAFE½( LT_NORMAL¾(LT_TIMESTAMP_RTC¿(LT_TIMESTAMP_MSÀ(LT_TIMESTAMP_USÁ(LT_TIMESTAMP_NSÂ( LT_NO_DISABLEÃ( LT_DUMP_ASYNCÄ(LT_DUMP_ALWAYSÅ(LT_DUMP_ON_CLOSEÆ(LT_DUMP_ON_REQUESTÇ(OrÈ($0f010cee-3948-41fd-82ad-af5b1e2e8803É(49000Ê( 251212993Ë(HandleConstantsÌ(suppress_warning_0Í(C0195Î($471467d5-89a4-4482-b970-b13eff79244eÏ( 1192820603Ð(GlobalConstantsÑ(Common DefinesÒ($0c76e09e-5f6c-41d5-841a-2071be1c6304Ó( 330479632Ô(ComponentIDÕ(E ComponentID of the component manager, e.g. to specify for EventOpen Ö(CMPID_CmpMgr×(B ComponentID as a placeholder for all IEC components/applications Ø( CMPID_IecCodeÙ(CMPID_CmpFileTransferÚ($228db6b8-947d-4adb-8c50-8280abf93255Û('Typified, Compiled, ContainsNoParseTreeÜ(System.ByteÝ( RelocatedÞ(ToCheckß(ATopLevel, Typified, NotForUpToDate, Compiled, ContainsNoParseTreeà(7Typified, Compiled, ContainsNoParseTree, ContainsNoCodeá(StaticFunctionCallâ(1TopLevel, Typified, Compiled, ContainsNoParseTreeã(^TopLevel, Typified, ToCompile, Compiled, ContainsNoParseTree, Generated, ToGenerate, NoCompileä(OTopLevel, Typified, Compiled, ContainsNoParseTree, ContainsVirtualFunctionCallså(ETypified, Compiled, ContainsNoParseTree, ContainsVirtualFunctionCallsæ(VirtualFunctionCallç( InterfaceCallè(PTypified, ToCompile, Compiled, ContainsNoParseTree, ContainsVirtualFunctionCallsé(0ê(ITypified, ToCompile, Compiled, ContainsNoParseTree, Generated, ToGenerateë(__DOWNLOAD__CODEì(__ONLINE__CHANGE__CODEí("__DATASEGMENTFLAGS__305__GVL__INITî(GTopLevel, Typified, ToCompile, Compiled, ContainsNoParseTree, NoCompileï(#__COMPILE_CONSTANTS__306__GVL__INITð(__WATCHVARS__307__GVL__INITñ(1__ALLOCATEDIMPLICITREFERENCETYPES__308__GVL__INITò(#CONSTANTS__309__SYSTEM____GVL__INITó(TYPE_CLASS__614__GVL__INITô($_IMPLICIT_KINDOFTASK__688__GVL__INITõ(/_IMPLICIT_TASK_CONFIG_VARIABLES__749__GVL__INITö(/_IMPLICIT_TARGET_INFO_VARIABLES__137__GVL__INIT÷(!__APPLICATIONNAME__138__GVL__INITø(%__TASKSPECIFICINFOGVL__139__GVL__INITù(__TYPECLASS__754__GVL__INITú(&__CONVERSION_CONSTANTS__759__GVL__INITû(HTypified, ToCompile, Compiled, ContainsNoParseTree, Generated, Blob, Newü('__LCONVERSION_CONSTANTS__840__GVL__INITý( __SETUP__CALL__POU__1__GVL__INITþ(PRG_TEST__714__GVL__INITÿ(DToCompile, Compiled, DataRelocations, ContainsNoParseTree, ConstBlob)GLOBAL__INIT)<TopLevel, Typified, ToCompile, Compiled, ContainsNoParseTree) CODE__INIT)OTopLevel, Typified, ToCompile, Compiled, ContainsNoParseTree, IgnoreForChecksum)RemovedFromMemory )__RELOCATE__OFFSET_TABLE);ToCompile, Compiled, ContainsNoParseTree, IgnoreForChecksum)$976ae257-c47e-4874-b5e9-5090fb4b8d5b)65183)Retain, Area)Retain, Area, Persistent) Code, Area)Memory)Input)Output) Automatic)Retain)Automatic, DynamicSize)Retain, Persistent)Code)Target)$edf4cce3-b173-4b30-82a5-6d52f08f30c0)$60328c8c-0000-0000-0000-000000000000)$0ca8668e-0000-0000-0000-000000000000)AddrSize)IsFPUSupported)generate_exceptioninfo)PackMode)IsLittleEndian)RegisterSize)64)Platform )CompilerVersionProxy¡) ByteOrder¢)Intel£) CAA_NETBASESERVICES_USE_ASYNCMGR¤)IsMulticoreSupported¥) IoStandard¦)_3S_LICENSE§)BPLog¨)IBaseLibrary©) CmpErrorsª)Standard«)Component_Manager¬)CmpCodeMeter)SysCpuHandling®)sysmem, 3.5.12.0 (system)¯)SysMem°)SysTypes_Interfaces±)util, 3.5.14.0 (system)²)Util³)IECStringUtils´).caa memory, 3.5.12.0 (caa technical workgroup)µ)MEM¶)Ecommon behaviour model, 3.5.15.0 (3s - smart software solutions gmbh)·)CBML¸)systimertc, 3.5.5.0 (system)¹) SysTimeRtcº)systimecore, 3.5.5.0 (system)»)SysTimeCore¼)systime, 3.5.9.0 (system)½)SysTime¾)Stu¿)System.GuidÀ)System.Collections.HashtableÁ)System.Collections.ArrayListÂ) 0000 0004Ã)3.5.15.0Ä)$6708bd14-cddc-4e28-b69d-d3183b7c423eÅ) VariableIdÆ)SignatureIdÇ)ScopeIdÈ)PositionToSaveÉ)MessagesToSaveÊ)&{bc2be951-49f6-4f0f-b731-e31e36606f1e}Ë)$c529d0d0-8cec-4d28-bb44-5e2d4ebecdcfÌ)FlagsÍ)&{79aa0cce-71e9-4699-9f63-03cf09dcc367}Î)$fd373d9e-533d-4d69-ad04-82ccf513ff10Ï)$1cf06df3-a230-4b74-89c8-47fcfa9aa3a2Ð)IdÑ)CrossReferencesNewÒ)System.Collections.SortedListÓ)LocationÔ) AttributesÕ) ExpressionÖ)DirectVariable×)InputsØ)FlagÙ)&{1bfe400e-6f3f-4faa-a8db-db81cd2849ba}Ú)$8499b87a-2b75-4c62-8657-e4aa9316c18bÛ)TypeDefÜ)$e833a88e-e01b-4cc9-b0cb-fe17b4370a01Ý)BaseTypeÞ)$48397926-5c6f-41f7-b878-4ffb8fbbd3f0ß)Areaà)$1bef2131-34c3-45be-922f-9a02d282ff7bá)Currentâ)$2dacf8ba-27b3-43f2-b9f0-d578dd179b1dã) TaskIndexListä)VFTableå)QNEBaseSignatureæ)QNEInterfacesArrayç)InterfaceIdsè) CalleeSizeé)NameExpê)Operatorë)&{bffb3c53-f105-4e85-aba2-e30df579d75f}ì) VariableArrayí)&{1cf06df3-a230-4b74-89c8-47fcfa9aa3a2}î) SubSignaturesï)&{9b5d4c11-b2d9-46c2-bf90-350eefa47fc5}ð) Flags_longñ)ParentSignatureIdò) ObjectGuidó)MessageGuidô)ParentObjectGuidõ)LibraryPathö)DPOffset÷)DataLocationø) IdManagerù) TimeStampú)Checksumû)ChecksumNoInitü) Declarersý) Referencerþ)CallersArrayÿ)System.Int32* CalleesArray2*HighestUsedOffset*$af63b19d-1ce0-4d63-a098-6d4c02ca35da*$b5bdc032-52f5-48d3-9c8c-8c79ab5a416d*Base * LongValue*&{16f7aa24-038f-444e-9d81-b001bc091d35}*Negative*OriginalTypeClass*$5677bd2d-c2f2-4498-a6d6-5e2aecdbd55d*DefaultValue*$88513019-926a-4125-ab4f-260cf5e4c63e*$4ed22196-62b5-483e-acc9-441fa02badbd*RelocationAreaList*$3504087f-d7cb-485e-a95e-35e81d5fc2b0* CodeBytesX*flags*&{0148e1b6-6651-4ac0-91ad-da620acad399}*RelocationList*$b19c1570-9d63-448c-b1a8-77c564f4bf41* ParseTree*ParseTreeEmpty*CompiledPOUFlags*&{ffb74c62-0dab-4b81-a769-562edfcba448}*CompiledCode*ScratchSize*MaxParamSize*Breakpointlist*messages*CodeGeneratorStackSize*BitWriteAccesses* trycatchfpadr *trycatchcodeadr¡*InternalCompiledPOUFlags¢*&{d84e773e-c159-42c6-8f67-07b0df2b44ab}£* pmessages¤*$a166e73d-aefc-42a1-8868-6d7ea1412c73¥*$08539ba4-dbb3-469d-9743-b026f95bb155¦*Relocations§*$467ac7f9-d9fc-4e1d-9fb4-9e5dde0a44c2¨*ReplaceConstants©*Unicodeª*LoggingInBreakpoints«*$1cdc5830-00b6-4d16-ac84-61a1c00364e9¬*$17b1421c-2984-4921-865a-ab1609aa9f92* MemManGaps®*BaseAddress¯*$e0d57300-b431-4917-bfe4-fc6030a266ee°*Address±* DPTableOffset²*&{68cddacd-2830-4780-ae45-869af5892c4f}³*Memman´*SegmentSizeµ*HTMemMansToFlags¶* LogByFlag·*$e22c2694-f644-4661-a028-99897a56f19a¸*StartAddress¹*DataSegmentFlagsº* AreaFlags»*&{be5c129c-a197-417b-85f0-00907e2c063f}¼*MinimalSize½*AllocationPlus¾* Available¿*MaximalSizeÀ*$a20044ae-acaa-44c9-83f9-750bbfb34c6aÁ*DataSegmentsÂ*AreasÃ* FirstAreaÄ*$a2ede959-e5fe-4f81-9037-a646588f9067Å* GuidObjectÆ*GuidTaskÇ*TaskNameÈ*ParentTaskNameÉ*$b60bf7c1-48fb-428f-888b-da4337fb7f3cÊ* TaskListArrayË*&{a2ede959-e5fe-4f81-9037-a646588f9067}Ì*$df911092-020b-4e0a-bf63-b9df8a0ee0a7Í*libidÎ*nameÏ*referencinglibÐ* outofpoolÑ*idÒ*QOÓ*$d22ac189-3d1c-422d-b11c-0ca8bf22a579Ô*libinfosaveÕ*&{df911092-020b-4e0a-bf63-b9df8a0ee0a7}Ö*$e6a670d4-8bad-4716-a29b-770da7f0eef7×*TaskListØ*TaskGuidsOfObjectÙ* DownloadSlotsÚ*OnlineChangeSlotsÛ*$99fa1ec1-fc21-4c93-9f1e-0accb45e8a84Ü*table_1Ý*$3966d598-3646-49d7-a64c-1b0623a3daedÞ*Listß*$d774556f-de05-4539-a455-16fd4345bbf5à*typeá*versionâ*$32583999-e3b5-4fb3-8394-6c5409f3c8a7ã*SignaturesArrayä*&{2dacf8ba-27b3-43f2-b9f0-d578dd179b1d}å*GlobalSignaturesArrayæ*CompiledPOUsArrayç*&{b19c1570-9d63-448c-b1a8-77c564f4bf41}è*CompileOptionsToSaveé*CodegeneratorClassê*ImplicitReferenceVariableListë*ProjectChecksumì*staticmemorysegmentsí*Memchecksumî*DataManagerï* KindOfContextð*&{1d8fe3d0-8423-48cf-8a9b-eaa134990850}ñ*SignatureIDManò*LibraryIDManó*ReadyForDownloadô*ReadyForCompileõ*SystemApplicationö* DynamicMemory÷*GenerateContentø*DeviceApplicationù*ApplicationGuidú*TimeStampContextû* TimeStampPoolü*ContainsOnlineChangeCodeý* GuidCodeIdþ* GuidDataIdÿ*GuidCodeIdLast+GuidDataIdLast+CRCCode+CRCData+CRCCodeLast+CRCDataLast +Defines+PrecompileDefines+bFastOnlineChange+libtable+LPTChecksum+LibChecksum+PoolLibChecksum+SlotPOUList+DirVarTable+WithoutTargetsettings+ auxiliary+simulationmode+ bcontainscode+deviceid+$34951a1b-8cb0-4c0a-8fa0-271c0a67fbd7+$4c33f62d-2ba9-4951-b27c-3cedc666c650+$d383106b-f62a-4320-9b73-1ad1cdb4256b+$223d196a-c1d7-4283-aea6-270599207584+$2de3951e-05c3-42d9-a8c2-0f9e6cd2c60e+$2c47afd5-45a7-4318-a91c-e6ccae571e57+$3b41731c-8281-447e-8300-967d85065431+$ab09737e-b891-4fc6-9c8c-246eb8cdb046+SizeExpression+$bad068f5-d75d-4104-a3db-b92ab7fd8e73+$4843ac80-bf56-4163-a5d4-aef6b1846075+$d4b6feaa-e9d6-4356-aaf6-400ae9d83e05+Lower +Upper¡+$1cdc270d-d608-42d9-b269-87457e40fd7d¢+&{73ce5f25-d76d-4bc9-a6d5-0f1336fc56e3}£+$1a5bd4e4-ab1d-4514-adeb-22e2eeddcce6¤+$306eb234-9ade-475b-8492-004f59e739d9¥+$ef19db71-9ad6-4d2a-9535-1a0f103c369d¦+$8db06532-d746-4cb4-83d6-15216b159eed§+$ac2d6c97-8b55-498b-83df-2059efb47336¨+$d3df9a8e-760e-4747-9783-699d53cec752©+$859036ba-e550-4f5c-9b70-16ca9202d0ceª+$4b4ec020-a837-40a5-a308-89707ef17af6«+OrgType¬+$861aad71-b796-49c8-8e44-0d476c5ed1ab+$8805e1b7-ec8d-4bf0-9194-dcb2b29ff03f®+$0ba7ff45-cf9b-419a-84c8-ae1727e3961f¯+compiledtype°+Left±+Right²+$c8e3c9b1-32ff-4f6a-ac31-84a9afd1157f³+Operands´+ ScratchOffsetµ+$8ec925c2-9c5b-4d91-b581-8ec7c2f47ca9¶+$2725bf0b-b380-4604-92d5-60505864ba35·+ dicInterfaces¸+ dicOffsets¹+pointersizeº+$b297bf25-acd4-4b2f-bc57-473cb93f7d4c»+$1315f3d2-84a9-4bcd-a718-efa3d0501534¼+InitListNew½+DefInitDone¾+$187803f1-6b2c-486c-bcf0-b6f913f59ce3¿+StringValueÀ+$5b2d1cb9-99ea-435b-a739-5533bb136a6aÁ+cppÂ+offsetÃ+ipoffsetÄ+$abaeea6e-0a30-48c7-9034-51e0ad478bc3Å+LowerBorderÆ+UpperBorderÇ+&{182b8553-40b6-4da1-b365-72d137f05911}È+$71c4e10e-3e38-473f-b4b9-db1c89cbe452É+$00014fd3-8bc4-4e77-981b-095b9c869fc2Ê+$80dc2303-8251-4747-b7f7-a402ed859801Ë+$6c1d7ed1-429a-4b0d-84d7-fc2a63a0c431Ì+$cf26b7be-0f44-4dda-af18-2657035f6b45Í+$944d7731-22cd-4544-8e6a-e23be2ec4010Î+$aef7a177-3956-4c97-8460-6228ab3f3401Ï+$62f14e25-8c68-4d8c-98ca-3067a13656f7Ð+$458880e1-4ccc-4f34-af1a-7cd7fe7c8193Ñ+LValueÒ+RValueÓ+$30cfa52e-e32a-43c4-a033-2a152796aeafÔ+$79a8baad-3f7f-40d2-8250-3037bf5e6631Õ+VariableÖ+Accesses×+$528c9030-405d-451c-b45a-9aa6b0520783Ø+FromÙ+ToÚ+$9acb4711-ae23-42e3-a6bc-58b75ab4215eÛ+ExceptionHandlingSuccessorÜ+LenÝ+ CodeOffsetÞ+ Successorsß+StepInsà+AssSuccá+AreaGPRegisterâ+OffsetGPRegisterã+$9e894478-12b9-4f7b-ae88-4807ccb19a10ä+Firstå+$762f79d8-237e-4aec-8576-b032ad1bb941æ+SignIdç+&{fcb43bca-9283-4080-8c7a-085c4f21024c}è+ StepOutBpé+StepInBpê+&{762f79d8-237e-4aec-8576-b032ad1bb941}ë+$2f0e740d-b75f-401a-a7f2-ecd76eb6ee2dì+ CocoFlagsí+ reloclistî+ related_idï+$40c3211d-4a89-419c-88a4-b26d33c2707eð+arealistñ+$35e108dd-922c-4765-9f66-6c7ed83f4af7ò+MotorolaByteOrder¼Ä)³ ñ Å)Æ)Ç)È) É)Ê)øË)Ì)Í)Î)´Ï)È) Ð)Ñ) Ò)Ó)Ô) Õ) Ö) ×) ø³Ø)Ù)Ú)Û)Æ)Ç)´Ä)³ñ Å)Æ)Ç)È) É)Ê)øÜ)Ý)´Þ)ß) à)á) â) ã)Ü(ä) Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î) Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ) ö)÷)ø)ù) ú) û) ü) ý) þ)ÿ)*@*â) ã) ä) Æ)å) æ) ç) Ô)C¾ è)é)ê)ë)ì)í)î) Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ) ö)÷)ø)ù) ú) û) ü) ý) þ)ÿ)*@**´ *³È) É)Ê)* * ¤*****Æ)øÝ)* ´Ï)È) Ð)Ñ) Ò)Ó)Ô)BÕ)Ö) ×) ø³Ø)Ù)Ï)È) Ð)Ñ) Ò)Ó)Ô) Õ)Ö) ×) ø³Ø)Ù)â) ã) ä) Æ)å) æ) ç) Ô)C¾ è)é)ê)ë)ì)í)î) Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ) ö)÷) ø)ù) ú) û) ü) À)ý) þ) * **³È) É)Ê) * ¤****â) ã) ä) Æ)å) æ) ç) Ô)C¾ è)é)ê)ë)ì)í)î) Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ) ö)÷) ø)ù) ú) û) ü) ý) þ) * ***@**@**÷)**ø) * *ò)¿)ó)¿)ô)¿)Æ)****ù) ú) õ) ** *Ê)** * * ¡*¢*£* ¤*¥*ß)¦*@*ø) * *ò)¿)ó)¿)ô)¿)Æ)*** *ù) ú) õ)** *Ê)** * * ¡*¢*£* §*¨*íÿ)©*ª*«*¾ ¬**@¾ ®*¯* ß) °*±*¾ Ì)²*³*´*µ* ¶*·* ¸*¾ Ϲ*²*º*»*¼*½*ú) ¾*¿*À*Á*@Â*@Ã* Ä*Å*¿)Æ*¿)Ç*È* !É*Ê*Ë*"Ì*Í*Î*Ï*Ð*Ñ*Ò*#Ó*Ô*Õ*$Ö*×* À)Ø* À)Ù* À)Ú* À)%Û*Ü*B&Ý*Þ*Á)'ß*à*Ñ*á*(â*.ã*ä*å*ä*æ*ç*è*é*¿)ê*@ë* ì*@í* î*ï*ð*×*ñ*ò*ó*ô*õ*ö*÷*ø*ù*¿)ú* û* ü*ý*¿)þ*¿)ÿ*¿)+¿)+ + + + +À)+ À)+++ + + +++++++)+´*+´+â) ã)Ü(ä) Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î) Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ) ö)÷)ø)ù) ú) û) ü) ý) þ)ÿ)* *,â) ã) ä) Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î) Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ) ö)÷)ø)ù) ú) û) ü) ý) þ) * *-+´.+´/+´0+´1â) ã) ä) Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î) Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ) ö)÷)ø)ù) ú) û) ü) ý) þ)ÿ)* *2+´3++´4+´5Ï)È) Ð)Ñ) Ò)Ó)Ô)BÕ) Ö) ×) ø³Ø)Ù)6+´7++ +8¡+Å@Ý)´9â) ã) ä) Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î) Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ) ö)÷)ø)ù) ú) û) ü) ý) þ) *@*:â) ã) ä) Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î)¢+Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ) ö)÷) ø)ù) ú) û) ü) ý)Bþ) * *;£+´<¤+´=¥+´>¦+´?§+´@¨+´A©+´Bâ) ã) ä) Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î) ¢+Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ)ö)÷) ø)ù) ú) û) ü) ý) þ) * *Cª+«+* Û)Æ)Ç)´Dâ) ã) ä) Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î) Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ)ö)÷)ø)ù) ú) û) ü) ý) þ) * *E++ ´F¬+Ý)´Gâ) ã) ä) Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î) Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ)ö)÷)ø)ù) ú) û) ü) ý) þ) * *Hâ) ã) ä) Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î) Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ)ö)÷)ø)ù) ú) û) ü) ý) þ) *@*Iâ) ã) ä) Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î) ¢+Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ)ö)÷) ø)ù) ú) û) ü) ý)Bþ) * *Jâ) ã) ä) Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î) ¢+Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ)ö)÷) ø)ù) ú) û) ü) À)ý)Bþ)ÿ)* *Kâ) ã) ä) Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î) Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ)ö)÷)ø)ù) ú) û) ü) ý) þ)ÿ)*@*Lâ) ã) ä) Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î) Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ)ö)÷)ø)ù) ú) û) ü) ý) þ)ÿ)* *M+´Nâ) ã) ä) Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î)¢+Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ) ö)÷) ø)ù) ú) û) ü) À)ý)Bþ) * *Oâ) ã) ä) Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î)¢+Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ) ö)÷) ø)ù) ú) û) ü) À)ý)Bþ) * *Pâ) ã) ä) Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î) Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ) ö)÷)ø)ù) ú) û) ü) ý) þ)ÿ)*@*Qâ) ã) ä) Æ)å)æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î)¢+Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ) ö)÷) ø)ù) ú) û) ü) ý)Bþ) * *Râ) ã) ä) Æ)å)æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î)¢+Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ) ö)÷) ø)ù) ú) û) ü) À)ý)Bþ) *@*Sâ) ã)Ü(ä) Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î) Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ) ö)÷)ø)ù) ú) û) ü) ý) þ) * *Tâ) ã)Ü(ä) Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î)¢+Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ) ö)÷) ø)ù) ú) û) ü) À)ý)Bþ) * *Uâ) ã)Ü(ä) Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î) Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ) ö)÷)ø)ù) ú) û) ü) ý) þ)ÿ)*@*V®+³È) É)Ê)¯+°+±+W²+³È) É)Ê)¯+³+@´+ê)ë)Xµ+øÐ)Y¶+Þ*@Ó)·+ À)¸+ À)¹+Zº+´[»+³È) É)Ê)¯+¼+@½+\â) ã) ä)Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î)¢+Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ)ö)÷) ø)ù) ú) û) ü) À)ý)Bþ) *@*]*³ È) É)Ê) * ¤****^¾+³È) É)Ê)¤*¿+**_â) ã) ä) Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î) Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ)ö)÷)ø)ù) ú) û) ü) ý) þ) *@*`â) ã) ä) Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î) Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ)ö)÷)ø)ù) ú) û) ü) ý) þ)ÿ)*@*a®+³ È) É)Ê)¯+ °+±+bÏ)È) Ð)Ñ) Ò)Ó) Ô) Õ) Ö) ×) ø³Ø)Ù)câ) ã) ä) Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î) Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ)ö)÷) ø)ù) ú) û) ü) À)ý)Bþ) * *dâ) ã) ä) Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î) ¢+Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ)ö)÷) ø)ù) ú) û) ü) À)ý)Bþ) * *eÀ+Ð)øÁ+Â+Ã+f¶+Þ*AÓ) ·+ À)¸+ À)¹+gâ) ã)Ü(ä) Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î) Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ)ö)÷) ø)ù) ú) û) ü) ý) þ)ÿ)*@*hâ) ã) ä)Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î) ¢+Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ)ö)÷) ø)ù) ú) û) ü) À)ý)Bþ) * *iâ) ã)Ü(ä)Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î)¢+Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ)ö)÷) ø)ù) ú) û) ü) À)ý)Bþ)ÿ)* *jâ) ã)Ü(ä) Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î) Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ) ö)÷)ø)ù) ú) û) ü) ý) þ) *@*k¶+Þ*AÓ)·+ À)¸+ À)¹+lÄ+Å+Æ+Ý)´mâ) ã)Ü(ä) Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î) Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ)ö)÷)ø)ù) ú) û) ü) ý) þ)ÿ)*@*nâ) ã) ä)Æ)å) æ)Ç+ç)ÿ)Ô)B¾ è)é)ê)ë)ì)í)î)¢+Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ)ö)÷) ø)ù) ú) û) ü) À)ý)Bþ) *@*oâ) ã) ä)Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î)¢+Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ)ö)÷) ø)ù) ú) û) ü) À)ý)Bþ) * *p²+³È) É)Ê)¯+³+A´+ê)ë)qâ) ã)Ü(ä) Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î) ¢+Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ)ö)÷) ø)ù) ú) û) ü) À)ý)Bþ) * *râ) ã)Ü(ä) Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î) ¢+Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ)ö)÷) ø)ù) ú) û) ü) À)ý)Bþ) *@*sâ) ã)Ü(ä)Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î)¢+Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ)ö)÷) ø)ù) ú) û) ü) À)ý)Bþ)ÿ)*@*tâ) ã)Ü(ä) Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î) Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ)ö)÷)ø)ù) ú) û) ü) ý) þ) *@*uâ) ã)Ü(ä) Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î) Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ)ö)÷)ø)ù) ú) û) ü) ý) þ)ÿ)*@*vâ) ã) ä) Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î) Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ)ö)÷) ø)ù) ú) û) ü) À)ý) þ) * *wâ) ã)Ü(ä)Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î)¢+Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ)ö)÷) ø)ù) ú) û) ü) À)ý)Bþ) * *xâ) ã)Ü(ä) Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î) ¢+Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ)ö)÷) ø)ù) ú) û) ü) À)ý)Bþ) * *yÈ+´zÉ++ ´{Ê+´|Ë+´}Ì+´~â) ã)Ü(ä)Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î)¢+Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ)ö)÷) ø)ù) ú) û) ü) À)ý)Bþ) *@*Í+³È) É)Ê)*â) ã)Ü(ä) Æ)å) æ) ç) Ô)C¾ è)é)ê)ë)ì)í)î) Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ)ö)÷)ø)ù) ú) û) ü) ý) þ) *@*â) ã)Ü(ä) Æ)å) æ) ç) Ô)C¾ è)é)ê)ë)ì)í)î) Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ)ö)÷)ø)ù) ú) û) ü) ý) þ)ÿ)*@*â) ã)Ü(ä) Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î) Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ)ö)÷) ø)ù) ú) û) ü) ý) þ)ÿ)* *â) ã)Ü(ä)Æ)å) æ)Ç+ç)ÿ)Ô)B¾ è)é)ê)ë)ì)í)î)¢+Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ)ö)÷) ø)ù) ú) û) ü) À)ý)Bþ) * *â) ã)Ü(ä) Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î) ¢+Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ)ö)÷) ø)ù) ú) û) ü) ý) þ) * * Ï)È) Ð)Ñ) Ò)Ó)Ô)CÕ) Ö) ×) ø³Ø)Ù)â) ã)Ü(ä) Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î) Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ)ö)÷)ø)ù) ú) û) ü) ý) þ) *@*â) ã)Ü(ä)Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î)¢+Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ)ö)÷) ø)ù) ú) û) ü) À)ý)Bþ)ÿ)* *â) ã)Ü(ä)Æ)å) æ) ç) Ô)C¾ è)é)ê)ë)ì)í)î)¢+Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ)ö)÷) ø)ù) ú) û) ü) À)ý)Bþ)ÿ)* *â) ã) ä) Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î) Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ)ö)÷) ø)ù) ú) û) ü) ý) þ) * *â) ã) ä) Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î) Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ)ö)÷) ø)ù) ú) û) ü) ý) þ) * *â) ã) ä)Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î)¢+Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ)ö)÷) ø)ù) ú) û) ü) À)ý)Bþ) * *â) ã)Ü(ä)Æ)å)æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î)¢+Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ) ö)÷) ø)ù) ú) û) ü) À)ý)Bþ) * *â) ã)Ü(ä) Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î) Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ) ö)÷)ø)ù) ú) û) ü) ý) þ) *@*â) ã)Ü(ä) Æ)å) æ) ç) Ô)C¾ è)é)ê)ë)ì)í)î) Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ) ö)÷)ø)ù) ú) û) ü) ý) þ)ÿ)*@*â) ã)Ü(ä)Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î)¢+Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ) ö)÷) ø)ù) ú) û) ü) À)ý)Bþ)ÿ)* *â) ã)Ü(ä) Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î) Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ)ö)÷)ø)ù) ú) û) ü) ý) þ)ÿ)* *Î+³È) É)Ê)¯+Õ)â) ã)Ü(ä) Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î) Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ) ö)÷)ø)ù) ú) û) ü) ý) þ)ÿ)* *â) ã)Ü(ä) Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î) Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ)ö)÷)ø)ù) ú) û) ü) ý) þ)ÿ)* *Ï+Ý)´É++´â) ã) ä) Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î) Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ)ö)÷)ø)ù) ú) û) ü) ý) þ)ÿ)* *â) ã) ä) Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î) ¢+Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ)ö)÷) ø)ù) ú) û) ü) ý)Bþ) *@*Ï)È) Ð)Ñ) Ò)Ó) Ô)BÕ) Ö) ×) ø³Ø)Ù)Ð+³È) É)Ê)Ñ+Ò+ê)ë)Ó+³È) É)Ê)¯+¼+@½+â) ã) ä) Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î) ¢+Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ)ö)÷) ø)ù) ú) û) ü) À)ý)Bþ) * *â) ã) ä) Æ)å) æ) ç) Ô) ¾ è)é)ê)ë)ì)í)î) Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ) ö)÷)ø)ù) ú) û) ü) ý) þ) *@*â) ã) ä) Æ)å) æ) ç) Ô) ¾ è)é)ê)ë)ì)í)î) Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ) ö)÷)ø)ù) ú) û) ü) ý) þ) * *â) ã) ä) Æ)å) æ) ç) Ô) ¾ è)é)ê)ë)ì)í)î) Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ) ö)÷)ø)ù) ú) û) ü) ý) þ) * *â) ã) ä) Æ)å) æ) ç) Ô) ¾ è)é)ê)ë)ì)í)î) Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ) ö)÷) ø)ù) ú) û) ü) ý) þ) * * â) ã) ä) Æ)å) æ) ç) Ô) ¾ è)é)ê)ë)ì)í)î) ¢+Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ) ö)÷) ø)ù) ú) û) ü) À)ý) þ) * *¡â) ã) ä) Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î) Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ) ö)÷)ø)ù) ú) û) ü) ý) þ) *@*¢â) ã) ä) Æ)å) æ) ç) Ô)C¾ è)é)ê)ë)ì)í)î) Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ) ö)÷) ø)ù) ú) û) ü) À)ý) þ) * *£»+³È) É)Ê)¯+¼+A½+¤â) ã) ä) Æ)å) æ) ç) Ô)C¾ è)é)ê)ë)ì)í)î) Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ) ö)÷) ø)ù) ú) û) ü) ý) þ) *@*¥Ô+³È) É)Ê)¯+Õ+Ö+@¦â) ã) ä) Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î) Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ) ö)÷) ø)ù) ú) û) ü) ý) þ) *@*§â) ã) ä) Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î) Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ) ö)÷) ø)ù) ú) û) ü) ý) þ) * *¨â) ã) ä) Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î) Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ) ö)÷) ø)ù) ú) û) ü) ý) þ) * *©â) ã) ä) Æ)å) æ) ç) Ô)C¾ è)é)ê)ë)ì)í)î) Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ) ö)÷) ø)ù) ú) û) ü) ý) þ) * *ªâ) ã) ä) Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î) Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ)ö)÷) ø)ù) ú) û) ü) ý) þ) *@*«×+³È) É)Ê)Ø+*Ù+*Õ)¬â) ã) ä) Æ)å) æ) ç) Ô)B¾ è)é)ê)ë)ì)í)î) Ì)ï)ð) Ð)ñ)ò)¿)ó)¿)ô)¿)õ)ö)÷) ø)ù) ú) û) ü) ý) þ) *@*Ú+ È) Û+Ü+Ý+Þ+ ß+ à+ÿ)á+â+®Ú+ È) Û+Ü+Ý+Þ+ÿ)ß+ à+ÿ)á+â+¯ã+Þ*Aä+°*ø) * *ò)¿)ó)¿)ô)¿)Æ)****ù) ú) õ)***Ê)** * * ¡*¢*£* ±å+æ+Ì)ç+è+é+²Ú+ È) Û+Ü+Ý+Þ+ÿ)ß+ê+à+ÿ)á+â+³*ø) * *ò)¿)ó)¿)ô)¿)Æ)****ù) ú) õ)** *Ê)** * * ¡*¢*£* ´ã+Þ*@ä+µ*ø) * *ò)¿)ó)¿)ô)¿)Æ)****ù) ú) õ) ***Ê)** * * ¡*¢*£* ¶*ø) * *ò)¿)ó)¿)ô)¿)Æ)****ù) ú) õ) *** ** * * ¡*¢*£* ·*ø) * *ò)¿)ó)¿)ô)¿)Æ)****ù) ú) õ)*** ** * * ¡*¢*£* ¸*ø) * *ò)¿)ó)¿)ô)¿)Æ)****ù) ú) õ) ** * ** * * ¡*¢*£* ¹ë+*@ì+*÷)í+ î+ºï+ð+@»ë+*@ì+*÷)í+î+¼ñ+*@ò+ì+*÷)(ý ÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿ T T y ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ « ÿÿÿÿ ÿÿÿÿ« ÿÿÿÿ « ÿÿÿÿ ¦ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ 1 ÿÿÿÿ ÿÿÿÿ1 ÿÿÿÿ à 1 ÿÿÿÿ T ÿÿÿÿ ÿÿÿ :û &Dª×¨ª¨ª « « « Ê 1 Ê Ê « ÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿ T ÿÿÿÿ ÿÿÿ :û zSxÈ?.×ðOfîðOfî ~ ç ç í í + ÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿ ) I * W ) V ÿÿÿÿ ÿÿÿ (:û dÈ·×Î ~ÍNÉÐ 7 , ÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿ * H ) W ) V ÿÿÿÿ ÿÿÿ 0:û dÈ·×dÂÌ;½{&