Èìÿ: LP8x81 Îñíîâàí: íîÿáðü 2009ã Âåðñèÿ: 1.0.0 Ñòàòóñ: GPL Ó÷àñòíèêè: Ðîìàí Ñàâî÷åíêî Îïèñàíèå: Ïðîåêò ïîñâÿù¸í ñîçäàíèþ ñðåäû èñïîëíåíèÿ ÏËÊ äëÿ êîíòðîëëåðîâ ñåðèè LP-8x81 ôèðìû ICP DAS. Ìàòåðèàëû: ![]() | ![]() |
Ïðîìûøëåííûå êîíòðîëëåðû ñåìåéñòâà LP-8x81 ôèðìû
ICP DAS ÿâëÿþòñÿ ïåðâûì ïðîäóêòîì èç ñåðèè LinPAC, êîòîðûé ïîñòðîåí íà x86 ñîâìåñòèìîì ïðîöåññîðå, ïðåäûäóùèå êîíòðîëëåðû ýòîãî ñåìåéñòâà îñíîâàíû íà ïðîöåññîðå ñåìåéñòâà ARM. Êðîìå x86 ïðîöåññîðà ðàññìàòðèâàåìûå êîíòðîëëåðû îáëàäàþò çíà÷èòåëüíûìè ðåñóðñàìè îïåðàòèâíîé ïàìÿòè è äèñêîâîãî ïðîñòðàíñòâà. Âñ¸ ýòî ïîçâîëèëî ðàññìàòðèâàòü äàííûå êîíòðîëëåðû êàê ïåðâîãî êàíäèäàòà èç ïðîäóêöèè ICP DAS äëÿ àäàïòàöèè OpenSCADA â êà÷åñòâå ñðåäû èñïîëíåíèÿ.
Îñíîâàíèåì äëÿ àäàïòàöèè OpenSCADA â êà÷åñòâå ñðåäû èñïîëíåíèÿ êîíòðîëëåðîâ ñåìåéñòâà LP-8x81 ñòàëà íåîáõîäèìîñòü ñîçäàíèÿ ñèñòåìû àâòîìàòè÷åñêîãî óïðàâëåíèÿ (ÑÀÓ) íàãðóçêîé øàðîâûõ ìåëüíèö ïîìîëà óãëÿ äëÿ ÒÝÖ. Îñîáåííîñòüþ äàííîãî òåõíîëîãè÷åñêîãî ïðîöåññà (ÒÏ) ÿâëÿåòñÿ íàëè÷èå ñïåöèôè÷åñêèõ ê ðåñóðñàì è ôóíêöèÿì êîíòðîëëåðà òðåáîâàíèé ïðè íåáîëüøîì îáú¸ìå ïàðàìåòðîâ. Êðîìå òîãî, ðåøàþùèì ôàêòîðîì áûëî îãðàíè÷åííîå ôèíàíñèðîâàíèå. Âñåì ïðåäúÿâëåííûì òðåáîâàíèÿ óäîâëåòâîðèëè êîíòðîëëåðû ñåìåéñòâà LP-8x81:
Öåëüþ äàííîãî ïðîåêòà áûëî ñîçäàíèå ñðåäû èñïîëíåíèå íà îñíîâå OpenSCADA, à òàêæå ïðîøèâêè ñ ÎÑ Linux è OpenSCADA äëÿ êîíòðîëëåðîâ ýòîãî ñåìåéñòâà. Ïðåäúÿâëÿëèñü ñëåäóþùèå òðåáîâàíèÿ ê ñðåäå èñïîëíåíèÿ è ïðîøèâêå:
ÏËÊ (ðèñ.1) êîíñòðóêòèâíî âûïîëíåí ïî ìîäóëüíîìó ïðèíöèïó, ãäå ìîäóëè óñòàíàâëèâàþòñÿ â êîðçèíó. Êîðçèíà ñîâìåùåíà ñ ïðîöåññîðíûì ìîäóëåì è ìîæåò èìåòü 0, 3 èëè 7 ñëîòîâ äëÿ ìîäóëåé ðàñøèðåíèÿ. Ìîäóëè ðàñøèðåíèÿ ìîãóò áûòü äâóõ òèïîâ, à èìåííî: ìîäóëè íà ïàðàëëåëüíîé è ïîñëåäîâàòåëüíîé øèíå. Ìîäóëè íà ïàðàëëåëüíîé øèíå (I-8x) ÿâëÿþòñÿ áûñòðûìè. Ìîäóëè íà ïîñëåäîâàòåëüíîé øèíå (I-87x) óñòàíàâëèâàþòñÿ íà øèíó èíòåðôåéñà RS-485 è ðàáîòàþò ñî ñêîðîñòüþ 115000 áèò/ñ ïî ïðîòîêîëó DCON. Êðîìå ìîäóëåé íåïîñðåäñòâåííî â êîðçèíå êîíòðîëëåð ìîæåò ðàñøèðÿòüñÿ äîïîëíèòåëüíûìè êîðçèíàìè ñ ìîäóëÿìè íà ïîñëåäîâàòåëüíîé øèíå (I-87x) ÷åðåç ïîñëåäîâàòåëüíûå èíòåðôåéñû ïðîöåññîðà.
Ïðîöåññîð êîíòðîëëåðà èìååò ñëåäóþùèå òåõíè÷åñêèå õàðàêòåðèñòèêè:
CPU | AMD LX800 ïðîöåññîð (32-áèò, 500 ÌÃö) |
Ñèñòåìíàÿ ïàìÿòü | 1 GB RAM |
SRAM ñ äâîéíûì ïèòàíèåì îò áàòàðåè | 512 ÊÁ (ñ õðàíåíèåì â òå÷åíèè 5 ëåò) |
Flash | 4 ÃÁ êàê IDE Master; ×òåíèå: 8 ÌÁ/c; Çàïèñü: 4 ÌÁ/c |
EEPROM | 16 ÊÁ Õðàíåíèå äàííûõ: 40 ëåò; 1,000,000 öèêëîâ óäàëåíèÿ/çàïèñè. |
CF êàðòà | 8 ÃÁ (ïîääåðæêà âïëîòü äî 32 ãÁ); ×òåíèå: 29 ÌÁ/c; Çàïèñü: 19, 13(233x) ÌÁ/c |
64-áèò Ñåðèéíûé Íîìåð Îáîðóäîâàíèÿ | Åñòü |
Äâîéíîé Watchdog òàéìåðû | Åñòü |
VGA | 640 x 480 ~ 1024 x 768 |
Ethernet ïîðòû | RJ-45 x 2, 10/100 Base-TX Ethernet Êîíòðîëåð (Àâòî-ñîãëàñîâàíèå, àâòî MDI/MDI-X, LED èíäèêàòîð) |
USB 1.1 (õîñò) | 2 |
COM1 | Âíóòðåííÿÿ êîììóíèêàöèÿ ñ ìîäóëÿìè I-87K â ñëîòàõ [/dev/ttySA0] |
COM2 | RS-232 [/dev/ttySA1] (RxD, TxD è GND); Íå èçîëèðîâàí |
COM3 | RS-485 [/dev/ttyS0] D2+,D2-;ñàìî-íàñòðîéêà ASIC âíóòðè |
COM4 | RS-232/RS-485 [/dev/ttyS1] (RxD, TxD, CTS, RTS è GND äëÿ RS-232, Data+ è Data- äëÿ RS-485); Íå èçîëèðîâàí |
COM5 | RS-232 [/dev/ttyS34] (RxD, TxD, CTS, RTS, DSR, DTR, CD, RI è GND); Íå èçîëèðîâàí |
Ðàáî÷àÿ òåìïåðàòóðà | -25 ~ +75 °C |
Èñõîäíîå ïðîãðàììíîå îáåñïå÷åíèå ïðåäñòàâëÿåò ñîáîé äèñòðèáóòèâ Linux ñ ãðàôè÷åñêèì îêðóæåíèåì Gnome è ñ óñòàíîâëåííûìè äðàéâåðàìè ñïåöèàëèçèðîâàííîãî îáîðóäîâàíèÿ. Êðîìå ýòîãî îêðóæåíèå ñîäåðæèò êîìïèëÿòîð "C" ñ LinPAC SDK, à òàêæå èíòåðïðåòàòîð ÿçûêà Perl.
Ó÷èòûâàÿ, ÷òî íåèçâåñòåí èñõîäíûé äèñòðèáóòèâ, êîòîðûé èñïîëüçîâàí ïîñòàâùèêîì è êàê ñëåäñòâèå íå îãîâîðåíà âîçìîæíîñòü óñòàíîâêè äîïîëíèòåëüíîãî ÏÎ, òî èñïîëüçîâàíèå òàêîãî îêðóæåíèÿ êàê åñòü, âî-ïåðâûõ, çàòðóäíèòåëüíî, âî-âòîðûõ, íå ñîïîñòàâèìî ñ äîñòóïíûìè àïïàðàòíûìè ðåñóðñàìè. Êðîìå òîãî èñõîäíîå ÿäðî Linux 2.6.18 äàëåêî äî ïðåäúÿâëåííûõ òðåáîâàíèé.
Èñõîäÿ èç ýòèõ îñíîâíûõ ïðè÷èí, ðåøåíî áûëî ñîçäàòü ïîëíîñòüþ íîâîå ïðîãðàììíîå îêðóæåíèå.  îñíîâó ýòîãî ïðîãðàììíîãî îêðóæåíèÿ ë¸ã äèñòðèáóòèâ ALTLinux 5.1, ÿäðî Linux 2.6.29-rt-up è OpenSCADA 0.6.4.2. Âûáðàííîå ÿäðî óäîâëåòâîðÿåò âñåì ïðåäúÿâëåííûì òðåáîâàíèÿ, à äèñòðèáóòèâ ALTLinux 5.1 ïîçâîëÿåò ñîáèðàòü êîìïàêòíûå ïðîøèâêè ïîä íóæíûå òðåáîâàíèÿ.
Âûáîð íîâîãî îêðóæåíèÿ ïîñòàâèë ïåðåä ôàêòîì îòñóòñòâèÿ èñõîäíûõ òåêñòîâ äëÿ äðàéâåðîâ ñïåöèôè÷íîãî îáîðóäîâàíèÿ ïîñòàâùèêà. Ýòà ïðîáëåìà áûëà ðåøåíà ñîâìåñòíî ñ ðàçðàáîò÷èêàìè èñõîäíîãî ïðîãðàììíîãî îêðóæåíèÿ, êîòîðûå ñîãëàñèëèñü àäàïòèðîâàòü è ñîáðàòü ñâîè äðàéâåðà ïîä íóæíîå ÿäðî Linux. Àðõèâ ýòèõ ìîäóëåé äîñòóïåí çäåñü.
Äëÿ ðåàëèçàöèè ïîääåðæêè îáîðóäîâàíèÿ êîíòðîëëåðîâ LP-8x81 è ìîäóëåé ñåðèè I-8000 áûë ñîçäàí ìîäóëü DAQ.ICP_DAS äëÿ ñèñòåìû OpenSCADA. Ìîäóëü ïðåäîñòàâëÿåò â ñèñòåìó OpenSCADA ïîääåðæêó ðàçëè÷íîãî îáîðóäîâàíèÿ ôèðìû ICP DAS ïîñðåäñòâîì áèáëèîòåêè API ôèðìû libi8k.a.
Ïðîøèâêà ïðîãðàììíîãî îêðóæåíèÿ ñîçäàâàëàñü â ñîîòâåòñòâèè ñ èíñòðóêöèåé çäåñü. Â äîïîëíåíèå ê ñòàíäàðòíûì ìàòåðèàëàì áûë ñîçäàí ïàêåò ñ ôàéëàìè íóæíûìè äëÿ êîíòðîëëåðîâ LP-8x81 kernel-modules-icp-rt-up-1.0.0-alt1.2.src.rpm. Êðîìå òîãî, ïðîôèëü ñáîðêè ïðîøèâîê áûë àäàïòèðîâàí íà ñáîðêó äëÿ LP-8x81.
 ïðîöåññå èñïûòàíèÿ ïðîãðàììíîãî îêðóæåíèÿ áûëî îáíàðóæåíî, ÷òî ñòàíäàðòíûé äðàéâåð ñåòåâûõ êîíòðîëëåðîâ "via-rhine" ðàáîòàåò íåêîððåêòíî, à èìåííî ïðîèñõîäèò ïàäåíèå ñêîðîñòè ñåòè íà ïîðÿäîê ïîñëå íîðìàëüíîé ðàáîòû â òå÷åíèå îò ñóòîê äî íåäåëè. Ïðîáëåìà áûëà ðåøåíà àäàïòàöèåé è ñáîðîì äðàéâåðà "rhinefet" îò VIA.
Ñî âðåìåíåì ñáîðêà ïðîøèâêè äëÿ LP-8x81 áûëà îñóùåñòâëåíà íà îñíîâå ïàêåòíîé áàçû äèñòðèáóòèâà "ALTLinux T6" c ñîõðàíåíèåì ÿäðà Linux 2.6.29-rt-up, ÷òî ïîçâîëèëî:
 ðåçóëüòàòå áûëà ïîëó÷åíà è çàïóùåíà â ðàáîòó ïðîøèâêà ïðîãðàììíîãî îêðóæåíèÿ, óäîâëåòâîðÿþùàÿ âñåì ïîñòàâëåííûì òðåáîâàíèÿì. Íà äàííûé ìîìåíò ýòî îêðóæåíèå ðàáîòàåò íà òð¸õ êîíòðîëëåðàõ LP-8781 è âûïîëíÿåò ôóíêöèè: