OpenSCADAWiki: Doc/ Mod Bus ...

Home | Index | Changes | Comments | Users | Registration | Login  Password:  
 
This is an old revision of Doc/ModBus from 2017-07-10 19:58:09..

Ìîäóëè <ModBus> ïîäñèñòåì "Ñáîð äàííûõ" è "Òðàíñïîðòíûå ïðîòîêîëû"

Ïàðàìåòð Ìîäóëü 1 Ìîäóëü 2
ID: ModBus
Èìÿ: ModBus
Òèï: DAQ Ïðîòîêîë
Èñòî÷íèê: daq_ModBus.so
Âåðñèÿ: 1.8 1.0
Àâòîð: Ðîìàí Ñàâî÷åíêî
Îïèñàíèå: Ïðåäîñòàâëÿåò ðåàëèçàöèþ êëèåíòñêîãî ñåðâèñà ïðîòîêîëà ModBus. Ïîääåðæèâàþòñÿ ModBus/TCP, ModBus/RTU è ModBus/ASCII ïðîòîêîëû. Ïðåäîñòàâëÿåò ðåàëèçàöèþ ïðîòîêîëîâ ModBus. Ïîääåðæèâàþòñÿ ModBus/TCP, ModBus/RTU è ModBus/ASCII ïðîòîêîëû.
Ëèöåíçèÿ: GPL

Contents

Ââåäåíèå

ModBus — êîììóíèêàöèîííûé ïðîòîêîë, îñíîâàííûé íà êëèåíò-ñåðâåðíîé àðõèòåêòóðå. Ðàçðàáîòàí ôèðìîé Modicon äëÿ èñïîëüçîâàíèÿ â êîíòðîëëåðàõ ñ ïðîãðàììèðóåìîé ëîãèêîé (PLC). Ñòàë ñòàíäàðòîì äå-ôàêòî â ïðîìûøëåííîñòè è øèðîêî ïðèìåíÿåòñÿ äëÿ îðãàíèçàöèè ñâÿçè ïðîìûøëåííîãî ýëåêòðîííîãî îáîðóäîâàíèÿ. Èñïîëüçóåòñÿ äëÿ ïåðåäà÷è äàííûõ ÷åðåç ïîñëåäîâàòåëüíûå ëèíèè ñâÿçè RS-485, RS-422, RS-232, à òàêæå ñåòè TCP/IP.  íàñòîÿùåå âðåìÿ ïîääåðæèâàåòñÿ íåêîììåð÷åñêîé îðãàíèçàöèåé ModBus-IDA.


Ñóùåñòâóþò òðè ðåæèìà ïðîòîêîëà: ModBus/RTU, ModBus/ASCII è ModBus/TCP. Ïåðâûå äâà èñïîëüçóþò ïîñëåäîâàòåëüíûå ëèíèè ñâÿçè (â îñíîâíîì RS-485, ðåæå RS-422/RS-232), ïîñëåäíèé èñïîëüçóåò äëÿ ïåðåäà÷è äàííûõ ñåòè TCP/IP.


Ìîäóëü ñáîðà äàííûõ ïðåäîñòàâëÿåò âîçìîæíîñòü ñîáèðàòü èíôîðìàöèþ ó ðàçëè÷íûõ óñòðîéñòâ ïî ïðîòîêîëó ModBus âî âñåõ ðåæèìàõ. Òàêæå ìîäóëåì ðåàëèçóþòñÿ ôóíêöèè ãîðèçîíòàëüíîãî ðåçåðâèðîâàíèÿ, à èìåííî ñîâìåñòíîé ðàáîòû ñ óäàë¸ííîé ñòàíöèåé ýòîãî-æå óðîâíÿ.  òî æå âðåìÿ ìîäóëü ïðîòîêîëà ïîçâîëÿåò ñôîðìèðîâàòü è âûäàòü äàííûå ïî ïðîòîêîëó ModBus â ðàçëè÷íûõ ðåæèìàõ è ÷åðåç èíòåðôåéñû, ïîääåðæèâàåìûå ìîäóëÿìè ïîäñèñòåìû "Òðàíñïîðòû".

1. Îáùåå îïèñàíèå ïðîòîêîëà ModBus

