├── .gitignore ├── LICENSE ├── README.md ├── TF6100_OpcUa_Client_Sample ├── ClientSampleProject │ ├── ClientSampleProject.plcproj │ ├── ClientSampleProject.tmc │ ├── DUTs │ │ ├── ST_OutputArgInfoAndData.TcDUT │ │ ├── ST_ReadListData.TcDUT │ │ └── ST_ReadListData_Array.TcDUT │ ├── GVLs │ │ └── GlobalSettings.TcGVL │ ├── POUs │ │ ├── Browse │ │ │ └── PRG_BROWSE.TcPOU │ │ ├── Connect │ │ │ ├── PRG_CONNECT.TcPOU │ │ │ └── PRG_GETSTATUS.TcPOU │ │ ├── HistoryUpdate │ │ │ ├── FB_HistoryUpdate_INT.TcPOU │ │ │ ├── FB_HistoryUpdate_LREAL.TcPOU │ │ │ ├── PRG_HA_MultipleNodes.TcPOU │ │ │ └── PRG_HA_SingleNode.TcPOU │ │ ├── MAIN.TcPOU │ │ ├── MethodCall │ │ │ ├── PRG_METHOD.TcPOU │ │ │ └── PRG_METHOD_NOARGS.TcPOU │ │ ├── Read │ │ │ ├── PRG_READ.TcPOU │ │ │ ├── PRG_READ_IndexRange.TcPOU │ │ │ ├── PRG_READ_List.TcPOU │ │ │ └── PRG_READ_List_Array.TcPOU │ │ └── Write │ │ │ ├── PRG_WRITE.TcPOU │ │ │ └── PRG_WRITE_IndexRange.TcPOU │ └── PlcTask.TcTTO ├── ServerSampleProject │ ├── DUTs │ │ ├── ST_Structure.TcDUT │ │ └── ST_SubStructure.TcDUT │ ├── POUs │ │ ├── FB_Mathematics.TcPOU │ │ └── MAIN.TcPOU │ ├── PlcTask.TcTTO │ ├── ServerSampleProject.plcproj │ └── ServerSampleProject.tmc ├── TF6100_OpcUa_Client_Sample.sln ├── TF6100_OpcUa_Client_Sample.tsproj └── TcUaHaConfig.xml ├── TF6100_OpcUa_Server_Sample ├── ServerSampleProject │ ├── DUTs │ │ ├── Enums │ │ │ ├── E_Enum_1.TcDUT │ │ │ ├── E_Enum_2.TcDUT │ │ │ └── E_Operation.TcDUT │ │ └── Structures │ │ │ ├── ST_Complex_1.TcDUT │ │ │ ├── ST_Complex_2.TcDUT │ │ │ ├── ST_Complex_3.TcDUT │ │ │ ├── ST_Complex_4.TcDUT │ │ │ ├── ST_Complex_5.TcDUT │ │ │ ├── ST_Complex_6.TcDUT │ │ │ ├── ST_Complex_7.TcDUT │ │ │ ├── ST_Complex_8.TcDUT │ │ │ ├── ST_MathOperation.TcDUT │ │ │ └── ST_MathematicResults.TcDUT │ ├── GVLs │ │ ├── GVL_alarm_condition.TcGVL │ │ ├── GVL_analog_items.TcGVL │ │ ├── GVL_arrays.TcGVL │ │ ├── GVL_enums.TcGVL │ │ ├── GVL_historizing.TcGVL │ │ ├── GVL_inheritance.TcGVL │ │ ├── GVL_methods.TcGVL │ │ ├── GVL_nodes_dynamic.TcGVL │ │ ├── GVL_nodes_static.TcGVL │ │ ├── GVL_properties.TcGVL │ │ ├── GVL_structures.TcGVL │ │ ├── GVL_user_access.TcGVL │ │ └── Settings.TcGVL │ ├── POUs │ │ ├── Inheritance │ │ │ ├── FB_Base.TcPOU │ │ │ └── FB_Derived.TcPOU │ │ ├── MAIN.TcPOU │ │ ├── Methods │ │ │ ├── FB_Job.TcPOU │ │ │ ├── FB_Mathematics.TcPOU │ │ │ └── FB_Methods.TcPOU │ │ ├── Programs │ │ │ ├── PRG_Dynamic.TcPOU │ │ │ ├── PRG_Eventlogger.TcPOU │ │ │ └── PRG_Static.TcPOU │ │ └── Properties │ │ │ └── FB_Properties.TcPOU │ ├── PlcTask.TcTTO │ ├── ServerSampleProject.plcproj │ └── ServerSampleProject.tmc ├── TF6100_OpcUa_Server_Sample.sln └── TF6100_OpcUa_Server_Sample.tsproj ├── TS6100_OpcUa_Client_Sample └── Tc2_PLCopen_OpcUa_Samples.pro └── TS6100_OpcUa_Server_Sample └── TS6100_OpcUa_Server_Sample.pro /.gitignore: -------------------------------------------------------------------------------- 1 | # gitignore template for TwinCAT3 2 | # website: https://www.beckhoff.com/twincat3/ 3 | # 4 | # Recommended: VisualStudio.gitignore 5 | 6 | # Some usual suspects 7 | *.bak 8 | *.bin 9 | *.zip 10 | 11 | # TwinCAT files 12 | *.compiled-library 13 | *.compileinfo 14 | *.tmcRefac 15 | *.library 16 | *.project.~u 17 | *.tclrs 18 | *.tnzip 19 | *.tpy 20 | *.tpzip 21 | *.tsproj.bk? 22 | *.tszip 23 | *.xti.bk? 24 | LineIDs.dbg 25 | _Boot/ 26 | _CompileInfo/ 27 | _Libraries/ 28 | 29 | ## Ignore Visual Studio temporary files, build results, and 30 | ## files generated by popular Visual Studio add-ons. 31 | ## 32 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore 33 | 34 | # User-specific files 35 | *.rsuser 36 | *.suo 37 | *.user 38 | *.userosscache 39 | *.sln.docstates 40 | 41 | # User-specific files (MonoDevelop/Xamarin Studio) 42 | *.userprefs 43 | 44 | # Mono auto generated files 45 | mono_crash.* 46 | 47 | # Build results 48 | [Dd]ebug/ 49 | [Dd]ebugPublic/ 50 | [Rr]elease/ 51 | [Rr]eleases/ 52 | x64/ 53 | x86/ 54 | [Aa][Rr][Mm]/ 55 | [Aa][Rr][Mm]64/ 56 | bld/ 57 | [Bb]in/ 58 | [Oo]bj/ 59 | [Ll]og/ 60 | [Ll]ogs/ 61 | 62 | # Visual Studio 2015/2017 cache/options directory 63 | .vs/ 64 | # Uncomment if you have tasks that create the project's static files in wwwroot 65 | #wwwroot/ 66 | 67 | # Visual Studio 2017 auto generated files 68 | Generated\ Files/ 69 | 70 | # MSTest test Results 71 | [Tt]est[Rr]esult*/ 72 | [Bb]uild[Ll]og.* 73 | 74 | # NUnit 75 | *.VisualState.xml 76 | TestResult.xml 77 | nunit-*.xml 78 | 79 | # Build Results of an ATL Project 80 | [Dd]ebugPS/ 81 | [Rr]eleasePS/ 82 | dlldata.c 83 | 84 | # Benchmark Results 85 | BenchmarkDotNet.Artifacts/ 86 | 87 | # .NET Core 88 | project.lock.json 89 | project.fragment.lock.json 90 | artifacts/ 91 | 92 | # StyleCop 93 | StyleCopReport.xml 94 | 95 | # Files built by Visual Studio 96 | *_i.c 97 | *_p.c 98 | *_h.h 99 | *.ilk 100 | *.meta 101 | *.obj 102 | *.iobj 103 | *.pch 104 | *.pdb 105 | *.ipdb 106 | *.pgc 107 | *.pgd 108 | *.rsp 109 | *.sbr 110 | *.tlb 111 | *.tli 112 | *.tlh 113 | *.tmp 114 | *.tmp_proj 115 | *_wpftmp.csproj 116 | *.log 117 | *.vspscc 118 | *.vssscc 119 | .builds 120 | *.pidb 121 | *.svclog 122 | *.scc 123 | 124 | # Chutzpah Test files 125 | _Chutzpah* 126 | 127 | # Visual C++ cache files 128 | ipch/ 129 | *.aps 130 | *.ncb 131 | *.opendb 132 | *.opensdf 133 | *.sdf 134 | *.cachefile 135 | *.VC.db 136 | *.VC.VC.opendb 137 | 138 | # Visual Studio profiler 139 | *.psess 140 | *.vsp 141 | *.vspx 142 | *.sap 143 | 144 | # Visual Studio Trace Files 145 | *.e2e 146 | 147 | # TFS 2012 Local Workspace 148 | $tf/ 149 | 150 | # Guidance Automation Toolkit 151 | *.gpState 152 | 153 | # ReSharper is a .NET coding add-in 154 | _ReSharper*/ 155 | *.[Rr]e[Ss]harper 156 | *.DotSettings.user 157 | 158 | # TeamCity is a build add-in 159 | _TeamCity* 160 | 161 | # DotCover is a Code Coverage Tool 162 | *.dotCover 163 | 164 | # AxoCover is a Code Coverage Tool 165 | .axoCover/* 166 | !.axoCover/settings.json 167 | 168 | # Visual Studio code coverage results 169 | *.coverage 170 | *.coveragexml 171 | 172 | # NCrunch 173 | _NCrunch_* 174 | .*crunch*.local.xml 175 | nCrunchTemp_* 176 | 177 | # MightyMoose 178 | *.mm.* 179 | AutoTest.Net/ 180 | 181 | # Web workbench (sass) 182 | .sass-cache/ 183 | 184 | # Installshield output folder 185 | [Ee]xpress/ 186 | 187 | # DocProject is a documentation generator add-in 188 | DocProject/buildhelp/ 189 | DocProject/Help/*.HxT 190 | DocProject/Help/*.HxC 191 | DocProject/Help/*.hhc 192 | DocProject/Help/*.hhk 193 | DocProject/Help/*.hhp 194 | DocProject/Help/Html2 195 | DocProject/Help/html 196 | 197 | # Click-Once directory 198 | publish/ 199 | 200 | # Publish Web Output 201 | *.[Pp]ublish.xml 202 | *.azurePubxml 203 | # Note: Comment the next line if you want to checkin your web deploy settings, 204 | # but database connection strings (with potential passwords) will be unencrypted 205 | *.pubxml 206 | *.publishproj 207 | 208 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 209 | # checkin your Azure Web App publish settings, but sensitive information contained 210 | # in these scripts will be unencrypted 211 | PublishScripts/ 212 | 213 | # NuGet Packages 214 | *.nupkg 215 | # NuGet Symbol Packages 216 | *.snupkg 217 | # The packages folder can be ignored because of Package Restore 218 | **/[Pp]ackages/* 219 | # except build/, which is used as an MSBuild target. 220 | !**/[Pp]ackages/build/ 221 | # Uncomment if necessary however generally it will be regenerated when needed 222 | #!**/[Pp]ackages/repositories.config 223 | # NuGet v3's project.json files produces more ignorable files 224 | *.nuget.props 225 | *.nuget.targets 226 | 227 | # Microsoft Azure Build Output 228 | csx/ 229 | *.build.csdef 230 | 231 | # Microsoft Azure Emulator 232 | ecf/ 233 | rcf/ 234 | 235 | # Windows Store app package directories and files 236 | AppPackages/ 237 | BundleArtifacts/ 238 | Package.StoreAssociation.xml 239 | _pkginfo.txt 240 | *.appx 241 | *.appxbundle 242 | *.appxupload 243 | 244 | # Visual Studio cache files 245 | # files ending in .cache can be ignored 246 | *.[Cc]ache 247 | # but keep track of directories ending in .cache 248 | !?*.[Cc]ache/ 249 | 250 | # Others 251 | ClientBin/ 252 | ~$* 253 | *~ 254 | *.dbmdl 255 | *.dbproj.schemaview 256 | *.jfm 257 | *.pfx 258 | *.publishsettings 259 | orleans.codegen.cs 260 | 261 | # Including strong name files can present a security risk 262 | # (https://github.com/github/gitignore/pull/2483#issue-259490424) 263 | #*.snk 264 | 265 | # Since there are multiple workflows, uncomment next line to ignore bower_components 266 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 267 | #bower_components/ 268 | 269 | # RIA/Silverlight projects 270 | Generated_Code/ 271 | 272 | # Backup & report files from converting an old project file 273 | # to a newer Visual Studio version. Backup files are not needed, 274 | # because we have git ;-) 275 | _UpgradeReport_Files/ 276 | Backup*/ 277 | UpgradeLog*.XML 278 | UpgradeLog*.htm 279 | ServiceFabricBackup/ 280 | 281 | # SQL Server files 282 | *.mdf 283 | *.ldf 284 | *.ndf 285 | 286 | # Business Intelligence projects 287 | *.rdl.data 288 | *.bim.layout 289 | *.bim_*.settings 290 | *.rptproj.rsuser 291 | *- [Bb]ackup.rdl 292 | *- [Bb]ackup ([0-9]).rdl 293 | *- [Bb]ackup ([0-9][0-9]).rdl 294 | 295 | # Microsoft Fakes 296 | FakesAssemblies/ 297 | 298 | # GhostDoc plugin setting file 299 | *.GhostDoc.xml 300 | 301 | # Node.js Tools for Visual Studio 302 | .ntvs_analysis.dat 303 | node_modules/ 304 | 305 | # Visual Studio 6 build log 306 | *.plg 307 | 308 | # Visual Studio 6 workspace options file 309 | *.opt 310 | 311 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 312 | *.vbw 313 | 314 | # Visual Studio LightSwitch build output 315 | **/*.HTMLClient/GeneratedArtifacts 316 | **/*.DesktopClient/GeneratedArtifacts 317 | **/*.DesktopClient/ModelManifest.xml 318 | **/*.Server/GeneratedArtifacts 319 | **/*.Server/ModelManifest.xml 320 | _Pvt_Extensions 321 | 322 | # Paket dependency manager 323 | .paket/paket.exe 324 | paket-files/ 325 | 326 | # FAKE - F# Make 327 | .fake/ 328 | 329 | # CodeRush personal settings 330 | .cr/personal 331 | 332 | # Python Tools for Visual Studio (PTVS) 333 | __pycache__/ 334 | *.pyc 335 | 336 | # Cake - Uncomment if you are using it 337 | # tools/** 338 | # !tools/packages.config 339 | 340 | # Tabs Studio 341 | *.tss 342 | 343 | # Telerik's JustMock configuration file 344 | *.jmconfig 345 | 346 | # BizTalk build output 347 | *.btp.cs 348 | *.btm.cs 349 | *.odx.cs 350 | *.xsd.cs 351 | 352 | # OpenCover UI analysis results 353 | OpenCover/ 354 | 355 | # Azure Stream Analytics local run output 356 | ASALocalRun/ 357 | 358 | # MSBuild Binary and Structured Log 359 | *.binlog 360 | 361 | # NVidia Nsight GPU debugger configuration file 362 | *.nvuser 363 | 364 | # MFractors (Xamarin productivity tool) working folder 365 | .mfractor/ 366 | 367 | # Local History for Visual Studio 368 | .localhistory/ 369 | 370 | # BeatPulse healthcheck temp database 371 | healthchecksdb 372 | 373 | # Backup folder for Package Reference Convert tool in Visual Studio 2017 374 | MigrationBackup/ 375 | 376 | # Ionide (cross platform F# VS Code tools) working folder 377 | .ionide/ 378 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Zero-Clause BSD 2 | Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted. 3 | 4 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL 5 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, 6 | INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 7 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF 8 | THIS SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # About this repository 2 | This repository contains official sample code for the product TF6100|TC3 OPC UA offered by [Beckhoff Automation](https://www.beckhoff.com). The sample code is provided as-is under the Zero-Clause BSD license. 3 | 4 | # How to get support 5 | Should you have any questions regarding the provided sample code, please contact your local Beckhoff support team. Contact information can be found on the official Beckhoff website at https://www.beckhoff.com/contact/. 6 | 7 | # Further information 8 | Further information about this sample code can be found on the [Beckhoff Information System](https://infosys.beckhoff.com) in the [TF6100 documentation](https://infosys.beckhoff.com/content/1033/tf6100_tc3_opcua/index.html). -------------------------------------------------------------------------------- /TF6100_OpcUa_Client_Sample/ClientSampleProject/ClientSampleProject.plcproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 1.0.0.0 5 | 2.0 6 | {525b8f9c-92f8-4802-832b-9f33cd7b9ed0} 7 | ClientSampleProject 8 | 3.1.4026.13 9 | {aafff3c5-4c1a-45ca-a7b2-bc49a5188945} 10 | {e3aa1986-980c-4971-9f53-420d1d3628d5} 11 | {8b0817a1-ac23-4bd5-8a40-eac810b11dba} 12 | {127fd27f-47dd-495e-9a47-8babb4516267} 13 | {aae8d69a-4dd1-46fa-86ab-db8626894e7e} 14 | {f4b7f40a-f027-48ab-a1d5-599feda101b0} 15 | SAK 16 | SAK 17 | SAK 18 | SAK 19 | 20 | 21 | 22 | Code 23 | 24 | 25 | Code 26 | 27 | 28 | Code 29 | 30 | 31 | Code 32 | 33 | 34 | Code 35 | 36 | 37 | Code 38 | 39 | 40 | Code 41 | 42 | 43 | Code 44 | 45 | 46 | Code 47 | 48 | 49 | Code 50 | 51 | 52 | Code 53 | 54 | 55 | Code 56 | 57 | 58 | Code 59 | 60 | 61 | Code 62 | 63 | 64 | Code 65 | 66 | 67 | Code 68 | 69 | 70 | Code 71 | 72 | 73 | Code 74 | 75 | 76 | Code 77 | 78 | 79 | Code 80 | 81 | 82 | Code 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | Tc2_Standard, * (Beckhoff Automation GmbH) 101 | Tc2_Standard 102 | 103 | 104 | Tc2_System, * (Beckhoff Automation GmbH) 105 | Tc2_System 106 | 107 | 108 | Tc3_Module, * (Beckhoff Automation GmbH) 109 | Tc3_Module 110 | 111 | 112 | Tc3_PLCopen_OpcUa, * (Beckhoff Automation GmbH) 113 | Tc3_PLCopen_OpcUa 114 | 115 | 116 | 117 | 118 | Content 119 | 120 | 121 | 122 | 123 | Tc2_Utilities 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | "<ProjectRoot>" 132 | 133 | {A3BBA713-63D7-4de6-BEC2-E3BAAD8789F8} 134 | 135 | "{A3BBA713-63D7-4de6-BEC2-E3BAAD8789F8}" 136 | 137 | 138 | 139 | {192FAD59-8248-4824-A8DE-9177C94C195A} 140 | 141 | "{192FAD59-8248-4824-A8DE-9177C94C195A}" 142 | 143 | 144 | 145 | {8F99A816-E488-41E4-9FA3-846536012284} 146 | 147 | "{8F99A816-E488-41E4-9FA3-846536012284}" 148 | 149 | 150 | 151 | {40450F57-0AA3-4216-96F3-5444ECB29763} 152 | 153 | "{40450F57-0AA3-4216-96F3-5444ECB29763}" 154 | 155 | 156 | ActiveVisuExtensionsLength 157 | 0 158 | ActiveVisuProfile 159 | "IR0whWr8bwf8BwAA6S073gAAAACmAgAA3S1CUAAAAAABAAAAAAAAAAEaUwB5AHMAdABlAG0ALgBTAHQAcgBpAG4AZwACTHsAZgA5ADUAYgBiADQAMgA2AC0ANQA1ADIANAAtADQAYgA0ADUALQA5ADQAMAAwAC0AZgBiADAAZgAyAGUANwA3AGUANQAxAGIAfQADCE4AYQBtAGUABCxUAHcAaQBuAEMAQQBUACAAMwAuADEAIABCAHUAaQBsAGQAIAA0ADAAMQA4AAUWUAByAG8AZgBpAGwAZQBEAGEAdABhAAZMewAxADYAZQA1ADUAYgA2ADAALQA3ADAANAAzAC0ANABhADYAMwAtAGIANgA1AGIALQA2ADEANAA3ADEAMwA4ADcAOABkADQAMgB9AAcSTABpAGIAcgBhAHIAaQBlAHMACEx7ADMAYgBmAGQANQA0ADUAOQAtAGIAMAA3AGYALQA0AGQANgBlAC0AYQBlADEAYQAtAGEAOAAzADMANQA2AGEANQA1ADEANAAyAH0ACUx7ADkAYwA5ADUAOAA5ADYAOAAtADIAYwA4ADUALQA0ADEAYgBiAC0AOAA4ADcAMQAtADgAOQA1AGYAZgAxAGYAZQBkAGUAMQBhAH0ACg5WAGUAcgBzAGkAbwBuAAsGaQBuAHQADApVAHMAYQBnAGUADQpUAGkAdABsAGUADhxWAGkAcwB1AEUAbABlAG0AMwBEAFAAYQB0AGgADw5DAG8AbQBwAGEAbgB5ABAMUwB5AHMAdABlAG0AERpWAGkAcwB1AEUAbABlAG0ATQBlAHQAZQByABISVgBpAHMAdQBFAGwAZQBtAHMAEyJWAGkAcwB1AEUAbABlAG0AcwBEAGEAdABlAFQAaQBtAGUAFDBWAGkAcwB1AEUAbABlAG0AcwBTAHAAZQBjAGkAYQBsAEMAbwBuAHQAcgBvAGwAcwAVKFYAaQBzAHUARQBsAGUAbQBzAFcAaQBuAEMAbwBuAHQAcgBvAGwAcwAWJFYAaQBzAHUARQBsAGUAbQBUAGUAeAB0AEUAZABpAHQAbwByABciVgBpAHMAdQBOAGEAdABpAHYAZQBDAG8AbgB0AHIAbwBsABgUdgBpAHMAdQBpAG4AcAB1AHQAcwAZDHMAeQBzAHQAZQBtABoYVgBpAHMAdQBFAGwAZQBtAEIAYQBzAGUAGyZEAGUAdgBQAGwAYQBjAGUAaABvAGwAZABlAHIAcwBVAHMAZQBkABwIYgBvAG8AbAAdIlAAbAB1AGcAaQBuAEMAbwBuAHMAdAByAGEAaQBuAHQAcwAeTHsANAAzAGQANQAyAGIAYwBlAC0AOQA0ADIAYwAtADQANABkADcALQA5AGUAOQA0AC0AMQBiAGYAZABmADMAMQAwAGUANgAzAGMAfQAfHEEAdABMAGUAYQBzAHQAVgBlAHIAcwBpAG8AbgAgFFAAbAB1AGcAaQBuAEcAdQBpAGQAIRZTAHkAcwB0AGUAbQAuAEcAdQBpAGQAIkhhAGYAYwBkADUANAA0ADYALQA0ADkAMQA0AC0ANABmAGUANwAtAGIAYgA3ADgALQA5AGIAZgBmAGUAYgA3ADAAZgBkADEANwAjFFUAcABkAGEAdABlAEkAbgBmAG8AJEx7AGIAMAAzADMANgA2AGEAOAAtAGIANQBjADAALQA0AGIAOQBhAC0AYQAwADAAZQAtAGUAYgA4ADYAMAAxADEAMQAwADQAYwAzAH0AJQ5VAHAAZABhAHQAZQBzACZMewAxADgANgA4AGYAZgBjADkALQBlADQAZgBjAC0ANAA1ADMAMgAtAGEAYwAwADYALQAxAGUAMwA5AGIAYgA1ADUANwBiADYAOQB9ACdMewBhADUAYgBkADQAOABjADMALQAwAGQAMQA3AC0ANAAxAGIANQAtAGIAMQA2ADQALQA1AGYAYwA2AGEAZAAyAGIAOQA2AGIANwB9ACgWTwBiAGoAZQBjAHQAcwBUAHkAcABlAClUVQBwAGQAYQB0AGUATABhAG4AZwB1AGEAZwBlAE0AbwBkAGUAbABGAG8AcgBDAG8AbgB2AGUAcgB0AGkAYgBsAGUATABpAGIAcgBhAHIAaQBlAHMAKhBMAGkAYgBUAGkAdABsAGUAKxRMAGkAYgBDAG8AbQBwAGEAbgB5ACweVQBwAGQAYQB0AGUAUAByAG8AdgBpAGQAZQByAHMALThTAHkAcwB0AGUAbQAuAEMAbwBsAGwAZQBjAHQAaQBvAG4AcwAuAEgAYQBzAGgAdABhAGIAbABlAC4SdgBpAHMAdQBlAGwAZQBtAHMAL0g2AGMAYgAxAGMAZABlADEALQBkADUAZABjAC0ANABhADMAYgAtADkAMAA1ADQALQAyADEAZgBhADcANQA2AGEAMwBmAGEANAAwKEkAbgB0AGUAcgBmAGEAYwBlAFYAZQByAHMAaQBvAG4ASQBuAGYAbwAxTHsAYwA2ADEAMQBlADQAMAAwAC0ANwBmAGIAOQAtADQAYwAzADUALQBiADkAYQBjAC0ANABlADMAMQA0AGIANQA5ADkANgA0ADMAfQAyGE0AYQBqAG8AcgBWAGUAcgBzAGkAbwBuADMYTQBpAG4AbwByAFYAZQByAHMAaQBvAG4ANAxMAGUAZwBhAGMAeQA1MEwAYQBuAGcAdQBhAGcAZQBNAG8AZABlAGwAVgBlAHIAcwBpAG8AbgBJAG4AZgBvADYaQwBvAG0AcABhAHQAaQBiAGkAbABpAHQAeQDQAAIaA9ADAS0E0AUGGgbQBwgaAUUHCQrQAAkaBEUKCwQDAAAABQAAAAYAAAAAAAAA0AwLrQIAAADQDQEtDtAPAS0Q0AAJGgRFCgsEAwAAAAUAAAAGAAAAAAAAANAMC60CAAAA0A0BLRHQDwEtENAACRoERQoLBAMAAAAFAAAABgAAAAoAAADQDAutAQAAANANAS0S0A8BLRDQAAkaBEUKCwQDAAAABQAAAAYAAAAAAAAA0AwLrQIAAADQDQEtE9APAS0Q0AAJGgRFCgsEAwAAAAUAAAAGAAAAAAAAANAMC60CAAAA0A0BLRTQDwEtENAACRoERQoLBAMAAAAFAAAABgAAAAAAAADQDAutAgAAANANAS0V0A8BLRDQAAkaBEUKCwQDAAAABQAAAAYAAAAAAAAA0AwLrQIAAADQDQEtFtAPAS0Q0AAJGgRFCgsEAwAAAAUAAAAGAAAAAAAAANAMC60CAAAA0A0BLRfQDwEtENAACRoERQoLBAMAAAAFAAAABgAAAAAAAADQDAutAgAAANANAS0Y0A8BLRnQAAkaBEUKCwQDAAAABQAAAAYAAAAAAAAA0AwLrQQAAADQDQEtGtAPAS0Q0BscrQFFHR4B0AAeGgJFHwsEAwAAAAUAAAAGAAAAAAAAANAgIS0i0CMkGgJFJSYC0AAnGgVFCgsEAwAAAAMAAAAAAAAACgAAANAoC60AAAAA0AMBLSnQKgEtEtArAS0Q0AAnGgVFCgsEAwAAAAMAAAAAAAAACgAAANAoC60BAAAA0AMBLSnQKgEtEtArAS0QmiwtAUUAAQLQAAEtLtAAAS0Z0AAhLS/QMDEaA9AyC60BAAAA0DMLrRAAAADQNBytANA1MRoD0DILrQIAAADQMwutAgAAANA0HK0A0DYcrQA=" 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | System.Collections.Hashtable 168 | System.Int32 169 | {54dd0eac-a6d8-46f2-8c27-2f43c7e49861} 170 | System.String 171 | 172 | 173 | 174 | 175 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Client_Sample/ClientSampleProject/DUTs/ST_OutputArgInfoAndData.TcDUT: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 14 | 15 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Client_Sample/ClientSampleProject/DUTs/ST_ReadListData.TcDUT: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 13 | 14 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Client_Sample/ClientSampleProject/DUTs/ST_ReadListData_Array.TcDUT: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 13 | 14 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Client_Sample/ClientSampleProject/GVLs/GlobalSettings.TcGVL: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 8 | 9 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Client_Sample/ClientSampleProject/POUs/Browse/PRG_BROWSE.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 31 | 32 | nConnectionHdl 72 | ); 73 | 74 | IF NOT fbUA_Connect.Busy THEN 75 | fbUA_Connect(Execute := FALSE); 76 | 77 | IF NOT fbUA_Connect.Error THEN 78 | (* session open *) 79 | iState := iState + 1; 80 | ELSE 81 | bError := TRUE; 82 | nErrorID := fbUA_Connect.ErrorID; 83 | nConnectionHdl := 0; 84 | iState := 0; (* idle *) 85 | END_IF 86 | END_IF 87 | 88 | 89 | 2: (* Browse *) 90 | fbUA_Browse( 91 | Execute := TRUE, 92 | ConnectionHdl := nConnectionHdl, 93 | BrowseDescription := stBrowseDescription, 94 | ContinuationPointIn := nContinuationPointIn, 95 | ReferenceDescriptions := stReferenceDescriptions, 96 | ContinuationPointOut => nContinuationPointOut, 97 | cbBrowseResultCount => cbBrowseResultCount 98 | ); 99 | 100 | IF NOT fbUA_Browse.Busy THEN 101 | fbUA_Browse(Execute := FALSE); 102 | IF NOT fbUA_Browse.Error THEN 103 | iState := iState + 1; 104 | ELSE 105 | bError := TRUE; 106 | nErrorID := fbUA_Browse.ErrorID; 107 | iState := 3; (* idle *) 108 | END_IF 109 | END_IF 110 | 111 | 3: (* close session *) 112 | fbUA_Disconnect( 113 | Execute := TRUE, 114 | ConnectionHdl := nConnectionHdl 115 | ); 116 | 117 | IF NOT fbUA_Disconnect.Busy THEN 118 | fbUA_Disconnect(Execute := FALSE); 119 | bBusy := FALSE; 120 | IF NOT fbUA_Disconnect.Error THEN 121 | (* session closed *) 122 | iState := 0; 123 | IF NOT bError THEN 124 | bDone := TRUE; 125 | END_IF 126 | ELSE 127 | bError := TRUE; 128 | nErrorID := fbUA_Disconnect.ErrorID; 129 | iState := 0; (* idle *) 130 | nConnectionHdl := 0; 131 | END_IF 132 | END_IF 133 | END_CASE 134 | ]]> 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Client_Sample/ClientSampleProject/POUs/Connect/PRG_CONNECT.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 22 | 23 | nConnectionHdl 63 | ); 64 | 65 | IF NOT fbUA_Connect.Busy THEN 66 | fbUA_Connect(Execute := FALSE); 67 | 68 | IF NOT fbUA_Connect.Error THEN 69 | (* session open *) 70 | iState := iState + 1; 71 | ELSE 72 | bError := TRUE; 73 | nErrorID := fbUA_Connect.ErrorID; 74 | nConnectionHdl := 0; 75 | iState := 0; (* idle *) 76 | END_IF 77 | END_IF 78 | 79 | 2: (* close session *) 80 | fbUA_Disconnect( 81 | Execute := TRUE, 82 | ConnectionHdl := nConnectionHdl 83 | ); 84 | 85 | IF NOT fbUA_Disconnect.Busy THEN 86 | fbUA_Disconnect(Execute := FALSE); 87 | bBusy := FALSE; 88 | IF NOT fbUA_Disconnect.Error THEN 89 | (* session closed *) 90 | iState := 0; 91 | IF NOT bError THEN 92 | bDone := TRUE; 93 | END_IF 94 | ELSE 95 | bError := TRUE; 96 | nErrorID := fbUA_Disconnect.ErrorID; 97 | iState := 0; (* idle *) 98 | nConnectionHdl := 0; 99 | END_IF 100 | END_IF 101 | END_CASE 102 | ]]> 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Client_Sample/ClientSampleProject/POUs/Connect/PRG_GETSTATUS.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 27 | 28 | nConnectionHdl 68 | ); 69 | 70 | IF NOT fbUA_Connect.Busy THEN 71 | fbUA_Connect(Execute := FALSE); 72 | 73 | IF NOT fbUA_Connect.Error THEN 74 | (* session open *) 75 | iState := iState + 1; 76 | ELSE 77 | bError := TRUE; 78 | nErrorID := fbUA_Connect.ErrorID; 79 | nConnectionHdl := 0; 80 | iState := 0; (* idle *) 81 | END_IF 82 | END_IF 83 | 84 | 2: (* Query server connection status *) 85 | fbUA_ConnectGetStatus( 86 | Execute := TRUE, 87 | ConnectionHdl := nConnectionHdl, 88 | Timeout := T#2M, 89 | GetServiceLevel := FALSE, 90 | ConnectionStatus => eUaConnectionGetStatus, 91 | ServerState => eUaServerState 92 | ); 93 | 94 | IF NOT fbUA_ConnectGetStatus.Busy THEN 95 | fbUA_ConnectGetStatus(Execute := FALSE); 96 | 97 | IF NOT fbUA_ConnectGetStatus.Error THEN 98 | (* session open *) 99 | iState := iState + 1; 100 | ELSE 101 | bError := TRUE; 102 | nErrorID := fbUA_Connect.ErrorID; 103 | nConnectionHdl := 0; 104 | iState := 0; (* idle *) 105 | END_IF 106 | END_IF 107 | 108 | 3: (* close session *) 109 | fbUA_Disconnect( 110 | Execute := TRUE, 111 | ConnectionHdl := nConnectionHdl 112 | ); 113 | 114 | IF NOT fbUA_Disconnect.Busy THEN 115 | fbUA_Disconnect(Execute := FALSE); 116 | bBusy := FALSE; 117 | IF NOT fbUA_Disconnect.Error THEN 118 | (* session closed *) 119 | iState := 0; 120 | IF NOT bError THEN 121 | bDone := TRUE; 122 | END_IF 123 | ELSE 124 | bError := TRUE; 125 | nErrorID := fbUA_Disconnect.ErrorID; 126 | iState := 0; (* idle *) 127 | nConnectionHdl := 0; 128 | END_IF 129 | END_IF 130 | END_CASE 131 | ]]> 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Client_Sample/ClientSampleProject/POUs/HistoryUpdate/FB_HistoryUpdate_INT.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 43 | 44 | bBusy ); 60 | nState := 1; 61 | END_IF 62 | 63 | 1: //Get Node Handle 64 | fbUANodeGetHandle(Execute := FALSE, NodeHdl=>nNodeHdl, Busy=>bBusy ); 65 | IF NOT fbUANodeGetHandle.Busy THEN 66 | IF NOT fbUANodeGetHandle.Error THEN 67 | nCounter := 1; 68 | nState := 2; 69 | ELSE 70 | bError := TRUE; 71 | nErrorID := fbUANodeGetHandle.ErrorID; 72 | nState := 666; //error state 73 | END_IF 74 | END_IF 75 | 76 | 2: //UA_HistoryUpdate 77 | IF bSample THEN 78 | aDataValues[nCounter].Value := pValue; 79 | aDataValues[nCounter].StatusCode := UAHAUpdateStatusCode.HistorianRaw; 80 | aDataValues[nCounter].ServerTimeStamp := F_GetSystemTime(); 81 | aDataValues[nCounter].SourceTimeStamp := aDataValues[nCounter].ServerTimeStamp; 82 | nCounter := nCounter + 1; 83 | 84 | IF nCounter > cBufferSize THEN 85 | fbUAHistoryUpdate.Execute := TRUE; 86 | nCounter := 1; 87 | END_IF 88 | END_IF 89 | 90 | fbUAHistoryUpdate( Execute := , //already set above 91 | ConnectionHdl := nConnectionHdl, 92 | NodeHdl := nNodeHdl, 93 | PerformInsert := TRUE, 94 | PerformReplace := FALSE, 95 | DataValueCount := cBufferSize, 96 | DataValues := aDataValues, 97 | ValueErrorIDs := aValueErrorIDs, 98 | Busy => bBusy ); 99 | 100 | IF NOT fbUAHistoryUpdate.Busy THEN 101 | IF NOT fbUAHistoryUpdate.Error THEN 102 | IF bStop THEN 103 | nState := 3; //Release Node Handle 104 | END_IF 105 | ELSE 106 | bError := TRUE; 107 | nErrorID := fbUAHistoryUpdate.ErrorID; 108 | nState := 666; //error state 109 | END_IF 110 | fbUAHistoryUpdate( Execute := FALSE, 111 | DataValues := aDataValues, 112 | ValueErrorIDs := aValueErrorIDs, 113 | Busy => bBusy ); 114 | END_IF 115 | 116 | 3: //Release Node Handle 117 | fbUANodeReleaseHandle( Execute := TRUE, 118 | ConnectionHdl := nConnectionHdl, 119 | NodeHdl := nNodeHdl, 120 | Busy => bBusy ); 121 | 122 | IF NOT fbUANodeReleaseHandle.Busy THEN 123 | IF NOT fbUANodeReleaseHandle.Error THEN 124 | nState := 0; 125 | nNodeHdl := 0; 126 | ELSE 127 | bError := TRUE; 128 | nErrorID := fbUANodeReleaseHandle.ErrorID; 129 | nState := 666; //error state 130 | END_IF 131 | fbUANodeReleaseHandle(Execute := FALSE, Busy => bBusy ); 132 | END_IF 133 | 134 | 666: //error state 135 | 136 | END_CASE 137 | ]]> 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Client_Sample/ClientSampleProject/POUs/HistoryUpdate/FB_HistoryUpdate_LREAL.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 43 | 44 | bBusy ); 60 | nState := 1; 61 | END_IF 62 | 63 | 1: //Get Node Handle 64 | fbUANodeGetHandle(Execute := FALSE, NodeHdl=>nNodeHdl, Busy=>bBusy ); 65 | IF NOT fbUANodeGetHandle.Busy THEN 66 | IF NOT fbUANodeGetHandle.Error THEN 67 | nCounter := 1; 68 | nState := 2; 69 | ELSE 70 | bError := TRUE; 71 | nErrorID := fbUANodeGetHandle.ErrorID; 72 | nState := 666; //error state 73 | END_IF 74 | END_IF 75 | 76 | 2: //UA_HistoryUpdate 77 | IF bSample THEN 78 | aDataValues[nCounter].Value := pValue; 79 | aDataValues[nCounter].StatusCode := UAHAUpdateStatusCode.HistorianRaw; 80 | aDataValues[nCounter].ServerTimeStamp := F_GetSystemTime(); 81 | aDataValues[nCounter].SourceTimeStamp := aDataValues[nCounter].ServerTimeStamp; 82 | nCounter := nCounter + 1; 83 | 84 | IF nCounter > cBufferSize THEN 85 | fbUAHistoryUpdate.Execute := TRUE; 86 | nCounter := 1; 87 | END_IF 88 | END_IF 89 | 90 | fbUAHistoryUpdate( Execute := , //already set above 91 | ConnectionHdl := nConnectionHdl, 92 | NodeHdl := nNodeHdl, 93 | PerformInsert := TRUE, 94 | PerformReplace := FALSE, 95 | DataValueCount := cBufferSize, 96 | DataValues := aDataValues, 97 | ValueErrorIDs := aValueErrorIDs, 98 | Busy => bBusy ); 99 | 100 | IF NOT fbUAHistoryUpdate.Busy THEN 101 | IF NOT fbUAHistoryUpdate.Error THEN 102 | IF bStop THEN 103 | nState := 3; //Release Node Handle 104 | END_IF 105 | ELSE 106 | bError := TRUE; 107 | nErrorID := fbUAHistoryUpdate.ErrorID; 108 | nState := 666; //error state 109 | END_IF 110 | fbUAHistoryUpdate( Execute := FALSE, 111 | DataValues := aDataValues, 112 | ValueErrorIDs := aValueErrorIDs, 113 | Busy => bBusy ); 114 | END_IF 115 | 116 | 3: //Release Node Handle 117 | fbUANodeReleaseHandle( Execute := TRUE, 118 | ConnectionHdl := nConnectionHdl, 119 | NodeHdl := nNodeHdl, 120 | Busy => bBusy ); 121 | 122 | IF NOT fbUANodeReleaseHandle.Busy THEN 123 | IF NOT fbUANodeReleaseHandle.Error THEN 124 | nState := 0; 125 | nNodeHdl := 0; 126 | ELSE 127 | bError := TRUE; 128 | nErrorID := fbUANodeReleaseHandle.ErrorID; 129 | nState := 666; //error state 130 | END_IF 131 | fbUANodeReleaseHandle(Execute := FALSE, Busy => bBusy ); 132 | END_IF 133 | 134 | 666: //error state 135 | 136 | END_CASE 137 | ]]> 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Client_Sample/ClientSampleProject/POUs/HistoryUpdate/PRG_HA_MultipleNodes.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 48 | 49 | nConnectionHdl ); 91 | 92 | IF NOT fbUAConnect.Busy THEN 93 | IF NOT fbUAConnect.Error THEN 94 | nState := 2; 95 | ELSE 96 | bError := TRUE; 97 | nErrorID := fbUAConnect.ErrorID; 98 | nConnectionHdl := 0; 99 | nState := 0; //Idle 100 | END_IF 101 | fbUAConnect(Execute := FALSE); 102 | END_IF 103 | 104 | 2: //Get NS Index 105 | fbUAGetNamespaceIndex( Execute := TRUE, 106 | ConnectionHdl := nConnectionHdl, 107 | NamespaceUri := cNamespaceUri, 108 | NamespaceIndex => nNamespaceIndex ); 109 | 110 | IF NOT fbUAGetNamespaceIndex.Busy THEN 111 | IF NOT fbUAGetNamespaceIndex.Error THEN 112 | nState := 3; 113 | ELSE 114 | bError := TRUE; 115 | nErrorID := fbUAGetNamespaceIndex.ErrorID; 116 | nState := 6; //Close Connection 117 | END_IF 118 | fbUAGetNamespaceIndex(Execute := FALSE); 119 | END_IF 120 | 121 | 3: //Get Node Handle & HistoryUpdate & ReleaseHandle 122 | //every three seconds the values should be updated for one second long. 123 | fbTimer(IN:=TRUE); 124 | IF fbTimer.ET > T#2S THEN 125 | bSample := TRUE; 126 | END_IF 127 | IF fbTimer.Q THEN 128 | bSample :=FALSE; 129 | fbTimer(IN:=FALSE); 130 | END_IF 131 | 132 | fbHistoryUpdateNode1( bSample:=bSample, bStop:=bStop, 133 | nConnectionHdl:=nConnectionHdl, 134 | nNamespaceIndex:=nNamespaceIndex, 135 | pValue:=ADR(nMyValue1) ); 136 | IF fbHistoryUpdateNode1.bError THEN 137 | bError := TRUE; 138 | nErrorID := fbHistoryUpdateNode1.nErrorID; 139 | END_IF 140 | 141 | fbHistoryUpdateNode2( bSample:=bSample, bStop:=bStop, 142 | nConnectionHdl:=nConnectionHdl, 143 | nNamespaceIndex:=nNamespaceIndex, 144 | pValue:=ADR(nMyValue2) ); 145 | IF fbHistoryUpdateNode2.bError THEN 146 | bError := TRUE; 147 | nErrorID := fbHistoryUpdateNode2.nErrorID; 148 | END_IF 149 | 150 | fbHistoryUpdateNode3( bSample:=bSample, bStop:=bStop, 151 | nConnectionHdl:=nConnectionHdl, 152 | nNamespaceIndex:=nNamespaceIndex, 153 | pValue:=ADR(fMyValue3) ); 154 | IF fbHistoryUpdateNode2.bError THEN 155 | bError := TRUE; 156 | nErrorID := fbHistoryUpdateNode3.nErrorID; 157 | END_IF 158 | 159 | IF bStop AND NOT fbHistoryUpdateNode1.bBusy AND fbHistoryUpdateNode1.nNodeHdl = 0 160 | AND NOT fbHistoryUpdateNode2.bBusy AND fbHistoryUpdateNode2.nNodeHdl = 0 161 | AND NOT fbHistoryUpdateNode3.bBusy AND fbHistoryUpdateNode3.nNodeHdl = 0 THEN 162 | bStop := FALSE; 163 | nState := 6; //Close Connection 164 | END_IF 165 | 166 | 6: //Close Session 167 | fbUADisconnect( Execute := TRUE, ConnectionHdl := nConnectionHdl ); 168 | 169 | IF NOT fbUADisconnect.Busy THEN 170 | IF fbUADisconnect.Error THEN 171 | bError := TRUE; 172 | nErrorID := fbUADisconnect.ErrorID; 173 | nConnectionHdl := 0; 174 | END_IF 175 | fbUADisconnect(Execute := FALSE); 176 | nState := 0; //Idle 177 | END_IF 178 | 179 | END_CASE 180 | ]]> 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Client_Sample/ClientSampleProject/POUs/HistoryUpdate/PRG_HA_SingleNode.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 55 | 56 | nConnectionHdl ); 97 | 98 | IF NOT fbUAConnect.Busy THEN 99 | IF NOT fbUAConnect.Error THEN 100 | nState := 2; 101 | ELSE 102 | bError := TRUE; 103 | nErrorID := fbUAConnect.ErrorID; 104 | nConnectionHdl := 0; 105 | nState := 0; //Idle 106 | END_IF 107 | fbUAConnect(Execute := FALSE); 108 | END_IF 109 | 110 | 2: //Get NS Index 111 | fbUAGetNamespaceIndex( Execute := TRUE, 112 | ConnectionHdl := nConnectionHdl, 113 | NamespaceUri := cNamespaceUri, 114 | NamespaceIndex => nNamespaceIndex ); 115 | 116 | IF NOT fbUAGetNamespaceIndex.Busy THEN 117 | IF NOT fbUAGetNamespaceIndex.Error THEN 118 | nState := 3; 119 | ELSE 120 | bError := TRUE; 121 | nErrorID := fbUAGetNamespaceIndex.ErrorID; 122 | nState := 6; //Close Connection 123 | END_IF 124 | fbUAGetNamespaceIndex(Execute := FALSE); 125 | END_IF 126 | 127 | 3: //Get Node Handle 128 | NodeID.eIdentifierType := eUAIdentifierType_String; 129 | NodeID.nNamespaceIndex := nNamespaceIndex; 130 | NodeID.sIdentifier := sNodeIdentifier; 131 | 132 | fbUANodeGetHandle( Execute := TRUE, 133 | ConnectionHdl := nConnectionHdl, 134 | NodeID := NodeID, 135 | NodeHdl => nNodeHdl ); 136 | 137 | IF NOT fbUANodeGetHandle.Busy THEN 138 | IF NOT fbUANodeGetHandle.Error THEN 139 | nState := 4; 140 | ELSE 141 | bError := TRUE; 142 | nErrorID := fbUANodeGetHandle.ErrorID; 143 | nState := 6; //Close Connection 144 | END_IF 145 | fbUANodeGetHandle(Execute := FALSE); 146 | END_IF 147 | 148 | 4: //UA_HistoryUpdate 149 | IF bSample THEN 150 | aDataValues[nCounter].Value := ADR(nMyValue); 151 | aDataValues[nCounter].StatusCode := UAHAUpdateStatusCode.HistorianRaw; 152 | aDataValues[nCounter].ServerTimeStamp := F_GetSystemTime(); 153 | aDataValues[nCounter].SourceTimeStamp := aDataValues[nCounter].ServerTimeStamp; 154 | nCounter := nCounter + 1; 155 | 156 | IF nCounter > cBufferSize THEN 157 | fbUAHistoryUpdate.Execute := TRUE; 158 | nCounter := 1; 159 | END_IF 160 | END_IF 161 | 162 | fbUAHistoryUpdate( Execute := , //already set above 163 | ConnectionHdl := nConnectionHdl, 164 | NodeHdl := nNodeHdl, 165 | PerformInsert := TRUE, 166 | PerformReplace := FALSE, 167 | DataValueCount := cBufferSize, 168 | DataValues := aDataValues, 169 | ValueErrorIDs := aValueErrorIDs ); 170 | 171 | IF NOT fbUAHistoryUpdate.Busy THEN 172 | IF NOT fbUAHistoryUpdate.Error THEN 173 | IF bStop THEN 174 | bStop := FALSE; 175 | nState := 5; 176 | END_IF 177 | ELSE 178 | bError := TRUE; 179 | nErrorID := fbUAHistoryUpdate.ErrorID; 180 | nState := 5; //Release Node Handle 181 | END_IF 182 | fbUAHistoryUpdate( Execute := FALSE, 183 | DataValues := aDataValues, 184 | ValueErrorIDs := aValueErrorIDs); 185 | END_IF 186 | 187 | 5: //Release Node Handle 188 | fbUANodeReleaseHandle( Execute := TRUE, 189 | ConnectionHdl := nConnectionHdl, 190 | NodeHdl := nNodeHdl ); 191 | 192 | IF NOT fbUANodeReleaseHandle.Busy THEN 193 | IF fbUANodeReleaseHandle.Error THEN 194 | bError := TRUE; 195 | nErrorID := fbUANodeReleaseHandle.ErrorID; 196 | END_IF 197 | fbUANodeReleaseHandle(Execute := FALSE); 198 | nState := 6; //Close Connection 199 | END_IF 200 | 201 | 6: //Close Session 202 | fbUADisconnect( Execute := TRUE, ConnectionHdl := nConnectionHdl ); 203 | 204 | IF NOT fbUADisconnect.Busy THEN 205 | IF fbUADisconnect.Error THEN 206 | bError := TRUE; 207 | nErrorID := fbUADisconnect.ErrorID; 208 | nConnectionHdl := 0; 209 | END_IF 210 | fbUADisconnect(Execute := FALSE); 211 | nState := 0; 212 | END_IF 213 | END_CASE 214 | ]]> 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Client_Sample/ClientSampleProject/POUs/MAIN.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 11 | 12 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Client_Sample/ClientSampleProject/POUs/MethodCall/PRG_METHOD_NOARGS.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 44 | 45 | nConnectionHdl 86 | ); 87 | 88 | IF NOT fbUA_Connect.Busy THEN 89 | fbUA_Connect(Execute := FALSE); 90 | 91 | IF NOT fbUA_Connect.Error THEN 92 | (* connected *) 93 | iState := iState + 1; 94 | ELSE 95 | bError := TRUE; 96 | nErrorID := fbUA_Connect.ErrorID; 97 | nConnectionHdl := 0; 98 | iState := 0; (* idle *) 99 | END_IF 100 | END_IF 101 | 102 | 103 | 2: (* GetNS Index *) 104 | fbUA_GetNamespaceIndex( 105 | Execute := TRUE, 106 | ConnectionHdl := nConnectionHdl, 107 | NamespaceUri := sNamespaceUri, 108 | NamespaceIndex => nNamespaceIndex 109 | ); 110 | 111 | IF NOT fbUA_GetNamespaceIndex.Busy THEN 112 | fbUA_GetNamespaceIndex(Execute := FALSE); 113 | 114 | IF NOT fbUA_GetNamespaceIndex.Error THEN 115 | (* namespace index read successfully *) 116 | iState := iState + 1; 117 | ELSE 118 | bError := TRUE; 119 | nErrorID := fbUA_GetNamespaceIndex.ErrorID; 120 | iState := 7; (* disconnect *) 121 | END_IF 122 | END_IF 123 | 124 | 125 | 3: (* Get Method Handle *) 126 | ObjectNodeID.eIdentifierType := eUAIdentifierType_String; 127 | ObjectNodeID.nNamespaceIndex := nNamespaceIndex; 128 | ObjectNodeID.sIdentifier := sObjectNodeIdIdentifier; 129 | 130 | MethodNodeID.eIdentifierType := eUAIdentifierType_String; 131 | MethodNodeID.nNamespaceIndex := nNamespaceIndex; 132 | MethodNodeID.sIdentifier := sMethodNodeIdIdentifier; 133 | 134 | IF bInputDataError = FALSE THEN 135 | iState := iState + 1; 136 | ELSE 137 | bBusy := FALSE; 138 | bError := TRUE; 139 | nErrorID := 16#70A; //out of memory 140 | END_IF 141 | 142 | 143 | 4: (* Method Get Handle *) 144 | fbUA_MethodGetHandle( 145 | Execute := TRUE, 146 | ConnectionHdl := nConnectionHdl, 147 | ObjectNodeID := ObjectNodeID, 148 | MethodNodeID := MethodNodeID, 149 | MethodHdl => nMethodHdl 150 | ); 151 | IF NOT fbUA_MethodGetHandle.Busy THEN 152 | fbUA_MethodGetHandle(Execute := FALSE); 153 | 154 | IF NOT fbUA_MethodGetHandle.Error THEN 155 | (* *) 156 | iState := iState + 1; (* Call Method *) 157 | ELSE 158 | bError := TRUE; 159 | nErrorID := fbUA_MethodGetHandle.ErrorID; 160 | iState := 6; (* Release method Handle *) 161 | END_IF 162 | END_IF 163 | 164 | 165 | 5: (* Method Call *) 166 | 167 | (* When calling a method without any input or output arguments, the status code of the method call has to be processed anyway. 168 | Therefore, there has to be stOutputArgInfoAndData even if there is no output argument in the method itself.*) 169 | fbUA_MethodCall( 170 | Execute := TRUE, 171 | ConnectionHdl := nConnectionHdl, 172 | MethodHdl := nMethodHdl, 173 | nNumberOfInputArguments := 0, 174 | pInputArgInfo := 0, 175 | cbInputArgInfo := 0, 176 | pInputArgData := 0, 177 | cbInputArgData := 0, 178 | pInputWriteData := 0, 179 | cbInputWriteData := 0, 180 | nNumberOfOutputArguments:= 0, 181 | pOutputArgInfo := 0, 182 | cbOutputArgInfo := 0, 183 | pOutputArgInfoAndData := ADR(stOutputArgInfoAndData), 184 | cbOutputArgInfoAndData := SIZEOF(stOutputArgInfoAndData) 185 | ); 186 | IF NOT fbUA_MethodCall.Busy THEN 187 | fbUA_MethodCall(Execute := FALSE); 188 | IF NOT fbUA_MethodCall.Error THEN 189 | (* clear data and restart *) 190 | iState := iState + 1; (* Release handle *) 191 | ELSE 192 | bError := TRUE; 193 | nErrorID := fbUA_MethodCall.ErrorID; 194 | iState := 6; (* Release method handle *) 195 | END_IF 196 | END_IF 197 | 198 | 199 | 6: (* Release Method Handle *) 200 | fbUA_MethodReleaseHandle( 201 | Execute := TRUE, 202 | ConnectionHdl := nConnectionHdl, 203 | MethodHdl := nMethodHdl 204 | ); 205 | 206 | IF NOT fbUA_MethodReleaseHandle.Busy THEN 207 | fbUA_MethodReleaseHandle(Execute := FALSE); 208 | bBusy := FALSE; 209 | IF NOT fbUA_MethodReleaseHandle.Error THEN 210 | (* session closed *) 211 | iState := 7; (* Disconnect *) 212 | ELSE 213 | bError := TRUE; 214 | nErrorID := fbUA_MethodReleaseHandle.ErrorID; 215 | iState := 7; (* Disconnect *) 216 | END_IF 217 | END_IF 218 | 219 | 220 | 7: (* Disconnect *) 221 | fbUA_Disconnect( 222 | Execute := TRUE, 223 | ConnectionHdl := nConnectionHdl 224 | ); 225 | 226 | IF NOT fbUA_Disconnect.Busy THEN 227 | fbUA_Disconnect(Execute := FALSE); 228 | 229 | IF NOT fbUA_Disconnect.Error THEN 230 | (* disconnected *) 231 | iState := 0; (* idle *) 232 | bDone := TRUE; 233 | bBusy := FALSE; 234 | ELSE 235 | bBusy := FALSE; 236 | bError := TRUE; 237 | nErrorID := fbUA_Disconnect.ErrorID; 238 | iState := 0; (* idle *) 239 | nConnectionHdl := 0; 240 | END_IF 241 | END_IF 242 | END_CASE 243 | ]]> 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Client_Sample/ClientSampleProject/POUs/Read/PRG_READ.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 43 | 44 | nConnectionHdl 89 | ); 90 | 91 | IF NOT fbUA_Connect.Busy THEN 92 | fbUA_Connect(Execute := FALSE); 93 | 94 | IF NOT fbUA_Connect.Error THEN 95 | (* session open *) 96 | iState := iState + 1; 97 | ELSE 98 | bError := TRUE; 99 | nErrorID := fbUA_Connect.ErrorID; 100 | nConnectionHdl := 0; 101 | iState := 0; (* idle *) 102 | END_IF 103 | END_IF 104 | 105 | 106 | 2: (* GetNS Index *) 107 | fbUA_GetNamespaceIndex( 108 | Execute := TRUE, 109 | ConnectionHdl := nConnectionHdl, 110 | NamespaceUri := sNamespaceUri, 111 | NamespaceIndex => nNamespaceIndex 112 | ); 113 | 114 | IF NOT fbUA_GetNamespaceIndex.Busy THEN 115 | fbUA_GetNamespaceIndex(Execute := FALSE); 116 | IF NOT fbUA_GetNamespaceIndex.Error THEN 117 | iState := iState + 1; 118 | ELSE 119 | bError := TRUE; 120 | nErrorID := fbUA_GetNamespaceIndex.ErrorID; 121 | iState := 6; (* idle *) 122 | END_IF 123 | END_IF 124 | 125 | 3: (* Get Node Handle *) 126 | NodeID.eIdentifierType := eUAIdentifierType_String; 127 | NodeID.nNamespaceIndex := nNamespaceIndex; 128 | NodeID.sIdentifier := sNodeIdentifier; 129 | fbUA_NodeGetHandle( 130 | Execute := TRUE, 131 | ConnectionHdl := nConnectionHdl, 132 | NodeID := NodeID, 133 | NodeHdl => nNodeHdl 134 | ); 135 | 136 | IF NOT fbUA_NodeGetHandle.Busy THEN 137 | fbUA_NodeGetHandle(Execute := FALSE); 138 | 139 | IF NOT fbUA_NodeGetHandle.Error THEN 140 | iState := iState + 1; 141 | ELSE 142 | bError := TRUE; 143 | nErrorID := fbUA_NodeGetHandle.ErrorID; 144 | iState := 6; (* idle *) 145 | END_IF 146 | END_IF 147 | 148 | 149 | 4: (* UA_Read *) 150 | fbUA_Read( 151 | Execute := TRUE, 152 | ConnectionHdl := nConnectionHdl, 153 | NodeHdl := nNodeHdl, 154 | cbData := SIZEOF(nReadData), 155 | stNodeAddInfo := stNodeAddInfo, 156 | pVariable := ADR(nReadData) 157 | ); 158 | 159 | IF NOT fbUA_Read.Busy THEN 160 | fbUA_Read( Execute := FALSE, cbData_R => cbDataRead); 161 | 162 | IF NOT fbUA_Read.Error THEN 163 | iState := iState + 1; 164 | ELSE 165 | bError := TRUE; 166 | nErrorID := fbUA_Read.ErrorID; 167 | iState := 6; (* idle *) 168 | END_IF 169 | END_IF 170 | 171 | 172 | 5: (* Release Node Handle *) 173 | fbUA_NodeReleaseHandle( 174 | Execute := TRUE, 175 | ConnectionHdl := nConnectionHdl, 176 | NodeHdl := nNodeHdl 177 | ); 178 | 179 | IF NOT fbUA_NodeReleaseHandle.Busy THEN 180 | fbUA_NodeReleaseHandle(Execute := FALSE); 181 | 182 | IF NOT fbUA_NodeReleaseHandle.Error THEN 183 | iState := iState + 1; 184 | ELSE 185 | bError := TRUE; 186 | nErrorID := fbUA_NodeReleaseHandle.ErrorID; 187 | iState := 6; (* idle *) 188 | END_IF 189 | END_IF 190 | 191 | 192 | 6: (* close session *) 193 | fbUA_Disconnect( 194 | Execute := TRUE, 195 | ConnectionHdl := nConnectionHdl 196 | ); 197 | 198 | IF NOT fbUA_Disconnect.Busy THEN 199 | fbUA_Disconnect(Execute := FALSE); 200 | bBusy := FALSE; 201 | IF NOT fbUA_Disconnect.Error THEN 202 | (* session closed *) 203 | iState := 0; 204 | IF NOT bError THEN 205 | bDone := TRUE; 206 | END_IF 207 | ELSE 208 | bError := TRUE; 209 | nErrorID := fbUA_Disconnect.ErrorID; 210 | iState := 0; (* idle *) 211 | nConnectionHdl := 0; 212 | END_IF 213 | END_IF 214 | END_CASE 215 | ]]> 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Client_Sample/ClientSampleProject/POUs/Read/PRG_READ_IndexRange.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 43 | 44 | nConnectionHdl 89 | ); 90 | 91 | IF NOT fbUA_Connect.Busy THEN 92 | fbUA_Connect(Execute := FALSE); 93 | 94 | IF NOT fbUA_Connect.Error THEN 95 | (* session open *) 96 | iState := iState + 1; 97 | ELSE 98 | bError := TRUE; 99 | nErrorID := fbUA_Connect.ErrorID; 100 | nConnectionHdl := 0; 101 | iState := 0; (* idle *) 102 | END_IF 103 | END_IF 104 | 105 | 106 | 2: (* GetNS Index *) 107 | fbUA_GetNamespaceIndex( 108 | Execute := TRUE, 109 | ConnectionHdl := nConnectionHdl, 110 | NamespaceUri := sNamespaceUri, 111 | NamespaceIndex => nNamespaceIndex 112 | ); 113 | 114 | IF NOT fbUA_GetNamespaceIndex.Busy THEN 115 | fbUA_GetNamespaceIndex(Execute := FALSE); 116 | IF NOT fbUA_GetNamespaceIndex.Error THEN 117 | iState := iState + 1; 118 | ELSE 119 | bError := TRUE; 120 | nErrorID := fbUA_GetNamespaceIndex.ErrorID; 121 | iState := 6; (* idle *) 122 | END_IF 123 | END_IF 124 | 125 | 3: (* Get Node Handle *) 126 | NodeID.eIdentifierType := eUAIdentifierType_String; 127 | NodeID.nNamespaceIndex := nNamespaceIndex; 128 | NodeID.sIdentifier := sNodeIdentifier; 129 | fbUA_NodeGetHandle( 130 | Execute := TRUE, 131 | ConnectionHdl := nConnectionHdl, 132 | NodeID := NodeID, 133 | NodeHdl => nNodeHdl 134 | ); 135 | 136 | IF NOT fbUA_NodeGetHandle.Busy THEN 137 | fbUA_NodeGetHandle(Execute := FALSE); 138 | 139 | IF NOT fbUA_NodeGetHandle.Error THEN 140 | iState := iState + 1; 141 | ELSE 142 | bError := TRUE; 143 | nErrorID := fbUA_NodeGetHandle.ErrorID; 144 | iState := 6; (* idle *) 145 | END_IF 146 | END_IF 147 | 148 | 149 | 4: (* UA_Read *) 150 | fbUA_Read( 151 | Execute := TRUE, 152 | ConnectionHdl := nConnectionHdl, 153 | NodeHdl := nNodeHdl, 154 | cbData := SIZEOF(nReadData), 155 | stNodeAddInfo := stNodeAddInfo, 156 | pVariable := ADR(nReadData) 157 | ); 158 | 159 | IF NOT fbUA_Read.Busy THEN 160 | fbUA_Read( Execute := FALSE, cbData_R => cbDataRead); 161 | 162 | IF NOT fbUA_Read.Error THEN 163 | iState := iState + 1; 164 | ELSE 165 | bError := TRUE; 166 | nErrorID := fbUA_Read.ErrorID; 167 | iState := 6; (* idle *) 168 | END_IF 169 | END_IF 170 | 171 | 172 | 5: (* Release Node Handle *) 173 | fbUA_NodeReleaseHandle( 174 | Execute := TRUE, 175 | ConnectionHdl := nConnectionHdl, 176 | NodeHdl := nNodeHdl 177 | ); 178 | 179 | IF NOT fbUA_NodeReleaseHandle.Busy THEN 180 | fbUA_NodeReleaseHandle(Execute := FALSE); 181 | 182 | IF NOT fbUA_NodeReleaseHandle.Error THEN 183 | iState := iState + 1; 184 | ELSE 185 | bError := TRUE; 186 | nErrorID := fbUA_NodeReleaseHandle.ErrorID; 187 | iState := 6; (* idle *) 188 | END_IF 189 | END_IF 190 | 191 | 192 | 6: (* close session *) 193 | fbUA_Disconnect( 194 | Execute := TRUE, 195 | ConnectionHdl := nConnectionHdl 196 | ); 197 | 198 | IF NOT fbUA_Disconnect.Busy THEN 199 | fbUA_Disconnect(Execute := FALSE); 200 | bBusy := FALSE; 201 | IF NOT fbUA_Disconnect.Error THEN 202 | (* session closed *) 203 | iState := 0; 204 | IF NOT bError THEN 205 | bDone := TRUE; 206 | END_IF 207 | ELSE 208 | bError := TRUE; 209 | nErrorID := fbUA_Disconnect.ErrorID; 210 | iState := 0; (* idle *) 211 | nConnectionHdl := 0; 212 | END_IF 213 | END_IF 214 | END_CASE 215 | ]]> 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Client_Sample/ClientSampleProject/POUs/Read/PRG_READ_List.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 40 | 41 | nConnectionHdl 81 | ); 82 | 83 | IF NOT fbUA_ConnectEx.Busy THEN 84 | fbUA_ConnectEx(Execute := FALSE); 85 | 86 | IF NOT fbUA_ConnectEx.Error THEN 87 | (* session open *) 88 | iState := iState + 1; 89 | ELSE 90 | bError := TRUE; 91 | nErrorID := fbUA_ConnectEx.ErrorID; 92 | nConnectionHdl := 0; 93 | iState := 0; (* idle *) 94 | END_IF 95 | END_IF 96 | 97 | 98 | 2: (* GetNS Index *) 99 | fbUA_GetNamespaceIndex( 100 | Execute := TRUE, 101 | ConnectionHdl := nConnectionHdl, 102 | NamespaceUri := sNamespaceUri, 103 | NamespaceIndex => nNamespaceIndex 104 | ); 105 | 106 | IF NOT fbUA_GetNamespaceIndex.Busy THEN 107 | fbUA_GetNamespaceIndex(Execute := FALSE); 108 | IF NOT fbUA_GetNamespaceIndex.Error THEN 109 | (* session closed *) 110 | iState := iState + 1; (* idle *) 111 | ELSE 112 | bError := TRUE; 113 | nErrorID := fbUA_GetNamespaceIndex.ErrorID; 114 | iState := 6; (* idle *) 115 | END_IF 116 | END_IF 117 | 118 | 119 | 3: (* Get Node Handle *) 120 | 121 | NodeIDs[1].eIdentifierType := eUAIdentifierType_String; 122 | NodeIDs[1].nNamespaceIndex := nNamespaceIndex; 123 | NodeIDs[1].sIdentifier := 'MAIN.iVar1'; 124 | 125 | NodeIDs[2].eIdentifierType := eUAIdentifierType_String; 126 | NodeIDs[2].nNamespaceIndex := nNamespaceIndex; 127 | NodeIDs[2].sIdentifier := 'MAIN.iVar2'; 128 | 129 | fbUA_NodeGetHandleList( 130 | Execute := TRUE, 131 | ConnectionHdl := nConnectionHdl, 132 | NodeIDCount := NodeIDCount, 133 | NodeIDs := NodeIDs, 134 | NodeHdls => nNodeHdls 135 | ); 136 | 137 | IF NOT fbUA_NodeGetHandleList.Busy THEN 138 | fbUA_NodeGetHandleList(Execute := FALSE); 139 | 140 | IF NOT fbUA_NodeGetHandleList.Error THEN 141 | (* session closed *) 142 | iState := iState + 1; (* idle *) 143 | ELSE 144 | bError := TRUE; 145 | nErrorID := fbUA_NodeGetHandleList.ErrorID; 146 | iState := 6; (* idle *) 147 | END_IF 148 | END_IF 149 | 150 | 151 | 4: (* UA_Read *) 152 | cbData[1] := SIZEOF(stReadListData.nIntVar1); 153 | cbData[2] := SIZEOF(stReadListData.nIntVar2); 154 | cbDataTotal := SIZEOF(stReadListData); 155 | fbUA_ReadList( 156 | Execute := TRUE, 157 | ConnectionHdl := nConnectionHdl, 158 | NodeHdlCount := NodeHdlCount, // 2 159 | NodeHdls := nNodeHdls, 160 | stNodeAddInfo := stNodeAddInfo, 161 | pVariable := ADR(stReadListData), 162 | cbData := cbData , 163 | cbDataTotal := cbDataTotal 164 | ); 165 | 166 | IF NOT fbUA_ReadList.Busy THEN 167 | fbUA_ReadList( Execute := FALSE, cbData_R => cbData_R); 168 | 169 | IF NOT fbUA_ReadList.Error THEN 170 | (* session closed *) 171 | iState := iState + 1; (* idle *) 172 | ELSE 173 | bError := TRUE; 174 | nErrorID := fbUA_ReadList.ErrorID; 175 | iState := 6; (* idle *) 176 | END_IF 177 | END_IF 178 | 179 | 180 | 5: (* Release Node Handle *) 181 | fbUA_NodeReleaseHandleList( 182 | Execute := TRUE, 183 | ConnectionHdl := nConnectionHdl, 184 | NodeHdlCount := NodeHdlCount, 185 | NodeHdls := nNodeHdls 186 | ); 187 | 188 | IF NOT fbUA_NodeReleaseHandleList.Busy THEN 189 | fbUA_NodeReleaseHandleList(Execute := FALSE); 190 | 191 | IF NOT fbUA_NodeReleaseHandleList.Error THEN 192 | (* session closed *) 193 | iState := iState + 1; (* idle *) 194 | ELSE 195 | bError := TRUE; 196 | nErrorID := fbUA_NodeReleaseHandleList.ErrorID; 197 | iState := 6; (* idle *) 198 | END_IF 199 | END_IF 200 | 201 | 202 | 6: (* close session *) 203 | fbUA_Disconnect( 204 | Execute := TRUE, 205 | ConnectionHdl := nConnectionHdl 206 | ); 207 | 208 | IF NOT fbUA_Disconnect.Busy THEN 209 | fbUA_Disconnect(Execute := FALSE); 210 | bBusy := FALSE; 211 | IF NOT fbUA_Disconnect.Error THEN 212 | (* session closed *) 213 | iState := 0; (* idle *) 214 | IF NOT bError THEN 215 | bDone := TRUE; 216 | END_IF 217 | ELSE 218 | bError := TRUE; 219 | nErrorID := fbUA_Disconnect.ErrorID; 220 | iState := 0; (* idle *) 221 | nConnectionHdl := 0; 222 | END_IF 223 | END_IF 224 | END_CASE 225 | ]]> 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Client_Sample/ClientSampleProject/POUs/Read/PRG_READ_List_Array.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 39 | 40 | nConnectionHdl 80 | ); 81 | 82 | IF NOT fbUA_Connect.Busy THEN 83 | fbUA_Connect(Execute := FALSE); 84 | 85 | IF NOT fbUA_Connect.Error THEN 86 | (* session open *) 87 | iState := iState + 1; 88 | ELSE 89 | bError := TRUE; 90 | nErrorID := fbUA_Connect.ErrorID; 91 | nConnectionHdl := 0; 92 | iState := 0; (* idle *) 93 | END_IF 94 | END_IF 95 | 96 | 97 | 2: (* GetNS Index *) 98 | fbUA_GetNamespaceIndex( 99 | Execute := TRUE, 100 | ConnectionHdl := nConnectionHdl, 101 | NamespaceUri := sNamespaceUri, 102 | NamespaceIndex => nNamespaceIndex 103 | ); 104 | 105 | IF NOT fbUA_GetNamespaceIndex.Busy THEN 106 | fbUA_GetNamespaceIndex(Execute := FALSE); 107 | IF NOT fbUA_GetNamespaceIndex.Error THEN 108 | (* session closed *) 109 | iState := iState + 1; (* idle *) 110 | ELSE 111 | bError := TRUE; 112 | nErrorID := fbUA_GetNamespaceIndex.ErrorID; 113 | iState := 6; (* idle *) 114 | END_IF 115 | END_IF 116 | 117 | 118 | 3: (* Get Node Handle *) 119 | 120 | nNodeIdx := 1; 121 | NodeIDs[nNodeIdx].eIdentifierType := eUAIdentifierType_String; 122 | NodeIDs[nNodeIdx].nNamespaceIndex := nNamespaceIndex; 123 | NodeIDs[nNodeIdx].sIdentifier := 'MAIN.iArrayIntVar1'; 124 | 125 | nNodeIdx := nNodeIdx + 1; 126 | NodeIDs[nNodeIdx].eIdentifierType := eUAIdentifierType_String; 127 | NodeIDs[nNodeIdx].nNamespaceIndex := nNamespaceIndex; 128 | NodeIDs[nNodeIdx].sIdentifier := 'MAIN.iArrayIntVar2'; 129 | 130 | fbUA_NodeGetHandleList( 131 | Execute := TRUE, 132 | ConnectionHdl := nConnectionHdl, 133 | NodeIDCount := nNodeIdx, 134 | NodeIDs := NodeIDs, 135 | NodeHdls => nNodeHdls 136 | ); 137 | 138 | IF NOT fbUA_NodeGetHandleList.Busy THEN 139 | fbUA_NodeGetHandleList(Execute := FALSE); 140 | 141 | IF NOT fbUA_NodeGetHandleList.Error THEN 142 | (* session closed *) 143 | iState := iState + 1; (* idle *) 144 | ELSE 145 | bError := TRUE; 146 | nErrorID := fbUA_NodeGetHandleList.ErrorID; 147 | iState := 6; (* idle *) 148 | END_IF 149 | END_IF 150 | 151 | 152 | 4: (* UA_Read *) 153 | cbData[1] := SIZEOF(stReadListDataArrayInt.iArrayIntVar1); 154 | cbData[2] := SIZEOF(stReadListDataArrayInt.iArrayIntVar2); 155 | 156 | cbDataTotal := SIZEOF(stReadListDataArrayInt); 157 | fbUA_ReadList( 158 | Execute := TRUE, 159 | ConnectionHdl := nConnectionHdl, 160 | NodeHdlCount := nNodeIdx, // 2 161 | NodeHdls := nNodeHdls, 162 | stNodeAddInfo := stNodeAddInfo, 163 | pVariable := ADR(stReadListDataArrayInt), 164 | cbData := cbData , 165 | cbDataTotal := cbDataTotal 166 | ); 167 | 168 | IF NOT fbUA_ReadList.Busy THEN 169 | fbUA_ReadList( Execute := FALSE, cbData_R => cbData_R); 170 | 171 | IF NOT fbUA_ReadList.Error THEN 172 | (* session closed *) 173 | iState := iState + 1; (* idle *) 174 | ELSE 175 | bError := TRUE; 176 | nErrorID := fbUA_ReadList.ErrorID; 177 | iState := 6; (* idle *) 178 | END_IF 179 | END_IF 180 | 181 | 182 | 5: (* Release Node Handle *) 183 | fbUA_NodeReleaseHandleList( 184 | Execute := TRUE, 185 | ConnectionHdl := nConnectionHdl, 186 | NodeHdlCount := nNodeIdx, 187 | NodeHdls := nNodeHdls 188 | ); 189 | 190 | IF NOT fbUA_NodeReleaseHandleList.Busy THEN 191 | fbUA_NodeReleaseHandleList(Execute := FALSE); 192 | 193 | IF NOT fbUA_NodeReleaseHandleList.Error THEN 194 | (* session closed *) 195 | iState := iState + 1; (* idle *) 196 | ELSE 197 | bError := TRUE; 198 | nErrorID := fbUA_NodeReleaseHandleList.ErrorID; 199 | iState := 6; (* idle *) 200 | END_IF 201 | END_IF 202 | 203 | 204 | 6: (* close session *) 205 | fbUA_Disconnect( 206 | Execute := TRUE, 207 | ConnectionHdl := nConnectionHdl 208 | ); 209 | 210 | IF NOT fbUA_Disconnect.Busy THEN 211 | fbUA_Disconnect(Execute := FALSE); 212 | bBusy := FALSE; 213 | IF NOT fbUA_Disconnect.Error THEN 214 | (* session closed *) 215 | iState := 0; (* idle *) 216 | IF NOT bError THEN 217 | bDone := TRUE; 218 | END_IF 219 | ELSE 220 | bError := TRUE; 221 | nErrorID := fbUA_Disconnect.ErrorID; 222 | iState := 0; (* idle *) 223 | nConnectionHdl := 0; 224 | END_IF 225 | END_IF 226 | END_CASE 227 | ]]> 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Client_Sample/ClientSampleProject/POUs/Write/PRG_WRITE.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 42 | 43 | nConnectionHdl 84 | ); 85 | 86 | IF NOT fbUA_Connect.Busy THEN 87 | fbUA_Connect(Execute := FALSE); 88 | 89 | IF NOT fbUA_Connect.Error THEN 90 | (* session open *) 91 | iState := iState + 1; 92 | ELSE 93 | bError := TRUE; 94 | nErrorID := fbUA_Connect.ErrorID; 95 | nConnectionHdl := 0; 96 | iState := 0; (* idle *) 97 | END_IF 98 | END_IF 99 | 100 | 101 | 2: (* GetNS Index *) 102 | fbUA_GetNamespaceIndex( 103 | Execute := TRUE, 104 | ConnectionHdl := nConnectionHdl, 105 | NamespaceUri := sNamespaceUri, 106 | NamespaceIndex => nNamespaceIndex 107 | ); 108 | 109 | IF NOT fbUA_GetNamespaceIndex.Busy THEN 110 | fbUA_GetNamespaceIndex(Execute := FALSE); 111 | 112 | IF NOT fbUA_GetNamespaceIndex.Error THEN 113 | iState := iState + 1; 114 | ELSE 115 | bError := TRUE; 116 | nErrorID := fbUA_GetNamespaceIndex.ErrorID; 117 | iState := 6; (* idle *) 118 | END_IF 119 | END_IF 120 | 121 | 122 | 3: (* Get Node Handle *) 123 | NodeID.eIdentifierType := eUAIdentifierType_String; 124 | NodeID.nNamespaceIndex := nNamespaceIndex; 125 | NodeID.sIdentifier := sNodeIdentifier; 126 | fbUA_NodeGetHandle( 127 | Execute := TRUE, 128 | ConnectionHdl := nConnectionHdl, 129 | NodeID := NodeID, 130 | NodeHdl => nNodeHdl 131 | ); 132 | 133 | IF NOT fbUA_NodeGetHandle.Busy THEN 134 | fbUA_NodeGetHandle(Execute := FALSE); 135 | 136 | IF NOT fbUA_NodeGetHandle.Error THEN 137 | iState := iState + 1; 138 | ELSE 139 | bError := TRUE; 140 | nErrorID := fbUA_NodeGetHandle.ErrorID; 141 | iState := 6; (* idle *) 142 | END_IF 143 | END_IF 144 | 145 | 146 | 4: (* UA_Write *) 147 | fbUA_Write( 148 | Execute := TRUE, 149 | ConnectionHdl := nConnectionHdl, 150 | NodeHdl := nNodeHdl, 151 | stNodeAddInfo := stNodeAddInfo, 152 | cbData := SIZEOF(nWriteData), 153 | pVariable := ADR(nWriteData) 154 | ); 155 | 156 | IF NOT fbUA_Write.Busy THEN 157 | fbUA_Write( 158 | Execute := FALSE, 159 | pVariable := ADR(nWriteData)); 160 | 161 | IF NOT fbUA_Write.Error THEN 162 | iState := iState + 1; 163 | ELSE 164 | bError := TRUE; 165 | nErrorID := fbUA_Write.ErrorID; 166 | iState := 6; (* idle *) 167 | END_IF 168 | END_IF 169 | 170 | 171 | 5: (* Release Node Handle *) 172 | fbUA_NodeReleaseHandle( 173 | Execute := TRUE, 174 | ConnectionHdl := nConnectionHdl, 175 | NodeHdl := nNodeHdl 176 | ); 177 | 178 | IF NOT fbUA_NodeReleaseHandle.Busy THEN 179 | fbUA_NodeReleaseHandle(Execute := FALSE); 180 | 181 | IF NOT fbUA_NodeReleaseHandle.Error THEN 182 | iState := iState + 1; 183 | ELSE 184 | bError := TRUE; 185 | nErrorID := fbUA_NodeReleaseHandle.ErrorID; 186 | iState := 6; (* idle *) 187 | END_IF 188 | END_IF 189 | 190 | 191 | 6: (* close session *) 192 | fbUA_Disconnect( 193 | Execute := TRUE, 194 | ConnectionHdl := nConnectionHdl 195 | ); 196 | 197 | IF NOT fbUA_Disconnect.Busy THEN 198 | fbUA_Disconnect(Execute := FALSE); 199 | bBusy := FALSE; 200 | IF NOT fbUA_Disconnect.Error THEN 201 | (* session closed *) 202 | iState := 0; 203 | IF NOT bError THEN 204 | bDone := TRUE; 205 | END_IF 206 | ELSE 207 | bError := TRUE; 208 | nErrorID := fbUA_Disconnect.ErrorID; 209 | iState := 0; (* idle *) 210 | nConnectionHdl := 0; 211 | END_IF 212 | END_IF 213 | END_CASE 214 | ]]> 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Client_Sample/ClientSampleProject/POUs/Write/PRG_WRITE_IndexRange.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 42 | 43 | nConnectionHdl 92 | ); 93 | 94 | IF NOT fbUA_Connect.Busy THEN 95 | fbUA_Connect(Execute := FALSE); 96 | 97 | IF NOT fbUA_Connect.Error THEN 98 | (* session open *) 99 | iState := iState + 1; 100 | ELSE 101 | bError := TRUE; 102 | nErrorID := fbUA_Connect.ErrorID; 103 | nConnectionHdl := 0; 104 | iState := 0; (* idle *) 105 | END_IF 106 | END_IF 107 | 108 | 109 | 2: (* GetNS Index *) 110 | fbUA_GetNamespaceIndex( 111 | Execute := TRUE, 112 | ConnectionHdl := nConnectionHdl, 113 | NamespaceUri := sNamespaceUri, 114 | NamespaceIndex => nNamespaceIndex 115 | ); 116 | 117 | IF NOT fbUA_GetNamespaceIndex.Busy THEN 118 | fbUA_GetNamespaceIndex(Execute := FALSE); 119 | 120 | IF NOT fbUA_GetNamespaceIndex.Error THEN 121 | iState := iState + 1; 122 | ELSE 123 | bError := TRUE; 124 | nErrorID := fbUA_GetNamespaceIndex.ErrorID; 125 | iState := 6; (* idle *) 126 | END_IF 127 | END_IF 128 | 129 | 130 | 3: (* Get Node Handle *) 131 | NodeID.eIdentifierType := eUAIdentifierType_String; 132 | NodeID.nNamespaceIndex := nNamespaceIndex; 133 | NodeID.sIdentifier := sNodeIdentifier; 134 | fbUA_NodeGetHandle( 135 | Execute := TRUE, 136 | ConnectionHdl := nConnectionHdl, 137 | NodeID := NodeID, 138 | NodeHdl => nNodeHdl 139 | ); 140 | 141 | IF NOT fbUA_NodeGetHandle.Busy THEN 142 | fbUA_NodeGetHandle(Execute := FALSE); 143 | 144 | IF NOT fbUA_NodeGetHandle.Error THEN 145 | iState := iState + 1; 146 | ELSE 147 | bError := TRUE; 148 | nErrorID := fbUA_NodeGetHandle.ErrorID; 149 | iState := 6; (* idle *) 150 | END_IF 151 | END_IF 152 | 153 | 154 | 4: (* UA_Write *) 155 | fbUA_Write( 156 | Execute := TRUE, 157 | ConnectionHdl := nConnectionHdl, 158 | NodeHdl := nNodeHdl, 159 | stNodeAddInfo := stNodeAddInfo, 160 | cbData := SIZEOF(nWriteData), 161 | pVariable := ADR(nWriteData) 162 | ); 163 | 164 | IF NOT fbUA_Write.Busy THEN 165 | fbUA_Write( 166 | Execute := FALSE, 167 | pVariable := ADR(nWriteData)); 168 | 169 | IF NOT fbUA_Write.Error THEN 170 | iState := iState + 1; 171 | ELSE 172 | bError := TRUE; 173 | nErrorID := fbUA_Write.ErrorID; 174 | iState := 6; (* idle *) 175 | END_IF 176 | END_IF 177 | 178 | 179 | 5: (* Release Node Handle *) 180 | fbUA_NodeReleaseHandle( 181 | Execute := TRUE, 182 | ConnectionHdl := nConnectionHdl, 183 | NodeHdl := nNodeHdl 184 | ); 185 | 186 | IF NOT fbUA_NodeReleaseHandle.Busy THEN 187 | fbUA_NodeReleaseHandle(Execute := FALSE); 188 | 189 | IF NOT fbUA_NodeReleaseHandle.Error THEN 190 | iState := iState + 1; 191 | ELSE 192 | bError := TRUE; 193 | nErrorID := fbUA_NodeReleaseHandle.ErrorID; 194 | iState := 6; (* idle *) 195 | END_IF 196 | END_IF 197 | 198 | 199 | 6: (* close session *) 200 | fbUA_Disconnect( 201 | Execute := TRUE, 202 | ConnectionHdl := nConnectionHdl 203 | ); 204 | 205 | IF NOT fbUA_Disconnect.Busy THEN 206 | fbUA_Disconnect(Execute := FALSE); 207 | bBusy := FALSE; 208 | IF NOT fbUA_Disconnect.Error THEN 209 | (* session closed *) 210 | iState := 0; 211 | IF NOT bError THEN 212 | bDone := TRUE; 213 | END_IF 214 | ELSE 215 | bError := TRUE; 216 | nErrorID := fbUA_Disconnect.ErrorID; 217 | iState := 0; (* idle *) 218 | nConnectionHdl := 0; 219 | END_IF 220 | END_IF 221 | END_CASE 222 | ]]> 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Client_Sample/ClientSampleProject/PlcTask.TcTTO: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 10000 6 | 20 7 | 8 | MAIN 9 | 10 | {65922f9b-9ebf-4faa-813d-ad536aab0757} 11 | {451785f3-ee62-439a-aae3-fc78595df332} 12 | {9ff0ba94-9466-4d8f-a250-79acc19db2eb} 13 | {fcb897a7-6a0e-465a-991a-866035b78a6e} 14 | {fbb866aa-53cb-4c6f-a0d5-8430e9f48ade} 15 | 16 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Client_Sample/ServerSampleProject/DUTs/ST_Structure.TcDUT: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 14 | 15 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Client_Sample/ServerSampleProject/DUTs/ST_SubStructure.TcDUT: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Client_Sample/ServerSampleProject/POUs/FB_Mathematics.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 17 | 18 | 19 | 20 | 21 | 28 | 29 | 31 | 32 | 33 | 34 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Client_Sample/ServerSampleProject/POUs/MAIN.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Client_Sample/ServerSampleProject/PlcTask.TcTTO: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 10000 6 | 20 7 | 8 | MAIN 9 | 10 | {d3d24537-8785-4406-a625-dccb4b6b9df4} 11 | {a084ea87-8069-479f-b31e-384c204c9587} 12 | {146dca04-dd08-4037-96a9-ecb9945085fd} 13 | {efb79ed6-f8cd-46e2-9d24-c5bfe17d8722} 14 | {56b7217e-3662-4d73-8545-a32fd2bd9846} 15 | 16 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Client_Sample/ServerSampleProject/ServerSampleProject.plcproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 1.0.0.0 5 | 2.0 6 | {70c1ee89-a65d-417c-90f4-4bebdc9b1346} 7 | ServerSampleProject 8 | 3.1.4026.13 9 | {38756cf6-3856-4f6d-a1bf-115d44d32659} 10 | {3e289b21-4e1f-4ed1-af64-669ce9e3eb36} 11 | {ecafdd6b-ba1d-4875-ad0a-d367121c6193} 12 | {b0295345-94c9-4b6c-9fdb-6a142e2f43b2} 13 | {f2f8871f-9f55-406a-8a5f-1c86d06681ce} 14 | {97ffc275-7c57-4a72-95fc-86dd800b3237} 15 | SAK 16 | SAK 17 | SAK 18 | SAK 19 | 20 | 21 | 22 | Code 23 | 24 | 25 | Code 26 | 27 | 28 | Code 29 | 30 | 31 | Code 32 | 33 | 34 | Code 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | Tc2_Standard, * (Beckhoff Automation GmbH) 46 | Tc2_Standard 47 | 48 | 49 | Tc2_System, * (Beckhoff Automation GmbH) 50 | Tc2_System 51 | 52 | 53 | Tc3_Module, * (Beckhoff Automation GmbH) 54 | Tc3_Module 55 | 56 | 57 | 58 | 59 | Content 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | "<ProjectRoot>" 68 | 69 | {A3BBA713-63D7-4de6-BEC2-E3BAAD8789F8} 70 | 71 | "{A3BBA713-63D7-4de6-BEC2-E3BAAD8789F8}" 72 | 73 | 74 | 75 | {192FAD59-8248-4824-A8DE-9177C94C195A} 76 | 77 | "{192FAD59-8248-4824-A8DE-9177C94C195A}" 78 | 79 | 80 | 81 | {C70B7845-2722-4a9b-A0EA-88C877A4B36F} 82 | 83 | "{C70B7845-2722-4a9b-A0EA-88C877A4B36F}" 84 | 85 | 86 | MaxAuthenticationTrials 87 | 3 88 | UserList 89 | 90 | 91 | 92 | {ad54a456-57f5-4ac0-a68d-dda8a5589c57} 93 | "Owner" 94 | "" 95 | "" 96 | true 97 | 98 | 99 | 100 | MaxTimeOfInactivity 101 | 10 102 | EnableMaxTimeOfInactivity 103 | true 104 | GroupList 105 | 106 | 107 | 108 | {face85f7-ec42-43f4-8a41-0f1266b346c1} 109 | "Everyone" 110 | "" 111 | true 112 | false 113 | 114 | ad54a456-57f5-4ac0-a68d-dda8a5589c57 115 | 116 | 117 | 118 | 119 | {521bd50f-e454-4900-92a1-c73782b8db97} 120 | "Owner" 121 | "" 122 | false 123 | true 124 | 125 | ad54a456-57f5-4ac0-a68d-dda8a5589c57 126 | 127 | 128 | 129 | 130 | 131 | UserAuthentication 132 | 133 | 134 | ad54a456-57f5-4ac0-a68d-dda8a5589c57 135 | d41d8cd98f00b204e9800998ecf8427e 136 | 137 | 138 | EnableMaxAuthenticationTrials 139 | true 140 | 141 | 142 | {40450F57-0AA3-4216-96F3-5444ECB29763} 143 | 144 | "{40450F57-0AA3-4216-96F3-5444ECB29763}" 145 | 146 | 147 | ActiveVisuExtensionsLength 148 | 0 149 | ActiveVisuProfile 150 | "IR0whWr8bwf8BwAA6S073gAAAACmAgAA3S1CUAAAAAABAAAAAAAAAAEaUwB5AHMAdABlAG0ALgBTAHQAcgBpAG4AZwACTHsAZgA5ADUAYgBiADQAMgA2AC0ANQA1ADIANAAtADQAYgA0ADUALQA5ADQAMAAwAC0AZgBiADAAZgAyAGUANwA3AGUANQAxAGIAfQADCE4AYQBtAGUABCxUAHcAaQBuAEMAQQBUACAAMwAuADEAIABCAHUAaQBsAGQAIAA0ADAAMQA4AAUWUAByAG8AZgBpAGwAZQBEAGEAdABhAAZMewAxADYAZQA1ADUAYgA2ADAALQA3ADAANAAzAC0ANABhADYAMwAtAGIANgA1AGIALQA2ADEANAA3ADEAMwA4ADcAOABkADQAMgB9AAcSTABpAGIAcgBhAHIAaQBlAHMACEx7ADMAYgBmAGQANQA0ADUAOQAtAGIAMAA3AGYALQA0AGQANgBlAC0AYQBlADEAYQAtAGEAOAAzADMANQA2AGEANQA1ADEANAAyAH0ACUx7ADkAYwA5ADUAOAA5ADYAOAAtADIAYwA4ADUALQA0ADEAYgBiAC0AOAA4ADcAMQAtADgAOQA1AGYAZgAxAGYAZQBkAGUAMQBhAH0ACg5WAGUAcgBzAGkAbwBuAAsGaQBuAHQADApVAHMAYQBnAGUADQpUAGkAdABsAGUADhxWAGkAcwB1AEUAbABlAG0AMwBEAFAAYQB0AGgADw5DAG8AbQBwAGEAbgB5ABAMUwB5AHMAdABlAG0AERpWAGkAcwB1AEUAbABlAG0ATQBlAHQAZQByABISVgBpAHMAdQBFAGwAZQBtAHMAEyJWAGkAcwB1AEUAbABlAG0AcwBEAGEAdABlAFQAaQBtAGUAFDBWAGkAcwB1AEUAbABlAG0AcwBTAHAAZQBjAGkAYQBsAEMAbwBuAHQAcgBvAGwAcwAVKFYAaQBzAHUARQBsAGUAbQBzAFcAaQBuAEMAbwBuAHQAcgBvAGwAcwAWJFYAaQBzAHUARQBsAGUAbQBUAGUAeAB0AEUAZABpAHQAbwByABciVgBpAHMAdQBOAGEAdABpAHYAZQBDAG8AbgB0AHIAbwBsABgUdgBpAHMAdQBpAG4AcAB1AHQAcwAZDHMAeQBzAHQAZQBtABoYVgBpAHMAdQBFAGwAZQBtAEIAYQBzAGUAGyZEAGUAdgBQAGwAYQBjAGUAaABvAGwAZABlAHIAcwBVAHMAZQBkABwIYgBvAG8AbAAdIlAAbAB1AGcAaQBuAEMAbwBuAHMAdAByAGEAaQBuAHQAcwAeTHsANAAzAGQANQAyAGIAYwBlAC0AOQA0ADIAYwAtADQANABkADcALQA5AGUAOQA0AC0AMQBiAGYAZABmADMAMQAwAGUANgAzAGMAfQAfHEEAdABMAGUAYQBzAHQAVgBlAHIAcwBpAG8AbgAgFFAAbAB1AGcAaQBuAEcAdQBpAGQAIRZTAHkAcwB0AGUAbQAuAEcAdQBpAGQAIkhhAGYAYwBkADUANAA0ADYALQA0ADkAMQA0AC0ANABmAGUANwAtAGIAYgA3ADgALQA5AGIAZgBmAGUAYgA3ADAAZgBkADEANwAjFFUAcABkAGEAdABlAEkAbgBmAG8AJEx7AGIAMAAzADMANgA2AGEAOAAtAGIANQBjADAALQA0AGIAOQBhAC0AYQAwADAAZQAtAGUAYgA4ADYAMAAxADEAMQAwADQAYwAzAH0AJQ5VAHAAZABhAHQAZQBzACZMewAxADgANgA4AGYAZgBjADkALQBlADQAZgBjAC0ANAA1ADMAMgAtAGEAYwAwADYALQAxAGUAMwA5AGIAYgA1ADUANwBiADYAOQB9ACdMewBhADUAYgBkADQAOABjADMALQAwAGQAMQA3AC0ANAAxAGIANQAtAGIAMQA2ADQALQA1AGYAYwA2AGEAZAAyAGIAOQA2AGIANwB9ACgWTwBiAGoAZQBjAHQAcwBUAHkAcABlAClUVQBwAGQAYQB0AGUATABhAG4AZwB1AGEAZwBlAE0AbwBkAGUAbABGAG8AcgBDAG8AbgB2AGUAcgB0AGkAYgBsAGUATABpAGIAcgBhAHIAaQBlAHMAKhBMAGkAYgBUAGkAdABsAGUAKxRMAGkAYgBDAG8AbQBwAGEAbgB5ACweVQBwAGQAYQB0AGUAUAByAG8AdgBpAGQAZQByAHMALThTAHkAcwB0AGUAbQAuAEMAbwBsAGwAZQBjAHQAaQBvAG4AcwAuAEgAYQBzAGgAdABhAGIAbABlAC4SdgBpAHMAdQBlAGwAZQBtAHMAL0g2AGMAYgAxAGMAZABlADEALQBkADUAZABjAC0ANABhADMAYgAtADkAMAA1ADQALQAyADEAZgBhADcANQA2AGEAMwBmAGEANAAwKEkAbgB0AGUAcgBmAGEAYwBlAFYAZQByAHMAaQBvAG4ASQBuAGYAbwAxTHsAYwA2ADEAMQBlADQAMAAwAC0ANwBmAGIAOQAtADQAYwAzADUALQBiADkAYQBjAC0ANABlADMAMQA0AGIANQA5ADkANgA0ADMAfQAyGE0AYQBqAG8AcgBWAGUAcgBzAGkAbwBuADMYTQBpAG4AbwByAFYAZQByAHMAaQBvAG4ANAxMAGUAZwBhAGMAeQA1MEwAYQBuAGcAdQBhAGcAZQBNAG8AZABlAGwAVgBlAHIAcwBpAG8AbgBJAG4AZgBvADYaQwBvAG0AcABhAHQAaQBiAGkAbABpAHQAeQDQAAIaA9ADAS0E0AUGGgbQBwgaAUUHCQrQAAkaBEUKCwQDAAAABQAAAAYAAAAAAAAA0AwLrQIAAADQDQEtDtAPAS0Q0AAJGgRFCgsEAwAAAAUAAAAGAAAAAAAAANAMC60CAAAA0A0BLRHQDwEtENAACRoERQoLBAMAAAAFAAAABgAAAAoAAADQDAutAQAAANANAS0S0A8BLRDQAAkaBEUKCwQDAAAABQAAAAYAAAAAAAAA0AwLrQIAAADQDQEtE9APAS0Q0AAJGgRFCgsEAwAAAAUAAAAGAAAAAAAAANAMC60CAAAA0A0BLRTQDwEtENAACRoERQoLBAMAAAAFAAAABgAAAAAAAADQDAutAgAAANANAS0V0A8BLRDQAAkaBEUKCwQDAAAABQAAAAYAAAAAAAAA0AwLrQIAAADQDQEtFtAPAS0Q0AAJGgRFCgsEAwAAAAUAAAAGAAAAAAAAANAMC60CAAAA0A0BLRfQDwEtENAACRoERQoLBAMAAAAFAAAABgAAAAAAAADQDAutAgAAANANAS0Y0A8BLRnQAAkaBEUKCwQDAAAABQAAAAYAAAAAAAAA0AwLrQQAAADQDQEtGtAPAS0Q0BscrQFFHR4B0AAeGgJFHwsEAwAAAAUAAAAGAAAAAAAAANAgIS0i0CMkGgJFJSYC0AAnGgVFCgsEAwAAAAMAAAAAAAAACgAAANAoC60AAAAA0AMBLSnQKgEtEtArAS0Q0AAnGgVFCgsEAwAAAAMAAAAAAAAACgAAANAoC60BAAAA0AMBLSnQKgEtEtArAS0QmiwtAUUAAQLQAAEtLtAAAS0Z0AAhLS/QMDEaA9AyC60BAAAA0DMLrRAAAADQNBytANA1MRoD0DILrQIAAADQMwutAgAAANA0HK0A0DYcrQA=" 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | System.Collections.ArrayList 159 | System.Boolean 160 | {daecd4be-1e2b-4335-a125-4a1ac83ea49f} 161 | {bf4dffda-f055-446d-9d7a-5f126720896b} 162 | System.Guid 163 | System.Collections.Hashtable 164 | System.Int32 165 | {54dd0eac-a6d8-46f2-8c27-2f43c7e49861} 166 | System.String 167 | {cd83029e-13b0-491e-9e4b-921adda0d86b} 168 | {3635a671-97f5-41bb-9e29-0ebb9795975c} 169 | {9fe6b547-6bc8-4f11-b589-b517860c5891} 170 | 171 | 172 | 173 | 174 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Client_Sample/TF6100_OpcUa_Client_Sample.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # TcXaeShell Solution File, Format Version 11.00 4 | VisualStudioVersion = 15.0.28010.2050 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{B1E792BE-AA5F-4E3C-8C82-674BF9C0715B}") = "TF6100_OpcUa_Client_Sample", "TF6100_OpcUa_Client_Sample.tsproj", "{0C02E2A8-3609-498F-8F84-57ADBF2A2CC6}" 7 | EndProject 8 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{46B00520-F9FF-4BBC-AC86-1E1EC6E78DBB}" 9 | ProjectSection(SolutionItems) = preProject 10 | TcUaHaConfig.xml = TcUaHaConfig.xml 11 | EndProjectSection 12 | EndProject 13 | Global 14 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 15 | Debug|TwinCAT CE7 (ARMV7) = Debug|TwinCAT CE7 (ARMV7) 16 | Debug|TwinCAT OS (ARMT2) = Debug|TwinCAT OS (ARMT2) 17 | Debug|TwinCAT RT (x64) = Debug|TwinCAT RT (x64) 18 | Debug|TwinCAT RT (x86) = Debug|TwinCAT RT (x86) 19 | Release|TwinCAT CE7 (ARMV7) = Release|TwinCAT CE7 (ARMV7) 20 | Release|TwinCAT OS (ARMT2) = Release|TwinCAT OS (ARMT2) 21 | Release|TwinCAT RT (x64) = Release|TwinCAT RT (x64) 22 | Release|TwinCAT RT (x86) = Release|TwinCAT RT (x86) 23 | EndGlobalSection 24 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 25 | {0C02E2A8-3609-498F-8F84-57ADBF2A2CC6}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7) 26 | {0C02E2A8-3609-498F-8F84-57ADBF2A2CC6}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7) 27 | {0C02E2A8-3609-498F-8F84-57ADBF2A2CC6}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2) 28 | {0C02E2A8-3609-498F-8F84-57ADBF2A2CC6}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2) 29 | {0C02E2A8-3609-498F-8F84-57ADBF2A2CC6}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64) 30 | {0C02E2A8-3609-498F-8F84-57ADBF2A2CC6}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64) 31 | {0C02E2A8-3609-498F-8F84-57ADBF2A2CC6}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86) 32 | {0C02E2A8-3609-498F-8F84-57ADBF2A2CC6}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86) 33 | {0C02E2A8-3609-498F-8F84-57ADBF2A2CC6}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) 34 | {0C02E2A8-3609-498F-8F84-57ADBF2A2CC6}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) 35 | {0C02E2A8-3609-498F-8F84-57ADBF2A2CC6}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) 36 | {0C02E2A8-3609-498F-8F84-57ADBF2A2CC6}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) 37 | {0C02E2A8-3609-498F-8F84-57ADBF2A2CC6}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) 38 | {0C02E2A8-3609-498F-8F84-57ADBF2A2CC6}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) 39 | {0C02E2A8-3609-498F-8F84-57ADBF2A2CC6}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) 40 | {0C02E2A8-3609-498F-8F84-57ADBF2A2CC6}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) 41 | {70C1EE89-A65D-417C-90F4-4BEBDC9B1346}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7) 42 | {70C1EE89-A65D-417C-90F4-4BEBDC9B1346}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7) 43 | {70C1EE89-A65D-417C-90F4-4BEBDC9B1346}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2) 44 | {70C1EE89-A65D-417C-90F4-4BEBDC9B1346}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2) 45 | {70C1EE89-A65D-417C-90F4-4BEBDC9B1346}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64) 46 | {70C1EE89-A65D-417C-90F4-4BEBDC9B1346}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64) 47 | {70C1EE89-A65D-417C-90F4-4BEBDC9B1346}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86) 48 | {70C1EE89-A65D-417C-90F4-4BEBDC9B1346}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86) 49 | {70C1EE89-A65D-417C-90F4-4BEBDC9B1346}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) 50 | {70C1EE89-A65D-417C-90F4-4BEBDC9B1346}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) 51 | {70C1EE89-A65D-417C-90F4-4BEBDC9B1346}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) 52 | {70C1EE89-A65D-417C-90F4-4BEBDC9B1346}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) 53 | {70C1EE89-A65D-417C-90F4-4BEBDC9B1346}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) 54 | {70C1EE89-A65D-417C-90F4-4BEBDC9B1346}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) 55 | {70C1EE89-A65D-417C-90F4-4BEBDC9B1346}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) 56 | {70C1EE89-A65D-417C-90F4-4BEBDC9B1346}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) 57 | {525B8F9C-92F8-4802-832B-9F33CD7B9ED0}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7) 58 | {525B8F9C-92F8-4802-832B-9F33CD7B9ED0}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7) 59 | {525B8F9C-92F8-4802-832B-9F33CD7B9ED0}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2) 60 | {525B8F9C-92F8-4802-832B-9F33CD7B9ED0}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2) 61 | {525B8F9C-92F8-4802-832B-9F33CD7B9ED0}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64) 62 | {525B8F9C-92F8-4802-832B-9F33CD7B9ED0}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64) 63 | {525B8F9C-92F8-4802-832B-9F33CD7B9ED0}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86) 64 | {525B8F9C-92F8-4802-832B-9F33CD7B9ED0}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86) 65 | {525B8F9C-92F8-4802-832B-9F33CD7B9ED0}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) 66 | {525B8F9C-92F8-4802-832B-9F33CD7B9ED0}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) 67 | {525B8F9C-92F8-4802-832B-9F33CD7B9ED0}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) 68 | {525B8F9C-92F8-4802-832B-9F33CD7B9ED0}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) 69 | {525B8F9C-92F8-4802-832B-9F33CD7B9ED0}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) 70 | {525B8F9C-92F8-4802-832B-9F33CD7B9ED0}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) 71 | {525B8F9C-92F8-4802-832B-9F33CD7B9ED0}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) 72 | {525B8F9C-92F8-4802-832B-9F33CD7B9ED0}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) 73 | EndGlobalSection 74 | GlobalSection(SolutionProperties) = preSolution 75 | HideSolutionNode = FALSE 76 | EndGlobalSection 77 | GlobalSection(ExtensibilityGlobals) = postSolution 78 | SolutionGuid = {81ECFD3B-8239-4C7C-A46D-37F360367024} 79 | EndGlobalSection 80 | EndGlobal 81 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Client_Sample/TcUaHaConfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Server_Sample/ServerSampleProject/DUTs/Enums/E_Enum_1.TcDUT: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 15 | 16 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Server_Sample/ServerSampleProject/DUTs/Enums/E_Enum_2.TcDUT: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 15 | 16 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Server_Sample/ServerSampleProject/DUTs/Enums/E_Operation.TcDUT: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 13 | 14 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Server_Sample/ServerSampleProject/DUTs/Structures/ST_Complex_1.TcDUT: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 15 | 16 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Server_Sample/ServerSampleProject/DUTs/Structures/ST_Complex_2.TcDUT: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 17 | 18 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Server_Sample/ServerSampleProject/DUTs/Structures/ST_Complex_3.TcDUT: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 12 | 13 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Server_Sample/ServerSampleProject/DUTs/Structures/ST_Complex_4.TcDUT: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 12 | 13 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Server_Sample/ServerSampleProject/DUTs/Structures/ST_Complex_5.TcDUT: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 16 | 17 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Server_Sample/ServerSampleProject/DUTs/Structures/ST_Complex_6.TcDUT: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 15 | 16 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Server_Sample/ServerSampleProject/DUTs/Structures/ST_Complex_7.TcDUT: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 12 | 13 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Server_Sample/ServerSampleProject/DUTs/Structures/ST_Complex_8.TcDUT: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 16 | 17 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Server_Sample/ServerSampleProject/DUTs/Structures/ST_MathOperation.TcDUT: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 13 | 14 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Server_Sample/ServerSampleProject/DUTs/Structures/ST_MathematicResults.TcDUT: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 13 | 14 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Server_Sample/ServerSampleProject/GVLs/GVL_alarm_condition.TcGVL: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 60. Increments every second'} 7 | limitAlmTrigger: DINT; 8 | limitAlmRangeLo :DINT := 0; 9 | limitAlmRangeHi :DINT := 100; 10 | 11 | {attribute 'OPC.UA.DA' := '1'} 12 | {attribute 'OPC.UA.DA.Description' := 'Triggers a off normal alarm when set to true. Changes state every 30 secs'} 13 | offNormAlmTrigger : BOOL; 14 | 15 | {attribute 'OPC.UA.DA' := '1'} 16 | {attribute 'OPC.UA.DA.Description' := 'Triggers a limit alarm when value is < 30 or > 60. Can be incremented by the client to trigger an alarm'} 17 | manualLimitAlmTrigger: DINT := 45; 18 | 19 | {attribute 'OPC.UA.DA' := '1'} 20 | {attribute 'OPC.UA.DA.Description' := 'Triggers a off normal alarm when set to true. Can be toggeled by the client to trigger an alarm'} 21 | manualOffNormAlmTrigger : BOOL; 22 | END_VAR]]> 23 | 24 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Server_Sample/ServerSampleProject/GVLs/GVL_analog_items.TcGVL: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 149 | 150 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Server_Sample/ServerSampleProject/GVLs/GVL_arrays.TcGVL: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 16 | 17 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Server_Sample/ServerSampleProject/GVLs/GVL_enums.TcGVL: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 13 | 14 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Server_Sample/ServerSampleProject/GVLs/GVL_historizing.TcGVL: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 89 | 90 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Server_Sample/ServerSampleProject/GVLs/GVL_inheritance.TcGVL: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 14 | 15 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Server_Sample/ServerSampleProject/GVLs/GVL_methods.TcGVL: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 17 | 18 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Server_Sample/ServerSampleProject/GVLs/GVL_properties.TcGVL: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 9 | 10 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Server_Sample/ServerSampleProject/GVLs/GVL_structures.TcGVL: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 51 | 52 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Server_Sample/ServerSampleProject/GVLs/GVL_user_access.TcGVL: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 28 | 29 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Server_Sample/ServerSampleProject/GVLs/Settings.TcGVL: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 15 | 16 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Server_Sample/ServerSampleProject/POUs/Inheritance/FB_Base.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Server_Sample/ServerSampleProject/POUs/Inheritance/FB_Derived.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Server_Sample/ServerSampleProject/POUs/MAIN.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 8 | 9 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Server_Sample/ServerSampleProject/POUs/Methods/FB_Job.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 27 | 28 | 46 | 47 | 48 | 53 | 54 | 55 | 56 | 57 | 58 | 73 | 74 | 87 | 88 | 89 | 90 | 102 | 103 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Server_Sample/ServerSampleProject/POUs/Methods/FB_Mathematics.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 9 | 10 | 11 | 12 | 13 | 21 | 22 | 25 | 26 | 27 | 28 | 37 | 38 | 50 | 51 | 52 | 53 | 60 | 61 | 72 | 73 | 74 | 75 | 84 | 85 | 96 | 97 | 98 | 99 | 111 | 112 | 116 | 117 | 118 | 119 | 126 | 127 | 132 | 133 | 134 | 135 | 142 | 143 | 146 | 147 | 148 | 149 | 156 | 157 | 159 | 160 | 161 | 162 | 169 | 170 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Server_Sample/ServerSampleProject/POUs/Methods/FB_Methods.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 9 | 10 | 11 | 12 | 13 | 21 | 22 | 26 | 27 | 28 | 29 | 35 | 36 | 37 | 38 | 39 | 40 | 44 | 45 | 48 | 49 | 50 | 51 | 57 | 58 | 61 | 62 | 63 | 64 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Server_Sample/ServerSampleProject/POUs/Programs/PRG_Eventlogger.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 18 | 19 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Server_Sample/ServerSampleProject/POUs/Programs/PRG_Static.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 11 | 12 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Server_Sample/ServerSampleProject/POUs/Properties/FB_Properties.TcPOU: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | 23 | 24 | 25 | 26 | 27 | 28 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Server_Sample/ServerSampleProject/PlcTask.TcTTO: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 10000 5 | 20 6 | 7 | MAIN 8 | 9 | {986d1ef3-bbb5-4bbe-8963-40f7eb07fae7} 10 | {63b8af3f-12b9-4db4-bdca-57dca6b77b71} 11 | {f131b689-19b2-4fba-a827-10b8211ca2af} 12 | {65bb8b0d-cb2c-41d2-9236-94df2f8c9f76} 13 | {132be673-d3b3-4b04-8834-0ec2e5e25b80} 14 | 15 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Server_Sample/TF6100_OpcUa_Server_Sample.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # TcXaeShell Solution File, Format Version 11.00 4 | VisualStudioVersion = 17.7.34302.85 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{B1E792BE-AA5F-4E3C-8C82-674BF9C0715B}") = "TF6100_OpcUa_Server_Sample", "TF6100_OpcUa_Server_Sample.tsproj", "{46F57825-3085-4014-A591-E4DD7F71DEE3}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|TwinCAT CE7 (ARMV7) = Debug|TwinCAT CE7 (ARMV7) 11 | Debug|TwinCAT OS (ARMT2) = Debug|TwinCAT OS (ARMT2) 12 | Debug|TwinCAT OS (x64) = Debug|TwinCAT OS (x64) 13 | Debug|TwinCAT RT (x64) = Debug|TwinCAT RT (x64) 14 | Debug|TwinCAT RT (x86) = Debug|TwinCAT RT (x86) 15 | Release|TwinCAT CE7 (ARMV7) = Release|TwinCAT CE7 (ARMV7) 16 | Release|TwinCAT OS (ARMT2) = Release|TwinCAT OS (ARMT2) 17 | Release|TwinCAT OS (x64) = Release|TwinCAT OS (x64) 18 | Release|TwinCAT RT (x64) = Release|TwinCAT RT (x64) 19 | Release|TwinCAT RT (x86) = Release|TwinCAT RT (x86) 20 | EndGlobalSection 21 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 22 | {46F57825-3085-4014-A591-E4DD7F71DEE3}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7) 23 | {46F57825-3085-4014-A591-E4DD7F71DEE3}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7) 24 | {46F57825-3085-4014-A591-E4DD7F71DEE3}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2) 25 | {46F57825-3085-4014-A591-E4DD7F71DEE3}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2) 26 | {46F57825-3085-4014-A591-E4DD7F71DEE3}.Debug|TwinCAT OS (x64).ActiveCfg = Debug|TwinCAT OS (x64) 27 | {46F57825-3085-4014-A591-E4DD7F71DEE3}.Debug|TwinCAT OS (x64).Build.0 = Debug|TwinCAT OS (x64) 28 | {46F57825-3085-4014-A591-E4DD7F71DEE3}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64) 29 | {46F57825-3085-4014-A591-E4DD7F71DEE3}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64) 30 | {46F57825-3085-4014-A591-E4DD7F71DEE3}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86) 31 | {46F57825-3085-4014-A591-E4DD7F71DEE3}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86) 32 | {46F57825-3085-4014-A591-E4DD7F71DEE3}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) 33 | {46F57825-3085-4014-A591-E4DD7F71DEE3}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) 34 | {46F57825-3085-4014-A591-E4DD7F71DEE3}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) 35 | {46F57825-3085-4014-A591-E4DD7F71DEE3}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) 36 | {46F57825-3085-4014-A591-E4DD7F71DEE3}.Release|TwinCAT OS (x64).ActiveCfg = Release|TwinCAT OS (x64) 37 | {46F57825-3085-4014-A591-E4DD7F71DEE3}.Release|TwinCAT OS (x64).Build.0 = Release|TwinCAT OS (x64) 38 | {46F57825-3085-4014-A591-E4DD7F71DEE3}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) 39 | {46F57825-3085-4014-A591-E4DD7F71DEE3}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) 40 | {46F57825-3085-4014-A591-E4DD7F71DEE3}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) 41 | {46F57825-3085-4014-A591-E4DD7F71DEE3}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) 42 | {B51F9A5D-57DC-4E81-917D-52466A79C949}.Debug|TwinCAT CE7 (ARMV7).ActiveCfg = Debug|TwinCAT CE7 (ARMV7) 43 | {B51F9A5D-57DC-4E81-917D-52466A79C949}.Debug|TwinCAT CE7 (ARMV7).Build.0 = Debug|TwinCAT CE7 (ARMV7) 44 | {B51F9A5D-57DC-4E81-917D-52466A79C949}.Debug|TwinCAT OS (ARMT2).ActiveCfg = Debug|TwinCAT OS (ARMT2) 45 | {B51F9A5D-57DC-4E81-917D-52466A79C949}.Debug|TwinCAT OS (ARMT2).Build.0 = Debug|TwinCAT OS (ARMT2) 46 | {B51F9A5D-57DC-4E81-917D-52466A79C949}.Debug|TwinCAT OS (x64).ActiveCfg = Debug|TwinCAT OS (x64) 47 | {B51F9A5D-57DC-4E81-917D-52466A79C949}.Debug|TwinCAT OS (x64).Build.0 = Debug|TwinCAT OS (x64) 48 | {B51F9A5D-57DC-4E81-917D-52466A79C949}.Debug|TwinCAT RT (x64).ActiveCfg = Debug|TwinCAT RT (x64) 49 | {B51F9A5D-57DC-4E81-917D-52466A79C949}.Debug|TwinCAT RT (x64).Build.0 = Debug|TwinCAT RT (x64) 50 | {B51F9A5D-57DC-4E81-917D-52466A79C949}.Debug|TwinCAT RT (x86).ActiveCfg = Debug|TwinCAT RT (x86) 51 | {B51F9A5D-57DC-4E81-917D-52466A79C949}.Debug|TwinCAT RT (x86).Build.0 = Debug|TwinCAT RT (x86) 52 | {B51F9A5D-57DC-4E81-917D-52466A79C949}.Release|TwinCAT CE7 (ARMV7).ActiveCfg = Release|TwinCAT CE7 (ARMV7) 53 | {B51F9A5D-57DC-4E81-917D-52466A79C949}.Release|TwinCAT CE7 (ARMV7).Build.0 = Release|TwinCAT CE7 (ARMV7) 54 | {B51F9A5D-57DC-4E81-917D-52466A79C949}.Release|TwinCAT OS (ARMT2).ActiveCfg = Release|TwinCAT OS (ARMT2) 55 | {B51F9A5D-57DC-4E81-917D-52466A79C949}.Release|TwinCAT OS (ARMT2).Build.0 = Release|TwinCAT OS (ARMT2) 56 | {B51F9A5D-57DC-4E81-917D-52466A79C949}.Release|TwinCAT OS (x64).ActiveCfg = Release|TwinCAT OS (x64) 57 | {B51F9A5D-57DC-4E81-917D-52466A79C949}.Release|TwinCAT OS (x64).Build.0 = Release|TwinCAT OS (x64) 58 | {B51F9A5D-57DC-4E81-917D-52466A79C949}.Release|TwinCAT RT (x64).ActiveCfg = Release|TwinCAT RT (x64) 59 | {B51F9A5D-57DC-4E81-917D-52466A79C949}.Release|TwinCAT RT (x64).Build.0 = Release|TwinCAT RT (x64) 60 | {B51F9A5D-57DC-4E81-917D-52466A79C949}.Release|TwinCAT RT (x86).ActiveCfg = Release|TwinCAT RT (x86) 61 | {B51F9A5D-57DC-4E81-917D-52466A79C949}.Release|TwinCAT RT (x86).Build.0 = Release|TwinCAT RT (x86) 62 | EndGlobalSection 63 | GlobalSection(SolutionProperties) = preSolution 64 | HideSolutionNode = FALSE 65 | EndGlobalSection 66 | GlobalSection(ExtensibilityGlobals) = postSolution 67 | SolutionGuid = {ABF250BA-D64E-4C80-BA4F-E792BBAEE6C3} 68 | EndGlobalSection 69 | EndGlobal 70 | -------------------------------------------------------------------------------- /TF6100_OpcUa_Server_Sample/TF6100_OpcUa_Server_Sample.tsproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | TutorialClass 6 | 7 | 8 | Event 9 | 10 | Info 11 | 12 | 13 | Alarm 14 | 15 | Error 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | {BDCC0070-42D5-49AE-ABF1-1D4434813D60} 27 | 28 | 29 | 30 | 31 | PlcTask 32 | 33 | 34 | 35 | 36 | 37 | 38 | ServerSampleProject Instance 39 | {08500001-0000-0000-F000-000000000064} 40 | 41 | 42 | 0 43 | PlcTask 44 | 45 | #x02010030 46 | 47 | 20 48 | 10000000 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /TS6100_OpcUa_Client_Sample/Tc2_PLCopen_OpcUa_Samples.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Beckhoff/TF6100_Samples/a6cdfa3d18dc41c4e6f1145c24bf3a3e439f6ae3/TS6100_OpcUa_Client_Sample/Tc2_PLCopen_OpcUa_Samples.pro -------------------------------------------------------------------------------- /TS6100_OpcUa_Server_Sample/TS6100_OpcUa_Server_Sample.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Beckhoff/TF6100_Samples/a6cdfa3d18dc41c4e6f1145c24bf3a3e439f6ae3/TS6100_OpcUa_Server_Sample/TS6100_OpcUa_Server_Sample.pro --------------------------------------------------------------------------------