ParamManagerScripts/backend/script_groups/ObtainIOFromProjectTia/.doc/importer.py

59 lines
2.3 KiB
Python

import os
import sys
# Use TIA Scripting via file import (Only if TIA Scripting is not installed as package)
# need to set a global environment variable “TIA_SCRIPTING” with path containing TIA Scripting binaries
if os.getenv('TIA_SCRIPTING') == None:
# if TIA_SCRIPTING global environment variable is not set
# set local variable with the path to TIA Scripting binaries
tia_scripting_directory = "C:\\your\\path\\to\\tia-scripting-python"
sys.path.append(tia_scripting_directory)
else:
# TIA_SCRIPTING global environment variable is set and will be used for import
sys.path.append(os.getenv('TIA_SCRIPTING'))
try:
# import TIA Scripting binaries
# if TIA Scripting is installed as package, global environment variable will be ignored
import siemens_tia_scripting as ts
except ImportError:
# you will run into ImportError also if you are using Python version which is not 3.12.X
print("siemens_tia_scripting could not be found")
sys.exit(0)
portal_mode_ui = True
keep_tia_portal = False
project_file_path = "D:\\TiaScripting\\PLC_ImportAll\\PLC_ImportAll.ap17"
import_root_dir = "D:\\TiaScripting\\Export"
version = "17.0"
if portal_mode_ui == True:
portal = ts.open_portal(ts.Enums.PortalMode.WithGraphicalUserInterface, version = version)
print("- open/attach tia portal with ui")
else:
portal = ts.open_portal(ts.Enums.PortalMode.WithoutGraphicalUserInterface, version = version)
print("- open/attach tia portal without ui")
project = portal.open_project(project_file_path = project_file_path)
print("- open project")
plcs = project.get_plcs()
for plc in plcs:
try: plc.import_software_units(import_root_directory= import_root_dir + "\\SoftwareUnits")
except: pass
plc.import_data_types(import_root_directory= import_root_dir + "\\PlcDataTypes")
plc.import_technology_objects(import_root_directory= import_root_dir + "\\TechnologyObjects")
plc.import_blocks(import_root_directory= import_root_dir + "\\ProgramBlocks")
plc.import_plc_tags(import_root_directory= import_root_dir + "\\PlcTags")
plc.import_watch_tables(import_root_directory= import_root_dir + "\\WatchAndForceTables")
if keep_tia_portal == "False":
portal.close_portal()
print("- close tia portal")
if keep_tia_portal == "True":
print("- keep tia portal")
sys.exit(0)