param( [string]$Tsproj = 'C:\Users\tonycao\work\twincat3-auto-cli\TwinCAT_EL6695_Primary\TwinCATProject1.tsproj' ) $ErrorActionPreference = 'Continue' $content = [System.IO.File]::ReadAllText($Tsproj, [System.Text.Encoding]::UTF8) Write-Host "=== Fix PDO: add 1024-byte entries to EL6695 IO PDO ===" # 1. Expand empty IO Inputs PDO (0x1A08) $oldPdoIn = '' $newPdoIn = @" ARRAY [0..1023] OF BYTE "@ if ($content -match [regex]::Escape($oldPdoIn)) { $content = $content -replace [regex]::Escape($oldPdoIn), $newPdoIn Write-Host " IO Inputs PDO expanded" } else { Write-Host " WARN: IO Inputs PDO pattern not found" } # 2. Expand empty IO Outputs PDO (0x1608) $oldPdoOut = '' $newPdoOut = @" ARRAY [0..1023] OF BYTE "@ if ($content -match [regex]::Escape($oldPdoOut)) { $content = $content -replace [regex]::Escape($oldPdoOut), $newPdoOut Write-Host " IO Outputs PDO expanded" } else { Write-Host " WARN: IO Outputs PDO pattern not found" } # 3. Fix SM lengths $sm2_old = '001c00006400000003000000000000000000001c64010000' $sm2_new = '001c00040000000003000000000000000000001c64010000' # ^^^^ len=0x0400 (1024) if ($content -match [regex]::Escape($sm2_old)) { $content = $content -replace [regex]::Escape($sm2_old), $sm2_new Write-Host " SM2 length fixed to 1024" } else { Write-Host " SM2: pattern not found (may already be correct)" } $sm3_old = '008e02002000010004000000000000000200008e20010000' $sm3_new = '008e02040000010004000000000000000200008e20010000' # ^^^^ len=0x0400 (1024) if ($content -match [regex]::Escape($sm3_old)) { $content = $content -replace [regex]::Escape($sm3_old), $sm3_new Write-Host " SM3 length fixed to 1024" } else { Write-Host " SM3: pattern not found (may already be correct)" } [System.IO.File]::WriteAllText($Tsproj, $content, [System.Text.Encoding]::UTF8) Write-Host "=== tsproj PDO fix complete ==="