Ïðîòîêîë ModBus/RTU ïðåäïîëàãàåò îäíî âåäóùåå (çàïðàøèâàþùåå) óñòðîéñòâî â ëèíèè (master), êîòîðîå ìîæåò ïåðåäàâàòü êîìàíäû îäíîìó èëè íåñêîëüêèì âåäîìûì óñòðîéñòâàì (slave), îáðàùàÿñü ê íèì ïî óíèêàëüíîìó â ëèíèè àäðåñó. Ñèíòàêñèñ êîìàíä ïðîòîêîëà ïîçâîëÿåò àäðåñîâàòü 247 óñòðîéñòâ íà îäíîé ëèíèè ñâÿçè ñòàíäàðòà RS-485 (ðåæå RS-422 èëè RS-232).  ñëó÷àå ñ ðåæèìîì TCP àäðåñàöèÿ èñêëþ÷åíà èç ïðîòîêîëà, ïîñêîëüêó âûïîëíÿåòñÿ íà óðîâíå TCP/IP ñòåêà.


Èíèöèàòèâà ïðîâåäåíèÿ îáìåíà âñåãäà èñõîäèò îò âåäóùåãî óñòðîéñòâà. Âåäîìûå óñòðîéñòâà ïðîñëóøèâàþò ëèíèþ ñâÿçè. Ìàñòåð ïîäà¸ò çàïðîñ (ïîñûëêà, ïîñëåäîâàòåëüíîñòü áàéò) â ëèíèþ è ïåðåõîäèò â ñîñòîÿíèå ïðîñëóøèâàíèÿ ëèíèè ñâÿçè. Âåäîìîå óñòðîéñòâî îòâå÷àåò íà çàïðîñ, ïðèøåäøèé â åãî àäðåñ.


Îêîí÷àíèå îòâåòíîé ïîñûëêè îïðåäåëÿåòñÿ â çàâèñèìîñòè îò ðåæèìà.  ðåæèìå RTU îêîí÷àíèå ïîñûëêè îïðåäåëÿåòñÿ ïî âðåìåííîìó èíòåðâàëó ìåæäó îêîí÷àíèåì ïðè¸ìà ïðåäûäóùåãî áàéòà è íà÷àëîì ïðè¸ìà ñëåäóþùåãî, âðåìÿ ñèìâîëà. Åñëè ýòîò èíòåðâàë ïðåâûñèë âðåìÿ, íåîáõîäèìîå äëÿ ïðè¸ìà ïîëòîðà áàéòà íà çàäàííîé ñêîðîñòè ïåðåäà÷è òî ïðè¸ì ôðåéìà îòâåòà ñ÷èòàåòñÿ çàâåðø¸ííûì.  ðåæèìå ASCII êðèòåðèåì îêîí÷àíèÿ ïîñûëêè ÿâëÿåòñÿ ñèìâîë '\r', à â ðåæèìå TCP — îæèäàåìûé ðàçìåð ïîñûëêè, èíôîðìàöèÿ î êîòîðîì ïðèñóòñòâóåò â çàãîëîâêå ïàêåòà.

1.1. Àäðåñàöèÿ

Âñå îïåðàöèè ñ äàííûìè ïðèâÿçàíû ê íóëþ, êàæäûé âèä äàííûõ (ðåãèñòð, áèò, ðåãèñòð âõîäà èëè áèòà âõîäà) íà÷èíàþòñÿ ñ àäðåñà 0 è çàêàí÷èâàþòñÿ 65535.

1.2. Ñòàíäàðòíûå êîäû ôóíêöèé

 ïðîòîêîëå ModBus ìîæíî âûäåëèòü íåñêîëüêî ïîäìíîæåñòâ êîìàíä (Òàáëèöà 1).


Òàáëèöà 1: Ïîäìíîæåñòâî êîìàíä ïðîòîêîëà ModBus

ÏîäìíîæåñòâîÄèàïàçîí êîäîâ
Ñòàíäàðòíûå 1-21
Ðåçåðâ äëÿ ðàñøèðåííûõ ôóíêöèé 22-64
Ïîëüçîâàòåëüñêèå 65-119
Ðåçåðâ äëÿ âíóòðåííèõ íóæä 120-255

