Dopadl mnie badawczo-rozwojowy temat maksymalnie elastycznego mapowania danych udostepnianych po protokolach typu RS, m-bus, modbus na struktury xml'owe[1].
Zalozeniem jest stworzenie elastycznej, samoopisujacej sie struktury przystosowanej do (*w*kolejnosci*):
- Niskich (i bardzo niskich) predkosci danych - 9600 nalezy traktowac jako predkosc zapewniajaca komfort.
- Specyfiki protokolow, o ktorych w pierwszym akapicie.
- Wydajnosci procesorow wykorzystywanych w sterownikach przemyslowych.
- Przyzwyczajen programistow procesorow z pkt.3.
- Minimalizowania narzutow na transmisje danych (pkt. 1.).
- Minimalizowania narzutow na moc obliczeniowa zwiazana z *koniecznoscia* wydalenia przez urzadzenie komunikatu xml [2].
- Czytelnosci wydalanego xm'a.
- Przetwarzalnosci otrzymanego xml'a.
Znaczy wymyslenie Swietego Grala ;>
Ze wstepnej analizy (wykonanej przy dobrej znajomosci modbusa oraz pobiezniej RS'a i i m-bus'a) wyszlo mi, ze trzeba poklasyfikowac wartosci [3]. Np. w ten sposob:
Pierwsze osiem bitow:
0x00 adres 0x01 znak: adres wzgledny/liczba ze znakiem 0x02 liczby (w tym wartosci logiczne) 0x04 data i czas 0x08 wartosc binarna 0x10 wartosc tekstowa 0x20 tablica 0x40 typ zlozony 0x80 typ wlasnyWymyslam kolo, czy jest jakis standardard na "te rzeczy"?
Nastepne 8-ki rozwijalyby typy glowne, przykladowo:
0x00 0x.. -> wskazanie protokolu 0x01 0x.. -> adres wzgledny 0x02 0x00 -> wartosc logiczna (true== 0x01) 0x03 0x00 -> wartosc logiczna (true== 0xFF) 0x02 0x10 -> calkowita, bez znaku 0x03 0x11 -> staloprzecinkowa, ze znakiemSens rozwiniec - chwilowo - niewazny. Istotne jest czy pierwsze 8 bitow daje szanse na wyprowadzenie wszystkich (rozsadnych) typow i czy nie ma na to jakiegos standardu.
sz.
[1] Se ktos wymyslil, ze ma byc xml i juz. Na szczescie _jeszcze_ nie wie jaki ;> [2] *Koniecznoscia* (bo [1]). /Xml'izacja/ danych na serwerze akwizycyjnym byla by prostsza i tansza. Ale ma byc w sterowniku [1]. [3] Przy cichym zalozeniu, ze nie dopuszczamy istnienia wartosci o reprezenacji krotszej niz 8 bitow.