loading...

Python w e!COCKPIT – jak to działa? – cześć 2

W pracy automatyka ważne jest, żeby odpowiednio zorganizować sobie pracę: środowisko programistyczne, biurko, warsztat etc.


Dzięki temu można szybciej i wydajniej pracować. Warto również zastanowić się nad wyborem i nauką narzędzi, które pozwolą nam w przyszłości zaoszczędzić sporo czasu przy realizacji projektów. Skrypty w Python są właśnie takim narzędziem w środowisku e!COCKPIT.

Za pomocą skryptów Python w e!COCKPIT można zrealizować wiele zadań, np. otworzyć nowy projekt, zaimportować POU (jednostki organizacyjne oprogramowania), nawiązać lub rozłączyć połączenie z danym sterownikiem (login, logout), wgrać program do pamięci sterownika, wpisać określone wartości do określonych zmiennych, czy zapisać projekt. W tym artykule skoncentruję się na opisie przykładowych skryptów w Python używając dostępnego API (Application Programming Interface) przygotowanego dla oprogramowania e!COCKPIT. Między innymi są dostępne tutaj dwie klasy:

Przykłady użycia klas e_projects oraz e_device_catalog:

e_projects:

project = e_projects.create_new_project()
 # Tworzy nowy projekt

e_device_catalog:

# Pobiera daną wersję urządzenia z katalogu produktów

deviceTypes = e_device_catalog.find_device_type(“0750-8202”, „1.4.5.1204″)
#Jeżeli urządzenie o numerze katalogowym zostało znalezione, w tym wypadku jest #urządzenie o numerze katalogowym „ 0750-8202„ , to urządzenie w wersji „1.4.5.1204“ jest #dodawane do projektu
deviceTypes = e_device_catalog.find_device_type(“0750-8202“, „LATEST”)

# Jeżeli urządzenie „ 0750-8202„ zostało znalezione, to do projektu zostaje dodane urządzenie z najnowszej wersji

deviceTypes = e_device_catalog.find_device_type(“PFC100”, “LATEST”)
#Pobiera listę wszystkich sterowników PFC100 z najnowszymi opisami urządzeń

Przykładowe skrypty

1) Tworzenie nowego projektu w e!COCKPIT oraz zapisywanie go na pulpicie

# -*- coding: utf-8 -*-
# powyższy komentarz jest wymagany jeżeli w skrypcie znajdują się jakiekolwiek
# znaki inne niż znaki ASCII

# zaimportuj moduł os
import os

# e!COCKPIT: Utwórz nowy projekt
 projekt = e_projects.create_new_project()

# wyświetl wersję kompilatora projektu
print("The compiler version of the project is {0}".format(projekt.compiler_version))

# Zapisz nowopowstały projekt e!COCKPIT na pulpicie
 pulpit = os.path.join(os.path.join(os.environ['USERPROFILE']), 'Desktop\\Projekt_1.ecp')
 projekt.save_as(pulpit)

# Zapisz projekt, jeżeli został zmieniony
 projekt.save()

2) Dodawanie do projektu w e!COCKPIT trzech urządzeń z najnowszym opisem

# -*- coding: utf-8 -*-
# powyższy komentarz jest wymagany jeżeli w skrypcie znajdują się jakiekolwiek
# znaki inne niż znaki ASCII

# zaimportuj moduł os
import os

# e!COCKPIT: Utwórz nowy projekt
projekt = e_projects.create_new_project()

# -*- coding: utf-8 -*-
# powyższy komentarz jest wymagany jeżeli w skrypcie znajdują się jakiekolwiek
# znaki inne niż znaki ASCII

# zaimportuj moduł os
import os

# e!COCKPIT: Utwórz nowy projekt
project = e_projects.create_new_project()

# wyświetl wersję kompilatora projektu
print("The compiler version of the project is {0}".format(project.compiler_version))