Ìîäóëåì ñáîðà äàííûõ èñïîëüçóþòñÿ êîìàíäû 0x03 è 0x06(0x10) äëÿ ÷òåíèÿ è çàïèñè ðåãèñòðîâ, 0x01 è 0x05(0x0F) äëÿ ÷òåíèÿ è çàïèñè áèòîâ, 0x02 è 0x04 äëÿ ÷òåíèÿ áèòà è ðåãèñòðà âõîäà ñîîòâåòñòâåííî. Äëÿ ðåàëèçàöèè îñòàëüíûõ-íåòèïè÷íûõ êîìàíä ìîäóëåì ïðåäóñìîòðåíà ôóíêöèÿ API ïîëüçîâàòåëüñêîãî ïðîãðàììèðîâàíèÿ, êîòîðóþ ìîæíî âûçûâàòü èç ïðîöåäóðû øàáëîíà, îòïðàâëÿÿ ïðîèçâîëüíûå PDU ïàêåòû è îáðàáàòûâàÿ ïîëó÷åííûå â îòâåò.


Ìîäóëü ïðîòîêîëà îáðàáàòûâàåò çàïðîñû êîìàíäàìè 0x03 è 0x06(0x10) äëÿ ÷òåíèÿ è çàïèñè ðåãèñòðîâ, 0x01 è 0x05(0x0F) äëÿ ÷òåíèÿ è çàïèñè áèòîâ.

2. Ìîäóëü ðåàëèçàöèè ïðîòîêîëà

Ìîäóëü ïðîòîêîëà ModBus ñîäåðæèò êîä ðåàëèçàöèè ïðîòîêîëüíîé ÷àñòè ModBus, à èìåííî îñîáåííîñòè âàðèàíòîâ ïðîòîêîëîâ ModBus/TCP, ModBus/RTU è ModBus/ASCII. Ìîäóëü ïðîòîêîëà, ñîâìåñòíî ñ âûáðàííûì òðàíñïîðòîì, àêòèâíî èñïîëüçóåòñÿ ìîäóëåì ñáîðà äàííûõ äëÿ îñóùåñòâëåíèÿ íåïîñðåäñòâåííûõ çàïðîñîâ. Ïîñêîëüêó ìîäóëü ïðîòîêîëà ÿâëÿåòñÿ àâòîíîìíûì òî, èñïîëüçóÿ åãî, ìîæíî ñîçäàâàòü äîïîëíèòåëüíûå ìîäóëè ñáîðà äàííûõ ïîñðåäñòâîì íåñòàíäàðòíûõ ôóíêöèé ðàñøèðåíèÿ ModBus ðàçëè÷íîãî îáîðóäîâàíèÿ àâòîìàòèçàöèè.

2.1. API ôóíêöèè èñõîäÿùèõ çàïðîñîâ

API ôóíêöèè èñõîäÿùèõ çàïðîñîâ (messIO()?) îïåðèðóþò îáìåíîì áëîêàìè PDU, çàâ¸ðíóòûìè â XML-ïàêåòû ñî ñëåäóþùåé ñòðóêòóðîé:

<prt id="sId" reqTm="reqTm" node="node" reqTry="reqTry">{pdu}</prt>
Ãäå:

Ðåçóëüòèðóþùèé pdu çàìåíÿåò pdu çàïðîñà â XML-ïàêåòå, à òàêæå óñòàíàâëèâàåòñÿ àòðèáóò "err" ñ êîäîì è òåêñòîì îøèáêè, åñëè òàêîâàÿ èìåëà ìåñòî.

2.2. Îáñëóæèâàíèå çàïðîñîâ ïî ïðîòîêîëó ModBus

Âõîäíàÿ ÷àñòü îáñëóæèâàíèÿ çàïðîñîâ ê ìîäóëþ ïðîòîêîëà îñóùåñòâëÿåò ïðîâåðêó è îáðàáîòêó çàïðîñîâ ïîñðåäñòâîì îáúåêòîâ óçëîâ, ïðåäóñìîòðåííûõ ìîäóëåì (ðèñ.1). Ôàêòè÷åñêè ðåàëèçóåòñÿ ìåõàíèçì, ïîçâîëÿþùèé âûïîëíÿòü ñèñòåìîé OpenSCADA ðîëü ñåðâåðà ModBus/TCP èëè ïîä÷èí¸ííîãî óñòðîéñòâà ModBus/RTU è ModBus/ASCII. Òàêèì îáðàçîì ñèñòåìà OpenSCADA ïîëó÷àåò âîçìîæíîñòü èñïîëüçîâàòüñÿ â ðîëè ëþáîãî ó÷àñòíèêà ñåòåé ModBus.


