Kontaktné údaje
- info@ipesoft.com
- +421 907 703 854
- Obchodná 9076/3D
010 08 Žilina
Slovensko
© Copyright IPESOFT 2023
Môže upgrade D2000 pomôcť aj vašim komunikáciám? Dá sa niečo na nich vylepšiť alebo zjednodušiť? Tento blog popisuje nedávnu situáciu z reálneho života.
Prednedávnom sme upgradovali menší riadiaci systém (do 10 tisíc tagov). Z D2000 verzie 10.0.37 (prvý build tejto verzie bol vydaný v októbri 2014) sme prechádzali na najnovšiu verziu 22.0.74. V aplikácii sa nachádzali komunikácie s PLC firmy Rockwell (CompactLogix) a firmy Schneider (Modicon Telemecanique).
Obidve komunikácie boli realizované pomocou OPC serverov – Rockwell RSLinx a Modicon OPC Factory Server. Pri upgrade sa zároveň menil aj hardvér – nová verzia sa inštalovala na nové servery Dell PowerEdge R350. V prípade Rockwell RSLinx by bolo možné existujúcu licenciu premigrovať na nový server, v prípade Modicon OPC servera by bolo nutné zakúpiť novú licenciu.
My sme vyskúšali inú cestu – premigrovali sme tieto komunikácie bez použitia OPC serverov. Použili sme komunikačné protokoly, ktoré D2000 KOM proces priamo podporuje. Prečo sme sa takto rozhodli? Jednak bolo cenovo výhodnejšie použiť protokoly zabudované do D2000 – ich cena pre zákazníka bola nižšia ako cena OPC serverov. A v budúcnosti sme ušetrili práce spojené s inštalovaním prípadných záplat a bezpečnostných opráv OPC serverov. Navyše, pokiaľ by bolo potrebné vytvoriť redundantný systém pridaním ďalšieho servera, nie sú nutné dodatočné náklady spojené s nákupom, inštaláciou a konfiguráciou OPC serverov. V prípade, že by zákazník uvažoval o migrácii na Linux, vieme spraviť aj toto – potrebné protokoly máme k dispozícii aj na platforme Linux (na rozdiel od OPC komunikácie, ktorá vyžaduje Windows). A nakoniec – všetky zdrojové kódy implementovaných komunikačných protokolov máme v rukách, takže dokážeme vykonávať opravy prípadných chýb alebo podľa potreby komunikačné protokoly rozširovať.
Migrácia bola pomerne rýchla a bezproblémová. Takže ako sme na to išli?
O rozbiehaní komunikácie s CompactLogix sme už v minulosti písali v inom blogu. Konfigurácia linky a stanice bola jednoduchá. Najskôr sme vytvorili linku typu TCP/IP-TCP a zadali na nej IP adresu CompactLogixu a štandardný Ethernet/IP port 44818.
Následne sme na tejto linke vytvorili stanicu s komunikačným protokolom Ethernet/IP. V záložke Time parameters sme nastavili interval medzi čítaniami hodnôt na jednu sekundu. V záložke Protocol parameters sme nechali všetko na prednastavených hodnotách.
V ďalšom kroku bolo nutné všetky merané body (niekoľko sto) presunúť z pôvodnej OPC stanice na novovytvorenú stanicu. Toto je možné pomocou XML exportu/importu alebo CSV exportu/importu. My sme použili XML export, následne sme zmenili v XML súbore rodiča na novú stanicu a išli sme robiť XML import. Okrem toho bolo ešte nutné zmeniť adresu meraných bodov. Aby sme to nerobili ručne (pre niekoľko sto bodov), zmenili sme ich ešte pred XML importom.
V OPC komunikácii bola adresa v tvare [PLC_ID]Symbolic_name, viď nasledujúci obrázok:
Keďže OPC server slúži pre komunikáciu s viacerými PLC, pomocou prefixu [PLC_ID] sa identifikuje konkrétne PLC a pomocou Symbolic_name konkrétna hodnota v PLC.
V konfigurácii pre Ethernet/IP protokolu vidíme síce oveľa väčší dialóg, ale jediné, čo je vyplnené, je symbolické meno:
V aplikačnom serveri reálneho času Ipesoft D2000 sa adresa meraného bodu vnútorne ukladá ako dva textové reťazce.
Porovajme si nasledujúce dva obrázky – textová reprezentácia pôvodnej OPC adresy a adresy v Ethernet/IP protokole pre konkrétny meraný bod:
Vidíme, že v prvej adrese je nutné nahradiť prefix „[PLC2]” prefixom “S=” a doplniť bodkočiarku na konci. Druhú adresu je nutné vyčistiť.
Na takéto jednoduché operácie typu nájdi/nahraď nad viacerými XML súbormi v jednom adresári používame utilitu rxfind. Okrem jednoduchej náhrady textov vie pracovať aj s regulárnymi výrazmi.
Nahradenie prefixu „[PLC2]” (parameter /B:2 spôsobí, že nevznikajú zálohy pôvodných XML súborov):
rxfind.exe *.xml /B:2 "/P:\[PLC2\]" "/R:S="
Spätné lomítka sú nutné kvôli potlačeniu špeciálneho významu hranatých zátvoriek v regulárnych výrazoch.
Pridanie bodkočiarky na koniec prvej adresy:
rxfind.exe *.xml /B:2 "/P:</PointAddress1>" "/R:;</PointAddress1>"
Zmena rodiča zo stanice B.PLC2n na stanicu PLC_DT1:
rxfind.exe *.xml /B:2 "/P:<ParentId>B.PLC2n</ParentId>" "/R:<ParentId>PLC_DT1</ParentId>"
Následne sme všetky merané body naimportovali. Pri XML importe teda došlo jednak ku zmene rodiča a jednak k zmene adresy meraných bodov. Všetky ostatné väzby (umiestnenie v schémach, pripojenie v štruktúrovaných premenných, archivácia) zostali zachované.
Táto migrácia bola veľmi podobná. Modicon PLC používajú natívne Modbus TCP protokol. Takže najskôr sme vytvorili linky typu TCP/IP-TCP a nakonfigurovali na každej IP adresu PLC a štandardný Modbus port 502. Keďže bolo potrebné komunikovať s piatimi PLC, bolo nutné vytvoriť päť liniek.
Následne sme na tejto linke vytvorili stanicu s komunikačným protokolom Modbus. V záložke Address sme nastavili adresu na 1 a v záložke Time parameters sme nastavili interval medzi čítaniami hodnôt na jednu sekundu. V záložke Protocol parameters sme nastavili parameter Addressing model na hodnotu „MODBUS data Mode“ – znamená to, že adresy meraných bodov nebudú 0-65535 ale 1-65536. Poskracovali sme aj časové parametre Wait First Timeout a Wait Timeout z 100 ms na 5 ms. Týmto sme dosiahli rýchlejšie spracovanie odpovedí od PLC.
Adresa digitálneho meraného bodu pre Modicon OPC server bola v tvare
MBT:<IP_Address>!%M <memory_address> napríklad MBT:10.102.20.220!%M851
Adresa celočíselného alebo analógového meraného bodu bola v tvare
MBT:<IP_Address>!%MW<memory_address> napríklad MBT:10.102.20.3!%MW200
kde IP_Address je IP adresa PLC a <memory_address> je Modbus adresa meraného bodu.
Pre protokol Modbus potrebujeme takúto adresáciu:
• vstupné digitálne merané body sú v tvare 1.<memory_address>, napr. 1.109 (syntax znamená, že na čítanie sa použije funkcia 1=Read Coils)
• vstupno-výstupné digitálne merané body sú v tvare 1-5.<memory_address>, napr. 1-5.10 (syntax znamená, že na zápis sa použije funkcia 5=Write Single Coil)
• vstupné celočíselné a analógové merané body sú v tvare I3.<memory_address>, napr. I3.20 (syntax znamená, že na čítanie sa použije funkcia 3=Read Holding Registers a dvojbajtová hodnota sa interpretuje ako celé číslo so znamienkom - Integer)
• vstupno-výstupné celočíselné a analógové merané body sú v tvare I3-6.<memory_address>, napr. I3-6.21 (syntax znamená, že na zápis sa použije funkcia 6=Write Single Register)
IP adresa PLC nie je súčasťou adresy meraného bodu, keďže je zadávaná na úrovni komunikačnej linky.
Nasledujúce dva obrázky ukazujú adresu konkrétneho vstupno-výstupného celočíselného meraného bodu s OPC adresou a Modbus adresou.
Postup prerábky meraných bodov bol teda podobný prerábke pre komunikáciu s CompactLogix PLC. Tentokrát sme ale pre zmenu použili CSV export a import. Exporty sme robili postupne pre rôzne typy meraných bodov – najskôr pre digitálne vstupy, potom pre digitálne výstupy, následne celočíselné/analógové vstupy a nakoniec celočíselné/analógové výstupy. Na nahradzovanie reťazcov (zmena rodiča, nahradenie prefixu adresy napr. „MBT:10.102.20.3!%MW“ za „I3-6.“ pre celočíselné/analógové výstupy) nám stačil jednoduchý textový editor.
Komunikácia po premigrovaní SCADA systému funguje bezproblémovo. Zákazníka potešilo, že nemusel riešiť inštaláciu dvoch OPC serverov a že sa následne o ne nebude musieť starať a aplikovať na ne aktualizácie. Keď sa bude o 8-10 rokov uvažovať o ďalšej generačnej výmene SCADA servera, komunikáciu už zákazník nebude musieť vôbec riešiť. A navyše má voľnosť aj vo výbere operačného systému – môže sa rozhodnúť prejsť z Windows na Linux.
9.11.2022, Ing. Peter Humaj, www.ipesoft.com