Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Excel, VBA, program do odczytu danych z licznika energii

tomijerry 07 Feb 2011 12:27 4662 3
  • #1
    tomijerry
    Level 10  
    Witam.
    Na początek chciałbym się przywitać, gdyż jest to mój pierwszy post na tym forum.
    Forum śledzę od kilku lat jednak większość odpowiedzi odnajdywałem bez zadawania pytań. A pytanie mam następujące:
    Chciałbym napisać program, skrypt w Excelu VBA, który odczytywałby dane z licznika energii poprzez port rs232 (przejściówka usb-rs485) poprzez protokół modbus rtu.
    W praktyce program ma wysyłać stałą ramkę w postaci 010300000003(crc) co określony czas np co 10sek. i po każdym wysłaniu odebrać odpowiedź w postaci
    010306000600000001E848(crc) i przekazać to do komórki excela celem dalszej obróbki. Myślałem o użyciu kontrolki mscomm32.ocx jednak niewiele o niej wiem.
    Czy moglibyście polecić jakąś lekturę dotyczącą obsługi tej kontrolki, lub nakierować mnie w którym kierunku powinienem pójść. Na tym forum znalazłem dużo gotowych przykładów jednak w żadnym jeśli chodzi o protokół modbus rtu. Jestem całkowicie zielony w tym temacie dlatego proszę o jakiekolwiek wskazówki (o gotowe rozwiązanie nawet nie śmiem prosić).
    Pozdrawiam
  • #2
    Udios
    Level 12  
    Witam
    materiałów do tej kontrolki nie mam, (pozostaje wujek GOOGLE), ale mogę udostępnić mój program MOTBUS RTU w excel-u. Jest to wersja nie do końca skończona, działa tylko odczyt rejestrów i testowany był tylko na wirtualnym komie RS232 - Virtual.Serial.Port.Driver i programie - ModbusSlave symulującym odbiornik. Programy te ułatwiały bardzo testowanie kolejnych wersji programu więc polecam je lub podobne do prac. Kiedyś pewno wrócę do skończenia programu, bo będę potrzebował coś do sczytywania parametrów z mierników ND20 Lumela.

    Potrzebne do poprawnego działania programu są kontrolki:
    IETIMER.OCX - timer wykorzystany do cyklicznego odczytu danych
    MSCOMM32.OCX - tę już znasz.

    Pozdrawiam
  • #3
    Udios
    Level 12  
    Przydatne informacje przede wszystkim o kontrolce mscomm32

    Rejestrowanie kontrolek w wierszu poleceń
    regsvr32 c:\windows\system32\mscomm32.ocx
    regsvr32 c:\windows\system32\IETIMER.OCX

    Aby kontrolka MSCOMM32.OCX działała trzeba w rejestrze
    HKEY_LOCAL_MACHINE\Software\Microsoft\InternetExplorer\ActiveXCompatibility\{648A5600-2C6E-101B-82B6-000000000014}

    zmienić wartość z 400 na 0

    Kontrolka MSCOMM32.OCX jest częścią pakietu Visual Basic 6 i chyba nie jest udostępniana darmowo dlatego Microsoft dbając o swoje interesy blokuje ją. Niestety Windows sam systematycznie przywraca zmienioną wartość rejestru i często trzeba czynność poprawiać po restarcie systemu.

    Problem nie występuje na komputerze z zainstalowanym VB6

    Pozdrawiam
  • #4
    tomijerry
    Level 10  
    Dzieki za podpowiedzi
    pozdrawiam