Âêëàäêà ïåðå÷íÿ óçëîâ îáñëóæèâàíèÿ âõîäÿùèõ çàïðîñîâ ïðîòîêîëà. (55 Kb)
Ðèñ.1. Âêëàäêà ïåðå÷íÿ óçëîâ îáñëóæèâàíèÿ âõîäÿùèõ çàïðîñîâ ïðîòîêîëà.

Óçåë ïðîòîêîëà ýêâèâàëåíòåí ôèçè÷åñêîìó óçëó óñòðîéñòâà ñåòè ModBus. Óçåë ïðîòîêîëà ìîæåò ðàáîòàòü â òð¸õ ðåæèìàõ:


Ïîñêîëüêó óçëîâ ïðîòîêîëà ìîæåò áûòü ñîçäàíî ìíîæåñòâî òî ïîëó÷àåòñÿ, ÷òî íà îäíîì èíòåðôåéñå, ò.å. â îäíîé ñåòè, îäíà ñòàíöèÿ íà îñíîâå OpenSCADA ìîæåò ïðîçðà÷íî ïðåäñòàâëÿòü íåñêîëüêî óçëîâ ñåòè ModBus ñ ðàçëè÷íûìè äàííûìè.


Ðàññìîòðèì îñîáåííîñòè êîíôèãóðàöèè óçëà ïðîòîêîëà â ðàçëè÷íûõ ðåæèìàõ.

Ðåæèì óçëà ïðîòîêîëà "Äàííûå"

Ðåæèì èñïîëüçóåòñÿ äëÿ îòðàæåíèÿ äàííûõ ñèñòåìû OpenSCADA íà ìàññèâû ðåãèñòðîâ è áèòîâ ModBus. Îáùàÿ êîíôèãóðàöèÿ óçëà îñóùåñòâëÿåòñÿ âî âêëàäêå "Óçåë" (ðèñ.2) ïàðàìåòðàìè:


Óçëîì â ýòîì ðåæèìå îáðàáàòûâàþòñÿ ñëåäóþùèå ñòàíäàðòíûå êîìàíäû ïðîòîêîëà ModBus:


Âêëàäêà "Óçåë" ñòðàíèöû êîíôèãóðàöèè óçëà ïðîòîêîëà â ðåæèìå "Äàííûå". (103 Kb)
Ðèñ.2. Âêëàäêà "Óçåë" ñòðàíèöû êîíôèãóðàöèè óçëà ïðîòîêîëà â ðåæèìå "Äàííûå".

Äëÿ ôîðìèðîâàíèÿ òàáëèöû îòðàæåíèÿ äàííûõ ñåòè ModBus, à èìåííî ðåãèñòðîâ è áèòîâ ïðåäóñìàòðèâàåòñÿ âêëàäêà "Äàííûå" (ðèñ.3). Âêëàäêà "Äàííûå" ñîäåðæèò òàáëèöó ïàðàìåòðîâ è ïðîãðàììó îáðàáîòêè ïàðàìåòðîâ ñ óêàçàííûì ÿçûêîì ïðîãðàììèðîâàíèÿ, äîñòóïíûì â ñèñòåìå OpenSCADA. Òàáëèöà ñîäåðæèò ïàðàìåòðû ñî ñâîéñòâàìè:


