Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Program do wykrywania urządzeń podłączonych do magistrali (MODBUS RTU)

22 Lis 2018 15:39 303 6
  • Poziom 3  
    Witam,

    muszę napisać część kodu w C, której zadaniem będzie wykrywanie urządzeń podłączonych do magistrali. Posiadam 5 modułów I/O, firmy Lumel, wszystkie moduły połączone są szeregowo i łączą się z komputerem za pomocą Uport1130 RS 232/485. Adresy urządzeń skonfigurowałem odpowiednio od 1 do 5 (za pomocą programu dostępnego na stronie producenta), wszystko działa poprawnie, możemy połączyć się z każdym urządzeniem wysyłając ramkę i np. zidentyfikować to urządzenie. Wysyłam zapytanie i otrzymuję odpowiedź.

    Chciałbym, aby mój program przeskanował przestrzeń adresową np. od 1 do 20 i wykrył urządzenia, których adresy znajdują się w tym przedziale.

    Za wszelką pomoc z góry dziękuję.
  • Poziom 26  
    No to proponuję lekturę MODBUS a nie czekać na gotowce.
  • Poziom 18  
    Raczej sugeruje użycie języka wysokiego poziomu c#/java/python choćby ze względu na gotowe biblioteki modbus
  • Poziom 33  
    adiizioom napisał:
    Witam,

    muszę napisać część kodu w C, której zadaniem będzie wykrywanie urządzeń podłączonych do magistrali. Posiadam 5 modułów I/O, firmy Lumel, wszystkie moduły połączone są szeregowo i łączą się z komputerem za pomocą Uport1130 RS 232/485. Adresy urządzeń skonfigurowałem odpowiednio od 1 do 5 (za pomocą programu dostępnego na stronie producenta), wszystko działa poprawnie, możemy połączyć się z każdym urządzeniem wysyłając ramkę i np. zidentyfikować to urządzenie. Wysyłam zapytanie i otrzymuję odpowiedź.

    Chciałbym, aby mój program przeskanował przestrzeń adresową np. od 1 do 20 i wykrył urządzenia, których adresy znajdują się w tym przedziale.

    Za wszelką pomoc z góry dziękuję.


    Napisz pętlę, której jednym z parametrów inkrementowanych będzie adres slave.
    - Wyślij zapytanie o ID slave
    - Czekaj czas timeout
    - Jeśli odpowiedział to dodaj go do tablicy urządzeń
    - Inkrementuj adres slave
    - powrót do początku pętli
  • Specjalista Automatyk
    adiizioom napisał:
    Witam,

    muszę napisać część kodu w C, której zadaniem będzie wykrywanie urządzeń podłączonych do magistrali. Posiadam 5 modułów I/O, firmy Lumel, wszystkie moduły połączone są szeregowo i łączą się z komputerem za pomocą Uport1130 RS 232/485. Adresy urządzeń skonfigurowałem odpowiednio od 1 do 5 (za pomocą programu dostępnego na stronie producenta), wszystko działa poprawnie, możemy połączyć się z każdym urządzeniem wysyłając ramkę i np. zidentyfikować to urządzenie. Wysyłam zapytanie i otrzymuję odpowiedź.

    Chciałbym, aby mój program przeskanował przestrzeń adresową np. od 1 do 20 i wykrył urządzenia, których adresy znajdują się w tym przedziale.

    Za wszelką pomoc z góry dziękuję.


    Dlaczego musisz napisać to w C a nie np. w C#? Jest ku temu jakiś konkretny powód? Jeśli korzystałbyś z C# to może skorzystasz z tego co sugeruje ta strona -> https://www.mesta-automation.com/modbus-with-c-sharp-libraries-examples/
  • Poziom 3  


    Mógłbym spróbować napisać to w C#, ale wydaje mi się, że dla mnie łatwiej będzie przygotować ten program w C.

    Idę w ogóle w dobrym kierunku, jeśli chodzi o przeskanowanie przestrzeni adresowej z podanego przeze mnie zakresu ?

    W jaki sposób mogę, w pętli pytać o ID slave? Co mam w takim przypadku wpisać w ramce, w polu adresu slave?

    Kod: C
    Zaloguj się, aby zobaczyć kod
  • Specjalista Automatyk
    Witam,


    adiizioom napisał:

    Mógłbym spróbować napisać to w C#, ale wydaje mi się, że dla mnie łatwiej będzie przygotować ten program w C.


    To nie prawda. Bierzesz gotową biblitekę do modbus. Jedna pętla i po temacie.

    Dodatkowo masz dwa razy dołączoną tą samą bibliotekę:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Pozdrawiam,