- ticker: --spin mode polls FPRD until payload changes (phase-locks processing to TwinCAT frame arrival instead of free-running ticker), timeout at 1.5 periods keeps loop alive on master stop - verified: 238k cycles, 0 errors, exec=245us (FPWR-bound), TwinCAT PLC task confirmed at 2000.8 Hz (all three tasks 0.5ms; base tick was already 50us - no base-time change needed) - docs: 500us latency plan; scripts: task-rate ADS probe, 2kHz deploy, UI automation experiments (pywinauto) for task cycle inspection
13 lines
505 B
PowerShell
13 lines
505 B
PowerShell
#Requires -RunAsAdministrator
|
|
Add-Type -Path 'C:\Program Files (x86)\Beckhoff\TwinCAT\3.1\Components\Base\v170\TwinCAT.Ads.dll'
|
|
$c = New-Object TwinCAT.Ads.TcAdsClient
|
|
$c.Connect('169.254.176.217.1.1', 851)
|
|
$h = $c.CreateVariableHandle('GVL_Sync.nCycles')
|
|
$n1 = $c.ReadAny($h, [uint64])
|
|
Start-Sleep -Milliseconds 5000
|
|
$n2 = $c.ReadAny($h, [uint64])
|
|
$c.DeleteVariableHandle($h)
|
|
$rate = ($n2 - $n1) / 5.0
|
|
Write-Host ("nCycles rate = {0} Hz (n1={1} n2={2})" -f [math]::Round($rate,1), $n1, $n2)
|
|
$c.Dispose()
|