Âñå îñòàëüíûå ïàðàìåòðû, íå ïîïàâøèå ïîä âûøåóêàçàííûå ïðàâèëà, ÿâëÿþòñÿ âíóòðåííèìè, èñïîëüçóþòñÿ äëÿ ðàçëè÷íûõ ïðîìåæóòî÷íûõ âû÷èñëåíèé, îáðàáîòêè, ïðåîáðàçîâàíèé è çíà÷åíèÿ èõ ìîãóò áûòü îïåðàòèâíî ïðîêîíòðîëëèðîâàíû è èçìåíåíû èç ýòîé òàáëèöû â ðåæèìå èñïîëíåíèÿ.
  • Èìÿ — Èìÿ ïàðàìåòðà, èñïîëüçóåòñÿ äëÿ èìåíîâàíèÿ ñâÿçè.
  • Òèï — Òèï ïàðàìåòðà èç ñïèñêà: "Âåùåñòâåííûé", "Öåëûé", "Ëîãè÷åñêèé" è "Ñòðîêà". Äëÿ ðåãèñòðîâ è áèòîâ ModBus èìååò ñìûñë óñòàíàâëèâàòü "Öåëûé" è "Ëîãè÷åñêèé" òèï ñîîòâåòñòâåííî. Äëÿ ðåãèñòðîâ ðàñøèðåííûõ ïðåôèêñàìè "f" è "s" íóæíî óêàçûâàòü òèïû "Âåùåñòâåííûé" è "Ñòðîêà", ñîîòâåòñòâåííî.
  • Ñâÿçü — Ïðèçíàê òîãî, ÷òî äàííûé ïàðàìåòð äîëæåí ñâÿçûâàòüñÿ ñ àòðèáóòîì ïàðàìåòðà ïîäñèñòåìû "Ñáîð äàííûõ". Óêàçàííûå ýòèì ôëàãîì ñâÿçè óñòàíàâëèâàþòñÿ âî âêëàäêå "Ñâÿçè".
  • Çíà÷åíèå — Èñõîäíîå èëè òåêóùåå, åñëè óçåë âêëþ÷åí, çíà÷åíèå ïàðàìåòðà.

  •  òàáëèöå, ïî óìîë÷àíèþ, îïðåäåëÿþòñÿ íåñêîëüêî ïàðàìåòðîâ ñïåöèàëüíîãî íàçíà÷åíèÿ:


     (2 Kb) Ïîñêîëüêó â óêàçàòåëå ðàñøèðåííûõ òèïîâ ðåãèñòðîâ ìîæåò èñïîëüçîâàòüñÿ íåäîïóñòèìûé ñèìâîë ',' òî äîñòóï ê íåìó èç ïðîöåäóðû ìîæíî îñóùåñòâèòü òîëüêî àëüòåðíàòèâíûì ñïîñîáîì, ÷åðåç îáúåêò "arguments":
    arguments["R_s10,5w"] = "9876543210";

    Âêëàäêà "Äàííûå", ñòðàíèöû êîíôèãóðàöèè óçëà ïðîòîêîëà â ðåæèìå "Äàííûå". (117 Kb)
    Ðèñ.3. Âêëàäêà "Äàííûå", ñòðàíèöû êîíôèãóðàöèè óçëà ïðîòîêîëà â ðåæèìå "Äàííûå".

    Äëÿ óêàçàííûõ â êà÷åñòâå ñâÿçåé ïàðàìåòðîâ ìîæíî óñòàíîâèòü ñâÿçè òîëüêî äëÿ âûêëþ÷åííîãî óçëà ïðîòîêîëà âî âêëàäêå "Ñâÿçè" (ðèñ.4).


    Âêëàäêà "Ñâÿçè" ñòðàíèöû êîíôèãóðàöèè óçëà ïðîòîêîëà â ðåæèìå "Äàííûå". (103 Kb)
    Ðèñ.4. Âêëàäêà "Ñâÿçè" ñòðàíèöû êîíôèãóðàöèè óçëà ïðîòîêîëà â ðåæèìå "Äàííûå".

    Ðåæèì óçëà ïðîòîêîëà "Øëþç óçëà"

    Ðåæèì èñïîëüçóåòñÿ äëÿ ïðîáðîñà çàïðîñîâ ê îòäåëüíîìó óñòðîéñòâó â äðóãîé ñåòè ModBus èç ñåòè ModBus, äëÿ êîòîðîé ñêîíôèãóðèðîâàí äàííûé óçåë. Îáùàÿ êîíôèãóðàöèÿ óçëà îñóùåñòâëÿåòñÿ âî âêëàäêå "Óçåë" (ðèñ.5) ïàðàìåòðàìè:


    Âêëàäêà "Óçåë" ñòðàíèöû êîíôèãóðàöèè óçëà ïðîòîêîëà â ðåæèìå "Øëþç óçëà". (96 Kb)
    Ðèñ.5. Âêëàäêà "Óçåë" ñòðàíèöû êîíôèãóðàöèè óçëà ïðîòîêîëà â ðåæèìå "Øëþç óçëà".

    Ðåæèì óçëà ïðîòîêîëà "Øëþç ñåòè"

    Ðåæèì èñïîëüçóåòñÿ äëÿ ïðîáðîñà çàïðîñîâ ñåòè öåëèêîì â äðóãóþ ñåòü ModBus èç ñåòè ModBus äëÿ êîòîðîé ñêîíôèãóðèðîâàí äàííûé óçåë ïðîòîêîëà. Ò.å. çàïðîñ íà óñòðîéñòâî ñ ëþáûì àäðåñîì áóäåò íàïðàâëÿòüñÿ â äðóãóþ ñåòü, áåç ïåðåàäðåñîâêè. Îáùàÿ êîíôèãóðàöèÿ óçëà ïðîòîêîëà îñóùåñòâëÿåòñÿ âî âêëàäêå "Óçåë" (ðèñ.6) ïàðàìåòðàìè:


    Âêëàäêà "Óçåë" ñòðàíèöû êîíôèãóðàöèè óçëà ïðîòîêîëà â ðåæèìå "Øëþç ñåòè". (90 Kb)
    Ðèñ.6. Âêëàäêà "Óçåë" ñòðàíèöû êîíôèãóðàöèè óçëà ïðîòîêîëà â ðåæèìå "Øëþç ñåòè".

    2.3 Îò÷¸ò çàïðîñîâ ModBus

    Äëÿ âîçìîæíîñòè êîíòðîëÿ è äèàãíîñòèêè çà êîððåêòíîñòüþ îñóùåñòâëåíèÿ çàïðîñîâ ðàçëè÷íûìè êîìïîíåíòàìè ìîäóëåì ïðåäîñòàâëÿåòñÿ âîçìîæíîñòü âêëþ÷åíèÿ îò÷¸òà çàïðîñîâ, ïðîõîäÿùèõ ÷åðåç ìîäóëü ïðîòîêîëà. Îò÷¸ò âêëþ÷àåòñÿ óêàçàíèåì íåíóëåâîãî êîëè÷åñòâà çàïèñåé âî âêëàäå "Îò÷¸ò" ñòðàíèöû ìîäóëÿ ïðîòîêîëà (ðèñ.7).


    Âêëàäà "Îò÷¸ò" ñòðàíèöû ìîäóëÿ ïðîòîêîëà. (111 Kb)
    Ðèñ.7. Âêëàäêà "Îò÷¸ò" ñòðàíèöû ìîäóëÿ ïðîòîêîëà.

    3. Ìîäóëü ñáîðà äàííûõ

    Ìîäóëü ñáîðà äàííûõ ïðåäîñòàâëÿåò âîçìîæíîñòü îïðîñà è çàïèñè ðåãèñòðîâ è áèòîâ óñòðîéñòâ ïîñðåäñòâîì ðåæèìà ïðîòîêîëîâ TCP, RTU, ASCII è êîìàíä çàïðîñà 0x01 — 0x06, 0x0F, 0x10.

    3.1. Êîíòðîëëåð äàííûõ

    Äëÿ äîáàâëåíèÿ èñòî÷íèêà äàííûõ ModBus ñîçäà¸òñÿ è êîíôèãóðèðóåòñÿ êîíòðîëëåð â ñèñòåìå OpenSCADA. Ïðèìåð âêëàäêè êîíôèãóðàöèè êîíòðîëëåðà äàííîãî òèïà èçîáðàæåí íà ðèñ.8.


    Âêëàäêà êîíôèãóðàöèè êîíòðîëëåðà. (126 Kb)
    Ðèñ.8. Âêëàäêà êîíôèãóðàöèè êîíòðîëëåðà.

    Ñ ïîìîùüþ ýòîé âêëàäêè ìîæíî óñòàíîâèòü:

    3.2. Ïàðàìåòðû

    Ìîäóëü ñáîðà äàííûõ ïðåäîñòàâëÿåò äâà òèïà ïàðàìåòðà: "Ñòàíäàðòíûé"(std) è "Ëîãè÷åñêèé"(logic). Äîïîëíèòåëüíûìè êîíôèãóðàöèîííûìè ïîëÿìè ïàðàìåòðîâ äàííîãî ìîäóëÿ ÿâëÿþòñÿ:

    Ñòàíäàðòíûé òèï ïàðàìåòðà(std)

    Ãëàâíàÿ ñòðàíèöà êîíôèãóðàöèè ïàðàìåòðà ñòàíäàðòíîãî òèïà ïðåäñòàâëåíà íà ðèñóíêå 9.


    Âêëàäêà êîíôèãóðàöèè ïàðàìåòðà ñòàíäàðòíîãî òèïà. (99 Kb)
    Ðèñ.9. Âêëàäêà êîíôèãóðàöèè ïàðàìåòðà ñòàíäàðòíîãî òèïà.

    Ñòðóêòóðà àòðèáóòà, â ïàðàìåòðå ñïèñêà àòðèáóòîâ, çàïèñûâàåòñÿ ñëåäóþùèì îáðàçîì: "{dt}:{numb}:{rw}:{id}:{name}".
    Ãäå:

    dt — ModBus òèï äàííûõ ("R"—ðåãèñòð[3,6(16)], "C"—áèò[1,5(15)], "RI"—ðåãèñòð âõîäà[4], "CI"—áèò âõîäà[2]);
    "R" è "RI" ìîãóò áûòü ðàñøèðåíû ñóôôèêñàìè: "i2"—Int16, "i4"—Int32, "i8"—Int64, "u2"—UInt16, "u4"—UInt32, "f"—Float, "d"—Double, "b5"—Bit5, "s"—Ñòðîêà (ðàçìåð ïî óìîë÷àíèþ 10 è äî 100 ðåãèñòðîâ);
    numb — àäðåñ ModBus óñòðîéñòâà (äåñÿòè÷íûé, øåñòíàäöàòåðè÷íûé èëè âîñüìåðè÷íûé) [0...65535];
    rw — ðåæèì ÷òåíèÿ/çàïèñè ("r"—÷òåíèå; "w"—çàïèñü, "rw"—çàïèñü è ÷òåíèå);
    id — èäåíòèôèêàòîð ñîçäàâàåìîãî àòðèáóòà;
    name — èìÿ ñîçäàâàåìîãî àòðèáóòà.

    Ïðèìåðû:

    "R:0x300:rw:var:Variable" — äîñòóï ê ðåãèñòðó;
    "C:100:rw:var1:Variable 1" — äîñòóï ê áèòó;
    "R_f:200:r:float:Float" — ïîëó÷èòü âåùåñòâåííîå èç ðåãèñòðîâ 200 è 201;
    "R_i4:400,300:r:int32:Int32" — ïîëó÷èòü int32 èç ðåãèñòðîâ 400 è 300;
    "R_b10:25:r:rBit:Reg bit" — ïîëó÷èòü áèò 10 èç ðåãèñòðà 25;
    "R_s:15,20:r:str:Reg blk" — ïîëó÷èòü ñòðîêó, áëîê ðåãèñòðîâ, èç ðåãèñòðà 15 è ðàçìåðîì 20.

    Ñòðîêà, êîòîðàÿ íà÷èíàåòñÿ ñ ñèìâîëà '#', ñ÷èòàåòñÿ êîììåíòàðèåì è íå îáðàáàòûâàåòñÿ.


    Â ñîîòâåòñòâèè ñ óêàçàííûì ñïèñêîì àòðèáóòîâ âûïîëíÿåòñÿ îïðîñ è ñîçäàíèå àòðèáóòîâ ïàðàìåòðà (ðèñ.10).


    Âêëàäêà àòðèáóòîâ ïàðàìåòðà ñòàíäàðòíîãî òèïà. (77 Kb)
    Ðèñ.10. Âêëàäêà àòðèáóòîâ ïàðàìåòðà ñòàíäàðòíîãî òèïà.

    Ëîãè÷åñêèé òèï ïàðàìåòðà(logic)

    Ãëàâíàÿ ñòðàíèöà êîíôèãóðàöèè ïàðàìåòðà ëîãè÷åñêîãî òèïà ïðåäñòàâëåíà íà ðèñóíêå 11.


    Âêëàäêà êîíôèãóðàöèè ïàðàìåòðà ëîãè÷åñêîãî òèïà. (74 Kb)
    Ðèñ.11. Âêëàäêà êîíôèãóðàöèè ïàðàìåòðà ëîãè÷åñêîãî òèïà.

    Ïðè ôîðìèðîâàíèè øàáëîíà, äëÿ ëîãè÷åñêîãî òèïà ïàðàìåòðà äàííîãî êîíòðîëëåðà, íå íóæíî ó÷èòûâàòü ôîðìàò ññûëêè øàáëîíà, ïîñêîëüêó îí íå èñïîëüçóåòñÿ è ìîæåò áûòü îïóùåí. Ñàìî æå çíà÷åíèå ññûëêè, ïðè êîíôèãóðàöèè øàáëîíà (ðèñ.12), çàïèñûâàåòñÿ â ôîðìàòå: "{dt}:{numb}:{rw}".
    Ãäå:

    dt — ModBus òèï äàííûõ ("R"—ðåãèñòð[3,6(16)], "C"—áèò[1,5(15)], "RI"—ðåãèñòð âõîäà[4], "CI"—áèò âõîäà[2]);
    "R" è "RI" ìîãóò áûòü ðàñøèðåíû ñóôôèêñàìè: "i2"—Int16, "i4"—Int32, i8-Int64, u2-UInt16, u4-UInt32, "f"—Float, "d"—Double, "b5"—Bit5, "s"—Ñòðîêà (ðàçìåð ïî óìîë÷àíèþ 10 è äî 100 ðåãèñòðîâ);
    numb — àäðåñ äàííûõ ModBus óñòðîéñòâà (äåñÿòè÷íûé, øåñòíàäöàòåðè÷íûé èëè âîñüìåðè÷íûé) [0...65535];
    rw — ðåæèì ÷òåíèÿ/çàïèñè ("r"—÷òåíèå; "w"—çàïèñü, "rw"—çàïèñü è ÷òåíèå);

    Ïðèìåðû:

    "R:0x300:rw" — äîñòóï ê ðåãèñòðó;
    "C:100:rw" — äîñòóï ê áèòó;
    "R_f:200:r" — ïîëó÷èòü âåùåñòâåííîå èç ðåãèñòðîâ 200 è 201;
    "R_i4:400,300:r" — ïîëó÷èòü int32 èç ðåãèñòðîâ 400 è 300;
    "R_b10:25:r" — ïîëó÷èòü áèò 10 èç ðåãèñòðà 25;
    "R_s:15,20:r" — ïîëó÷èòü ñòðîêó, áëîê ðåãèñòðîâ, èç ðåãèñòðà 15 è ðàçìåðîì 20.

    Âêëàäêà "Êîíôèãóðàöèÿ øàáëîíà" ïàðàìåòðà ëîãè÷åñêîãî òèïà. (68 Kb)
    Ðèñ.12. Âêëàäêà "Êîíôèãóðàöèÿ øàáëîíà" ïàðàìåòðà ëîãè÷åñêîãî òèïà.

    Ìîäóëåì ïðåäóñìîòðåíà îñîáàÿ îáðàáîòêà ðÿäà àòðèáóòîâ øàáëîíà:


     ñîîòâåòñòâèè ñ øàáëîíîì, ëåæàùèì â îñíîâå ïàðàìåòðà, ìû ïîëó÷àåì íàáîð àòðèáóòîâ ïàðàìåòðà ðèñ.13.


    Âêëàäêà àòðèáóòîâ ïàðàìåòðà ëîãè÷åñêîãî òèïà. (71 Kb)
    Ðèñ.13. Âêëàäêà àòðèáóòîâ ïàðàìåòðà ëîãè÷åñêîãî òèïà.

    3.3. API ïîëüçîâàòåëüñêîãî ïðîãðàììèðîâàíèÿ

     âèäó ïîääåðæêè ìîäóëåì ïàðàìåòðîâ ëîãè÷åñêîãî òèïà èìååò ñìûñë ïðåäîñòàâëåíèå ðÿäà ôóíêöèé ïîëüçîâàòåëüñêîãî API äëÿ âûçîâà èç øàáëîíà ëîãè÷åñêîãî ïàðàìåòðà.

    Îáúåêò "Êîíòðîëëåð" [this.cntr()]


    Îáúåêò "Ïàðàìåòð" [this]

    Ññûëêè

    Referring pages: Doc
    Doc/DAQ
    Doc/QuickStart
    Function
    Using/PLC/firmware


     
    There are no files on this page.[Display files/form]
    There is no comment on this page. [Display comments/form]