├── .gitignore ├── CONTRIBUTING.md ├── Error Codes.xlsx ├── LICENSE ├── README.md ├── tcl_BaseClasses.library └── tcl_BaseClasses ├── tcl_BaseClasses.sln └── tcl_BaseClasses ├── TrialLicense.tclrs ├── UnitTests ├── GVLs │ └── GlobalNotifications.TcGVL ├── POUs │ └── MAIN.TcPOU ├── PlcTask.TcTTO ├── Unit Tests │ ├── Execution Result Aggregate │ │ ├── Test_AggregateResult_Aborted.TcPOU │ │ ├── Test_AggregateResult_Aborting.TcPOU │ │ ├── Test_AggregateResult_Busy.TcPOU │ │ ├── Test_AggregateResult_Done.TcPOU │ │ ├── Test_AggregateResult_Error.TcPOU │ │ ├── Test_AggregateResult_ErrorMsg.TcPOU │ │ ├── Test_AggregateResult_Ready.TcPOU │ │ └── Test_AggregateResult_Starting.TcPOU │ ├── Execution │ │ ├── Test_TExecutionWhenBusy_Abort_SelectsAborting.TcPOU │ │ ├── Test_TExecutionWhenBusy_SetDone_SetsDone.TcPOU │ │ ├── Test_TExecutionWhenReady_Start_SelectsStarting.TcPOU │ │ └── Test_TExecution_SetErrorHandlesString_ErrorId.TcPOU │ ├── Functions │ │ ├── Test_ErrorIdToString.TcPOU │ │ ├── Test_F_DINT_TO_UDINT_Conversion.TcPOU │ │ ├── Test_F_Equals.TcPOU │ │ ├── Test_F_NotEqual.TcPOU │ │ └── Test_F_UDINT_TO_DINT_Conversion.TcPOU │ ├── Notifications │ │ ├── Test_MultipleNotificationsWithStringArgs.TcPOU │ │ ├── Test_NotificationCountWithQueueingEnabled.TcPOU │ │ ├── Test_NotificationHandlerOnlyAddedOnce.TcPOU │ │ ├── Test_NotificationNoArgs.TcPOU │ │ └── Test_NotificationWithStringArg.TcPOU │ ├── Stream │ │ ├── General │ │ │ └── Test_TStreamBufferResizes.TcPOU │ │ ├── With Arg Type Checking │ │ │ ├── Test_TStreamAddReadArgType.TcPOU │ │ │ ├── Test_TStreamAdd_Read_BLOB.TcPOU │ │ │ ├── Test_TStreamAdd_Read_BOOL.TcPOU │ │ │ ├── Test_TStreamAdd_Read_BYTE.TcPOU │ │ │ ├── Test_TStreamAdd_Read_DINT.TcPOU │ │ │ ├── Test_TStreamAdd_Read_INT.TcPOU │ │ │ ├── Test_TStreamAdd_Read_LINT.TcPOU │ │ │ ├── Test_TStreamAdd_Read_LREAL.TcPOU │ │ │ ├── Test_TStreamAdd_Read_PVOID.TcPOU │ │ │ ├── Test_TStreamAdd_Read_REAL.TcPOU │ │ │ ├── Test_TStreamAdd_Read_STRING.TcPOU │ │ │ ├── Test_TStreamAdd_Read_Short_STRING.TcPOU │ │ │ ├── Test_TStreamAdd_Read_T_MaxString.TcPOU │ │ │ ├── Test_TStreamAdd_Read_UDINT.TcPOU │ │ │ ├── Test_TStreamAdd_Read_UINT.TcPOU │ │ │ └── Test_TStreamAdd_Read_ULINT.TcPOU │ │ └── With alignment checks │ │ │ ├── Test_TStreamAddReadArgType_CheckAlignment.TcPOU │ │ │ ├── Test_TStreamAdd_Read_BLOB_CheckAlignment.TcPOU │ │ │ ├── Test_TStreamAdd_Read_DINT_CheckAlignment.TcPOU │ │ │ ├── Test_TStreamAdd_Read_INT_CheckAlignment.TcPOU │ │ │ ├── Test_TStreamAdd_Read_LINT_CheckAlignment.TcPOU │ │ │ ├── Test_TStreamAdd_Read_LREAL_CheckAlignment.TcPOU │ │ │ ├── Test_TStreamAdd_Read_PVOID_CheckAlignment.TcPOU │ │ │ ├── Test_TStreamAdd_Read_REAL_CheckAlignment.TcPOU │ │ │ ├── Test_TStreamAdd_Read_UDINT_CheckAlignment.TcPOU │ │ │ ├── Test_TStreamAdd_Read_UINT_CheckAlignment.TcPOU │ │ │ └── Test_TStreamAdd_Read_ULINT_CheckAlignment.TcPOU │ └── T_TestSuite.TcPOU ├── UnitTests.plcproj └── UnitTests.tmc ├── _Config └── PLC │ └── tcl_BaseClasses.xti ├── tcl_BaseClasses.tsproj ├── tcl_BaseClasses.tsproj.old └── tcl_BaseClasses ├── Classes ├── Change Monitoring │ ├── T_Monitor_DINT.TcPOU │ ├── T_Monitor_INT.TcPOU │ └── T_Monitor_Structure.TcPOU ├── Execution Result Aggregate │ └── T_ResultAggregate.TcPOU ├── Execution │ └── Execution │ │ ├── I_Execution.TcIO │ │ ├── I_ExecutionResult.TcIO │ │ ├── T_Execution.TcPOU │ │ └── T_ExecutionState.TcDUT ├── Function Block Wrappers │ └── Classes │ │ ├── T_Counter.TcPOU │ │ ├── T_FallingEdge.TcPOU │ │ ├── T_MonitoredValue.TcPOU │ │ ├── T_OffTimer.TcPOU │ │ ├── T_OnTimer.TcPOU │ │ ├── T_PulseTimer.TcPOU │ │ ├── T_RisingEdge.TcPOU │ │ ├── T_SquareWave.TcPOU │ │ ├── T_StructureCrcMonitor.TcPOU │ │ ├── T_ValueMonitor.TcPOU │ │ └── T_ValueMonitorEx.TcPOU ├── List Of Interfaces │ ├── I_ListItem.TcIO │ ├── I_ListOfInterfaces.TcIO │ ├── T_ListOfInterfaces.TcPOU │ └── T_TestIterator.TcPOU ├── Logger │ └── I_Logger.TcIO ├── Notifications │ ├── List Of Handlers │ │ └── T_ListONotificationHandlers.TcPOU │ ├── Notification Handler │ │ ├── I_NotificationHandler.TcIO │ │ └── T_NotificationHandler.TcPOU │ └── Notification │ │ ├── I_Notification.TcIO │ │ └── T_Notification.TcPOU ├── Nullable Base Class │ └── T_NullableBaseClass.TcPOU ├── Object base class │ └── T_Object.TcPOU └── Stream │ ├── E_ArgTypeId.TcDUT │ ├── I_StreamReader.TcIO │ ├── I_StreamWriter.TcIO │ └── T_Stream.TcPOU ├── Functions ├── F_ClearMem.TcPOU ├── F_CompareMem.TcPOU ├── F_CopyMem.TcPOU ├── F_DINT_TO_UDINT.TcPOU ├── F_DetectOnlineChange.TcPOU ├── F_Equals.TcPOU ├── F_ErrorIdToString.TcPOU ├── F_GetAdsPort.TcPOU ├── F_InLimits.TcPOU ├── F_Inc.TcPOU ├── F_LinearInterpolation.TcPOU ├── F_LogError.TcPOU ├── F_LogMessage.TcPOU ├── F_LogWarning.TcPOU ├── F_NotEqual.TcPOU ├── F_ReadFlag.TcPOU ├── F_TaskTime.TcPOU ├── F_Toggle.TcPOU ├── F_TypeClassToString.TcPOU └── F_UDINT_TO_DINT.TcPOU ├── Version └── Global_Version.TcGVL ├── tcl_BaseClasses.plcproj └── tcl_BaseClasses.tmc /.gitignore: -------------------------------------------------------------------------------- 1 | **/_Boot 2 | **/beckhoff automation gmbh 3 | **/system 4 | **/www.tcunit.org 5 | **/_Libraries 6 | *.tszip 7 | *.zip 8 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to tcl_BaseClasses 2 | 3 | All contributions are welcome: 4 | * Code changes should be submitted via a pull request. 5 | * Please follow the coding style of the existing code: 6 | 1. Use spaces not tabs. This can be configured in Visual Studio under **Tools→Options→TwinCAT→Plc Environment→Text Editor** by unchecking the 'Keep Tabs' checkbox. Tab width should be set to '4' 7 | 2. Do not prefix variable names according to their data type. 8 | 3. Use Separate LineIDs to minimise changes to POUs. This can be configured in Visula Studio under **Tools→Options→TwinCAT→Write Options→Separate LineIDs.** 9 | 10 | * Please report bugs using GitHub Issues 11 | * By contributing, you agree that your contributions will be licensed under the project's MIT License. 12 | 13 | -------------------------------------------------------------------------------- /Error Codes.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RedRockControls/tcl_BaseClasses/39d1c29daf0f6aedf791e39fc70777fd58fd2bdc/Error Codes.xlsx -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 RedRockControls 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # tcl_BaseClasses 2 | 3 | This library is intended for use in Beckhoff TwinCAT3 projects. 4 | 5 | The main components are T_Execution and T_Notification 6 | 7 | These are described in the following blog posts: 8 | 9 | Motivation - [OO Architecture in TwinCAT3](https://www.redrockcontrols.co.uk/?p=588) 10 | 11 | T_Execution - [OOP in TwinCAT3 – Command Pattern](https://www.redrockcontrols.co.uk/?p=118) 12 | 13 | T_Notification - [OOP in TwinCAT3 – Asynchronous Notifications](https://www.redrockcontrols.co.uk/?p=723) 14 | 15 | Code automatically formatted using 16 | 17 | ![StweepLogo](https://github.com/RedRockControls/tcl_TwinCAT_UnitTestLibrary/assets/32986382/2181db31-3c1e-449d-b568-c7b0ed50b36d) 18 | -------------------------------------------------------------------------------- /tcl_BaseClasses.library: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RedRockControls/tcl_BaseClasses/39d1c29daf0f6aedf791e39fc70777fd58fd2bdc/tcl_BaseClasses.library -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/TrialLicense.tclrs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {CE2AF329-CAE6-C2E2-6F60-540193B2308F} 5 | 2023-11-09T08:49:00 6 | 2023-11-17T00:00:00 7 | b8e8d9736ba90b9a5048a8a7e455fe790d6cbd669bf48bee9da9087a1213f0caff95da9cc31da96596a83796d55d40010430797fb7c4a4248b290233541e1b8165fd96f5a47a88ff0c96874e923e316ce5fdc888290d68edc7d4a6b8ac744aee7a0720c0596a1444dce839802adc265bf0832e705a167b4fafa26379a89bcbaff5928065671e165a2406787a9ea2f5a4148ee1052ba3e383eaea7b7436e49c7e5b6b9fe5660c6f1b88d3f8997a35540aa5751b880622b0becc4b929511362d2462722ef3803b26ce3b71c3d896bb0ebacfe51009e306689a6345d6298d7f8195d45e8b16cf2ddceb83c24cce5f81bf9eec5db79719327261598cf261c766ecb0 8 | 9 | {4C256767-E6E6-4AF5-BD68-9F7ABAD0C200} 10 | TC3 ADS 11 | TC1000 12 | 13 | 14 | {3FF18E97-7754-401B-93FB-70544DE28A13} 15 | TC3 IO 16 | TC1100 17 | 18 | 19 | {66689887-CCBD-452C-AC9A-039D997C6E66} 20 | TC3 PLC 21 | TC1200 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/UnitTests/GVLs/GlobalNotifications.TcGVL: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 14 | 15 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/UnitTests/POUs/MAIN.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/UnitTests/PlcTask.TcTTO: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 10000 6 | 21 7 | 8 | MAIN 9 | 10 | {1494bfde-28b9-4da7-8bfc-95ebb1e850ed} 11 | {dd8c9284-8c9f-4c1a-bdfc-cd6ce60f6a7f} 12 | {77166c4f-86e4-4b12-b969-756f6c35c228} 13 | {efba7a37-76ff-4c6b-97dd-df7c625760e1} 14 | {fe276e8a-7eef-4734-8519-5279d906591b} 15 | 16 | 17 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/UnitTests/Unit Tests/Execution Result Aggregate/Test_AggregateResult_Aborted.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 12 | 13 | 14 | 15 | 16 | 18 | 19 | 24 | 25 | 26 | 27 | 30 | 31 | 60 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/UnitTests/Unit Tests/Execution Result Aggregate/Test_AggregateResult_Aborting.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 12 | 13 | 14 | 15 | 16 | 18 | 19 | 24 | 25 | 26 | 27 | 30 | 31 | 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/UnitTests/Unit Tests/Execution Result Aggregate/Test_AggregateResult_Busy.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 12 | 13 | 14 | 15 | 16 | 18 | 19 | 23 | 24 | 25 | 26 | 29 | 30 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/UnitTests/Unit Tests/Execution Result Aggregate/Test_AggregateResult_Done.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 12 | 13 | 14 | 15 | 16 | 18 | 19 | 23 | 24 | 25 | 26 | 29 | 30 | 56 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/UnitTests/Unit Tests/Execution Result Aggregate/Test_AggregateResult_Error.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 12 | 13 | 14 | 15 | 16 | 18 | 19 | 23 | 24 | 25 | 26 | 29 | 30 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/UnitTests/Unit Tests/Execution Result Aggregate/Test_AggregateResult_ErrorMsg.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 12 | 13 | 14 | 15 | 16 | 18 | 19 | 23 | 24 | 25 | 26 | 29 | 30 | 56 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/UnitTests/Unit Tests/Execution Result Aggregate/Test_AggregateResult_Ready.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 12 | 13 | 14 | 15 | 16 | 18 | 19 | 24 | 25 | 26 | 27 | 30 | 31 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/UnitTests/Unit Tests/Execution Result Aggregate/Test_AggregateResult_Starting.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 12 | 13 | 14 | 15 | 16 | 18 | 19 | 24 | 25 | 26 | 27 | 30 | 31 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/UnitTests/Unit Tests/Execution/Test_TExecutionWhenBusy_Abort_SelectsAborting.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 9 | 10 | 11 | 12 | 13 | 15 | 16 | 19 | 20 | 21 | 22 | 25 | 26 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/UnitTests/Unit Tests/Execution/Test_TExecutionWhenBusy_SetDone_SetsDone.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 9 | 10 | 12 | 13 | 14 | 16 | 17 | 21 | 22 | 23 | 24 | 27 | 28 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/UnitTests/Unit Tests/Execution/Test_TExecutionWhenReady_Start_SelectsStarting.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 9 | 10 | 12 | 13 | 14 | 16 | 17 | 21 | 22 | 23 | 24 | 27 | 28 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/UnitTests/Unit Tests/Execution/Test_TExecution_SetErrorHandlesString_ErrorId.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 12 | 13 | 14 | 15 | 16 | 20 | 21 | 22 | 23 | 24 | 25 | 31 | 32 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/UnitTests/Unit Tests/Functions/Test_ErrorIdToString.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 12 | 13 | 14 | 15 | 16 | 20 | 21 | 22 | 23 | 24 | 25 | 28 | 29 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/UnitTests/Unit Tests/Functions/Test_F_DINT_TO_UDINT_Conversion.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 10 | 11 | 12 | 13 | 14 | 18 | 19 | 20 | 21 | 22 | 23 | 26 | 27 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/UnitTests/Unit Tests/Functions/Test_F_Equals.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 9 | 10 | 11 | 12 | 13 | 17 | 18 | 19 | 20 | 21 | 22 | 25 | 26 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/UnitTests/Unit Tests/Functions/Test_F_NotEqual.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 9 | 10 | 11 | 12 | 13 | 17 | 18 | 19 | 20 | 21 | 22 | 25 | 26 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/UnitTests/Unit Tests/Functions/Test_F_UDINT_TO_DINT_Conversion.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 10 | 11 | 12 | 13 | 14 | 18 | 19 | 20 | 21 | 22 | 23 | 26 | 27 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/UnitTests/Unit Tests/Notifications/Test_MultipleNotificationsWithStringArgs.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 14 | 15 | 16 | 17 | 18 | 22 | 23 | 24 | 25 | 26 | 27 | 30 | 31 | 91 | 92 | 93 | 94 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/UnitTests/Unit Tests/Notifications/Test_NotificationCountWithQueueingEnabled.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 11 | 12 | 13 | 14 | 15 | 19 | 20 | 21 | 22 | 23 | 24 | 27 | 28 | 71 | 72 | 73 | 74 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/UnitTests/Unit Tests/Notifications/Test_NotificationHandlerOnlyAddedOnce.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 11 | 12 | 13 | 14 | 15 | 19 | 20 | 21 | 22 | 23 | 24 | 27 | 28 | 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/UnitTests/Unit Tests/Notifications/Test_NotificationNoArgs.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 11 | 12 | 13 | 14 | 15 | 19 | 20 | 21 | 22 | 23 | 24 | 27 | 28 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/UnitTests/Unit Tests/Notifications/Test_NotificationWithStringArg.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 15 | 16 | 17 | 18 | 19 | 23 | 24 | 25 | 26 | 27 | 28 | 31 | 32 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/UnitTests/Unit Tests/Stream/General/Test_TStreamBufferResizes.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 9 | 10 | 11 | 12 | 13 | 17 | 18 | 19 | 20 | 21 | 22 | 25 | 26 | 53 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/UnitTests/Unit Tests/Stream/With Arg Type Checking/Test_TStreamAddReadArgType.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 9 | 10 | 11 | 12 | 13 | 17 | 18 | 19 | 20 | 21 | 22 | 25 | 26 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/UnitTests/Unit Tests/Stream/With Arg Type Checking/Test_TStreamAdd_Read_BLOB.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 18 | 19 | 20 | 21 | 22 | 26 | 27 | 28 | 29 | 30 | 31 | 34 | 35 | 64 | 65 | 66 | 67 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/UnitTests/Unit Tests/Stream/With Arg Type Checking/Test_TStreamAdd_Read_BOOL.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 10 | 11 | 12 | 13 | 14 | 18 | 19 | 20 | 21 | 22 | 23 | 26 | 27 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/UnitTests/Unit Tests/Stream/With Arg Type Checking/Test_TStreamAdd_Read_BYTE.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 10 | 11 | 12 | 13 | 14 | 18 | 19 | 20 | 21 | 22 | 23 | 26 | 27 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/UnitTests/Unit Tests/Stream/With Arg Type Checking/Test_TStreamAdd_Read_DINT.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 10 | 11 | 12 | 13 | 14 | 18 | 19 | 20 | 21 | 22 | 23 | 26 | 27 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/UnitTests/Unit Tests/Stream/With Arg Type Checking/Test_TStreamAdd_Read_INT.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 10 | 11 | 12 | 13 | 14 | 18 | 19 | 20 | 21 | 22 | 23 | 26 | 27 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/UnitTests/Unit Tests/Stream/With Arg Type Checking/Test_TStreamAdd_Read_LINT.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 10 | 11 | 12 | 13 | 14 | 18 | 19 | 20 | 21 | 22 | 23 | 26 | 27 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/UnitTests/Unit Tests/Stream/With Arg Type Checking/Test_TStreamAdd_Read_LREAL.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 10 | 11 | 12 | 13 | 14 | 18 | 19 | 20 | 21 | 22 | 23 | 26 | 27 | 53 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/UnitTests/Unit Tests/Stream/With Arg Type Checking/Test_TStreamAdd_Read_PVOID.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 11 | 12 | 13 | 14 | 15 | 19 | 20 | 21 | 22 | 23 | 24 | 27 | 28 | 53 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/UnitTests/Unit Tests/Stream/With Arg Type Checking/Test_TStreamAdd_Read_REAL.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 10 | 11 | 12 | 13 | 14 | 18 | 19 | 20 | 21 | 22 | 23 | 26 | 27 | 53 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/UnitTests/Unit Tests/Stream/With Arg Type Checking/Test_TStreamAdd_Read_STRING.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 11 | 12 | 13 | 14 | 15 | 19 | 20 | 21 | 22 | 23 | 24 | 27 | 28 | 53 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/UnitTests/Unit Tests/Stream/With Arg Type Checking/Test_TStreamAdd_Read_Short_STRING.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 11 | 12 | 13 | 14 | 15 | 19 | 20 | 21 | 22 | 23 | 24 | 27 | 28 | 54 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/UnitTests/Unit Tests/Stream/With Arg Type Checking/Test_TStreamAdd_Read_T_MaxString.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 11 | 12 | 13 | 14 | 15 | 19 | 20 | 21 | 22 | 23 | 24 | 27 | 28 | 53 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/UnitTests/Unit Tests/Stream/With Arg Type Checking/Test_TStreamAdd_Read_UDINT.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 10 | 11 | 12 | 13 | 14 | 18 | 19 | 20 | 21 | 22 | 23 | 26 | 27 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/UnitTests/Unit Tests/Stream/With Arg Type Checking/Test_TStreamAdd_Read_UINT.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 10 | 11 | 12 | 13 | 14 | 18 | 19 | 20 | 21 | 22 | 23 | 26 | 27 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/UnitTests/Unit Tests/Stream/With Arg Type Checking/Test_TStreamAdd_Read_ULINT.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 10 | 11 | 12 | 13 | 14 | 18 | 19 | 20 | 21 | 22 | 23 | 26 | 27 | 53 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/UnitTests/Unit Tests/Stream/With alignment checks/Test_TStreamAddReadArgType_CheckAlignment.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 9 | 10 | 11 | 12 | 13 | 17 | 18 | 19 | 20 | 21 | 22 | 25 | 26 | 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/UnitTests/Unit Tests/Stream/With alignment checks/Test_TStreamAdd_Read_BLOB_CheckAlignment.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 18 | 19 | 20 | 21 | 22 | 26 | 27 | 28 | 29 | 30 | 31 | 34 | 35 | 62 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/UnitTests/Unit Tests/Stream/With alignment checks/Test_TStreamAdd_Read_DINT_CheckAlignment.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 10 | 11 | 12 | 13 | 14 | 18 | 19 | 20 | 21 | 22 | 23 | 26 | 27 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/UnitTests/Unit Tests/Stream/With alignment checks/Test_TStreamAdd_Read_INT_CheckAlignment.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 10 | 11 | 12 | 13 | 14 | 18 | 19 | 20 | 21 | 22 | 23 | 26 | 27 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/UnitTests/Unit Tests/Stream/With alignment checks/Test_TStreamAdd_Read_LINT_CheckAlignment.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 10 | 11 | 12 | 13 | 14 | 18 | 19 | 20 | 21 | 22 | 23 | 26 | 27 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/UnitTests/Unit Tests/Stream/With alignment checks/Test_TStreamAdd_Read_LREAL_CheckAlignment.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 10 | 11 | 12 | 13 | 14 | 18 | 19 | 20 | 21 | 22 | 23 | 26 | 27 | 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/UnitTests/Unit Tests/Stream/With alignment checks/Test_TStreamAdd_Read_PVOID_CheckAlignment.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 11 | 12 | 13 | 14 | 15 | 19 | 20 | 21 | 22 | 23 | 24 | 27 | 28 | 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/UnitTests/Unit Tests/Stream/With alignment checks/Test_TStreamAdd_Read_REAL_CheckAlignment.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 10 | 11 | 12 | 13 | 14 | 18 | 19 | 20 | 21 | 22 | 23 | 26 | 27 | 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/UnitTests/Unit Tests/Stream/With alignment checks/Test_TStreamAdd_Read_UDINT_CheckAlignment.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 10 | 11 | 12 | 13 | 14 | 18 | 19 | 20 | 21 | 22 | 23 | 26 | 27 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/UnitTests/Unit Tests/Stream/With alignment checks/Test_TStreamAdd_Read_UINT_CheckAlignment.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 10 | 11 | 12 | 13 | 14 | 18 | 19 | 20 | 21 | 22 | 23 | 26 | 27 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/UnitTests/Unit Tests/Stream/With alignment checks/Test_TStreamAdd_Read_ULINT_CheckAlignment.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 10 | 11 | 12 | 13 | 14 | 18 | 19 | 20 | 21 | 22 | 23 | 26 | 27 | 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/_Config/PLC/tcl_BaseClasses.xti: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | tcl_BaseClasses Instance 6 | {08500001-0000-0000-F000-000000000064} 7 | 8 | 9 | 1 10 | Default 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/tcl_BaseClasses.tsproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PLC_Exceptions 6 | 7 | 8 | NoNotificationHandlersLinked 9 | 10 | Warning 11 | 12 | 13 | LogCritical 14 | 15 | Critical 16 | 17 | 18 | LogError 19 | 20 | Error 21 | 22 | 23 | LogWarning 24 | 25 | Warning 26 | 27 | 28 | LogInfo 29 | 30 | Info 31 | 32 | 33 | LogDebug 34 | 35 | Verbose 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | PlcTask 50 | 51 | 52 | PlcTask1 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | UnitTests Instance 61 | {08500001-0000-0000-F000-000000000064} 62 | 63 | 64 | 0 65 | PlcTask 66 | 67 | #x02010040 68 | 69 | 21 70 | 10000000 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/tcl_BaseClasses.tsproj.old: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | PlcTask 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/tcl_BaseClasses/Classes/Change Monitoring/T_Monitor_DINT.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 21 | 22 | 25 | 26 | 28 | 29 | 30 | 31 | 32 | 37 | 38 | _CurrentValue; 39 | _CurrentValue := Value; 40 | CyclicUpdate := _Changed; 41 | ]]> 42 | 43 | 44 | 45 | 47 | 48 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/tcl_BaseClasses/Classes/Change Monitoring/T_Monitor_INT.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 21 | 22 | 25 | 26 | 28 | 29 | 30 | 31 | 32 | 37 | 38 | _CurrentValue; 39 | _CurrentValue := Value; 40 | CyclicUpdate := _Changed; 41 | ]]> 42 | 43 | 44 | 45 | 47 | 48 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/tcl_BaseClasses/Classes/Change Monitoring/T_Monitor_Structure.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 19 | 20 | 23 | 24 | 26 | 27 | 28 | 29 | 30 | 39 | 40 | Stored_CRC); 44 | IF Changed THEN 45 | Stored_CRC := CRC; 46 | END_IF 47 | CyclicUpdate := _Changed; 48 | ]]> 49 | 50 | 51 | 52 | 56 | 57 | 60 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/tcl_BaseClasses/Classes/Execution/Execution/I_Execution.TcIO: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 6 | 7 | 8 | 9 | 13 | 14 | 15 | 17 | 18 | 19 | 20 | 21 | 22 | 24 | 25 | 26 | 27 | 28 | 29 | 33 | 34 | 35 | 37 | 38 | 39 | 40 | 41 | 42 | 44 | 45 | 46 | 47 | 48 | 49 | 51 | 52 | 53 | 54 | 55 | 56 | 58 | 59 | 60 | 61 | 62 | 63 | 67 | 68 | 69 | 71 | 72 | 73 | 74 | 75 | 76 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/tcl_BaseClasses/Classes/Execution/Execution/I_ExecutionResult.TcIO: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 6 | 7 | 8 | 9 | 13 | 14 | 15 | 17 | 18 | 19 | 20 | 21 | 22 | 24 | 25 | 26 | 27 | 28 | 29 | 31 | 32 | 33 | 34 | 35 | 36 | 38 | 39 | 40 | 41 | 42 | 43 | 45 | 46 | 47 | 48 | 49 | 50 | 52 | 53 | 54 | 55 | 56 | 57 | 59 | 60 | 61 | 62 | 63 | 64 | 66 | 67 | 68 | 69 | 70 | 71 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/tcl_BaseClasses/Classes/Execution/Execution/T_ExecutionState.TcDUT: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 15 | 16 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/tcl_BaseClasses/Classes/Function Block Wrappers/Classes/T_Counter.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 9 | 10 | 11 | 12 | 13 | 17 | 18 | 21 | 22 | 23 | 24 | 28 | 29 | 32 | 33 | 34 | 35 | 40 | 41 | 43 | 44 | 45 | 46 | 50 | 51 | 53 | 54 | 55 | 56 | 58 | 59 | 62 | 63 | 65 | 66 | 67 | 68 | 69 | 71 | 72 | 75 | 76 | 78 | 79 | 80 | 81 | 82 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/tcl_BaseClasses/Classes/Function Block Wrappers/Classes/T_FallingEdge.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 9 | 10 | 11 | 12 | 13 | 15 | 16 | 19 | 20 | 22 | 23 | 24 | 25 | 26 | 31 | 32 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/tcl_BaseClasses/Classes/Function Block Wrappers/Classes/T_MonitoredValue.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 39 | 40 | 42 | 43 | 44 | 45 | 49 | 50 | 53 | 54 | 55 | 56 | 61 | 62 | _ChangeThreshold THEN 63 | _Value := Value; 64 | _Changed := TRUE; 65 | END_IF]]> 66 | 67 | 68 | 69 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/tcl_BaseClasses/Classes/Function Block Wrappers/Classes/T_OffTimer.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 9 | 10 | 11 | 12 | 13 | 18 | 19 | 22 | 23 | 24 | 25 | 32 | 33 | 35 | 36 | 37 | 38 | 40 | 41 | 44 | 45 | 47 | 48 | 49 | 50 | 51 | 53 | 54 | 57 | 58 | 60 | 61 | 62 | 63 | 66 | 67 | 69 | 70 | 71 | 72 | 73 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/tcl_BaseClasses/Classes/Function Block Wrappers/Classes/T_OnTimer.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 9 | 10 | 11 | 12 | 13 | 15 | 16 | 22 | 23 | 24 | 25 | 30 | 31 | 34 | 35 | 36 | 37 | 44 | 45 | 47 | 48 | 49 | 50 | 52 | 53 | 56 | 57 | 59 | 60 | 61 | 62 | 63 | 65 | 66 | 69 | 70 | 72 | 73 | 74 | 75 | 78 | 79 | 81 | 82 | 83 | 84 | 85 | 87 | 88 | 90 | 91 | 92 | 93 | 95 | 96 | 99 | 100 | 101 | 102 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/tcl_BaseClasses/Classes/Function Block Wrappers/Classes/T_PulseTimer.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 9 | 10 | 11 | 12 | 13 | 20 | 21 | 23 | 24 | 25 | 26 | 28 | 29 | 32 | 33 | 35 | 36 | 37 | 38 | 39 | 41 | 42 | 45 | 46 | 48 | 49 | 50 | 51 | 54 | 55 | 57 | 58 | 59 | 60 | 61 | 66 | 67 | 70 | 71 | 72 | 73 | 75 | 76 | 78 | 79 | 80 | 81 | 83 | 84 | 87 | 88 | 89 | 90 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/tcl_BaseClasses/Classes/Function Block Wrappers/Classes/T_RisingEdge.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 9 | 10 | 11 | 12 | 13 | 15 | 16 | 19 | 20 | 22 | 23 | 24 | 25 | 26 | 31 | 32 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/tcl_BaseClasses/Classes/Function Block Wrappers/Classes/T_SquareWave.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 11 | 12 | 20 | 21 | 22 | 30 | 31 | 34 | 35 | 36 | 37 | 39 | 40 | 43 | 44 | 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/tcl_BaseClasses/Classes/Function Block Wrappers/Classes/T_StructureCrcMonitor.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 11 | 12 | 13 | 14 | 15 | 17 | 18 | 21 | 22 | 24 | 25 | 26 | 27 | 28 | 32 | 33 | 35 | 36 | 37 | 38 | 46 | 47 | Stored_CRC); 52 | 53 | IF Changed THEN 54 | Stored_CRC := CRC; 55 | END_IF 56 | 57 | Test := _Changed; 58 | ]]> 59 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/tcl_BaseClasses/Classes/Function Block Wrappers/Classes/T_ValueMonitor.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 12 | 13 | 14 | 15 | 16 | 18 | 19 | 22 | 23 | 25 | 26 | 27 | 28 | 29 | 31 | 32 | 35 | 36 | 38 | 39 | 40 | 41 | 42 | 44 | 45 | 48 | 49 | 51 | 52 | 53 | 54 | 55 | 59 | 60 | 63 | 64 | 65 | 66 | 71 | 72 | _CurrentValue; 73 | _PreviousValue := _CurrentValue; 74 | _CurrentValue := Value; 75 | 76 | Test := _Changed; 77 | ]]> 78 | 79 | 80 | 81 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/tcl_BaseClasses/Classes/Function Block Wrappers/Classes/T_ValueMonitorEx.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 11 | 12 | 13 | 14 | 15 | 17 | 18 | 21 | 22 | 24 | 25 | 26 | 27 | 28 | 32 | 33 | 37 | 38 | 39 | 40 | 45 | 46 | 47 | MEMCMP(pBuf1 := Value.pValue, 48 | pBuf2 := ADR(StoredValue), 49 | n := DINT_TO_UDINT(Value.diSize)); 50 | 51 | IF _Changed THEN 52 | MEMCPY(destAddr := ADR(StoredValue), 53 | srcAddr := Value.pValue, 54 | n := DINT_TO_UDINT(Value.diSize)); 55 | END_IF 56 | 57 | Test := _Changed; 58 | ]]> 59 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/tcl_BaseClasses/Classes/List Of Interfaces/I_ListItem.TcIO: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 6 | 7 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/tcl_BaseClasses/Classes/List Of Interfaces/I_ListOfInterfaces.TcIO: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 6 | 7 | 12 | 13 | 14 | 16 | 17 | 18 | 19 | 20 | 21 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/tcl_BaseClasses/Classes/List Of Interfaces/T_ListOfInterfaces.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 25 | 26 | 0 THEN 36 | pInterface[_Count] := InterfacePointer; 37 | _Count := _Count + 1; 38 | END_IF 39 | ]]> 40 | 41 | 42 | 43 | 47 | 48 | 57 | 58 | 59 | 60 | 62 | 63 | 66 | 67 | 69 | 70 | 71 | 72 | 73 | 78 | 79 | 84 | 85 | 86 | 87 | 94 | 95 | 102 | 103 | 104 | 105 | 110 | 111 | = 0 THEN 112 | GetInterface := pInterface[Index]; 113 | END_IF 114 | ]]> 115 | 116 | 117 | 118 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/tcl_BaseClasses/Classes/List Of Interfaces/T_TestIterator.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 14 | 15 | 16 | 17 | 18 | 22 | 23 | 0 AND_THEN HasMore() THEN 24 | GetNext := List.GetTest(Index); 25 | Index := Index + 1; 26 | END_IF 27 | ]]> 28 | 29 | 30 | 31 | 35 | 36 | 0 AND_THEN (Index < List.Count and List.Count > 0); 37 | ]]> 38 | 39 | 40 | 41 | 46 | 47 | 50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/tcl_BaseClasses/Classes/Logger/I_Logger.TcIO: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 6 | 7 | 13 | 14 | 15 | 21 | 22 | 23 | 29 | 30 | 31 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/tcl_BaseClasses/Classes/Notifications/List Of Handlers/T_ListONotificationHandlers.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 15 | 16 | 17 | 18 | 19 | 24 | 25 | 48 | 49 | 50 | 51 | 55 | 56 | 59 | 60 | 61 | 62 | 64 | 65 | 68 | 69 | 71 | 72 | 73 | 74 | 75 | 80 | 81 | 86 | 87 | 88 | 89 | 96 | 97 | 103 | 104 | 105 | 106 | 111 | 112 | = 0 THEN 113 | GetHandler := pHandler[Index]; 114 | END_IF 115 | ]]> 116 | 117 | 118 | 119 | 128 | 129 | 140 | 141 | 142 | 143 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/tcl_BaseClasses/Classes/Notifications/Notification Handler/I_NotificationHandler.TcIO: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 7 | 8 | 9 | 10 | 12 | 13 | 14 | 15 | 16 | 17 | 19 | 20 | 21 | 22 | 23 | 24 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/tcl_BaseClasses/Classes/Notifications/Notification/I_Notification.TcIO: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 6 | 7 | 8 | 9 | 14 | 15 | 16 | 18 | 19 | 20 | 21 | 22 | 23 | 27 | 28 | 29 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/tcl_BaseClasses/Classes/Notifications/Notification/T_Notification.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 24 | 25 | 28 | 29 | 30 | 31 | 33 | 34 | 37 | 38 | 40 | 41 | 42 | 43 | 44 | 46 | 47 | 50 | 51 | 52 | 53 | 59 | 60 | 0 THEN 61 | FOR i := 0 TO NotificationtHandlers.Count - 1 DO 62 | Handler := NotificationtHandlers.GetHandler(i); 63 | IF Handler <> 0 THEN 64 | Handler.RaiseNotification(NotificationArgs := NotificationArgs); 65 | END_IF 66 | END_FOR 67 | ELSIF NOT InhibitNoHandlersErrorMessage THEN 68 | InhibitNoHandlersErrorMessage := TRUE; // Only log 1 message 69 | F_LogWarning(Source := SUPER^._Name, Message := 'Notification has no notification handlers'); 70 | 71 | _Message.CreateEx(TC_EVENTS.PLC_Exceptions.LogWarning,_Source); 72 | _Message.ipArguments.AddString('Notification has no notification handlers'); 73 | _Message.Send(0); 74 | _Message.Release(); 75 | END_IF 76 | 77 | NotificationArgs.Clear(); // to leave event args empty for next time event is raised 78 | ]]> 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | {ec6b18ef-cd41-4646-b1b3-985c60f930b9} 90 | 91 | 92 | 93 | 94 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/tcl_BaseClasses/Classes/Nullable Base Class/T_NullableBaseClass.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 9 | 10 | 11 | 12 | 13 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/tcl_BaseClasses/Classes/Object base class/T_Object.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 17 | 18 | 19 | 20 | 21 | 22 | 31 | 32 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/tcl_BaseClasses/Classes/Stream/E_ArgTypeId.TcDUT: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 26 | 27 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/tcl_BaseClasses/Classes/Stream/I_StreamReader.TcIO: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 6 | 7 | 8 | 9 | 12 | 13 | 14 | 15 | 16 | 17 | 19 | 20 | 21 | 26 | 27 | 28 | 30 | 31 | 32 | 34 | 35 | 36 | 42 | 43 | 44 | 46 | 47 | 48 | 50 | 51 | 52 | 54 | 55 | 56 | 58 | 59 | 60 | 62 | 63 | 64 | 66 | 67 | 68 | 70 | 71 | 72 | 78 | 79 | 80 | 82 | 83 | 84 | 86 | 87 | 88 | 90 | 91 | 92 | 95 | 96 | 97 | 98 | 99 | 100 | 105 | 106 | 107 | 110 | 111 | 112 | 113 | 114 | 115 | 118 | 119 | 120 | 121 | 122 | 123 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/tcl_BaseClasses/Classes/Stream/I_StreamWriter.TcIO: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 6 | 7 | 8 | 9 | 14 | 15 | 16 | 21 | 22 | 23 | 28 | 29 | 30 | 36 | 37 | 38 | 43 | 44 | 45 | 50 | 51 | 52 | 57 | 58 | 59 | 64 | 65 | 66 | 71 | 72 | 73 | 78 | 79 | 80 | 85 | 86 | 87 | 93 | 94 | 95 | 100 | 101 | 102 | 107 | 108 | 109 | 114 | 115 | 116 | 125 | 126 | 127 | 130 | 131 | 132 | 133 | 134 | 135 | 137 | 138 | 139 | 144 | 145 | 146 | 149 | 150 | 151 | 152 | 153 | 154 | 159 | 160 | 161 | 166 | 167 | 168 | 171 | 172 | 173 | 174 | 175 | 176 | 179 | 180 | 181 | 182 | 183 | 184 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/tcl_BaseClasses/Functions/F_ClearMem.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 11 | 12 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/tcl_BaseClasses/Functions/F_CompareMem.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 13 | 14 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/tcl_BaseClasses/Functions/F_CopyMem.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 13 | 14 | 0 THEN 18 | memcpy(destAddr := Destination.pValue, 19 | srcAddr := Source.pValue, 20 | n := ByteCount); 21 | END_IF 22 | ]]> 23 | 24 | 25 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/tcl_BaseClasses/Functions/F_DINT_TO_UDINT.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 12 | 13 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/tcl_BaseClasses/Functions/F_DetectOnlineChange.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 9 | 10 | StoredOnlineChangeCnt); 11 | StoredOnlineChangeCnt := TwinCAT_SystemInfoVarList._AppInfo.OnlineChangeCnt; 12 | ]]> 13 | 14 | 15 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/tcl_BaseClasses/Functions/F_Equals.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 14 | 15 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/tcl_BaseClasses/Functions/F_GetAdsPort.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 9 | 10 | 0 THEN 12 | F_GetAdsPort := TwinCAT_SystemInfoVarList._AppInfo.AdsPort; 13 | END_IF 14 | ]]> 15 | 16 | 17 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/tcl_BaseClasses/Functions/F_InLimits.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 11 | 12 | = LowLimit) AND (In <= HighLimit);]]> 13 | 14 | 15 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/tcl_BaseClasses/Functions/F_Inc.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 22 | 23 | 71 | 72 | 73 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/tcl_BaseClasses/Functions/F_LinearInterpolation.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 13 | 14 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/tcl_BaseClasses/Functions/F_LogError.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 13 | 14 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/tcl_BaseClasses/Functions/F_LogMessage.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 13 | 14 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/tcl_BaseClasses/Functions/F_LogWarning.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 13 | 14 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/tcl_BaseClasses/Functions/F_NotEqual.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 14 | 15 | Delta; 17 | ]]> 18 | 19 | 20 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/tcl_BaseClasses/Functions/F_ReadFlag.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 9 | 10 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/tcl_BaseClasses/Functions/F_TaskTime.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 9 | 10 | 0 THEN 12 | F_TaskTime := UDINT_TO_LREAL(TwinCAT_SystemInfoVarList._taskInfo[TaskIndex].CycleTime) * LREAL#1E-7; 13 | END_IF 14 | ]]> 15 | 16 | 17 | 18 | 19 | 20 | 21 | "White" 22 | false 23 | 24 | 25 | 26 | System.Boolean 27 | {bb741845-1ec5-4be9-bb0d-2cf7058af574} 28 | System.String 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/tcl_BaseClasses/Functions/F_Toggle.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 9 | 10 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/tcl_BaseClasses/Functions/F_TypeClassToString.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 12 | 13 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/tcl_BaseClasses/Functions/F_UDINT_TO_DINT.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 12 | 13 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /tcl_BaseClasses/tcl_BaseClasses/tcl_BaseClasses/Version/Global_Version.TcGVL: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 13 | 14 | --------------------------------------------------------------------------------