# Zapisz nowopowstały projekt e!COCKPIT na pulpicie
desktop = os.path.join(os.path.join(os.environ['USERPROFILE']), 'Desktop\\e!Cpython\\MyProject.ecp')
project.save_as(desktop)

# Zapisz projekt, jeżeli został zmieniony
project.save()

'''
 Jeżeli urządzenie o numerze katalogowym zostało znalezione, w tym wypadku jest
 urządzenie o numerze katalogowym „ 0750-8202„ , to urządzenie w wersji "3.0.1.0"
 dodawane jest do projektu
'''
 deviceTypes = e_device_catalog.find_device_type("0750-8202", "3.0.1.0")

# Odczytaj pewne właściwości
for deviceType in deviceTypes:
 print("Found device type: " + str(deviceType.name) + " id: " + str(deviceType.id) + " version: " + str(deviceType.version) + " order number: " + str(deviceType.order_number) + " vendor: " + str(deviceType.vendor))

# pobierz tyb urządzenia z katalogu produktów w e!COCKPIT
 deviceTypes = e_device_catalog.find_device_type("0750-8202", "LATEST")
 # dodaj trzy instancje danego typu urządzenia do projektu
 devices = project.add_device(deviceTypes[0], 3)

3. Nadawanie sterownikom w projekcie odpowiednich adresów IP

# -*- coding: utf-8 -*-
 # powyższy komentarz jest wymagany jeżeli w skrypcie znajdują się jakiekolwiek
 # znaki inne niż znaki ASCII

# zaimportuj moduł os
 import os

# e!COCKPIT: Utwórz nowy projekt
 project = e_projects.create_new_project()

# wyświetl wersję kompilatora projektu
 print("The compiler version of the project is {0}".format(project.compiler_version))

# Zapisz nowopowstały projekt e!COCKPIT na pulpicie
 desktop = os.path.join(os.path.join(os.environ['USERPROFILE']), 'Desktop\\e!Cpython\\MyProject.ecp')
 project.save_as(desktop)

# Zapisz projekt, jeżeli został zmieniony
 project.save()
 '''
 Jeżeli urządzenie o numerze katalogowym zostało znalezione, w tym wypadku jest
 urządzenie o numerze katalogowym „ 0750-8202„ , to urządzenie w wersji "3.0.1.0"
 dodawane jest do projektu
 '''
 deviceTypes = e_device_catalog.find_device_type("0750-8202", "3.0.1.0")

# Odczytaj pewne właściwości
 for deviceType in deviceTypes:
 print("Found device type: " + str(deviceType.name) + " id: " + str(deviceType.id) + " version: " + str(deviceType.version) + " order number: " + str(deviceType.order_number) + " vendor: " + str(deviceType.vendor))
 # pobierz tyb urządzenia z katalogu produktów w e!COCKPIT
 deviceTypes = e_device_catalog.find_device_type("0750-8202", "LATEST")
 # dodaj trzy instancje danego typu urządzenia do projektu
 devices = project.add_device(deviceTypes[0], 3)

# e!COCKPIT: Ustaw odpowiednie adresy IP dla trzech sterowników
 #rozpocznij nadawanie adresów IP od adresu 192.168.1.2
 for i in range(0,3):
 devices[i].ip_address = "192.168.1." +str(i+2)

4. Dodawanie modułu o określonym numerze katalogowym do konfiguracji dla jednego sterownika w projekcie

# dodaj moduł 750-1405 do pierwszego urządzenia PLC
 moduleTypes = e_device_catalog.find_device_type("0750-1405", "LATEST")
 modules = devices[0].add_module(moduleTypes[0], 0, 1)

# dodaj moduł 750-1505 do pierwszego urządzenia PLC
 moduleTypes = e_device_catalog.find_device_type("0750-1505", "LATEST")
 modules = devices[0].add_module(moduleTypes[0], 1, 1)

5. Dodawanie różnych modułów do konfiguracji sterownika. W tym przypadku dodawanie modułów do trzech sterowników.

