ParamManagerScripts/backend/script_groups/ObtainIOFromProjectTia/test_simatic_sd_compatibili...

71 lines
2.4 KiB
Python

"""
Test script to verify SIMATIC SD compatibility detection
"""
import os
import sys
# --- TIA Scripting Import Handling ---
if os.getenv("TIA_SCRIPTING"):
sys.path.append(os.getenv("TIA_SCRIPTING"))
try:
import siemens_tia_scripting as ts
print("✓ TIA Scripting import successful")
print(
f"Available programming languages: {[lang for lang in dir(ts.Enums.ProgrammingLanguage) if not lang.startswith('_')]}"
)
print(
f"Available export formats: {[fmt for fmt in dir(ts.Enums.ExportFormats) if not fmt.startswith('_')]}"
)
print(
f"Available block types: {[bt for bt in dir(ts.Enums.BlockType) if not bt.startswith('_')]}"
)
# Check if SIMATIC SD is available
try:
simatic_sd_format = ts.Enums.ExportFormats.SimaticSD
print(f"✓ SIMATIC SD format available: {simatic_sd_format}")
except AttributeError:
print("✗ SIMATIC SD format NOT available in this TIA Scripting version")
except ImportError as e:
print(f"✗ Failed to import TIA Scripting: {e}")
print(
"This is expected if TIA Portal is not installed or TIA_SCRIPTING env var not set"
)
def analyze_simatic_sd_requirements():
"""Analyze and display SIMATIC SD requirements"""
print("\n=== SIMATIC SD FORMAT REQUIREMENTS ===")
print("Based on official Siemens documentation:")
print()
print("✓ SUPPORTED:")
print(" • Programming Language: LAD (Ladder) ONLY")
print(
" • Block Types: FB (Function Block), FC (Function), OB (Organization Block)"
)
print(" • TIA Portal Version: V20 or later")
print(" • Target PLCs: S7-1200, S7-1500")
print()
print("✗ NOT SUPPORTED:")
print(" • SCL (Structured Control Language)")
print(" • STL (Statement List)")
print(" • FBD (Function Block Diagram)")
print(" • Graph programming")
print(" • CFC (Continuous Function Chart)")
print(" • Complex LAD elements (some advanced functions)")
print()
print("📋 COMMON CAUSES FOR XML-ONLY EXPORT:")
print(" 1. Block programmed in SCL/STL/FBD instead of LAD")
print(" 2. Block contains unsupported LAD elements")
print(" 3. Block is not compiled/consistent")
print(" 4. TIA Portal version < V20")
print(" 5. Wrong block type (not FB/FC/OB)")
if __name__ == "__main__":
analyze_simatic_sd_requirements()