OPC texnologiyasından istifadə edərək ICS tapşırıqlarında Visual FoxPro 9-dan istifadə

Новости мира

Hazırda avtomatlaşdırılmış idarəetmə sistemi olmadan yüksək texnologiyalı sənaye avadanlıqlarının alınması çətindir. Beləliklə, məsələn, beton zavodu sement qarışığının hazırlanması üçün yeni bir xətt alırsa və ya pivə zavodu yeni bir qablaşdırma konveyeri alırsa, avadanlığın təsvirinə «Avtomatik idarəetmə avadanlığı» daxil etməkdən çəkinməyin və sensorlar, sənaye nəzarətçiləri daxildir. və parametr qeydçiləri. Hətta bu proses üçün tipik bir ACS (SCADA) insan-maşın interfeysi spesifikasiyaya daxil edilmişdir. Bu. Bu səviyyədə avtomatlaşdırmanı yerinə yetirmək üçün mühəndis olmaq lazım deyil — siz müştəri olmalısınız!

Ancaq müxtəlif texnoloji proseslər üçün müxtəlif təchizatçıların və istehsalçıların bir neçə (bəlkə də onlarla) avtomatlaşdırılmış idarəetmə sistemlərindən istifadə edərkən nə etməli. Beləliklə, sizə başqa bir avtomatlaşdırılmış idarəetmə sisteminə ehtiyacınız var: Yerli avtomatlaşdırılmış idarəetmə sistemlərinin dispetçer nəzarəti (SODU). Bu sistem yerli avtomatlaşdırılmış idarəetmə sistemlərinin bütün parametrlərinin tam təfərrüatlarını tələb etmir, bir qayda olaraq, yalnız idarəetmə uçotu (resurs istehlakı, istehsal) çərçivəsində xərclərin tez hesablanması üçün məlumatlar və onların təhlükəsizliyinə dair məlumatlar kifayətdir. istehsal prosesi (fövqəladə rejimlər). Hətta siz SODA inkişafınızı autsorsing etmək qərarına gəlsəniz belə, bu dəfə tətbiqin texniki həllərini daha dərindən araşdırmalı və avtomatlaşdırmanın sərhədlərini müzakirə etməli olacaqsınız. Əgər belədirsə, inkişafı özünüz etmək daha səmərəli ola bilər. Əlbəttə ki, biz cavab verən bir həlldən danışırıq, lakin VFP proqramlaşdırma təcrübəniz varsa, bu mümkündür.

Bir neçə tərif

OPC (Proseslərə Nəzarət üçün OLE) nəzarət və idarəetmə sistemlərində məlumat mübadiləsi üçün universal mexanizm təmin edən geniş qəbul edilmiş spesifikasiyalar toplusudur. OPC texnologiyası müştərilərə sürücülərin və ya protokolların mövcudluğundan və ya olmamasından müstəqillik verir və onlara xüsusi biznes ehtiyaclarına ən uyğun olan avadanlıq və proqram təminatını seçməyə imkan verir. OPC spesifikasiyası rabitə üçün iki komponenti müəyyən edir: OPC müştərisi və OPC serveri.
OPC serveri cihazın və ya sistemin daxili formatında məlumatları qəbul edən və bu məlumatları OPC formatına çevirən proqramdır. OPC serveri OPC müştəriləri üçün məlumat mənbəyidir.
OPC müştərisi OPC serverlərindən OPC məlumatlarını qəbul edən və onu cihaz və ya sistem üçün yerli formata çevirən proqramdır.
OPC Data Access (OPC DA) canlı məlumat mübadiləsi üçün ən çox istifadə edilən OPC spesifikasiyasıdır.

