Za´padoˇceska´ univerzita v Plzni Fakulta aplikovany´ch vˇed Katedra informatiky a vy´poˇcetn´ı techniky
Diplomov´ a pr´ ace Monitor sbˇ ernice Profibus s HW podporou - SW ˇ c´ ast
Plzeˇ n 2013
Jan Krahulec
Prohl´ aˇ sen´ı Prohlaˇsuji, ˇze jsem diplomovou pr´aci vypracoval samostatnˇe a v´ yhradnˇe s pouˇzit´ım citovan´ ych pramen˚ u. V Plzni dne 13. kvˇetna 2013 Jan Krahulec
Abstract The Profibus Monitor with the HW Support - the SW Part This diploma thesis deals with the question of current fieldbuses with an emphasis on the Profibus (especially its PA variant). The modern fieldbuses are introduced and briefly described in the first part of the thesis. Profibus PA is described more in detail because it is an important part of the practical realization. The applied hardware is closely described in the next part. Two units are used: FintT410 from the Norwegian company Fieldbus International AS (it implements the interface between protocols Ethernet and Profibus PA) and FNL (Fieldbus Network Link) from German company COMSOFT (it implements the interface between protocols Profibus PA and Modbus). The very realization of the practical part follows. At first, the communication chain was created from the units mentioned above. At second, the application, which captures data from Profibus and filters this data appropriately, was implemented. The graphical user interface with the option of some parameters configuration is the part of the application.
Obsah ´ 1 Uvod
1
2 Pr˚ umyslov´ e sbˇ ernice 2.1 Modbus . . . . . . . . . . . . . . . 2.1.1 Obecn´e informace . . . . . . 2.1.2 Vys´ılac´ı reˇzimy . . . . . . . 2.1.3 Typy dat a z´akladn´ı funkce 2.2 Profibus . . . . . . . . . . . . . . . 2.2.1 Obecn´e informace . . . . . . 2.2.2 Profibus PA . . . . . . . . . 3 Hardwarov´ e vybaven´ı 3.1 Popis komunikace mezi moduly . 3.2 Fieldbus Network Link (FNL) . . 3.2.1 Rozhran´ı Dual-Port RAM 3.2.2 Knihovn´ı funkce . . . . . . 3.3 FintPROFI T410 . . . . . . . . . 3.3.1 Popis . . . . . . . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
2 . 4 . 4 . 4 . 6 . 8 . 8 . 11
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
16 17 18 19 22 29 29
4 Realizace monitoru sbˇ ernice Profibus PA ´ 4.1 Uvod . . . . . . . . . . . . . . . . . . . . . 4.2 N´avrh aplikace . . . . . . . . . . . . . . . 4.3 Aplikace - ˇreˇsen´ı . . . . . . . . . . . . . . . 4.3.1 Start aplikace . . . . . . . . . . . . 4.3.2 Naˇcten´ı GSD souboru . . . . . . . 4.3.3 Pˇripojen´ı a inicializace spojen´ı . . . 4.3.4 Zad´an´ı adresy . . . . . . . . . . . . 4.3.5 Zmˇena parametr˚ u. . . . . . . . . . ˇ ı dat . . . . . . . . . . . . . . 4.3.6 Cten´ 4.3.7 Otestov´an´ı aplikace . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
32 32 32 34 34 35 37 40 40 44 51
. . . . . .
. . . . . .
. . . . . .
. . . . . .
5 Z´ avˇ er
52
6 Pˇ rehled zkratek
53
Literatura
54
A Pˇ r´ılohy A.1 Uˇzivatelsk´a pˇr´ıruˇcka . . . . . . . . . . . . . . . . A.1.1 Spuˇstˇen´ı programu a naˇcten´ı GSD souboru A.1.2 Pˇripojen´ı k jednotce a naˇcten´ı adresy . . . A.1.3 Nastavov´an´ı parametr˚ u. . . . . . . . . . . A.1.4 Cyklick´a komunikace . . . . . . . . . . . . A.2 GSD soubor . . . . . . . . . . . . . . . . . . . . .
56 57 57 59 61 62 64
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
´ 1 Uvod V souˇcasn´e dobˇe jsou pr˚ umyslov´e sbˇernice ned´ılnou souˇc´ast´ı syst´em˚ u pro sbˇer, distribuci a vyhodnocen´ı dat r˚ uzn´eho informaˇcn´ıho charakteru. S pr˚ umyslov´ ymi sbˇernicemi se m˚ uˇzeme setkat prakticky ve vˇsech technick´ ych odvˇetv´ıch – automobilov´ y pr˚ umysl, stroj´ırenstv´ı, energetika a mnoho dalˇs´ıch. Oproti star´ ym analogov´ ym rozvod˚ um maj´ı pr˚ umyslov´e sbˇernice nˇekolik v´ yhod - mezi ty hlavn´ı patˇr´ı pˇredevˇs´ım moˇznost vyuˇzit´ı star´ ych rozvod˚ u (uˇsetˇren´ı n´aklad˚ u) a tak´e schopnost pˇren´aˇset mnohon´asobnˇe v´ıce dat po jednom veden´ı. Od poˇc´atku 80. let, kdy zaˇcal v´ yvoj pr˚ umyslov´ ych sbˇernic, aˇz do dneˇsn´ı doby vzniklo mnoho pr˚ umyslov´ ych standard˚ u, kter´e byly vytv´aˇreny s ohledem na prostˇred´ı, v nˇemˇz mˇely b´ yt uplatnˇeny. Tato diplomov´a pr´ace se zab´ yv´a modern´ımi pr˚ umyslov´ ymi sbˇernicemi, pˇredevˇs´ım pak sbˇernic´ı Profibus a jej´ı variantou PA. Prvn´ım c´ılem t´eto pr´ace je nastudov´an´ı potˇrebn´ ych informac´ı o sbˇernici Profibus PA, pˇredevˇs´ım pak z´akladn´ı vlastnosti komunikaˇcn´ıho protokolu. Dalˇs´ı f´aze t´eto pr´ace spoˇc´ıv´a v sestaven´ı a oˇziven´ı komunikaˇcn´ıho ˇretˇezce z dostupn´eho hardwaru, jehoˇz hlavn´ı ˇca´st vyuˇz´ıv´a pro komunikaci sbˇernici Profibus PA. Po d˚ ukladn´em zv´aˇzen´ı byly jako hlavn´ı souˇca´sti ˇretˇezce poˇr´ızeny jednotky FintT410 od norsk´e spoleˇcnosti Fieldbus International AS a Fieldbus Network Link od nˇemeck´e spoleˇcnosti COMSOFT. Hlavn´ım t´ematem posledn´ı, ale nejd˚ uleˇzitˇejˇs´ı ˇc´asti pr´ace je vytvoˇren´ı aplikace, kter´a dok´aˇze monitorovat data pˇren´aˇsen´a po sbˇernici Profibus PA. Kromˇe vlastn´ıho zachyt´av´an´ı dat je v aplikaci moˇzn´e nastavovat z´akladn´ı komunikaˇcn´ı parametry tak, aby byl v´ ysledn´ y program co nejv´ıc univerz´aln´ı, ˇcili aby byl kompatibiln´ı i s jin´ ymi zaˇr´ızen´ımi, neˇz jak´a byla pouˇzita v t´eto pr´aci. Souˇca´st´ı vytvoˇren´e aplikace je tak´e uˇzivatelsk´e rozhran´ı, jeˇz umoˇzn ˇuje uˇzivateli jednoduch´ y a intuitivn´ı pˇr´ıstup ke konfiguraci a vlastn´ım pˇren´aˇsen´ ym dat˚ um.
1
2 Pr˚ umyslov´ e sbˇ ernice Pr˚ umyslov´e sbˇernice jsou digit´aln´ı s´eriov´e sbˇernice, kter´e zajiˇst’uj´ı s´ıt’ovou komunikaci v pr˚ umyslov´ ych provozech, pˇredevˇs´ım pak slouˇz´ı ke komunikaci mezi inteligentn´ımi zaˇr´ızen´ımi. Zaˇca´tek v´ yvoje pr˚ umyslov´ ych sbˇernic sah´a do ran´ ych 80. let, kdy vznikla potˇreba nahradit starˇs´ı analogov´e rozvody, u kter´ ych byly vysok´e n´aroky na reˇzii. [8] V n´asleduj´ıc´ım textu budou struˇcnˇe pops´any souˇcasn´e nejpouˇz´ıvanˇejˇs´ı sbˇernice, v dalˇs´ım textu jsou pak podrobnˇe pops´any sbˇernice Modbus a Profibus, nebot’ jejich podrobnˇejˇs´ı popis je pro tuto pr´aci zcela z´asadn´ı. Mezi souˇcasn´e nejpouˇz´ıvanˇejˇs´ı sbˇernice patˇr´ı: • FOUNDATION Fieldbus: Protokol byl vyv´ıjen od roku 1970, jako standard byl pˇrijat o 30 let pozdˇeji. Jedn´a se o ˇc´ıslicovou sbˇernici s poloduplexn´ım s´eriov´ ym pˇrenosem, kter´a byla navrˇzena tak, aby byly zachov´any z´akladn´ı v´ yhody analogov´ ych syst´em˚ u s proudovou smyˇckou 4 - 20 mA, ˇcili aby bylo moˇzn´e pˇri instalaci zachovat p˚ uvodn´ı kabel´aˇz. Pro pomal´ y pˇrenos dat v segmentech H1 je jako m´edium pouˇzita kroucen´a dvojlinka, pˇrenosov´a rychlost je 31,25 kb/s. Vysokorychlostn´ı pˇrenos je realizov´an na b´azi rychl´eho Ethernetu, pˇrenosov´a rychlost je 100 Mb/s.[8][12] • ControlNET: Sbˇernice, kter´a umoˇzn ˇuje uˇzivatel˚ um sd´ılet data prostˇrednictv´ım protokolu CIP (Common Industrial Protocol) - tento protokol vyuˇz´ıvaj´ı t´eˇz s´ıtˇe EtherNet/IP, DeviceNet a CompoNet. ControlNet umoˇzn ˇuje realizovat vysokorychlostn´ı pˇrenos ˇcasovˇe kritick´ ych vstupn´ıch a v´ ystupn´ıch dat a souˇcasnˇe i upload a download program˚ u, pˇrenos nastaven´ı parametr˚ u a zas´ıl´an´ı zpr´av peer-to-peer jedn´ım jednoduch´ ym nebo zdvojen´ ym (redundantn´ım) fyzik´aln´ım m´ediem. V dneˇsn´ı dobˇe je souˇca´st´ı sdruˇzen´ı ODVA (Open DeviceNet Vendors Association)[9] • HART (Highway Addressable Remote Transducer): Sbˇernice HART umoˇzn ˇuje digit´aln´ı pˇrenos dat po analogov´e proudov´e smyˇcce 4 - 20 mA, ˇcili souˇcasn´ y pˇrenos digit´aln´ıch a analogov´ ych dat. Kaˇzd´e zaˇr´ızen´ı, kter´e implementuje protokol HART m˚ uˇze kromˇe vlastn´ı namˇeˇren´e hodnoty poskytovat tak´e napˇr. statistick´e vyhodnocen´ı efektivity v´ yrobn´ıho procesu, pl´anov´an´ı u ´drˇzby, d´alkovou diagnostiku z´avad, nastaven´ı a kalibraci pˇr´ıstroj˚ u. Komunikace mezi nadˇrazen´ ymi syst´emy 2
Pr˚ umyslov´e sbˇernice a procesn´ımi zaˇr´ızen´ımi je typu master - slave, data jsou pˇren´aˇsena konstantn´ı rychlost´ı 1200 b/s.[10] • CAN (Controller Area Network): CAN je s´eriov´ y komunikaˇcn´ı protokol, vyvinut´ y firmou Bosh (p˚ uvodnˇe pro nasazen´ı v automobilech), kter´ y umoˇzn ˇuje distribuovan´e ˇr´ızen´ı syst´em˚ u v re´aln´em ˇcase s pˇrenosovou rychlost´ı do 1Mbit/s a vysok´ ym stupnˇem zabezpeˇcen´ı pˇrenosu proti chyb´am. Jedn´a se o protokol typu multi-master, kdy kaˇzd´a stanice m˚ uˇze pˇrevz´ıt ˇr´ıd´ıc´ı u ´lohu na sbˇernici (komunikace je tak velmi bezpeˇcn´a, protoˇze po v´ ypadku jedn´e stanice m˚ uˇze pˇrevz´ıt ˇr´ızen´ı jin´a). Komunikace mezi zaˇr´ızen´ımi prob´ıh´a pomoc´ı zpr´av, kter´e jsou pˇrij´ım´any vˇsemi uzly na sbˇernici (neobsahuj´ı adresu, pouze identifik´ator d˚ uleˇzitosti zpr´avy). Jednotliv´e uzly mohou zpr´avy filtrovat podle identifik´atoru.[11]
3
Pr˚ umyslov´e sbˇernice
2.1
Modbus
Modbus
Protoˇze je protokol Modbus implementov´an v jednotce T410, kter´a je souˇca´st´ı syst´emu pouˇzit´eho v t´eto diplomov´e pr´aci, je urˇcitˇe na m´ıstˇe uv´est z´akladn´ı informace o tomto protokolu.
2.1.1
Obecn´ e informace
Modbus je otevˇren´ y protokol, kter´ y funguje na principu komunikace klient (slave) - server (master). Na sbˇernici je vˇzdy pˇr´ıtomen jeden server a jeden nebo v´ıce klient˚ u. Protokol byl vyvinut firmou Modicon v roce 1979 pro vyuˇzit´ı v programovateln´ ych logick´ ych automatech (PLC). Jednalo se o otevˇren´ y standard, kter´ y definoval pouze strukturu pˇrenosu zpr´av, fyzickou vrstvu bylo moˇzn´e dodefinovat v z´avislosti na podm´ınk´ach, v kter´ ych mˇel b´ yt protokol vyuˇzit. Mezi hlavn´ı pˇrednosti standardu Modbus patˇr´ı jistˇe jeho jednoduchost, s ˇc´ımˇz je spojen´a i moˇznost snadn´e implementace.[13][14]
2.1.2
Vys´ılac´ı reˇ zimy
Protokol Modbus definuje dva z´akladn´ı vys´ılac´ı reˇzimy: • Modbus RTU, • Modbus ASCII
Modbus RTU Pokud je zaˇr´ızen´ı nastaveno do m´odu RTU (Remote Terminal Unit), kaˇzd´ ych 8 bit˚ u zpr´avy obsahuje 2 4-bitov´e znaky. Oproti ASCII m´odu jsou pˇren´aˇsen´a data v´ıce nahuˇstˇena a t´ım p´adem doch´az´ı k pˇrenesen´ı vˇetˇs´ıho objemu dat za stejn´e rychlosti (baudrate). Na obr´azku 2.1 je zn´azornˇena struktura Modbus RTU r´amce, v tabulce 2.2 jsou pak jednotliv´e poloˇzky pops´any.[13][14]
4
Pr˚ umyslov´e sbˇernice
Modbus
Obr´azek 2.1: Struktura Modbus RTU r´amce N´azev V´ yznam Zaˇ c´ atek, Konec Indikace zaˇca´tku i konce r´amce je v reˇzimu RTU stejn´a a jde o sekvenci klidu na sbˇernici, kter´a mus´ı m´ıt d´elku minim´alnˇe 3,5 znaku. Adresa Adresa c´ılov´eho zaˇr´ızen´ı (0: Broadcast, 1 - 247: Adresa konkr´etn´ıho zaˇr´ızen´ı, 248 - 255: Rezervov´ano). Funkce K´od pouˇzit´e funkce (ˇcten´ı, z´apis, viz d´ale). Data Poˇzadovan´a data (v z´avislosti na pouˇzit´e funkci, mohou b´ yt i pr´azdn´a). CRC Kontroln´ı CRC souˇcet na b´azi polynomu x16 +x15 +x2 + 1. Tabulka 2.1: Struktura Modbus RTU r´amce - v´ yznam poloˇzek Modbus ASCII Na rozd´ıl od m´odu RTU je osmice bit˚ u zpr´avy dek´odov´ana jako dvojice ASCII znak˚ u. V´ yhoda tohoto pˇr´ıstupu je v tom, ˇze mezi odvys´ılan´ ymi znaky m˚ uˇze b´ yt aˇz 1 sekundu dlouh´a prodleva. Obr´azek 2.2 zn´azorˇ nuje strukturu r´amce, tabulka popis jednotliv´ ych poloˇzek.[13][14]
Obr´azek 2.2: Struktura Modbus ASCII r´amce
5
Pr˚ umyslov´e sbˇernice
Modbus
N´azev V´ yznam Zaˇ c´ atek, Konec Zaˇc´atek je indikov´an znakem ’:’, konec pak dvojic´ı ˇr´ıdic´ıch znak˚ u CR a LF, coˇz umoˇzn´ı delˇs´ı prodlevy mezi vys´ılan´ ymi znaky. Adresa Adresa c´ılov´eho zaˇr´ızen´ı (0: Broadcast, 1 - 247: Adresa konkr´etn´ıho zaˇr´ızen´ı, 248 - 255: Rezervov´ano). Funkce K´od pouˇzit´e funkce (ˇcten´ı, z´apis, viz d´ale). Data Poˇzadovan´a data (v z´avislosti na pouˇzit´e funkci, mohou b´ yt i pr´azdn´a). LRC Kontroln´ı LRC (Longitudinal Redundancy Check) souˇcet. Tabulka 2.2: Struktura Modbus ASCII r´amce - v´ yznam poloˇzek
2.1.3
Typy dat a z´ akladn´ı funkce
Kaˇzd´a skupina dat je podle v´ yznamu zaˇrazena do jedn´e ze ˇctyˇr tabulek, kter´e maj´ı sv˚ uj definovan´ y adresn´ı prostor (prostory se mohou pˇrekr´ yvat, ale z d˚ uvodu zpˇetn´e kompatibility se obvykle vol´ı oddˇelen´e prostory, kaˇzd´ y o velikosti 10000 poloˇzek). V tabulce 2.3 jsou uvedeny n´azvy tabulek spolu s typick´ ym rozsahem adres a struˇcn´ ym popisem.[13][14] Tabulka C´ıvky (Coils) Diskr´etn´ı vstupy (Discrete Inputs) Vstupn´ı registry (Input Registers)
Uchov´avac´ı registry (Holding Registers)
Rozsah adres 0 ÷ 9999
Popis Jeden bit (boolean) urˇcen´ y pro ˇcten´ı i z´apis. 10000 ÷ 19999 Jeden bit (boolean) urˇcen´ y pouze ke ˇcten´ı. 30000 ÷ 39999 16-bitov´e registry urˇcen´e pouze pro ˇcten´ı. Typick´e vyuˇzit´ı je reprezentace analogov´ ych vstupn´ıch dat. 40000 ÷ 49999 16-bitov´e registry urˇcen´e pouze ˇcten´ı i z´apis. Tabulka 2.3: Modbus - typ dat
6
Pr˚ umyslov´e sbˇernice
Modbus
Pro ˇcten´ı a z´apis dat jsou definov´any z´akladn´ı funkce, kter´e jsou souˇc´ast´ı r´amce poˇzadavku. Kromˇe tˇechto funkc´ı maj´ı uˇzivatel´e moˇznost tak´e nadefinovat sv´e vlastn´ı funkce. V tabulce 2.4 je uveden v´ yˇcet vˇsech z´akladn´ıch funkc´ı spolu s jejich k´odem a popisem: N´azev funkce K´od Read Coils 01 Read Discrete Inputs 02 Read Holding Registers 03 Read Input Registers 04 Write Single Coil 05 Write Single Register 06 Write Multiple Coils 15 Write Multiple Registers 16
Popis ˇ ı c´ıvek Cten´ ˇ ı diskr´etn´ıch vstup˚ Cten´ u ˇ ı uchov´avac´ıch registr˚ Cten´ u ˇ Cten´ı vstupn´ıch registr˚ u Z´apis jedn´e c´ıvky Z´apis jednoho registru Z´apis v´ıce c´ıvek Z´apis v´ıce registr˚ u
Tabulka 2.4: Modbus - funkce ˇ ı uchoNa obr´azku 2.3 je pro ilustraci zn´azornˇeno pˇreˇcten´ı dat funkc´ı Cten´ v´avac´ıch registr˚ u, jeˇz prob´ıh´a na principu poˇzadavek → odpovˇed’:
Obr´azek 2.3: Modbus - ˇcten´ı dat
7
Pr˚ umyslov´e sbˇernice
2.2
Profibus
Profibus
V pˇredch´azej´ıc´ı kapitole t´ ykaj´ıc´ı se Modbusu bylo ˇreˇceno, ˇze je tento protokol implementov´an v jednotce T410, kter´a se chov´a jako Modbus master. Jednotka T410 ovˇsem tak´e implementuje protokol Profibus PA, s jehoˇz vyuˇzit´ım komunikuje s jednotkou FNL (Fieldbus Network Link). Na n´asleduj´ıc´ıch nˇekolika str´ank´ach je nejprve obecnˇe pops´an protokol Profibus a pot´e ponˇekud konkr´etnˇeji Profibus PA spolu s obecn´ ymi principy cyklick´e a acyklick´e komunikace, nebot’ ty jsou pro tuto pr´aci vpravdˇe z´asadn´ı.
2.2.1
Obecn´ e informace
Na u ´vod je tˇreba zm´ınit, ˇze Profibus (Process Field Bus) nen´ı jeden komunikaˇcn´ı syst´em, jedn´a se sp´ıˇse o mnoˇzinu protokol˚ u, kter´e jsou postaveny na stejn´em z´akladu technologie Fieldbus. V´ yhodou tohoto pˇr´ıstupu je, ˇze kaˇzd´a konkr´etn´ı aplikace m˚ uˇze zm´ınˇen´e protokoly kombinovat na z´akladˇe sv´ ych specifick´ ych poˇzadavk˚ u.
Historie Historie Profibusu sah´a do konce osmdes´at´ ych let minul´eho stolet´ı, kdy byla v Nˇemecku vysok´a popt´avka ze strany pr˚ umyslov´ ych spoleˇcnost´ı a vl´ady po standardu pro pr˚ umyslovou automatizaci. V roce 1987 tak spojilo 21 nˇemeck´ ych spoleˇcnost´ı a instituc´ı s´ıly, vznikla skupina Centr´aln´ı asociace pro elektrotechnick´ y pr˚ umysl (ZVEI) a v´ ysledkem jejich snahy bylo vytvoˇren´ı standardu Profibus FMS (Fieldbus Message Specification). V roce 1993 pˇredstavila skupina ZVEI nov´ y standard, Profibus DP (Decentralized Periphery). Hlavn´ı vylepˇsen´ı nov´e verze byla vˇetˇs´ı jednoduchost, moˇznosti snadnˇejˇs´ı konfigurace a rychlejˇs´ı komunikace. Standardy Profibusu jsou udrˇzov´any (a zlepˇsov´any) nˇekolika organizacemi. V roce 1989 zaloˇzili uˇzivatel´e skupinu PROFIBUS User Organization (PNO). C´ılem t´eto nekomerˇcn´ı organizace je pˇredevˇs´ım podpora a vzdˇel´av´an´ı, coˇz zahrnuje napˇr´ıklad uvolˇ nov´an´ı technick´e dokumentace tak, aby uˇzivatel´e mohli vyuˇz´ıvat st´avaj´ıc´ı technologii pro sv´e specifick´e potˇreby. Dalˇs´ı organizace vznikla v roce 1995 pod n´azvem PROFIBUS International (PI), 8
Pr˚ umyslov´e sbˇernice
Profibus
kter´a je nyn´ı nejvˇetˇs´ı Fieldbus asociac´ı na svˇetˇe. C´ıle PI jsou podobn´e jako u PNO, zab´ yv´a se ovˇsem tak´e ovˇeˇrov´an´ım kvality a tvorbou nov´ ych Profibus technologi´ı.[1]
Verze protokolu V souˇcasn´e dobˇe existuj´ı 3 varianty protokolu Profibus[2]: • Profibus-DP pro automatizaci v´ yroby: – pˇrenosov´a rychlost aˇz 12 Mb/s, – linka RS-485 nebo optick´e vl´akno, s urˇcen´ım pro rychlou v´ ymˇenu relativnˇe mal´ ych objem˚ u dat • Profibus-FMS: – pˇrenosov´a rychlost do 500 kb/s, – linka RS-485 nebo optick´e vl´akno, s urˇcen´ım pro vˇetˇs´ı objemy dat – v hierarchii ˇr´ızen´ı pˇredstavuje u ´roveˇ n nad Profibus-DP. • Profibus-PA: – konstantn´ı pˇrenosov´a rychlost 31,25 kb/s, – fyzick´a vrstva podle IEC 61158 (napˇet’ov´ y reˇzim, jiskrov´a bezpeˇcnost).
Architektura Norma Profibus vych´az´ı z modelu ISO/OSI (viz obr´azek 2.4) s t´ım, ˇze z d˚ uvodu ˇcasov´e optimalizace definuje pouze 3 vrstvy - fyzickou, linkovou a aplikaˇcn´ı.
9
Pr˚ umyslov´e sbˇernice
Profibus
Obr´azek 2.4: Profibus - ISO/OSI model Fyzick´ a vrstva se liˇs´ı podle pouˇzit´e varianty protokolu Profibus[3]: 1. RS-485(H2) - Profibus DP/FMS, 2. Optick´ e vl´ akno - Profibus DP/FMS, 3. EC 1158-2 (H1) - Profibus PA. Linkov´ a vrstva, jeˇz je oznaˇcov´ana jako FDL (Fieldbus Data Link) je u vˇsech variant t´emˇeˇr shodn´a. Pˇr´ıstup na sbˇernici je hybridn´ı, jin´ ymi slovy kombinuje klasick´e uspoˇra´d´an´ı master→slave s distribuovan´ ym ˇr´ızen´ım pˇr´ıstupu prostˇrednictv´ım pˇred´av´an´ı povˇeˇren´ı (viz obr´azek 2.5).
10
Pr˚ umyslov´e sbˇernice
Profibus
Obr´azek 2.5: Profibus - pˇr´ıstup na sbˇernici
2.2.2
Profibus PA
Profibus PA je ze zmiˇ novan´ ych variant nejmladˇs´ım standardem (v roce 1996 byl zaˇclenˇen do evropsk´eho standardu EN 50170 Volume 2[4]), ve vˇetˇs´ı m´ıˇre se zaˇcal pouˇz´ıvat aˇz v posledn´ıch letech. V souˇcasn´e dobˇe je aktu´aln´ı verze 3.02. Mezi nejzaj´ımavˇejˇs´ı realizovan´e aplikace vyuˇz´ıvaj´ıc´ı Profibus PA patˇr´ı: • Automatizace chemiˇcky Wacker Chemie v Kol´ınˇe nad R´ ynem, • Automatizace skladovac´ıch tank˚ u firmy Shell v Hamburgu, • Aplikace mˇeˇren´ı hustoty pohonn´ ych hmot na letiˇsti v Ostravˇe.
Fyzick´ a vrstva Fyzick´a vrstva protokolu Profibus PA je navrˇzena v souladu s normou IEC 1158-2 a m´a tyto vlastnosti: 1. St´ınˇen´a nebo nest´ınˇen´a kroucen´a dvojlinka zakonˇcen´a s´eriov´ ym RC ˇcl´ankem (Rt = 100Ω, Ct = 1µF ), 2. Nap´ajen´ı stanic pˇr´ımo ze sbˇernice. Nap´ajec´ı napˇet´ı v rozmez´ı 9V – 32V (v prostˇred´ı s nebezpeˇc´ım v´ ybuchu maxim´alnˇe 15 V), 3. Voliteln´a jiskrov´a bezpeˇcnost – vys´ılaj´ıc´ı stanice m´a pasivn´ı charakter, jin´ ymi slovy nedod´av´a na sbˇernici proud, pouze mˇen´ı sv˚ uj odbˇer, 11
Pr˚ umyslov´e sbˇernice
Profibus
4. Synchronn´ı pˇrenos s konstantn´ı rychlost´ı 31,25 kbit/s, k´odov´an´ı Manchester, 5. D´elka segmentu m˚ uˇze b´ yt maxim´alnˇe 1900 m, na jeden segment je moˇzn´e pˇripojit nanejv´ yˇs 32 stanic (v pˇr´ıpadˇe jiskrov´e bezpeˇcnosti nejv´ yˇse 10 stanic) V praxi vˇetˇsinou neb´ yv´a Profibus PA nasazov´an samostatnˇe, ale jako prodlouˇzen´ı Profibusu DP do m´ıst, kde hroz´ı nebezpeˇc´ı v´ ybuchu. Existuj´ı 2 moˇznosti jejich propojen´ı: 1. Vazebn´ı ˇ clen (DP/PA Coupler) – prov´ad´ı pouze pˇrevod mezi odliˇsn´ ymi fyzick´ ymi vrstvami a pˇrev´ad´ı data pˇren´aˇsen´a asynchronnˇe rychlost´ı 45,45 kbit/s na data pˇren´aˇsen´a synchronnˇe rychlost´ı 31,25 kbit/s. Nev´ yhodou je skuteˇcnost, ˇze komunikace na sbˇernici DP je zpomalena. 2. Spojov´ y ˇ clen (DP/PA Link) – v˚ uˇci zaˇr´ızen´ım na sbˇernici DP se chov´a jako podˇr´ızen´a stanice (slave), v˚ uˇci zaˇr´ızen´ım na PA segmentu pak jako ˇr´ıd´ıc´ı stanice (master).
Cyklick´ a komunikace Cyklick´a komunikace je u protokolu Profibus PA (stejnˇe tak i DP) realizov´ana mezi ˇr´ıd´ıc´ı stanic´ı tˇr´ıdy 1 (DPM1) a ˇr´ızen´ ym zaˇr´ızen´ım. Pˇred t´ım, neˇz zaˇcne cyklick´a v´ ymˇena dat (Data Exchange), je tˇreba prov´est parametrizaci a konfiguraci ˇr´ızen´e stanice. Stanice pˇri tˇechto ˇcinnostech proch´az´ı nˇekolika stavy, coˇz zn´azorˇ nuje diagram na obr´azku 2.6:
12
Pr˚ umyslov´e sbˇernice
Profibus
Obr´azek 2.6: Profibus - stavov´ y diagram 1. Stav po zapnut´ı nebo resetu zaˇ r´ızen´ı - pro pˇrechod do dalˇs´ıho stavu je nutn´e, aby mˇela stanice validn´ı adresu (0-125), kterou nastavuje Master telegramem Set_Slave_Add. 2. Stav Parametrizace - v tomto stavu ˇcek´a zaˇr´ızen´ı na jeho parametrizaci, kterou provede Master telegramem Set_Prm. Ostatn´ı telegramy, kromˇe dotazu na diagnostiku (Slave_Diag) a konfiguraci (Get_Cfg) jsou ignorov´any. 3. Stav Konfigurace - po parametrizaci je nutn´e specifikovat poˇcet vstupn´ıch a v´ ystupn´ıch byt˚ u datov´ ych telegram˚ u, kter´e budou souˇc´ast´ı datov´e v´ ymˇeny mezi ˇr´ıd´ıc´ı a ˇr´ızenou stanic´ı. Pro konfiguraci slouˇz´ı telegram Chk_Cfg. 4. Cyklick´ a komunikace - v tomto okamˇziku je jiˇz moˇzn´e zah´ajit cyklickou komunikaci mezi stanicemi. Komunikace je velmi jednoduch´a, na principu poˇzadavek-odpovˇed’, kdy ˇr´ıd´ıc´ı stanice poˇsle ˇr´ızen´e stanici telegram Data_Exch.req se sv´ ymi v´ ystupn´ımi daty a ˇr´ızen´a stanice odpov´ı telegramem Data_Exch.resp, jenˇz obsahuje jej´ı v´ ystupn´ı data. Tento 13
Pr˚ umyslov´e sbˇernice
Profibus
zp˚ usob komunikace se naz´ yv´a Send and Request Data with Reply (SRD). Na obr´azku 2.7 je struˇcnˇe zn´azornˇeno, jak vypad´a cyklick´a komunikace vˇcetnˇe form´atu telegramu.
Obr´azek 2.7: Profibus PA - pˇrenos dat
14
Pr˚ umyslov´e sbˇernice
Profibus
Acyklick´ a komunikace Acyklick´a komunikace patˇr´ı mezi rozˇs´ıˇren´e funkce DPV1. Tento typ komunikace se d´ale dˇel´ı na: • MSAC1 (Master/Slave Acyclic C1) - prob´ıh´a mezi ˇr´ızenou stanic´ı a DPM1 (DP master class 1), coˇz je ˇr´ıd´ıc´ı stanice slouˇz´ıc´ı k cyklick´e v´ ymˇenˇe dat, • MSAC2 (Master/Slave Acyclic C2) - prob´ıh´a mezi ˇr´ızenou stanic´ı a DPM2 (DP master class 2), coˇz je ˇr´ıd´ıc´ı stanice realizuj´ıc´ı diagnostick´e a monitorovac´ı funkce. Pro zah´ajen´ı acyklick´e komunikace je nejprve nutn´e vytvoˇrit a otevˇr´ıt acyklick´ y komunikaˇcn´ı kan´al (v pˇr´ıpadˇe vytvoˇren´ı cyklick´eho spojen´ı je vytv´aˇren automaticky). Parametry, kter´e maj´ı b´ yt pˇren´aˇseny acyklickou komunikac´ı, jsou identifikov´any jednoznaˇcnou dvojic´ı slot a index. Podrobnˇejˇs´ı informace o ˇcten´ı parametr˚ u je moˇzn´e nal´ezt d´ale v textu v sekci 4.3.5 Dalˇs´ı informace o protokolu Profibus PA lze dohledat ve zdroj´ıch [2], [4], [5] a [6].
15
3 Hardwarov´e vybaven´ı V t´eto kapitole bude nejprve obecnˇe pops´ano, jak cel´ y hardwarov´ y syst´em, kter´ y byl pro u ´ˇcely diplomov´e pr´ace sestaven, funguje a n´aslednˇe budou d˚ ukladnˇeji pops´any jeho jednotliv´e souˇca´sti. Na obr´azku 3.1 je zn´azornˇeno struˇcn´e sch´ema pouˇzit´eho syst´emu:
Obr´azek 3.1: Schema syst´emu
ˇ ıd´ıc´ı jednotka – slouˇz´ı ke konfiguraci komunikace, zachyt´av´a a ukl´ad´a 1. R´ data pˇreˇcten´a z jednotky ˇc. 5 (Modbus slave). V t´eto pr´aci je jako ˇr´ıd´ıc´ı jednotka pouˇzit stoln´ı poˇc´ıtaˇc, 2. FNL (Fieldbus Network Link) – jednotka pracuje jako rozhran´ı mezi protokolem Profibus a protokolem Ethernet. Uˇzivateli jsou k dispozici rozliˇcn´e funkce, kter´e je moˇzn´e z ˇr´ıd´ıc´ı jednotky volat, 3. FintPROFI T410 – jednotka slouˇz´ıc´ı jako rozhran´ı mez´ı protokolem Profibus a Modbus, 4. Pˇ revodn´ık RS485/USB, 5. Modbus slave – simul´ator Modbus slave bˇeˇz´ıc´ı na stoln´ım poˇc´ıtaˇci (pouˇzita shareware verze programu MOD RSsim)
16
Hardwarov´e vybaven´ı
3.1
Popis komunikace mezi moduly
Popis komunikace mezi moduly
Pro u ´plnou pˇredstavu je tˇreba zm´ınit, jak cel´e zaˇr´ızen´ı funguje, ˇcili jak jednotliv´a zaˇr´ızen´ı mezi sebou komunikuj´ı. Blokov´e schema komunikace je zn´azornˇeno na obr´azku 3.2:
Obr´azek 3.2: Schema komunikace
1. Na stranˇe Modbus slave jsou v tzv. uchov´avac´ıch registrech (Read Holding Registers) uloˇzena poˇzadovan´a data. Jednotka T410, kter´a v t´eto komunikaci funguje jako Modbus slave, periodicky ˇcte a ukl´ad´a data, 2. Aby v´ yˇse zm´ınˇen´a komunikace prob´ıhala podle pˇredstav uˇzivatele, je nutn´e ji nˇejak´ ym zp˚ usobem parametrizovat (adresa Modbus slave, timeout mezi jednotliv´ ymi dotazy, atd.). K´ yˇzen´e parametry jsou pˇren´aˇseny acyklickou komunikac´ı mezi jednotkou FNL a T410. D´ale je nutn´e data z jednotky T410 nahr´at do pamˇeti jednotky FNL, k ˇcemuˇz slouˇz´ı tzv. cyklick´a komunikace (data je ovˇsem moˇzn´e pˇreˇc´ıst t´eˇz acyklicky), 3. Komunikace mezi ˇr´ıd´ıc´ı jednotkou a FNL je vpravdˇe z´asadn´ı, nebot’ slouˇz´ı ke konfiguraci veˇsker´e komunikace, tj. nastaven´ı parametr˚ u sbˇernice Profibus, jednotky T410, atd. a tak´e k ˇr´ızen´ı komunikace mezi FNL a jednotkou T410 (pro tyto u ´ˇcely je k dispozici obs´ahl´a API). 17
Hardwarov´e vybaven´ı
Fieldbus Network Link (FNL)
V dalˇs´ıch kapitol´ach budou podrobnˇeji pops´any obˇe jednotky – FNL a FintPROFI T410.
3.2
Fieldbus Network Link (FNL)
FNL je zaˇr´ızen´ı, kter´e umoˇzn ˇuje propojen´ı s´ıt´ı typu ethernet (10/100 Mbit/s) a Profibus, v tomto pˇr´ıpadˇe verze PA (existuje ovˇsem tak´e verze DP). Blokov´e sch´ema t´eto jednotky, obsahuj´ıc´ı informace o nap´ajen´ı a pouˇzit´ ych rozhran´ıch, je zobrazeno na n´asleduj´ıc´ım obr´azku (viz obr. 3.3).
Obr´azek 3.3: Schema jednotky FNL Jednotka FNL je nejd˚ uleˇzitˇejˇs´ı souˇca´st´ı syst´emu z hlediska program´atora, nebot’ je v n´ı implementov´ano uˇzivatelsk´e rozhran´ı, pˇres kter´e je moˇzn´e volat r˚ uzn´e sluˇzby slouˇz´ıc´ı k parametrizaci s´ıtˇe a pˇrenosu dat do poˇc´ıtaˇce. Nutno podotknout, ˇze komunikace mezi poˇc´ıtaˇcem (ˇci jinou ˇr´ıd´ıc´ı jednotkou) prob´ıh´a pˇres protokol TCP/IP (jednotka m´a pˇridˇelenu statickou IP adresu, v tomto pˇr´ıpadˇe 192.168.1.75) Uˇzivatelsk´e rozhran´ı je navrˇzeno jako Dual-Port RAM (DPR), coˇz je, jak jiˇz n´azev napov´ıd´a, typ pamˇeti, kter´ y umoˇzn ˇuje v jeden okamˇzik zapisovat nebo ˇc´ıst data z obou port˚ u.[15]
18
Hardwarov´e vybaven´ı
3.2.1
Fieldbus Network Link (FNL)
Rozhran´ı Dual-Port RAM
Rozhran´ı lze rozdˇelit na dvˇe samostatn´e ˇc´asti: 1. Command Interface - pˇrenos funkc´ı nebo sluˇzeb s poˇzadovan´ ymi parametry, 2. Process Data Image – obsahuje uˇzivatelsk´a data a stavov´e informace o jednotliv´ ych zaˇr´ızen´ı. Struktura DPE je zn´azornˇena v tabulce 3.4:
Obr´azek 3.4: Struktura DPE
Command Interface Jak jiˇz bylo zm´ınˇeno, Command Interface je rozhran´ı, kter´e vz´ajemnˇe propojuje firmware FNL (jeˇz implementuje Profibus PA profil) s uˇzivatelem. Pro zv´ yˇsen´ı rychlosti pˇren´aˇsen´ı dat jsou k dispozici dva pamˇet’ov´e prostory pro odes´ıl´an´ı (Send-Box 1 a 2) a pˇr´ıjem (Receive-Box 1 a 2) dat.[15] Dostupn´e sluˇzby lze rozdˇelit do nˇekolika skupin jako pˇr´ıkazy pro: • lok´aln´ı inicializaci a konfiguraci firmware, • acyklickou komunikaci, • cyklickou komunikaci, 19
Hardwarov´e vybaven´ı
Fieldbus Network Link (FNL)
• komunikaci typu Master-Master, • pˇr´ıjem lok´aln´ıch indikac´ı. Pˇr´ıkazy lze d´ale dˇelit na potvrzovan´e resp. nepotvrzovan´e a pˇr´ıkazy inicializovan´e uˇzivatelem (odes´ıl´any jako poˇzadavek na firmware) a inicializovan´e firmwarem (odes´ıl´any uˇzivateli jako indikace). Pˇr´ıkazy jsou odes´ıl´any a pˇrij´ım´any v tzv. mailboxech. Kaˇzd´ y mailbox se skl´ad´a z hlaviˇcky (mailbox header) a tˇela pˇr´ıkazu (mailbox-body), viz tabulka 3.1: Byte Vstup 0 Service 1 Group Mailbox header 2 Result 3 CommandID Mailbox body 4 ... n ... Tabulka 3.1: Mailbox - struktura
Service Hodnota pˇredstavuje k´od volan´e sluˇzby, napˇr. 0x0A pro funkci load_bus_par
Group Veˇsker´e volan´e sluˇzby lze rozdˇelit celkem do ˇctyˇr skupin: • inicializaˇcn´ı (0x04) – napˇr. restart_fdl • komunikaˇcn´ı (0x08) – napˇr. init_dp_master • lok´aln´ı (0x07) – napˇr. get_live_list (jedin´a sluˇzba v t´eto skupinˇe) • asynchronn´ı ud´alosti vyvolan´e firmwarem (0x42) 20
Hardwarov´e vybaven´ı
Fieldbus Network Link (FNL)
Posledn´ı bit tohoto parametru (MSB) urˇcuje smˇer odes´ıl´an´ı poˇzadavku: • 0: smˇer uˇzivatel → firmware • 1: smˇer firmware → uˇzivatel
Result V´ ysledek vol´an´ı sluˇzby uloˇzen´ y firmwarem po zpracov´an´ı poˇzadavku. V pˇr´ıpadˇe odpovˇedi na poˇzadavek obsahuje informaci, zda vol´an´ı funkce probˇehlo bez probl´em˚ u nebo doˇslo k nˇejak´e chybˇe. V pˇr´ıpadˇe, ˇze firmware odeˇsle indikaci nˇejak´e ud´alosti, obsahuje k´od tzv. status message (viz pˇr´ıloha, kde jsou vˇsechny tyto zpr´avy pops´any)
Command ID Tento parametr nen´ı pro firmware d˚ uleˇzit´ y, tud´ıˇz je z hlediska uˇzivatele nepodstatn´ y. Je moˇzn´e do nˇej uloˇzit napˇr. poˇrad´ı vol´an´ı sluˇzeb, ˇc´ımˇz se program stane pˇrehlednˇejˇs´ım. Pˇri potvrzov´an´ı m´a parametr stejnou hodnotu jako pˇri vol´an´ı funkce.
Obr´azek 3.5: Pˇrehled komunikace v r´amci FNL 21
Hardwarov´e vybaven´ı
Fieldbus Network Link (FNL)
Obr´azek 3.5 pˇrehlednˇe ilustruje, jak prob´ıh´a komunikace mezi uˇzivatelem, Command Interface a firmwarem.
Process Data Image Druh´a ˇc´ast DPR se naz´ yv´a Process Data Image a obsahuje: • Slave status - pole o velikosti 126 byt˚ u, kde kaˇzd´ y byte odpov´ıd´a jednomu koncov´emu zaˇr´ızen´ı (slave), • Semafory - semafory jsou nezbytn´e pro zachov´an´ı konzistence vstupn´ıch resp. v´ ystupn´ıch dat. Rozliˇsuj´ı se ˇctyˇri druhy semafor˚ u: – UserLockInputs – uzamˇcen´ı pˇr´ıstupu k vstupn´ım dat˚ um uˇzivatelem, – FWLockInputs – uzamˇcen´ı pˇr´ıstupu k vstupn´ım dat˚ um firmwarem, – UserLockOutputs – uzamˇcen´ı pˇr´ıstupu k v´ ystupn´ım dat˚ um uˇzivatelem, – FWLockOutputs – uzamˇcen´ı pˇr´ıstupu k v´ ystupn´ım dat˚ um firmwarem. • Uˇ zivatelsk´ a data - data, kter´a jsou pˇren´aˇsena bˇehem cyklick´e komunikace (MSCY_C1). Data jsou ukl´ad´ana od adresy 0x484 s t´ım, ˇze jejich pˇresn´e um´ıstˇen´ı je specifikov´ano offsety, jeˇz jsou uˇzivatelem zvoleny pˇri vol´an´ı sluˇzby load_slave_parameters. V dalˇs´ıch ˇc´astech t´eto kapitoly nebudou popisov´any jednotliv´e sluˇzby, nebot’ vysvˇetlen´ı ˇc´asti s nich i s konkr´etn´ımi parametry je souˇca´st´ı praktick´e ´ y seznam vˇsech sluˇzeb vˇcetnˇe jejich k´od˚ ˇc´asti t´eto diplomov´e pr´ace. Upln´ u lze nal´ezt v [15].
3.2.2
Knihovn´ı funkce
Pro program´atora je vskutku z´asadn´ı ot´azka, jak´ ym zp˚ usobem se pˇripojit k jednotce FNL, jak odes´ılat resp. pˇrij´ımat vybran´e sluˇzby, atd. Pro tyto u ´ˇcely d´av´a v´ yrobce k dispozici knihovnu TMGnet.dll. S pomoc´ı funkc´ı z t´eto
22
Hardwarov´e vybaven´ı
Fieldbus Network Link (FNL)
knihovny je moˇzn´e odes´ılat pˇr´ıkazy Command Interface a pˇristupovat k Process Data Image. V tabulce 3.2 jsou uvedeny vˇsechny funkce spolu se struˇcn´ ym popisem jejich ˇcinnosti, v dalˇs´ım textu jsou pak tyto funkce pops´any ponˇekud podrobnˇeji.[15] N´ azev ConnectBoard ResetBoard DisconnectBoard GetRequestBlock a SendRequestBlock GetReceiveBlock a FreeReceiveBlock PutProcessData GetProcessData TransferProcessData GetTMGErrorMessage
Popis ˇcinnosti Pˇripojen´ı k jednotce Reset jednotky Odpojen´ı od jednotky Odesl´an´ı pˇr´ıkazu jednotce Pˇr´ıjem dat z jednotky Uloˇzen´ı dat do Process Data Image ˇ ı dat z Process Data Image Cten´ Uloˇzen´ı/ˇcten´ı dat do/z Process Data Image Textov´a podoba chybov´ ych k´od˚ u
Tabulka 3.2: Knihovn´ı funkce - struˇcn´ y popis
ConnectBoard Prototyp short USER_FUNCTION ConnectBoard (const char *BoardName, short ProtocolID);
Parametry : Jm´eno pˇridˇelen´e jednotce FNL (jm´eno je zaregistrov´ano v aplikaci TMG Net Series) short ProtocolID : Indentifik´ator pouˇzit´eho protokolu char *BoardName
Popis Funkce ConnectBoard slouˇz´ı k pˇripojen´ı aplikace k FNL a mus´ı b´ yt vˇzdy vol´ana jako prvn´ı. Z´aroveˇ n je po u ´spˇeˇsn´em pˇripojen´ı zaruˇceno, ˇze ˇza´dn´a dalˇs´ı aplikace nebude m´ıt k jednotce pˇr´ıstup (funkce vr´at´ı chybov´ y status CONNECT_BOARDINUSE). Aplikace z˚ ust´av´a pˇripojena do t´e doby, neˇz je zavol´ana funkce DisconnectBoard (viz d´ale) nebo dojde k ukonˇcen´ı aplikace (DLL tuto ud´alost rozpozn´a a automaticky se odpoj´ı).
23
Hardwarov´e vybaven´ı
Fieldbus Network Link (FNL)
N´ avratov´ e hodnoty SUCCESS (0x00) CONNECT_BOARDINUSE (0x01) CONNECT_UNKNOWNBOARDNAME (0x02)
: : :
PROTOCOL_NOTSUPPORTED (0x0A) LOAD_BOARDNOTFOUND (0x14)
: :
LOAD_TIMEOUT (0x15)
:
LOAD_FILENOTFOUND (0x16) LOAD_FILECORRUPT (0x17) APP_ALREADYCONNECTED (0x1F) SYSTEM_DLLBLOCKED (0x28) SYSTEM_DEVICEDRIVERFAILED (0x29) SYSTEM_REGISTRYCORRUPTED (0x2A)
: : : : : :
Aplikace byla u ´spˇeˇsnˇe pˇripojena k FNL Jednotka je pouˇz´ıv´ana jinou aplikac´ı Jm´eno registrovan´e aplikac´ı TMG Net Series nesouhlas´ı se jm´enem zadan´ ym jako parametr funkce ConnectBoard Jednotka nepodporuje zadan´ y typ protokolu Jednotka neexistuje (pravdˇepodobnˇe nebyla korektnˇe zaregistrov´ana v syst´emu) Pˇri nahr´av´an´ı firmwaru doˇslo k vyprˇsen´ı ˇcasov´eho limitu Firmware neexistuje Firmware je poˇskozen´ y Aplikace je jiˇz pˇripojena k jin´emu zaˇr´ızen´ı DLL knihovna je zablokov´ana nˇekter´ ym z uˇzivatel˚ u ˇ c jednotky selhal Radiˇ Poˇskozen´e syst´emov´e registry
ResetBoard Prototyp short USER_FUNCTION ResetBoard (void);
Parametry Bez parametr˚ u. Popis Vyresetov´an´ı firmwaru jednotky FNL. N´ avratov´ e hodnoty SUCCESS (0x00) LOAD_BOARDNOTFOUND (0x14)
: :
LOAD_TIMEOUT (0x15)
:
LOAD_FILECORRUPT (0x17) APPL_NOT_CONNECTED (0x1E)
: :
Aplikace byla u ´spˇeˇsnˇe pˇripojena k FNL Jednotka neexistuje (pravdˇepodobnˇe nebyla korektnˇe zaregistrov´ana v syst´emu) Pˇri nahr´av´an´ı firmwaru doˇslo k vyprˇsen´ı ˇcasov´eho limitu Firmware je poˇskozen´ y Aplikace nen´ı pˇripojena k jednotce FNL
24
Hardwarov´e vybaven´ı
Fieldbus Network Link (FNL)
DisconnectBoard Prototyp short USER_FUNCTION DisconnectBoard(void);
Parametry Bez parametr˚ u. Popis Odpojen´ı aplikace od jednotky FNL. N´ avratov´ e hodnoty SUCCESS (0x00) APPL_NOT_CONNECTED (0x1E)
: :
Aplikace byla u ´spˇeˇsnˇe odpojena od FNL Aplikace nen´ı pˇripojena k jednotce FNL
GetRequestBlock a SendRequestBlock S vyuˇzit´ım tˇechto funkc´ı je aplikace schopna odeslat pˇr´ıkaz firmwaru pˇres Command Interface. Pˇr´ıkazy jsou pˇren´aˇseny ve tˇrech kroc´ıch: 1. V prvn´ım kroku je nutn´e z´ıskat ukazatel na pr´azdn´ y mailbox, ˇcehoˇz se dos´ahne (v pˇr´ıpadˇe, ˇze je nˇejak´ y voln´ y) zavol´an´ım funkce: short USER_FUNCTION GetRequestBlock (PTCommand *PSendBox);
kde PTCommand *PSendBox je ukazatel na strukturu, jeˇz bude po u ´spˇeˇsn´em dokonˇcen´ı funkce GetRequestBlock k dispozici pro uloˇzen´ı odpov´ıdaj´ıc´ıch parametr˚ u 2. V pˇr´ıpadˇe, ˇze funkce nevr´atila nulov´ y ukazatel, je struktura naplnˇena daty, coˇz je uk´az´ano v n´asleduj´ıc´ı uk´azce funkce get_slave_diag: PTCommand m; m->GetSlaveDiag.Header.Service = 0x09; m->GetSlaveDiag.Header.Group = 0x08; m->GetSlaveDiag.SlaveAddress = 2;
3. V posledn´ım kroku doch´az´ı k odesl´an´ı dat Command Interface funkc´ı: short USER_FUNCTION SendRequestBlock(PTCommand SendBox);
25
Hardwarov´e vybaven´ı
Fieldbus Network Link (FNL)
kde PTCommand SendBox je struktura (jeˇz odpov´ıd´a struktuˇre mailboxu, viz v´ yˇse) obsahuj´ıc´ı konkr´etn´ı parametry.
GetReceiveBlock a FreeReceiveBlock Tyto dvˇe funkce, na rozd´ıl od pˇredeˇsl´ ych dvou, slouˇz´ı k z´ısk´an´ı dat, kter´e d´av´a k dispozici firmware. Operace je opˇet provedena ve tˇrech kroc´ıch: 1. Pro z´ısk´an´ı ukazatele na mailbox naplnˇen´ y firmwarem je tˇreba zavolat funkci: short USER_FUNCTION GetReceiveBlock(PTCommand *PreceiveBox);
kde PTCommand *PreceiveBox je ukazatel na strukturu, jeˇz bude po u ´spˇeˇsn´em dokonˇcen´ı funkce GetReceiveBlock naplnˇena daty. 2. Dek´odov´an´ı pˇrijat´ ych dat, jin´ ymi slovy podle hlaviˇcky, kter´a obsahuje k´od skupiny a funkce, pozn´ame, o jak´ y pˇr´ıkaz se jedn´a: short result; if (pm->GetSlaveDiag.Header.Group = CM_DP && pm->GetSlaveDiag.Header.Service = GET_SLAVE_DIAG) { result = pm->GetSlaveDiag.Header.Result; }
3. Na z´avˇer je tˇreba navr´atit pˇrijat´ y mailbox zp´atky firmwaru funkc´ı: short USER_FUNCTION FreeReceiveBlock(void);
PutProcessData Prototyp short USER_FUNCTION PutProcessData (short DataOffset, short DataLen, BYTE *ProcessDataPtr, short UserLock );
Parametry Popis Funkce slouˇz´ıc´ı k uloˇzen´ı dat (Output Data) do Process Data Image.
26
Hardwarov´e vybaven´ı
Fieldbus Network Link (FNL)
: Offset adresy pro uloˇzen´ı dat (0x484 + DataOffset) short DataLen : D´elka pˇren´aˇsen´ ych dat (v bytech) BYTE *ProcessDataPtr : Ukazatel na data k pˇrenesen´ı short UserLock : Uzamˇcen´ı pˇr´ıstupu k v´ ystupn´ım dat˚ um v Process Data Image
short DataOffset
GetProcessData Prototyp short USER_FUNCTION GetProcessData (short DataOffset, short DataLen, BYTE *ProcessDataPtr, short UserLock);
Parametry : Offset adresy pro uloˇzen´ı dat (0x484 + DataOffset) short DataLen : D´elka pˇren´aˇsen´ ych dat (v bytech) BYTE *ProcessDataPtr : Ukazatel na m´ısto v pamˇeti, kam se maj´ı uloˇzit data z Process Data Image short UserLock : Uzamˇcen´ı pˇr´ıstupu k vstupn´ım dat˚ um v Process Data Image
short DataOffset
Popis Funkce slouˇz´ıc´ı k pˇreˇcten´ı dat (Input Data) z Process Data Image.
TransferProcessData Prototyp short USER_FUNCTION TransferProcessData (TPDTransferPrm* PDPrm);
Parametry TPDTransferPrm* PDPrm – data, kter´a maj´ı n´asleduj´ıc´ı strukturu:
27
Hardwarov´e vybaven´ı
Fieldbus Network Link (FNL)
typedef { short DataOffset; short DataLen; BYTE *ProcessDataPtr; short UserLock; } TPDPrm; typedef struct { short SlaveAdd; short SlaveCount; BYTE *Pstatus; TPDPrm Write; TPDPrm Read; TPDTransferPrm;
Popis Funkce, kter´a de facto kombinuje funkce GetProcessData a PutProcessData (struktura TPDPrm odpov´ıd´a parametr˚ um tˇechto funkc´ı), nav´ıc je tak´e pˇrijat Status stanice specifikovan´e poloˇzkou SlaveAdd.
GetTMGErrorMessage Prototyp const char * USER_FUNCTION GetTMGErrorMessage( short ErrorCode, short Language);
Parametry short ErrorCode : K´od n´avratov´e hodnoty nˇekter´e z v´ yˇse zm´ınˇen´ ych funkc´ı. short Language : Lokalizace (0 – nˇemˇcina, 1 – angliˇctina)
Popis Funkce vracej´ıc´ı textovou podobu chyb, kter´e jsou reprezentov´any k´odem ErrorCode. Dalˇs´ı informace o jednotce FNL je moˇzn´e nal´ezt v [15].
28
Hardwarov´e vybaven´ı
3.3
FintPROFI T410
FintPROFI T410
Druh´ y modul, jenˇz byl pouˇzit pro vytvoˇren´ı komunikaˇcn´ıho ˇretˇezce, je jednotka T410 od norsk´e spoleˇcnosti Fint (Fieldbus International AS). V modulu jsou implementov´any dva protokoly - Modbus a Profibus PA, jedn´a se tedy o jak´esi rozhran´ı mezi tˇemito protokoly. Na sbˇernici se zaˇr´ızen´ı chov´a na stranˇe protokolu Modbus jako master, na stranˇe protokolu Profibus PA jako slave. Na obr´azku 3.6 je zn´azornˇeno, jak vypad´a zapojen´ı jednotky T410 do komunikaˇcn´ıho ˇretˇezce.
Obr´azek 3.6: T410 - zapojen´ı do komunikaˇcn´ıho ˇretˇezce
3.3.1
Popis
Kaˇzd´e Profibus PA zaˇr´ızen´ı obsahuje bloky, kter´e obsahuj´ı r˚ uzn´e parametry. Jedn´a se o bloky: 29
Hardwarov´e vybaven´ı
FintPROFI T410
• fyzick´ y (Physical, PB) - zastˇreˇsuj´ıc´ı blok, • pˇ revodn´ıkov´ y (Transducer, TB) - zajiˇst’uje kontakt s mˇeˇric´ım ˇcidlem, prov´ad´ı napˇr´ıklad linearizaci, • funkˇ cn´ı (Function, FB) - zprostˇredkov´av´a namˇeˇrenou hodnotu (z´ısk´ana z pˇrevodn´ıkov´eho bloku) na pˇripojenou sbˇernici, pˇri pˇrekroˇcen´ı nˇejak´eho limitu generuje alarmy. Jednotka T410 obsahuje 1 fyzick´ y blok, 4 funkˇcn´ı a 4 pˇrevodn´ıkov´e bloky. V pˇrevodn´ıkov´em bloku jsou v pˇr´ıpadˇe jednotky T410 kromˇe parametr˚ u dan´ ych standardem tak´e parametry, kter´ ymi se nastavuje chov´an´ı komunikace Modbusu. Jedn´a se o tyto parametry: Parametr PV Scaling
PV Unit PV’s Modbus register PV type Periodic Measurement Modbus address Modbus inbound data package Modbus inbound data package register address No of registers for inbound data Modbus outbound data package Modbus outbound data package register address No of registers for outbound data
V´ yznam Pˇreˇctenou hodnotu (PV = Primary Variable, dynamick´a promˇenn´a, hodnota ˇcten´eho Modbus registru) je moˇzn´e uloˇzit s ohledem na poˇcet desetinn´ ych m´ıst, napˇr. pro uloˇzen´ı na jedno desetinn´e m´ısto bude hodnota parametru 0.1. Jednotka pˇreˇcten´e hodnoty. Ukazatel na Modbus registr, z kter´eho m´a b´ yt PV ˇctena. Datov´ y typ promˇenn´e, napˇr. pro Float s bytov´ ym poˇrad´ım 1 2 3 4 je hodnota parametru 3. Perioda ˇcten´ı PV, ud´av´a se v sekund´ach. Adresa Modbus zaˇr´ızen´ı. Prostor, do nˇehoˇz jsou zaznamen´av´any hodnoty z Modbus registr˚ u (z´ıskan´e acyklick´ ym ˇcten´ım). Ukazatel na prvn´ı Modbus registr pro acyklick´e ˇcten´ı. Poˇcet Modbus registr˚ u, kter´e se maj´ı pˇreˇc´ıst pˇri acyklick´em ˇcten´ı. Prostor, pˇres kter´ y je moˇzn´e acyklicky zapsat data do Modbus zaˇr´ızen´ı. Ukazatel na prvn´ı Modbus registr pro acyklick´ y z´ apis. Poˇcet Modbus registr˚ u, do nichˇz se maj´ı zapsat data pˇri acyklick´em z´apisu.
Tabulka 3.3: Parametry pˇrevodn´ıkov´eho bloku
30
Hardwarov´e vybaven´ı
FintPROFI T410
Ve fyzick´em bloku je pak moˇzn´e nastavovat tyto parametry: • Poˇcet stop bit˚ u, • Baudrate, • Poˇrad´ı byt˚ u v CRC souˇctu, • Paritu. Dalˇs´ı informace o jednotce T410 je moˇzn´e nal´ezt v [7].
31
4 Realizace monitoru sbˇernice Profibus PA 4.1
´ Uvod
Po z´ısk´an´ı vˇsech potˇrebn´ ych informac´ı o hardwarov´em vybaven´ı a pouˇzit´ ych protokolech bylo dalˇs´ım krokem vytvoˇren´ı n´avrhu monitoru pˇren´aˇsen´ ych dat a jeho n´asledn´a realizace. Na zaˇca´tku je jistˇe na m´ıstˇe zm´ınit, jak´e prostˇredky byly pro aplikaci pouˇzity. Pro naprogramov´an´ı vlastn´ı logiky aplikace (komunikace s moduly) byl pouˇzit jazyk ANSI C a to hlavnˇe z toho d˚ uvodu, ˇze vol´an´ı knihovn´ıch funkc´ı je tomto jazyce pomˇernˇe jednoduch´a z´aleˇzitost. Dalˇs´ı souˇc´ast´ı aplikace je grafick´e uˇzivatelsk´e rozhran´ı (GUI) – pro jeho vytvoˇren´ı byla vyuˇzita knihovna QT verze 4.8.4. (potˇrebn´e informace byly ˇcerp´any z [16]) Aplikace byla vyv´ıjena v prostˇred´ı NetBeans verze 7.1.2. Na dalˇs´ıch ˇr´adc´ıch bude postupnˇe pops´ano, jak´ ym zp˚ usobem aplikace funguje. Zvl´aˇstn´ı d˚ uraz pak bude kladen na ˇcten´ı parametr˚ u z jednotliv´ ych blok˚ u jednotky T410, nebot’ bylo t´eto problematice vˇenov´ano znaˇcn´e mnoˇzstv´ı ˇcasu a jedn´a se bez nads´azky o z´akladn´ı k´amen vytvoˇren´e aplikace. Zdrojov´e soubory jsou k dispozici na pˇriloˇzen´em CD t´eto pr´ace.
4.2
N´ avrh aplikace
V kapitole 3 byl pops´an syst´em, na jehoˇz zaˇca´tku je poˇc´ıtaˇc (ˇci jin´e zaˇr´ızen´ı) slouˇz´ıc´ı jako ˇr´ıd´ıc´ı jednotka a na jehoˇz konci je zaˇr´ızen´ı, kter´e na sbˇernici funguje jako Modbus Slave. Na obr´azku 4.1 je pro pˇripomenut´ı tento syst´em znovu zn´azornˇen:
Obr´azek 4.1: Schema syst´emu 32
Realizace monitoru sbˇernice Profibus PA
N´avrh aplikace
Z obr´azku 4.1 je patrn´a hlavn´ı funkce vytv´aˇren´e aplikace – ˇr´ıd´ıc´ı jednotka (na n´ıˇz monitor bˇeˇz´ı) by mˇela umˇet ˇc´ıst a interpretovat data, kter´e odes´ıl´a Modbus Slave. Dalˇs´ı vˇec, kter´a z obr´azku tak´e vypl´ yv´a, je to, ˇze z´ıskat tato data nen´ı z´aleˇzitost trivi´aln´ı. Prvn´ım u ´kolem pˇri n´avrhu aplikace bylo zjiˇstˇen´ı, jak´ ym zp˚ usobem se v˚ ubec bude moˇzn´e do cel´eho syst´emu pˇripojovat. Jako z´akladn´ı prostˇredn´ık pro pˇr´ıstup do syst´emu byla z logick´ ych d˚ uvod˚ u zvolena jednotka FNL, s jej´ımˇz firmwarem je moˇzn´e komunikovat pˇres dostupn´e API (v´ıce informac´ı o jednotce FNL a knihovn´ıch funkc´ıch je moˇzn´e zjistit z kapitol 3.2 a 3.2.2). Dostupn´e knihovn´ı funkce se staly tedy kamenem u ´razu cel´e aplikace – jejich vhodn´ ym vol´an´ım a parametrizac´ı by na konci mˇelo b´ yt moˇzn´e ˇc´ıst data z jednotky Modbus Slave, coˇz bylo hlavn´ım u ´kolem t´eto diplomov´e pr´ace (spolu s vytvoˇren´ım vhodn´e filtrace tˇechto dat). V dalˇs´ı ˇca´sti bude nejprve uk´az´ano sch´ema popisuj´ıc´ı chov´an´ı navrˇzen´e aplikace v jednotliv´ ych kroc´ıch, v dalˇs´ım textu budou pak tyto kroky pops´any d˚ ukladnˇeji.
33
Realizace monitoru sbˇernice Profibus PA
4.3
Aplikace - ˇreˇsen´ı
Aplikace - ˇ reˇ sen´ı
ˇ Obr´azek 4.2: Zivotn´ ı cyklus aplikace Obr´azek 4.2 zn´azorˇ nuje, jak´ ymi stavy aplikace proch´az´ı v pr˚ ubˇehu jej´ıho ˇzivotn´ıho cyklu. Jednotliv´e stavy budou nyn´ı podrobnˇe pops´any (ˇca´st t´ ykaj´ıc´ı se zmˇen parametr˚ u je pak rozˇs´ıˇrena o popis ˇcten´ı parametr˚ u z blok˚ u jednotky T410).
4.3.1
Start aplikace
Po spuˇstˇen´ı aplikace je uˇzivateli nab´ıdnuto okno (viz obr. 4.3), kde jedinou dostupnou moˇznost´ı je nalezen´ı konkr´etn´ıho GSD souboru. Uˇzivatelsk´ y manu´al aplikace je k dispozici v pˇr´ıloze tohoto dokumentu.
34
Realizace monitoru sbˇernice Profibus PA
Aplikace - ˇreˇsen´ı
Obr´azek 4.3: Vstupn´ı okno aplikace
4.3.2
Naˇ cten´ı GSD souboru
Prvn´ı u ´kon, kter´ y je nutn´e udˇelat pˇred samotn´ ym pˇripojen´ım k jednotce FNL, je pˇreˇcten´ı a zpracov´an´ı tzv. GSD souboru. General Station Description (GSD) je soubor obsahuj´ıc´ı informace o kaˇzd´e jednotce, kter´a vystupuje v s´ıti Profibus. Soubor je v´ yrobcem standardnˇe dod´av´an ke kaˇzd´emu zaˇr´ızen´ı a m´a standardizovan´ y form´at. Vznik GSD souboru mˇel ryze praktick´e d˚ uvody – kaˇzd´e zaˇr´ızen´ı m´a sv´e specifick´e parametry (Baudrate, adresa, ˇcasov´e konstanty, atd.), kter´e jsou dostupn´e v manu´alu. Aby byla pr´ace se zaˇr´ızen´ım co nejjednoduˇsˇs´ı, obsahuje GSD tyto parametry, kter´e pak staˇc´ı s vyuˇzit´ım nˇejak´eho n´astroje naˇc´ıst a zpracovat.[6]
35
Realizace monitoru sbˇernice Profibus PA
Aplikace - ˇreˇsen´ı
Kaˇzd´ y GSD soubor m´a n´asleduj´ıc´ı strukturu: • Hlaviˇcka – napˇr.: #Profibus_DP • Parametry ve form´atu
= – napˇr.: Ident_Number = 0xa002 • Konfigurace ve form´atu: Module = <poradi> EndModule – napˇr.: ;Modules for Analog Input Module = "Analog Input (AI)short"0x94 2 EndModule Konfigurace specifikuje mnoˇzstv´ı a uspoˇr´ad´an´ı cyklicky pˇren´aˇsen´ ych dat. Je urˇcena pˇres tzv. identifik´ator a vyskytuje se ve dvou form´atech - jednoduch´ y (velikost 1 byte) a speci´aln´ı (velikost minim´alnˇe 2 byty). Z GSD souboru pro jednotku T410 lze vyˇc´ıst, ˇze jsou pro ni k dispozici 2 konfigurace - 0x94 (jednoduch´ y form´at) a 0x42 0x84 0x08 0x05 (speci´aln´ı form´at). Pro zaj´ımavost si na zm´ınˇen´em jednoduch´em form´atu d´ale pop´ıˇseme, jak tyto hodnoty interpretovat (viz obr. 4.4). Dalˇs´ı informace o konfiguraci a GSD souborech lze naj´ıt v [6].
Obr´azek 4.4: Konfigurace - jednoduch´ y form´at
36
Realizace monitoru sbˇernice Profibus PA
Aplikace - ˇreˇsen´ı
Zpracov´an´ı GSD souboru ve vyv´ıjen´e aplikaci je pomˇernˇe jednoduch´e. Po otevˇren´ı je soubor proch´azen ˇra´dek po ˇra´dku. Z kaˇzd´eho ˇr´adku jsou odstranˇeny koment´aˇre (text za znakem ’;’) a mezery. Protoˇze zn´ame pˇresnou strukturu dokumentu, nen´ı sloˇzit´e n´aslednˇe z´ıskat kl´ıˇcov´e slovo a odpov´ıdaj´ıc´ı hodnotu v pˇr´ıpadˇe parametr˚ u a n´azev modulu s identifik´atorem v pˇr´ıpadˇe konfigurace. Kaˇzd´a tato dvojice je uloˇzena do struktury a ta je n´aslednˇe uloˇzena do pole: struct info char name[80]; char value[80]; object_info; Kompletn´ı obsah GSD souboru pro jednotku T410 je moˇzn´e nal´ezt v pˇr´ıloze v kapitole A.2, samotn´ y soubor pak na pˇriloˇzen´em CD.
4.3.3
Pˇ ripojen´ı a inicializace spojen´ı
Po naˇcten´ı GSD souboru je uˇzivateli zpˇr´ıstupnˇeno tlaˇc´ıtko pro pˇripojen´ı k jednotce FNL. Po jeho stisknut´ı dojde sekvenˇcnˇe k vykon´an´ı tˇechto operac´ı: 1. pˇripojen´ı k jednotce FNL funkc´ı ConnectBoard (pops´ana v kapitole 3.2.2), 2. nahr´an´ı parametr˚ u sbˇernice pˇr´ıkazem load_bus_parameters, 3. inicializace firmwaru pˇr´ıkazem init_dp_master tak, ˇze pot´e bude firmware na sbˇernici pracovat jako Profibus Master. V n´asleduj´ıc´ım textu bude nejprve pops´an krok 2 spolu s vysvˇetlen´ım, jak vypad´a vykon´an´ı urˇcit´eho pˇr´ıkazu, n´aslednˇe bude jiˇz struˇcnˇeji pops´an krok 3, protoˇze princip pr´ace s pˇr´ıkazy je totoˇzn´ y.
Parametry sbˇ ernice Pro spr´avn´e fungov´an´ı cel´e aplikace je nutn´e zajistit korektn´ı chov´an´ı komunikace na sbˇernici, coˇz je zajiˇstˇeno jej´ı vhodnou parametrizac´ı. Nˇekter´e z para37
Realizace monitoru sbˇernice Profibus PA
Aplikace - ˇreˇsen´ı
metr˚ u byly v pˇredchoz´ım kroku pˇreˇcteny z GSD souboru jednotky T410 a staticky uloˇzeny v ˇr´ıd´ıc´ı jednotce. N´aslednˇe je tˇreba parametry pˇredat d´al jednotce FNL. K odesl´an´ı parametr˚ u sbˇernice slouˇz´ı pˇr´ıkaz load_bus_parameters. V tabulce 4.1 jsou shrnuty odes´ılan´e parametry vˇcetnˇe jejich struˇcn´eho popisu. Parametr Baudrate
Popis ˇ ıslo na stupnici od 0 do 10 urˇcuje hodnotu Baudrate C´ (viz tab. 4.2). ˇ Slot-Time Casov´ yu ´sek, bˇehem nˇehoˇz ˇcek´a Master na odpovˇed’ od Slave pˇredt´ım, neˇz odeˇsle dalˇs´ı telegram. Minimum Tsdr Minim´aln´ı doba, po kterou Slave mus´ı ˇcekat s odesl´an´ım odpovˇedi. Hodnota mus´ı b´ yt menˇs´ı neˇz maximum Tsdr. Maximum Tsdr Maxim´aln´ı doba, po kterou Slave m˚ uˇze ˇcekat s odesl´an´ım odpovˇedi. Hodnota mus´ı b´ yt menˇs´ı neˇz Slot-time. Maximum Tsdr Maxim´aln´ı doba, po kterou Slave m˚ uˇze ˇcekat s odesl´an´ım odpovˇedi. Hodnota mus´ı b´ yt menˇs´ı neˇz Slot-time. ˇ Casov´ yu ´sek, po kter´ y mus´ı vys´ılaj´ıc´ı stanice po odesl´an´ı Quiet Time dat ˇcekat, neˇz bude moci data pˇrij´ımat. Setup Time Doba mezi pˇr´ıchodem ud´alosti (napˇr. pˇreruˇsen´ı) a reakc´ı na ni. GAP Factor Hodnota specifikuje poˇcet cykl˚ u, bˇehem niˇz jsou hled´ana nov´a zaˇr´ızen´ı snaˇz´ıc´ı se pˇripojit do syst´emu. HSA Nejvyˇsˇs´ı adresa zaˇr´ızen´ı, jeˇz operuje na segmentu. Max-Retry-Limit Specifikuje poˇcet opakov´an´ı telegramu, pokud adresovan´a stanice neodpov´ıd´a. Tabulka 4.1: Parametry sbˇernice Hodnota Baud Rate[kBaud]
0 9,6
1 19,2
2 93,75
3 187,5
4 500
5 1500
6 3000
7 6000
8 12000
9 45,45
Tabulka 4.2: Mapov´an´ı ˇc´ısel na Baud Rate S vyuˇzit´ım funkc´ı, jeˇz byly pops´any v kapitole 3.2.2, je nyn´ı moˇzn´e odeslat pˇr´ıkaz firmwaru. Postup odes´ıl´an´ı pˇr´ıkazu je ve vytvoˇren´e aplikaci n´asleduj´ıc´ı:
38
10 31,25
Realizace monitoru sbˇernice Profibus PA
Aplikace - ˇreˇsen´ı
1. Zavol´an´ı aplikaˇcn´ı funkce GetSendBox: Ve smyˇcce je nejprve vol´ana knihovn´ı funkce GetReceiveBlock, kter´a zjiˇst’uje, zda nedoˇslo na sbˇernici k nˇejak´e asynchronn´ı ud´alosti (napˇr. time out, indikace duplicitn´ı adresy, atd.) Pokud je ud´alost zachycena, je n´aslednˇe vol´ana funkce FreeReceiveBlock pro navr´acen´ı pˇrijat´eho mailboxu zp´atky firmwaru. Pˇred ot´aˇckou cyklu je nakonec zavol´ana funkce GetRequestBlock, kter´a v pˇr´ıpadˇe u ´spˇechu vr´at´ı nenulov´ y ukazatel(m) na mailbox, ˇc´ımˇz ukonˇc´ı smyˇcku. 2. Naplnˇen´ı mailboxu daty: Pro uloˇzen´ı dat jsou pouˇzity struktury, a to takov´ ym zp˚ usobem, aby odpov´ıdaly uspoˇr´ad´an´ı mailboxu (viz 3.2.1). Pro pˇr´ıkaz load_bus_parameters vypad´a naplnˇen´ı dat takto: m->LoadBusParameter.Header.Service = LOAD_BUS_PARAMETER; /*0x0A*/ m->LoadBusParameter.Header.Group = CM_DP; /*0x08*/ m->LoadBusParameter.Baudrate = 10; /*31,25 kBaud*/ m->LoadBusParameter.BusParameter.SlotTime = 4094; m->LoadBusParameter.BusParameter.MinTsdr = 22; m->LoadBusParameter.BusParameter.MaxTsdr = max_tsdr; /*pˇ reˇ cteno z GSD souboru*/ m->LoadBusParameter.BusParameter.QuietTime = 0; m->LoadBusParameter.BusParameter.SetTime = 55; m->LoadBusParameter.BusParameter.GapFactor = 10; m->LoadBusParameter.BusParameter.HighestStationAdress = 126; m->LoadBusParameter.BusParameter.MaxRetryLimit = 1;
3. Odesl´an´ı dat funkc´ı sendRequestBlock, ˇ an´ı prob´ıh´a opˇet 4. Po odesl´an´ı dat je tˇreba poˇckat na reakci firmwaru. Cek´ ve smyˇcce, kdy se opakovanˇe vol´a funkce GetReceiveBlock. Znovu se testuje, zda nedoˇslo k asynchronn´ı ud´alosti, a tak´e to, zda odpovˇed’, kterou v tento okamˇzik odeslal firmware, odpov´ıd´a odeslan´ ym dat˚ um (ˇcast´ y pˇr´ıpad, kdy napˇr´ıklad firmware odpov´ı pˇr´ıkazem ddlm_abort). Pokud funkce vr´at´ı spr´avnou odpovˇed’ (parametry Service a Group odpov´ıdaj´ı odeslan´ ym dat˚ um), skonˇc´ı smyˇcka a dojde k otestov´an´ı parametru Result, zda pˇr´ıjem dat na stranˇe firmwaru skonˇcil u ´spˇechem.
39
Realizace monitoru sbˇernice Profibus PA
Aplikace - ˇreˇsen´ı
Inicializace firmwaru Po nahr´an´ı parametr˚ u sbˇernice je jiˇz moˇzn´e, aby doˇslo k inicializaci tzv. Class-1-master j´adra, jin´ ymi slovy, aby se firmware jako master pˇripojil do s´ıtˇe Profibus. Do okamˇziku zavol´an´ı tohoto pˇr´ıkazu bylo zm´ınˇen´e j´adro ve stavu OFFLINE, po u ´spˇeˇsn´em zavol´an´ı inicializaˇcn´ıho pˇr´ıkazu init_dp_master pˇrejde do stavu STOP.
4.3.4
Zad´ an´ı adresy
Firmware uˇz v tomto okamˇziku pracuje na sbˇernici jako master, ale nem´a ˇz´adn´e informace o okoln´ıch stanic´ıch, kter´e se na sbˇernici mohou vyskytovat. Pro nav´az´an´ı spojen´ı s nˇekter´ ym zaˇr´ızen´ım potˇrebuje master zn´at jeho adresu, coˇz ovˇsem nen´ı informace, kter´a by se vyskytovala v GSD souboru, a proto je tˇreba vyuˇz´ıt pˇr´ıkazu get_live_list. V pˇr´ıpadˇe, ˇze skonˇc´ı vol´an´ı pˇr´ıkazu u ´spˇechem, je k dispozici pole o 127 bytech. Indexy poloˇzek v poli odpov´ıdaj´ı jednotliv´ ym adres´am a data, kter´a tyto poloˇzky obsahuj´ı, se interpretuj´ı takto: • 0 → stanice je slave, • 3 → stanice je master, • 4 → ˇz´adn´a stanice s touto adresou nen´ı na sbˇernici pˇr´ıtomna.
4.3.5
Zmˇ ena parametr˚ u
Na sbˇernici je moˇzn´e pˇripojit mnoho r˚ uzn´ ych zaˇr´ızen´ı s mnoha r˚ uzn´ ymi parametry. Od zaˇca´tku byla snaha vytvoˇrit aplikaci, kter´a bude nav´ ysost univerz´aln´ı, a proto je moˇzn´e jeˇstˇe pˇred zaˇc´atkem cyklick´e komunikace nˇekter´e d˚ uleˇzit´e parametry zmˇenit. Jedn´a se o tento v´ ybˇer: • Poˇcet stop bit˚ u, • Baudrate, • CRC poˇrad´ı, 40
Realizace monitoru sbˇernice Profibus PA
Aplikace - ˇreˇsen´ı
• Parita, • Adresa Modbus zaˇr´ızen´ı, • Typ pˇren´aˇsen´e promˇenn´e (napˇr. float, integer, atd.), • Adresa Modbus registru. ˇ Cten´ ı blok˚ u z jednotky T410 V u ´vodu kapitoly 4 bylo zm´ınˇeno, ˇze v sekci t´ ykaj´ıc´ı se ˇcten´ı parametr˚ u bude pops´an postup ˇcten´ı blok˚ u z jednotky T410. Toto zaˇrazen´ı se uk´azalo nakonec jako jedin´e smyslupln´e, protoˇze zmˇena parametr˚ u je v cel´e aplikaci jedin´e m´ısto, kde ke ˇcten´ı resp. z´apisu do blok˚ u doch´az´ı. Kaˇzd´e Profibus PA zaˇr´ızen´ı obsahuje jeden fyzick´ y blok (Physical block) a alespoˇ n jeden blok funkˇcn´ı (Function) a pˇrevodn´ıkov´ y (Transducer). Pˇr´ıstup k tˇemto blok˚ um je zajiˇstˇen pˇres dvojici slot-index. Kaˇzd´e konkr´etn´ı zaˇr´ızen´ı m´a tyto bloky jinak adresovan´e, a proto je nejprve nutn´e zjistit, kde se tyto bloky v adresn´ım prostoru nach´az´ı. Jednotka Fint T410 obsahuje 1 fyzick´ y blok (PB), 4 funkˇcn´ı (FB) a 4 pˇrevodn´ıkov´e (TB) bloky. Prvn´ım krokem je pˇreˇcten´ı tzv. adres´aˇre objekt˚ u. Adres´aˇr se skl´ad´a z hlaviˇcky (Directory Object Header), souhrnn´ ych informac´ı o bloc´ıch (Composite List Directory) a z ukazatel˚ u na jednotliv´e bloky (Composite Directory). Hlaviˇcku adres´aˇre objekt˚ u je moˇzn´e nal´ezt u kaˇzd´eho Profibus PA zaˇr´ızen´ı na pozici slot = 1 a index = 0 a m´a tuto strukturu (viz tabulka 4.3, kter´a obsahuje parametry pˇreˇcten´e z jednotky T410): 2B DIR ID 0 NO DIR ENTRIES 12
2B DIR REV NO 1 FIRST COMP LIST DIR ENTRY 1
2B NO DIR OBJ 1 NO COMP LIST DIR ENTRY 3
Tabulka 4.3: Hlaviˇcka adres´aˇre objekt˚ u
41
Realizace monitoru sbˇernice Profibus PA
Aplikace - ˇreˇsen´ı
Jednotliv´e poloˇzky pak maj´ı tento v´ yznam: • DIR_ID: Identifikaˇcn´ı ˇc´ıslo adres´aˇre, ˇ ıslo revize, • DIR_REV_NO: C´ • NO_DIR_OBJ: Poˇcet dalˇs´ıch index˚ u pouˇzit´ ych ze slotu ˇc´ıslo 1, • NO_DIR_ENTRIES: Celkov´ y poˇcet poloˇzek v Composite List Directory a v Composite Directory, • FIRST_COMP_LIST_DIR_ENTRY: Index prvn´ı poloˇzky Composite List Directory, jeˇz se nach´az´ı vˇzdy ve slotu ˇc´ıslo 1, • NO_COMP_LIST_DIR_ENTRY: Poˇcet poloˇzek v Composite List Directory (poloˇzkou se mysl´ı trojice Index, Offset a NO PB, ˇcili celkem 4B, viz d´ale). Po pˇreˇcten´ı hlaviˇcky je moˇzn´e pˇreˇc´ıst z´aroveˇ n Composite List Directory a Composite Directory, nebot’ hodnoty obou skupin se nach´az´ı ve slotu 1 a na indexu pˇreˇcten´em z tabulky (pro jednotku T410 je tento index 1). Po pˇreˇcten´ı cel´e t´eto skupiny dat je nutn´e nejprve zjistit hodnoty obsaˇzen´e v adres´aˇri Composite List Directory, kter´ y m´a tuto strukturu (viz 4.4): 1B 1B Index PB Index Offset
2B NO PB
1B 1B Index TB Index Offset
2B NO TB
1B 1B Index FB Index Offset
2B NO FB
Tabulka 4.4: Composite List Directory Pro kaˇzd´ y typ bloku jsou ud´any tyto parametry: • Index: Pozice zaˇca´tku dat bloku, • Offset: Pozice dat na dan´em indexu (Offset × 4B), • No_PB/TB/FB: Poˇcet blok˚ u dan´eho typu. Pro jednotku Fint T410 vypad´a Composite List Directory takto (viz tabulka 4.5):
42
Realizace monitoru sbˇernice Profibus PA 1B 1B Index PB Index Offset 1 4
2B NO PB 1
1B 1B Index TB Index Offset 1 5
Aplikace - ˇreˇsen´ı 2B NO TB 4
1B 1B Index FB Index Offset 1 9
2B NO FB 4
Tabulka 4.5: T410 - Composite List Directory Nyn´ı je moˇzn´e pˇreˇc´ıst konkr´etn´ı informace o vˇsech bloc´ıch (Composite Directory), kter´e se nach´az´ı ve stejn´em slotu (1) a na indexu a offsetu pˇreˇcten´em z Composite List Directory. Pokud chceme napˇr´ıklad zjistit, kde se nach´az´ı vˇsechny informace o fyzick´em bloku, pˇreˇcteme data ze slotu 1, indexu 1 a ukazatel na data zv´ yˇs´ıme o 4B. Tabulka 4.6 zn´azorˇ nuje, jak vypad´a struktura Composite Directory fyzick´eho bloku (pro ostatn´ı bloky je struktura stejn´a): 1B 1B 2B Physical Block ˇ ıslo Slot Index C´
Tabulka 4.6: Composite Directory Pro fyzick´ y blok jednotky T410 vypad´a obsah Composite Directory takto: Index = 0, slot = 0, poˇcet = 38. Nyn´ı jsou k dispozici potˇrebn´e u ´daje k tomu, aby bylo moˇzn´e pˇreˇc´ıst poˇzadovan´e informace z jednotliv´ ych blok˚ u. Pro ˇcten´ı resp. z´apis dat jsou k dispozici pˇr´ıkazy ddlm_read resp. ddlm_write s tˇemito parametry (viz tabulka 4.7): Parametr Handle
Popis Identifikace spojen´ı, slouˇz´ı pouze k informativn´ım u ´ˇcel˚ um Slot number Hodnota slotu (ˇc´ıslo od 0 do 255) Index Hodnota indexu (ˇc´ıslo od 0 do 255) Length Poˇcet byt˚ u dat k pˇreˇcten´ı Data (pro ddlm write) data, kter´a maj´ı b´ yt zaps´ana na dan´e um´ıstˇen´ı Tabulka 4.7: Parametry pˇr´ıkaz˚ u ddlm read a ddlm write V pˇr´ıpadˇe pˇr´ıkazu ddlm_read obsahuje odpovˇed’ firmwaru k´ yˇzen´a data (parametr odpovˇedi Data).
43
Realizace monitoru sbˇernice Profibus PA
4.3.6
Aplikace - ˇreˇsen´ı
ˇ Cten´ ı dat
Po pˇripojen´ı a inicializaci spojen´ı, zad´an´ı adresy a pˇr´ıpadn´e zmˇenˇe parametr˚ u je dalˇs´ım krokem ˇcten´ı dat, kter´a jsou k dispozici v zaˇr´ızen´ı vystupuj´ıc´ı na sbˇernici jako Modbus Slave. V t´eto ˇca´sti se tak´e zmˇen´ı vzhled aplikace, coˇz demonstruje obr´azek 4.5
Obr´azek 4.5: Aplikace - zachyt´av´an´ı dat Proces ˇcten´ı dat je doslova kapitolou sama pro sebe. Po stisknut´ı tlaˇc´ıtka pro zah´ajen´ı cyklick´e komunikace dojde opˇet k vykon´an´ı sekvence pˇr´ıkaz˚ u: • naˇcten´ı dalˇs´ıch parametr˚ u (konkr´etn´ı informace o slave, ˇcili o jednotce T410) pˇr´ıkazem load_slave_parameters, • zah´ajen´ı cyklick´e komunikace pˇr´ıkazem start_data_exchange, • ˇcten´ı Modbus dat z Process Data Image. V n´asleduj´ıc´ım textu budou struˇcnˇe pops´any prvn´ı zm´ınˇen´e kroky (jedn´a se o standardn´ı vol´an´ı pˇr´ıkaz˚ u), vˇetˇs´ı d˚ uraz bude kladen na ˇcten´ı dat z Process Data Image, protoˇze to bylo zat´ım zm´ınˇeno pouze v teoretick´e ˇc´asti v kapitole 3.2.1.
44
Realizace monitoru sbˇernice Profibus PA
Aplikace - ˇreˇsen´ı
Parametry zaˇ r´ızen´ı Modbus slave GSD soubor obsahuje kromˇe informac´ı o sbˇernici tak´e parametry, kter´e se pˇr´ımo vztahuj´ı k hardwaru dan´e jednotky. Pˇred zaˇca´tkem cyklick´e komunikace je tedy nezbytn´e dodat tyto parametry jednotce Modbus Master (inicializovan´ y firmware jednotky FNL). Tabulka 4.8 obsahuje kromˇe n´azvu tak´e konkr´etn´ı hodnoty pro jednotku T410 (spolu s vysvˇetlen´ım jejich v´ yznamu). Parametr: Slave Address Hodnota: Address V´ yznam: Promˇenn´ a address obsahuje adresu Modbus Slave zaˇr´ızen´ı, jeˇz byla pˇreˇctena v kroku ˇcten´ı parametr˚ u. Parametr: Sl_Flag Hodnota: 0x80 V´ yznam: Zaˇr´ızen´ı bude aktivov´ano po zaps´an´ı parametr˚ u, ˇcili se bude moci z´ uˇcastnit cyklick´e komunikace. Parametr: WDFact1, WDFact2 Hodnota: 0x00; 0x00 V´ yznam: Watchdog je deaktivov´an. Parametr: Identification Number Hodnota: 0xA002 V´ yznam: Identifikaˇcn´ı ˇc´ıslo zaˇr´ızen´ı (pˇreˇcteno z GSD). Parametr: Freeze Requested Hodnota: 0x00 V´ yznam: Zaˇr´ızen´ı nepodporuje tzv. Freeze Mode (zamrznut´ı hodnoty na vstupu). Parametr: Sync Requested Hodnota: 0x00 V´ yznam: Zaˇr´ızen´ı nepodporuje tzv. Sync Mode (zamrznut´ı hodnoty na v´ ystupu). Parametr: User Parameters Length Hodnota: 0x03 V´ yznam: D´elka User_Prm_Data v bytech (viz d´ale). Parametr: Minimum Slave Interval Hodnota: 0x7D0 ˇ (200µs) mezi dvˇema ˇctec´ımi cykly (Master→Slave). V´ yznam: Cas Parametr: Group Identification Hodnota: 0x00 V´ yznam: Slave nen´ı pˇriˇrazen do ˇz´adn´e skupiny Slave zaˇr´ızen´ı. Parametr: Group Identification Hodnota: 0x00 V´ yznam: Slave nen´ı pˇriˇrazen do ˇz´adn´e skupiny Slave zaˇr´ızen´ı. Parametr: Maximum Diagnostic Data Length Hodnota: 0x0E V´ yznam: Maxim´ aln´ı d´elka diagnostick´ ych dat, kter´e odes´ıl´a slave masteru. Parametr: Offset Inputs Hodnota: 0x2 V´ yznam: Offset v Process Data Image - od tohoto offsetu budou ukl´ad´ana pˇr´ıchoz´ı Modbus data pˇri cyklick´e komunikaci.
45
Realizace monitoru sbˇernice Profibus PA
Aplikace - ˇreˇsen´ı
Parametr: Offset Outputs Hodnota: 0x1A V´ yznam: Offset v Process Data Image - od tohoto offsetu budou ukl´ad´ana odchoz´ı Modbus data pˇri cyklick´e komunikaci. Parametr: Config Length Hodnota: 0x01 V´ yznam: D´elka konfiguraˇcn´ıch dat (viz kapitola A.2). Hodnota: Parametr: Config And User Parameter Data 0x94;0x00;0x00;0x00 V´ yznam: Podle parametru Config Length je prvn´ı byte konfiguraˇcn´ı, ostatn´ı byty jsou pot´e uˇzivatelsk´ ymi parametry (pˇreˇcten´e z GSD souboru).
Tabulka 4.8: Parametry pˇr´ıkazu load_slave_parameters
Zah´ ajen´ı cyklick´ e komunikace Po naˇcten´ı vˇsech potˇrebn´ ych parametr˚ u je jiˇz moˇzn´e zah´ajit cyklickou komunikaci Master→Slave, k ˇcemuˇz slouˇz´ı pˇr´ıkaz start_data_exchange. Na n´asleduj´ıc´ıch ˇr´adc´ıch je pro ilustraci uveden pˇrepis metody, v n´ıˇz je pˇr´ıkaz start_data_exchange vol´an: void MainWindow::startDataExchange() { short result; PTCommand m; bool success; m = Communication::GetSendBox(); m->StartDataExchange.Header.Group = CM_DP; m->StartDataExchange.Header.Service = START_DATA_EXCHANGE; result = Communication::sendRequestBlock(m); success = Communication::testResult("StartDataExchange", result); if (success) { m = Communication::WaitRecBlock(CM_DP | CM_READY, START_DATA_EXCHANGE); result = m->StartDataExchange.Header.Result; success = Communication::testResult("StartDataExchange", result); } if (success) { result = Communication::freeReceiveBlock(); success = Communication::testResult("StartDataExchange", result); } }
46
Realizace monitoru sbˇernice Profibus PA
Aplikace - ˇreˇsen´ı
ˇ Cten´ ı dat z Process Data Image
Obr´azek 4.6: Schema procesu pˇrenosu Modbus dat k ˇr´ıd´ıc´ı jednotce Na obr´azku 4.6 je pˇrehlednˇe zn´azornˇeno, jak vypad´a komunikace napˇr´ıˇc cel´ ym syst´emem. Konkr´etnˇe se d´a komunikace rozdˇelit na tyto ˇca´sti: 1. Pˇ renos dat mezi Modbus Slave a Modbus Master (T410) - data jsou ˇctena z Modbus zaˇr´ızen´ı, jehoˇz adresa a adresa ˇcten´eho registru byly nastaveny v prvn´ı ˇc´asti aplikace (viz kapitola 4.3.5), 2. Cyklick´ a komunikace - cyklick´a komunikace byla zah´ajena pˇr´ıkazem start_data_exchange, jenˇz byl pops´an v pˇredchoz´ı kapitole. Pˇri t´eto komunikaci doch´az´ı k pˇrenosu tzv. prim´arn´ı promˇenn´e (hodnota v´ yˇse uveden´eho Modbus registru) mezi jednotkou T410 (pracuj´ıc´ı jako Profibus Slave) a jednotkou FNL (jej´ıˇz firmware funguje jako Profibus Master). Data jsou na stranˇe FNL ukl´ad´any do Process Data Image, konkr´etnˇe do m´ısta, jeˇz urˇcuje parametr Offset Inputs definovan´ y v pˇr´ıkazu load_slave_parameters. ˇ 3. Cten´ ı dat z Process Data Image - tato ˇca´st je z hlediska implementace nejzaj´ımavˇejˇs´ı, a proto bude na n´asleduj´ıc´ıch ˇr´adc´ıch bl´ıˇze pops´ana. Pro pˇrenos dat z Process Data Image je k dispozici nˇekolik pˇr´ıkaz˚ u, jeˇz byly pops´any v kapitole 3.2.2. V aplikace je pro tento u ´ˇcel pouˇzit pˇr´ıkaz get_process_data, protoˇze pro u ´ˇcel aplikace je potˇrebn´a pouze funkce ˇcten´ı. Vstupn´ımi parametry jsou: • data_offset - offset do adresn´ıho prostoru Process Data Image. Mus´ı b´ yt shodn´ y s parametrem Offset Inputs pˇr´ıkazu load_slave_parameters, 47
Realizace monitoru sbˇernice Profibus PA
Aplikace - ˇreˇsen´ı
• data_len - poˇcet pˇren´aˇsen´ ych dat (v bytech). V aplikaci je nastavena na 24 byt˚ u (konstanta MAX_COMM_DATA_LEN), ovˇsem k´ yˇzenou prim´arn´ı promˇennou lze naj´ıt na prvn´ıch pˇeti bytech, • process_data_ptr - ukazatel na pole byt˚ u, do nˇehoˇz budou data uloˇzena (m´a tedy statickou velikost MAX_COMM_DATA_LEN). Ve zdrojov´em k´odu vypad´a vol´an´ı pˇr´ıkazu takto: void MainWindow::getProcessData() { BYTE InputData[MAX_COMM_DATA_LEN]; /* inicializace pole na sam´ e nuly */ memset(&InputData, 0x00, sizeof (InputData)); /* INPUT_OFFSET = 0x02, MAX_COMM_DATA_LEN = 0x18 */ short result = GetProcessData (INPUT_OFFSET, MAX_COMM_DATA_LEN, InputData, TRUE); }
Do pole InputData jsou po u ´spˇeˇsn´em zavol´an´ı funkce GetProcessData nakop´ırov´ana data z Process Data Image, jak ilustruje i obr´azek 4.7.
Obr´azek 4.7: Pr˚ uchod dat z registr˚ u Modbus Slave do pole v ˇr´ıd´ıc´ı jednotce
48
Realizace monitoru sbˇernice Profibus PA
Aplikace - ˇreˇsen´ı
Spolu s daty je z Process data Image pˇreˇcten tak´e tzv. Status Byte (SB). Pro pochopen´ı v´ yznamu SB je nejprve nutn´e pochopit, jak u protokolu Profibus PA funguj´ı tzv. kontroly limit˚ u. Princip kontroly limit˚ u je pomˇernˇe jednoduch´ y - kaˇzd´e zaˇr´ızen´ı m´a pˇrednastaveny limity, po jejichˇz pˇrekroˇcen´ı dojde k nastaven´ı odpov´ıdaj´ıc´ı promˇenn´e. Celkem jsou v PA zaˇr´ızen´ıch rozliˇsov´any 4 druhy limit˚ u: • Upper Alarm Limit (HI_HI_LIM), • Upper Warning Limit(HI_LIM), • Lower Warning Limit (LO_LIM), • Lower Alarm Limit (LO_LO_LIM) V´ yznam limit˚ u je demonstrov´an na obr´azku 4.8:
Obr´azek 4.8: Limity Vytvoˇren´a aplikace umoˇzn ˇuje uˇzivateli nastavovat tyto limity, coˇz je patrn´e z obr´azku 4.5. Limity jsou nastavov´any standardn´ım procesem ˇcten´ı a z´apisu do funkˇcn´ıho bloku.
49
Realizace monitoru sbˇernice Profibus PA
Aplikace - ˇreˇsen´ı
Nyn´ı je jiˇz moˇzn´e vysvˇetlit v´ yznam Status Bytu. Status Byte je pˇriˇrazen ke kaˇzd´e namˇeˇren´e hodnotˇe a m´a n´asleduj´ıc´ı form´at (viz obr. 4.9):
Obr´azek 4.9: Status Byte
• Kvalita - informace o namˇeˇren´e hodnotˇe, • Podrobnosti o kvalitˇ e - rozˇsiˇruj´ıc´ı informace o namˇeˇren´e hodnotˇe, • Limity - informace, zda byl pˇrekroˇcen nˇekter´ y z limit˚ u. Nab´ yv´a tˇechto hodnot: – 00 - namˇeˇren´a hodnota je validn´ı, nepˇrekraˇcuje ˇz´adn´ y limit, – 01 - namˇeˇren´a hodnota je menˇs´ı neˇz doln´ı limit, – 11 - namˇeˇren´a hodnota je vyˇsˇs´ı neˇz horn´ı limit. Ve vytvoˇren´e aplikaci je kaˇzd´ y Status Byte zaznamen´av´an do zvl´aˇstn´ıho sloupce. Jednotliv´e statusy jsou interpretov´any takto: Status Byte Interpretace 0x80 Quality: Good, Quality Status: OK, Limits: Not Limited 0x89 Quality: Good, Quality Status: Active Advisory Alarm, Limits: Low limited 0x8A Quality: Good, Quality Status: Active Advisory Alarm, Limits: High limited 0x8D Quality: Good, Quality Status: Active Critical Alarm, Limits: Low limited 0x8E Quality: Good, Quality Status: Active Critical Alarm, Limits: High limited
50
Realizace monitoru sbˇernice Profibus PA
Aplikace - ˇreˇsen´ı
Quality: Uncertain, Quality Status: Last Usable Value, Limits: Not Limited 0x51 Quality: Uncertain, Quality Status: Sensor Conversion not Accurate, Limits: Low limited 0x52 Quality: Uncertain, Quality Status: Sensor Conversion not Accurate, Limits: High limited 0x08, 0x09, 0x0A Quality: Bad, Quality Status: Device Failure 0x10, 0x11, 0x12 Quality: Bad, Quality Status: Sensor Failure 0x14, 0x15, 0x16 Quality: Bad, Quality Status: No Communication 0x44
4.3.7
Otestov´ an´ı aplikace
Aplikace bohuˇzel nebyla otestov´ana na ˇz´adn´em konkr´etn´ım Modbus zaˇr´ızen´ı, k z´akladn´ım test˚ um byla vyuˇzita shareware verze programu MOD_RSsim, kter´a plnohodnotnˇe nahrazuje k´ yˇzen´ y hardware.
51
5 Z´avˇer Tato diplomov´a pr´ace se zab´ yv´a pr˚ umyslov´ ymi sbˇernicemi, pˇredevˇs´ım pak sbˇernic´ı Profibus a jej´ı variantou PA. Hlavn´ım c´ılem bylo s vyuˇzit´ım dostupn´eho hardwaru vytvoˇrit aplikaci, kter´a um´ı zachyt´avat pˇren´aˇsen´a data, vhodnˇe tato data filtrovat a zobrazovat je uˇzivateli. V prvn´ı, teoretick´e ˇca´sti jsou nejprve struˇcnˇe pops´any modern´ı pr˚ umyslov´e sbˇernice s d˚ urazem na sbˇernice typu Modbus a Profibus PA, nebot’ tyto dvˇe sbˇernice jsou hlavn´ı souˇca´st´ı komunikaˇcn´ıho ˇretˇezce, jenˇz byl pro u ´ˇcely t´eto diplomov´e pr´ace sestaven. Druh´a ˇca´st pr´ace se zab´ yv´a zmiˇ novan´ ym komunikaˇcn´ım ˇretˇezcem. Jako z´akladn´ı stavebn´ı kameny ˇretˇezce byly vybr´any 2 jednotky – FintT410 (implementuj´ıc´ı rozhran´ı mezi protokoly Ethernet a Profibus PA) a Fieldbus Network Link (implementuj´ıc´ı rozhran´ı mezi protokoly Profibus PA a Modbus). V t´eto ˇc´asti jsou tedy pops´any obˇe jednotky, pˇredevˇs´ım pak jednotka Fieldbus Network Link, kter´a skrz sv´e API poskytuje pˇr´ıstup na sbˇernici Profibus PA. Dalˇs´ım krokem byla jiˇz vlastn´ı praktick´a ˇca´st, ˇcili vytvoˇren´ı monitoru pˇren´aˇsen´ ych dat. Nejprve vˇsak bylo nutn´e nauˇcit se pracovat s dostupn´ ym API, kter´e je souˇc´ast´ı firmwaru jednotky Fieldbus Network Link. S vyuˇzit´ım dostupn´ ych manu´al˚ u byla jako prvn´ı vytvoˇrena aplikace, kter´a umˇela ˇc´ıst data z pamˇet’ov´ ych blok˚ u jednotky T410. Tento program, jeˇz byl n´aslednˇe podle poˇzadavku pˇreps´an z programovac´ıho jazyka ANSI C do jazyka C#, byl zaˇrazen do projektu V´ yzkum a v´ yvoj v´ıcepaprskov´ ych ultrazvukov´ ych pr˚ utokomˇer˚ u kapalin (FR-TI1/137). V dalˇs´ı f´azi v´ yvoje pak byla vytvoˇrena aplikace, kter´a um´ı monitorovat data, kter´a jsou pˇren´aˇsena mezi jednotkami v r´amci cyklick´e komunikace, ˇcili dok´aˇze cyklicky ˇc´ıst data z registr˚ u Modbus zaˇr´ızen´ı. Souˇc´ast´ı aplikace je tak´e moˇznost konfigurace, kter´a umoˇzn ˇuje mˇenit parametry sbˇernice s ohledem na pˇripojen´a zaˇr´ızen´ı. Pro pohodlnou manipulaci s programem bylo vytvoˇreno jednoduch´e uˇzivatelsk´e rozhran´ı. V dalˇs´ı f´azi v´ yvoje by bylo vhodn´e rozˇs´ıˇrit aplikaci o nov´e funkˇcnosti jako je napˇr´ıklad manu´aln´ı nastavov´an´ı adresy nebo z´ısk´av´an´ı diagnostick´ ych dat pˇripojen´ ych zaˇr´ızen´ı. Dalˇs´ı uˇziteˇcn´e vylepˇsen´ı by mohlo napˇr´ıklad b´ yt ukl´ad´an´ı pˇren´aˇsen´ ych dat do datab´aze pro moˇznost zpˇetn´eho vyhodnocov´an´ı.
52
6 Pˇrehled zkratek CIP ODVA HART CAN RTU CRC ASCII LRC PROFIBUS FNL ZVEI FMS DP PA PNO PI MBP FDL DPV FDL IEC DPM1 SRD MSAC1 MSAC2 API RAM DPR MSB PV GUI GSD HSA SB
Common Industrial Protocol Open DeviceNet Vendors Association Highway Addressable Remote Transducer Controller Area Network Remote Terminal Unit Cyclic Redundancy Check American Standard Code for Information Interchange Longitudinal Redundancy Check Process Field Bus Fieldbus Network Link Zentralverband Elektrotechnik und Elektronikindustrie Fieldbus Message Specification Decentralized Periphery Process Automation PROFIBUS User Organization PROFIBUS International Manchester Bus Powered Fieldbus Data Link Decentralized Periphery Version Fieldbus Data Link International Electrotechnical Commission DP Master Class 1 Send and Request Data with Reply Master/Slave Acyclic C1 Master/Slave Acyclic C2 Application Programming Interface Random Access Memory Dual-Port RAM Most Significant Bit Primary Variable Graphical User Interface General Station Description Highest Station Address Status Byte Tabulka 6.1: Pˇrehled zkratek
Literatura [1]
Real Time Automation [online]. 2010 [cit. 2013-05-01]. Dostupn´e z:
[2]
BURGET, Petr. Profibus-PA – ˇreˇsen´ı pro automatizaci proces˚ u. AUTOMA. 2001, ˇc. 1. [online] [cit. 1. 5. 2013] Dostupn´e z:
[3]
´ HANZALEK, Zdenˇek a Pavel BURGET. Hw.cz [online]. 2004 [cit. 2013-05-01]. Dostupn´e z:
[4]
PROFIBUS-PA: Part 4 Communications line]. 1999 [cit. 2013-05-01]. Dostupn´e
[5]
HLAVA, Jaroslav. Prostˇredky automatick´eho ˇr´ızen´ı II: analogov´e a ˇc´ıslicov´e regul´atory, elektrick´e pohony, pr˚ umyslov´e komunikaˇcn´ı ˇ syst´emy [online]. Vyd. 1. Praha: Cesk´e vysok´e uˇcen´ı technick´e, 2000 [cit. 2013-05-01]. ISBN 978-800-1022-214.
[6]
DIEDRICH, Christian a Thomas BANGEMANN. Profibus PA: Instrumentierungstechnologie f¨ ur die Verfahrenstechnik. 2. Aufl. M¨ unchen: Oldenbourg Industrieverl, 2006. ISBN 978-383-5630-567.
[7]
LIAN, Odd. FintPROFI T410 module specification. 2009.
[8]
¨ BOHM, Pavel. Komunikaˇcn´ı modul pro pr˚ umyslovou sbˇernici Foundation Fieldbus. Plzeˇ n, 2012. Diplomov´a pr´ace. Z´apadoˇcesk´a univerzita v Plzni, Fakulta Aplikovan´ ych vˇed, Katedra informatiky a v´ ypoˇcetn´ı techniky.
[onz:
[9]
ControlNet je plnou souˇc´ast´ı ODVA. AUTOMA [online]. 2008, ˇc. 8 [cit. 2013-05-05]. Dostupn´e z:
[10]
HART – jednoduch´a a spolehliv´a komunikace. AUTOMA [online]. 2004, ˇc. 7 [cit. 2013-05-05]. Dostupn´e z:
[11]
MAHALIK, N. Fieldbus technology: industrial network standards for real-time distributed control. New York: Springer, 2003, xxv, 590 p. ISBN 35-404-0183-0.
[12]
´ HANZALEK, Zdenˇek a Pavel BRONEC. Profibus a Foundation Fieldbus: konkurenti v oblasti pr˚ umyslov´ ych sbˇernic. AUTOMA [online]. 2000, ˇc. 2 [cit. 2013-05-05]. Dostupn´e z:
[13]
ˇ A, ´ Andrea. Pˇrehled protokolu MODBUS. [onRONESOV line]. 2005 [cit. 2013-04-28]. Dostupn´e z:
[14]
MODICON, Inc., Industrial Automation Systems. Modicon Modbus Protocol Reference Guide. 1996. Dostupn´e z:
[15]
TMG I-TEC GMBH. PROFIBUS FNLDPE Interface. 2003.
[16]
QT Project [online]. 2013 [cit. 2013-04-01]. Dostupn´e z:
A Pˇr´ılohy
A.1
Uˇ zivatelsk´ a pˇ r´ıruˇ cka
Program je dostupn´ y na pˇriloˇzen´em CD, k dispozici je jak zkompilovan´a aplikace, tak zdrojov´e soubory. Pro start aplikace staˇc´ı spustit soubor monitor.exe, kter´ y se nach´az´ı ve sloˇzce /Program/Bin/ Uˇzivatel m´a tak´e moˇznost vlastn´ıho sestaven´ı programu. Souˇca´st´ı pˇriloˇzen´eho CD (ve sloˇzce /Program/Src/) je kompletn´ı projekt vytvoˇren´ y ve v´ yvojov´em prostˇred´ı NetBeans verze 7.1.2.
A.1.1
Spuˇ stˇ en´ı programu a naˇ cten´ı GSD souboru
Po spuˇstˇen´ı programu je uˇzivateli zobrazeno u ´vodn´ı okno aplikace Monitor, viz obr´azek A.1.
Obr´azek A.1: Monitor - u ´vodn´ı okno
Z obr´azku A.1 je patrn´e, ˇze uˇzivatel nem´a prozat´ım pˇr´ıstupn´e t´emˇeˇr ˇza´dn´e funkce, k dispozici je pouze ˇcten´ı GSD souboru. Po stisknut´ı tlaˇc´ıtka Open je uˇzivateli zobrazeno okno pro v´ ybˇer souboru (soubory jsou filtrov´any podle pˇr´ıpony .GSD nebo .gsd), viz obr´azek A.2
Obr´azek A.2: Monitor - naˇcten´ı souboru Po nalezen´ı souboru a potvrzen´ı okna pro v´ ybˇer mohou nastat 2 moˇznosti: 1. Soubor nen´ı validn´ı GSD soubor, uˇzivateli je zobrazena hl´aˇska viz obr. A.3 a), 2. Soubor je validn´ı GSD soubor, uˇzivateli je zobrazena hl´aˇska viz obr. A.3 b)
(a) Nevalidn´ı GSD soubor
(b) Validn´ı GSD soubor
Obr´azek A.3: Monitor - validace GSD souboru
A.1.2
Pˇ ripojen´ı k jednotce a naˇ cten´ı adresy
Po naˇcten´ı validn´ıho GSD souboru je uˇzivateli zpˇr´ıstupnˇeno tlaˇc´ıtko Connect pro pˇripojen´ı k jednotce FNL (viz obr. A.4)
Obr´azek A.4: Monitor - pˇripojen´ı Po stisknut´ı tlaˇc´ıtka Connect mohou nastat 2 situace: 1. Doˇslo k u ´spˇeˇsn´emu pˇripojen´ı k jednotce, uˇzivateli je zobrazena hl´aˇska viz obr. A.5 a), 2. Jednotka nen´ı pˇripojena k poˇc´ıtaˇci (ˇci m´a odpojen´e nap´ajen´ı), uˇzivateli je zobrazena hl´aˇska viz obr. A.5 b) Aplikace se nijak nezmˇen´ı, uˇzivatel m´a moˇznost pokus o pˇripojen´ı znovu opakovat.
(a) Korektn´ı pˇripojen´ı
(b) Probl´em s pˇripojen´ım
Obr´azek A.5: Monitor - hl´aˇsky po pokusu o pˇripojen´ı Po u ´spˇeˇsn´em pˇripojen´ı jsou uˇzivateli zpˇr´ıstupnˇeny dalˇs´ı funkce (viz obr. A.6).
Obr´azek A.6: Monitor - stav po u ´spˇeˇsn´em pˇripojen´ı Po pˇripojen´ı je samozˇrejmˇe k dispozici moˇznost odpojen´ı, k ˇcemuˇz slouˇz´ı tlaˇc´ıtko Disconnect. Po jeho stisknut´ı jsou opˇet deaktivov´ana vˇsechna pole, kter´a byla aktivov´ana po u ´spˇeˇsn´em pˇripojen´ı. Dalˇs´ı funkc´ı je urˇcen´ı adresy pˇripojen´eho Profibus PA zaˇr´ızen´ı. Uˇzivatel m´a 3 moˇznosti, jak s tou funkc´ı naloˇzit: 1. Uˇzivatel zn´a adresu zaˇr´ızen´ı, m˚ uˇze ji tedy ruˇcnˇe zadat do pˇripraven´eho pole (defaultn´ı moˇznost), 2. Uˇzivatel nezn´a adresu zaˇr´ızen´ı, po stisknut´ı tlaˇc´ıtka Get Address List je zavol´ana funkce, kter´a nalezne vˇsechna pˇripojen´a zaˇr´ızen´ı a jejich adresy pˇrid´a do rozbalovac´ıho seznamu. Nutno podotknout, ˇze vol´an´ı funkce nˇejakou dobu trv´a (maxim´alnˇe 1 minutu),
3. Adresa zaˇr´ızen´ı se shoduje s tou pˇrednastavenou (1), uˇzivatel m˚ uˇze nastavov´an´ı adresy ignorovat a pokraˇcovat postupem ze sekce A.1.3, eventu´alnˇe ze sekce A.1.4.
A.1.3
Nastavov´ an´ı parametr˚ u
Uˇzivatel m´a moˇznost nastavit nˇekolik parametr˚ u, kter´e jsou d˚ uleˇzit´e pro korektn´ı chov´an´ı pˇri cyklick´e komunikaci, jedn´a se o tyto parametry: • Poˇcet stop bit˚ u (Number of Stop Bits) - defaultn´ı hodnota: 1, • Baudrate (Baudrate) - defaultn´ı hodnota: 9600, • Poˇrad´ı byt˚ u v CRC souˇctu (CRC Order) - defaultn´ı hodnota: 0, • Parita (Parity) - defaultn´ı hodnota: 2, • Adresa Modbus zaˇr´ızen´ı (Address) - defaultn´ı hodnota: 3, • Datov´ y typ prim´arn´ı promˇenn´e (PV Type) - defaultn´ı hodnota: 7, • Adresa Modbus registru (Register Address) - defaultn´ı hodnota: 0. Jedn´a se o nepovinnou moˇznost, pokud uˇzivatel nechce nastavovat parametry, m˚ uˇze pokraˇcovat postupem, jenˇz je pops´an v sekci A.1.4. Pokud se tak stane, jsou pro parametrizaci pouˇzity defaultn´ı hodnoty. Pokud uˇzivatel chce nˇejak´ ym zp˚ usobem zmˇenit paremetry, mus´ı stisknout tlaˇc´ıtko Read Parameters. Po jeho stisknut´ı jsou aktivov´ana jednotliv´a pole pro zmˇenu konkr´etn´ıch parametr˚ u (viz obr. A.7). Kaˇzd´ y konkr´etn´ı parametr se aktualizuje aˇz po stisknut´ı tlaˇc´ıtka Set. V pˇr´ıpadˇe, ˇze uˇzivatel nezad´a validn´ı hodnotu, je zobrazen hl´aˇska viz obr. A.8.
Obr´azek A.7: Monitor - nastavov´an´ı parametr˚ u
Obr´azek A.8: Monitor - nevalidn´ı hodnota parametru
A.1.4
Cyklick´ a komunikace
Obr´azek A.9: Monitor - okno cyklick´e komunikace
Po stisknut´ı tlaˇc´ıtka Start Cyclic Communication je p˚ uvodn´ı okno deaktivov´ano a z´aroveˇ n je zobrazeno okno nov´e, viz. obr. A.9. Data jsou zaznamen´av´ana do tabulky, kde v prvn´ım sloupci jsou konkr´etn´ı data, v druh´em sloupci pak Status Byte spolu s jeho interpretac´ı. V prav´e ˇc´asti je moˇzn´e nastavovat hodnoty alarm˚ u a to stejn´ ym zp˚ usobem, jako se nastavovali parametry v sekci A.1.3. V pˇr´ıpadˇe, ˇze byly spr´avnˇe nastaveny parametry a z´aroveˇ n je na konci ˇretˇezce pˇripojeno Modbus zaˇr´ızen´ı, zaˇcnou se cyklicky pˇren´aˇset data (do tabulky je zaznamen´ana kaˇzd´a zmˇena). Obr´azek A.10 zn´azorˇ nuje nˇekolik cyklicky pˇrenesen´ ych hodnot.
Obr´azek A.10: Monitor - pˇrenesen´a data Po stisknut´ı tlaˇc´ıtka Disconnect je aplikace ukonˇcena.
A.2
GSD soubor
#Profibus_DP GSD_Revision = 3 Vendor_Name = "Fieldbus International AS" Model_Name = "T410" Revision = "1.0" Ident_Number = 0xa002 Protocol_Ident = 0 Station_Type = 0 FMS_supp = 0 Hardware_Release = "T410 1.01" Software_Release = "T410 1.01.00" Bitmap_Device = "T410" 31.25_supp = 1 45.45_supp = 1 93.75_supp = 1 MaxTsdr_31.25 = 100 MaxTsdr_45.45 = 250 MaxTsdr_93.75 = 1000 Redundancy = 0 Repeater_Ctrl_Sig = 0 24V_Pins = 0 Freeze_Mode_supp = 0 Sync_Mode_supp = 0 Set_Slave_Add_supp = 1 Min_Slave_Intervall = 250 Modular_Station = 1 Max_Module = 4 Max_Input_Len = 20 ; maximum Input Length Max_Output_Len = 0 ; maximum Output Length Max_Data_Len = 20 ; maximum In-Output Length Slave_Family = 12 Max_Diag_Data_Len = 14 Max_User_Prm_Data_Len = 3 Ext_User_Prm_Data_Const(0) = 0x00, 0x00, 0x00 ;------- Description of extended DP features: -------------; DPV1_Slave = 1 C2_Read_Write_supp = 1 C2_Max_Data_Len = 128
C2_Read_Write_required = 1 C2_Max_Count_Channels = 1 Max_Initiate_PDU_Length = 52 C2_Response_Timeout = 4000 DPV1_Data_Types = 1 ;-- Description of physical interface for async. and sync. transmission: -Physical_Interface = 0 ; RS-485 Standard Copper Transmission_Delay_45.45 = 0 Reaction_Delay_45.45 = 0 Transmission_Delay_93.75 = 0 Reaction_Delay_93.75 = 0 End_Physical_Interface ; Physical_Interface = 1 ; IEC61158-2 Transmission_Delay_31.25 = 0 Reaction_Delay_31.25 = 0 End_Physical_Interface ;------- Description of device related diagnosis: -------------; Unit_Diag_Bit(16) = "Error appears" Unit_Diag_Bit(17) = "Error disappears"