- 8B PDO config: ULINT-sized payload, no 0x1A01 diag PDO on SM3 (device rejected SM3=8 with diag assigned: 'size not allowed, min/max 0xa') - twin_layout_blob_sized(): single 64-bit mapping entry for 8B payloads - Ticker: per-byte XOR 0x5A transform in 8B mode so TwinCAT can verify every byte individually (1KB path unchanged, const-guarded) - TwinCAT automation scripts: deploy with RPC retry, LinkVariables-based whole-array relink (element links only carry 1 byte), ADS watch, diag - Docs: 8B design, verification methodology, test report
68 lines
3.0 KiB
PowerShell
68 lines
3.0 KiB
PowerShell
#Requires -RunAsAdministrator
|
|
#Requires -Version 5.1
|
|
<#
|
|
.SYNOPSIS
|
|
Fix TwinCAT EtherCAT adapter IP and activate EL6695 configuration.
|
|
.DESCRIPTION
|
|
1. Find TwinCAT-Intel adapter by MAC 00-15-17-8A-B3-DA
|
|
2. Set IP to 169.254.176.217/16 (matches registry AmsNetId 169.254.176.217.1.1)
|
|
3. Build and activate TwinCAT project with correct target
|
|
4. Wait for activation to settle
|
|
#>
|
|
|
|
Write-Host "=== Fix TwinCAT EtherCAT IP + Activate EL6695 ===" -ForegroundColor Cyan
|
|
|
|
$targetMac = '00-15-17-8A-B3-DA'
|
|
$targetIp = '169.254.176.217'
|
|
$prefix = 16
|
|
$targetNetId = '169.254.176.217.1.1'
|
|
$helper = 'C:\Program Files (x86)\Beckhoff\TwinCAT\3.1\Components\Base\TcSysManCmdHelper.exe'
|
|
$tsproj = 'C:\Users\tonycao\work\twincat3-auto-cli\TwinCAT_EL6695_Secondary\TwinCAT_EL6695_Secondary.tsproj'
|
|
|
|
# 1. Find adapter by MAC
|
|
$adapter = Get-NetAdapter -Physical | Where-Object { $_.MacAddress -eq $targetMac }
|
|
if (-not $adapter) {
|
|
Write-Host "Available physical adapters:" -ForegroundColor Yellow
|
|
Get-NetAdapter -Physical | Select-Object Name, MacAddress, Status, LinkSpeed | Format-Table -AutoSize
|
|
Write-Error "Cannot find adapter with MAC $targetMac"
|
|
exit 1
|
|
}
|
|
|
|
Write-Host "Found adapter: $($adapter.Name) (MAC: $targetMac)" -ForegroundColor Green
|
|
|
|
# 2. Set IP
|
|
$existing = Get-NetIPAddress -InterfaceIndex $adapter.ifIndex -AddressFamily IPv4 -ErrorAction SilentlyContinue
|
|
foreach ($ip in $existing) {
|
|
Write-Host " Removing existing IP: $($ip.IPAddress)" -ForegroundColor Gray
|
|
Remove-NetIPAddress -InterfaceIndex $adapter.ifIndex -IPAddress $ip.IPAddress -Confirm:$false -ErrorAction SilentlyContinue
|
|
}
|
|
|
|
Write-Host "Setting IP to $targetIp/$prefix ..." -ForegroundColor Cyan
|
|
New-NetIPAddress -InterfaceIndex $adapter.ifIndex -IPAddress $targetIp -PrefixLength $prefix -AddressFamily IPv4 -ErrorAction Stop | Out-Null
|
|
|
|
$verify = Get-NetIPAddress -InterfaceIndex $adapter.ifIndex -AddressFamily IPv4 | Select-Object IPAddress, PrefixLength, AddressState
|
|
Write-Host "IP set OK:" -ForegroundColor Green
|
|
$verify | Format-Table -AutoSize
|
|
|
|
# 3. Build + Activate TwinCAT
|
|
Set-Location -LiteralPath 'C:\Users\tonycao\work\twincat3-auto-cli\TwinCAT_EL6695_Secondary'
|
|
|
|
Write-Host "Building TwinCAT project..." -ForegroundColor Cyan
|
|
& $helper -v 4026.0 -o $tsproj -t $targetNetId -b 2>&1
|
|
$buildExit = $LASTEXITCODE
|
|
Write-Host "Build exit code: $buildExit" -ForegroundColor $(if ($buildExit -eq 0) { 'Green' } else { 'Red' })
|
|
|
|
Start-Sleep -Seconds 2
|
|
|
|
Write-Host "Activating + Restarting TwinCAT..." -ForegroundColor Cyan
|
|
$cmd = '{"commands":[{"method":"ActivateConfiguration"},{"method":"StartRestartTwinCAT"}]}'
|
|
& $helper -v 4026.0 -o $tsproj -t $targetNetId -c $cmd 2>&1
|
|
$actExit = $LASTEXITCODE
|
|
Write-Host "Activate exit code: $actExit" -ForegroundColor $(if ($actExit -eq 0) { 'Green' } else { 'Red' })
|
|
|
|
Write-Host "Waiting 10s for TwinCAT to settle..." -ForegroundColor Cyan
|
|
Start-Sleep -Seconds 10
|
|
|
|
Write-Host "=== Done ===" -ForegroundColor Green
|
|
Write-Host "Next: run J1900 verify via serial: /root/gateway/el6695_rt eth1 --mode verify" -ForegroundColor Yellow
|