İnkişafa başlamaq üçün ilkin şərtlər:
OPC serverini seçmək üçün siz yerli ACS parametrlərini qeyd edən nəzarətçilərin və digər cihazların növlərini bilməlisiniz.
Sənaye avtomatlaşdırma avadanlığı istehsalçılarının məhsullarını OPC serverləri ilə müşayiət etmələri çox nadirdir. Əgər siz hələ də OPC serverini itirmisinizsə — podratçınız onu sizə təqdim etməyibsə — birbaşa istehsalçı ilə əlaqə saxlayın. İstehsalçı Siemens, Allen Bradley və ya Mitsubishi kimi dünyaca məşhur şirkətdirsə, siz müstəqil Amerika inkişaf etdiricisi Matrikon Inc (http://www.matrikonopc.com/opc-drivers/index.aspx) tərəfindən pulsuz OPC serverindən istifadə edə bilərsiniz. ). ).
Bütün yerli avtomatlaşdırma layihələrində bütün nəzarətçilər üçün siqnal cədvəlləri olmalıdır.
Bir qayda olaraq, siqnal cədvəli avtomatlaşdırılmış TP sisteminin dizayn sənədlərinin əsas elementidir.
OPC server laboratoriya mühitinin yaradılması

OPC server vasitəsilə sənaye nəzarətçisinə məlumatların qəbulunu və nəzarət hərəkətlərinin göndərilməsini nümayiş etdirən proqram yaratmaq üçün bizə emulyator lazımdır. [MatrikonOPC Server for Simulation], daha əvvəl qeyd olunan Matrikon Inc. Bu emulyatoru buradan pulsuz yükləyə bilərsiniz: http://www.matrikonopc.com/downloads/178/index.aspx Asan qeydiyyat prosedurundan sonra.
Bir nəzarətçi götürək [Siemens S7-300] və siqnal cədvəli belə görünür:

Dəyişən qrup/nəzarətçi etiketi
1
Sürət təyini el. mühərrik
(Faza 2, Şimal) S7-300_002N S7-300_002N_Hz2N
2 Mis sarım cərəyanı el. mühərrik
(Faza 2, Şimal) S7-300_002N S7-300_002N_ICu2N
3 Dəmir sarımının temperaturu el. mühərrik
(Faza 2, Şimal) S7-300_002N S7-300_002N_TFe2N

Başlayacağıq [MatrikonOPC Server for Simulation];
Dəyişənlər qrupu yaradın [S7-300_002N];
Qrupda [S7-300_002N] dəyişənlər/teqlər yaradın, şəkilə baxın.

Etiket qrupu konfiqurasiyası [s7-300_002N] şəkildə göstərilən, tətbiqdə, faylda mövcuddur [002N.xml].

Diqqət edin:
dəyişən […Hz2N] — dəyərləri oxumaq və yazmaq üçün əlçatandır;
dəyişən […ICu2N] – yalnız oxumaq üçün vəziyyətə malikdir və təsadüfi ədədlər generatorundan saniyədə 1000 dəfə dəyərlər alır;
dəyişən […TFe2N] – yalnız oxumaq üçün vəziyyətə malikdir və dəqiqədə 1 dəfə təsadüfi ədədlər generatorundan dəyərlər alır.

Bizim vəziyyətimizdə bu, sarımların cari və temperaturunun ölkə olduğunu bildirir. mühərriki verilən tezlikdə oxuyuruq. Sürəti təyin etməklə, e-poçtu izləməyə çalışacağıq. Mühərrik və əlavə təyinat nöqtəsi yerli idarəetmə panelindən dəyişdirilərsə, biz təyinat nöqtəsini saniyədə 1 dəfə idarə edə bilərik.
Visual FoxPro proqramlaşdırmasına başlamaq

OPC server emulyatorunu quraşdırdıqdan sonra OPC müştərisini proqramlaşdırmağa başlaya bilərsiniz:
Müəssisə kimi ictimai poOPC
* OPC müştəri nümunəsi yaradın
m.poOPC=Obyekt yarat([Matrikon.OPC.Automation.1])
* OPC serverinə qoşulun
m.poOPC.Connect([Matrikon.OPC.Simulation.1])

Obyekt kimi ictimai poOPCGroup
* dəyişənlər qrupunun yaradılması
m.poOPCGroup=m.poOPC.OPCGroups.Add([s7-300_002N])
* qrup yaradın [s7-300_002N] dəyişən [S7-300_002N_Hz2N]
m.poOPCGroup.OPCItems.AddItem([s7-300_002N.S7-300_002N_Hz2N],1)

* dəyişənin dəyərinin müəyyən edilməsi [S7-300_002N_Hz2N] 11.12345-ə görə
m.poOPCGroup.OPCItems.Item(1).Write(11.12345)
* dəyişənin dəyərini əldə edin [S7-300_002N_Hz2N]
Nömrə kimi yerli ln_Hz2N
m.ln_Hz2N=m.poOPCGroup.OPCItems.Item(1).Dəyər
Bu nümunə etiketin yazılmasını (nəzarət hərəkəti — elektrik mühərrikinin sürəti üçün təyin edilmiş nöqtə) və eyni dəyişəni sinxron oxumağı göstərir.
Nəzarətçi dəyişənlərinin sinxron oxunması OPC serveri ilə qarşılıqlı əlaqənin yeganə yolu deyil, OPC DA standartı həm də asinxron qarşılıqlı əlaqə və bildiriş oxunmasını təmin edir. Aşağıda dəyişiklik bildirişindən istifadə edərək dəyişən dəyərlərin alınması nümunəsidir.

* qrup yaradın [s7-300_002N] dəyişənlər
m.poOPCGroup.OPCItems.AddItem([s7-300_002N.S7-300_002N_ICu2N],2)
m.poOPCGroup.OPCItems.AddItem([s7-300_002N.S7-300_002N_TFe2N],3)

Obyekt kimi ictimai poOPCGroupEvents
* həddindən artıq yüklənmə hadisəsi [DataChange] etiket qrupları [s7-300_002N]
* hadisə kodu [DIOPCGroupEvent_DataChange] sinif [myOPCGroupClass]
m.poOPCGroupEvents=Yeni Obyekt([myOPCGroupClass])
m.poOPCGroupEvents.AddProperty([OPCGroup],m.poOPCGroup)
EventHandler(m.poOPCGroup, m.poOPCGroupEvents)

* bildirişləri almaq üçün qrupa abunə olun
m.poOPCGroup.Subscribed=.T.

myOPCGroupClass sinfini OlePublic sessiyası kimi təyin edin
DIOPCGroupEvent həyata keçirir;
il [c:program filescommon filesmatrikonopccommonopcdaauto.dll]

Prosedura başlayın
Alman quraşdırma tarixi
Saatları 24-ə təyin edin

Prosedur DIOPCGroupEvent_DataChange(;
TransactionID nömrəsi kimi;
Nömrə kimi NumItems,;
VARIANT KİMİ ClientHandles;
VARIANT kimi MaddəDəyərləri;
VARIANT kimi keyfiyyətlər;
VARIANT kimi vaxt ştampları);
BOŞ kimi

Yerli loItem2 Obyekt kimi, loItem3 Obyekt kimi
m.loItem2=Bu.OPCGroup.OPCItems.Item(2)
m.loItem3=Bu.OPCGroup.OPCItems.Item(3)

Gözləmə pəncərəsi;
Transform(m.loItem2.Value)+Chr(13)+;
Transform(m.loItem2.Quality)+Chr(13)+;
Transform(m.loItem2.Timstamp)+Chr(13)+Chr(13)+;
Transform(m.loItem3.Value)+Chr(13)+;
Transform(m.loItem3.Quality)+Chr(13)+;
Transform(m.loItem3.Timestamp)+Chr(13)+Chr(13)+;
Transform(Datetime());
Gözləmə vaxtı indi 3-dür

LoItem2, loItem3-ü buraxın

bitirmək

Prosedur DIOPCGroupEvent_AsyncReadComplete(;
TransactionID nömrəsi kimi;
Nömrə kimi NumItems,;
VARIANT KİMİ ClientHandles;
VARIANT kimi MaddəDəyərləri;
VARIANT kimi keyfiyyətlər;
VARIANT kimi vaxt damğaları,;
VARIANT kimi səhvlər);
BOŞ kimi
bitirmək

Prosedur DIOPCGroupEvent_AsyncWriteComplete(;
TransactionID nömrəsi kimi;
Nömrə kimi NumItems,;
VARIANT KİMİ ClientHandles;
VARIANT kimi səhvlər);
BOŞ kimi

bitirmək

Prosedur DIOPCGroupEvent_AsyncCancelComplete(Nömrə kimi Ləğv Edildi);
BOŞ kimi
bitirmək

Enddefine

Yuxarıdakı fraqmentdə sinif kodu [myOPCGroupClass] təchiz edilmiş Visual FoxPrp 9 yardım proqramı tərəfindən demək olar ki, tamamilə avtomatik olaraq yaradılır — [Object Browser]interfeysi sürükləyin [DIOPCGroupEvent] OPC müştəri kitabxanaları [opcdaauto.dll] prosedur pəncərəsinə keçin.

Nəticə olaraq, işiniz bitdikdə OPC serverini bağlamağı unutmayın: