Egy 24 éves, leselejtezett teljesítménymérőt próbálok lekérdezni RS-232C
porton keresztül ModBUS/ASCII protokollal. És hogy kihívás legyen: külső
kész funkciók nélkül, közvetlen hardveres hozzáféréssel, valós módban,
Turbo Pascallal, régi DOS gépen.
A vizsgálandó készüléket a magyar DATCON Ipari Elektronikai Kft.
gyártotta. a 90-es években. A céget még a rendszerváltás előtt,
1982-ben alapították, és azóta is az ipari elektronika területén
dolgozik.
A készülék típusa DT510. Ez egy egyfázisú elektromos
teljesítménymérő. Több változatban készült, RS-232C soros
kapcsolatot és ModBUS/ASCII protokollt használ a kommunikációhoz.
Ezen kívül három konfigurálható analóg kimenete van.
A készülék csatlakoztatását annak adatlapja tartalmazza.
A készülék soros porton keresztül saját beállító programmal állítható be.
Mért mennyiségek
Urms: effektív feszültség V-ban
Irms: effektív áram A-ban
P: hasznos teljesítmény W-ban
Q: meddőteljesítmény VAr-ban
S: látszólagos teljesítmény VA-ban
Wp: hasznos teljesítményigény Wh-ban
Wq: meddőteljesítmény igény VArh-ban
Ws: látszólagos teljesítményigény VAh-ban
cosφ: teljesítménytényező
TPF: technikai teljesítménytényező
A program Turbo Pascal nyelven lett megírva. A forráskód a fő programból és
három további egységből áll: Unserial.pas: ez a unit tartalmazza a soros portot kezelő
rutinokat. A portot a BIOS INT 14H megszakítása kezeli. A soros port
megszakítását használja a fogadott adatok jelzésére és olvasására.
Unmodbus.pas: ez az egység felelős a ModBUS/ASCII protokoll
szerinti adatátvitelért. Csak a holding register kiolvasása (Funkciókód:
3) valósult meg, mert a többire most nem volt szükség. A unit az összes
lehetséges (9999) holding register értékét tárolja. Ezekre a regiszter
sorszámmal lehet hivatkozni. Tartalmazza a longitudinális
redundancia-ellenőrzés (LRC) kalkulátort is.
Undt510.pas: ez az egység felelős a kapott nyers értékek valós
értékekké való konvertálásáért.