# dodawanie modułów o odpowiednim numerze katalogowym
 moduleDI = e_device_catalog.find_device_type("0750-1405", "LATEST")
 moduleDO = e_device_catalog.find_device_type("0750-1505", "LATEST")
 moduleAI_TC = e_device_catalog.find_device_type("0750-0469/0003-0000", "LATEST")
 moduleAI = e_device_catalog.find_device_type("0750-0467", "LATEST")
 moduleAO = e_device_catalog.find_device_type("0750-0550", "LATEST")

# dodanie modułów do pierwszego PLC
 modules = devices[0].add_module(moduleDI[0], 0, 1)
 modules = devices[0].add_module(moduleDO[0], 1, 1)
 modules = devices[0].add_module(moduleAI_TC[0], 2, 1)
 modules = devices[0].add_module(moduleAI[0], 3, 1)
 modules = devices[0].add_module(moduleAO[0], 4, 1)

# dodanie modułów do drugiego PLC
 modules = devices[1].add_module(moduleDI[0], 0, 1)
 modules = devices[1].add_module(moduleDO[0], 1, 1)
 modules = devices[1].add_module(moduleAI_TC[0], 2, 1)
 modules = devices[1].add_module(moduleAI[0], 3, 1
 modules = devices[1].add_module(moduleAO[0], 4, 1)

# dodanie modułów do trzeciego PLC
 modules = devices[2].add_module(moduleDI[0], 0, 1)
 modules = devices[2].add_module(moduleDO[0], 1, 1)
 modules = devices[2].add_module(moduleAI_TC[0], 2, 1)
 modules = devices[2].add_module(moduleAI[0], 3, 1)
 modules = devices[2].add_module(moduleAO[0], 4, 1)

6. Skrócenie ostatniej operacji dzięki pętli for w Python

# dodawanie modułów o odpowiednim numerze katalogowym
 moduleDI = e_device_catalog.find_device_type("0750-1405", "LATEST")
 moduleDO = e_device_catalog.find_device_type("0750-1505", "LATEST")
 moduleAI_TC = e_device_catalog.find_device_type("0750-0469/0003-0000", "LATEST")
 moduleAI = e_device_catalog.find_device_type("0750-0467", "LATEST")
 moduleAO = e_device_catalog.find_device_type("0750-0550", "LATEST")
# przypisz moduły do wszystkich PLC z wykorzystaniem pętli for
 for j in range(0,3):
 modules = devices[j].add_module(moduleDI[0], 0, 1)
 # |--Ilość --> Uwaga: Dodatkowe moduły zostaną dodane na końcu każdego węzła
 # |--pozycja slotu
 modules = devices[j].add_module(moduleDO[0], 1, 1)
 modules = devices[j].add_module(moduleAI_TC[0], 2, 1)
 modules = devices[j].add_module(moduleAI[0], 3, 1)
 modules = devices[j].add_module(moduleAO[0], 4, 1)

Maciej Kurantowicz, WAGO.PL

Część pierwsza: 

Skrypty w Python dla e!COCKPIT – cześć 1


Komentarze o ”Python w e!COCKPIT – jak to działa? – cześć 2

  1. migaw napisał(a):

    Gdzie jest dokumentacja python Api dla e!cockpit?

    1. WAGO.PL napisał(a):

      Do dyspozycji są następujące materiały, które instalują się wraz z e!COCKPITEM:

      Przykładowe skrypty Python znajdujące się w poniższej lokalizacji:
      C:\ProgramData\WAGO Software\e!COCKPIT\SampleApplications\Python Scripting

      Pomoc odnośnie skryptów Python:
      C:\Program Files (x86)\WAGO Software\e!COCKPIT\3S CODESYS\CODESYS\Online Help\en

      e!Cockpit bazuje na Codesys 3 w związku z tym warto korzystać z forum producenta odnośnie skryptów w Python:
      https://forum.codesys.com/viewforum.php?f=18

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *