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.

Siemens S7-1200 CB1241 -> ModBus -> Sumator tensometryczny

trolodk 25 Nov 2021 13:58 174 10
SterControl
  • #1
    trolodk
    Level 6  
    Dzień dobry,

    próbuję połączyć się sterownikiem Siemens S7-1200 z modułem (signalBoard) CB1241 za pomocą ModBusa z sumatorem tensometrycznym firmy Wobit ADT42-i.
    Brak odzewu. Prędkość, parzystość, bity danych, bity stopu i adresy są ustawione tak samo.
    Ciągle mam błąd 80C8 - "Slave timeout. Check the baud rate, parity and the connectors on the slave. Próbowałem naturalnie zmieniać baudy i adres slave'a - ten sam rezultat.
    "

    Nie jestem pewny dwóch rzeczy:
    1. połączenia kablowego (skrętka - jedna para jako A i B + wyrównanie mas)
    2. programu (choć prościej chyba się nie da.

    ad 1. W sumatorze sprawa jest jasna - jedna żyła do A, druga do B, natomiast w płyce CB1241 z tego co znalazłem w Internecie żyła A wpięta jest do T/RA, żyła B do T/RB, a oprócz tego przy samym sterowniku są krótkie mostki między TA i T/RA i między TB i T/RB.
    Siemens S7-1200 CB1241 -> ModBus -> Sumator tensometryczny
    ad 2. Obrazki w załączniku.
    Siemens S7-1200 CB1241 -> ModBus -> Sumator tensometryczny
    Proszę o pomoc, bo utknąłem od wczoraj i nie wiem jak ruszyć z miejsca.

    Pozdrawiam.
    Kamery 3D Time of Flight - zastosowania w przemyśle. Darmowe szkolenie 16.12.2021r. g. 10.00 Zarejestruj się
  • SterControl
  • #2
    markosik20
    Level 33  
    Moduł Wobit ADT42 na pewno pracuje na ustawieniach fabrycznych? Producent udostępnia aplikację do konfiguracji.
    Dobrym sposobem na poszukanie problemów jest "podgląd" magistrali RS485 z użyciem prostej przejściówki i programu na PC.
  • SterControl
  • #3
    trolodk
    Level 6  
    Mam aplikację, sprawdzałem ustawienia komunikacji w niej i są takie same. Nawet próbowałem innych prędkości, czy innego adresu i brak efektu.

    Samo podłączenie kabli jest w porządku? Program jest też OK?
  • Helpful post
    #4
    Markos80

    Automation specialist
    DATA_ADDR raczej nie powinno być 1, ale 40001, jeśli chcesz przeczytać holding registers.
    Dodatkowo możesz próbować zamienić A i B, bo nie u każdego producenta znaczą to samo.
  • Helpful post
    #5
    gag70
    Level 24  
    Z tego co napisałeś nie wynika dla mnie jednoznacznie, że komunikacja z modułem przez jakiś dedykowany software działa. Więc jeżeli tak jest - poniższe nie będzie miało zastosowania.

    Opukac Wobita skanerem (dowolny program typu Modbus RTU Master) z peceta przez konwerter RS485 i ustalić że działa, jaki ma adres, parametry transmisji, itp.
    Wiedząc, że jest komunikacja z Wobitem, można się bawić w pisanie i uruchamianie komunikacji na sterowniku.

    Można próbować zamieniać A i B między sobą, bo Siemens w tym względzie jest na odwrót niż definiuje standard.
  • Helpful post
    #6
    mfac
    Level 9  
    Tak jak koledzy pisali - zamiana A i B miejscami. (znaki + - maja się zgadzać, literki to kwestia konwencji)
    Ponadto sprawdziłbym oscyloskopem, czy faktycznie jakieś bity próbują się w ogóle po linii błąkać.
    Nie napisałeś jak długi masz ten kabel. Czy przypadkiem nie będzie konieczna prawidłowa terminacja obu końców linii.
    A jak z ekranowaniem?
  • #7
    trolodk
    Level 6  
    Zamiana miejsc A i B okazała się sukcesem. Widocznie mam bardzo małe doświadczenie, że nie spodziewałem się, że czasami A i B są oznaczone odwrotnie.
    Kliknę "pomógł" przy Waszych postach.

    Mam jeszcze jedno pytanie: Siemens S7-1200 CB1241 -> ModBus -> Sumator tensometryczny jak wykonać tarowanie? Odczytuję wagę z adresu 40001, zmienia mi się w czasie rzeczywistym, ale nie umiem wykonać tarowania.

    Zmiana w bloku MB_MASTER funkcji na "1" i zmiana adresu na "4001" daje komunikat zwrotny "8381 - Function code not supported".

    Pozdrawiam.
  • #8
    markosik20
    Level 33  
    Zmień na funkcję 5 (0x05 Zapis pojedynczego bitu ).
  • #9
    trolodk
    Level 6  
    Siemens S7-1200 CB1241 -> ModBus -> Sumator tensometryczny
    Według pomocy Siemensa funkcja 5 to MODE = 1. Tak robię, nawet próbowałem podmienić tablicę na tę z zmiennymi typu bool i ten sam efekt.
  • Helpful post
    #10
    markosik20
    Level 33  
    trolodk wrote:
    Według pomocy Siemensa funkcja 5 to MODE = 1.
    I dlatego osobiście nie cierpię Siemens'a.... za to że wszystko muszą robić po swojemu... a nie zgodnie ze specyfikacją.
    Wg. standardu MODBUS'a aby włączyć bit trzeba wysłać wartość 0xFF00, analogicznie żeby go wyzerować 0x0000, czyli teoretycznie
    MODE = 1, ADR = 4001, DATA = 0xFF00
  • #11
    trolodk
    Level 6  
    Zrobiłem inaczej. Wrzuciłem blok MB_MASTER do innego FB, którą wywołuję jakimś warunkiem (np wirtualnym guzikiem "taruj"), ale zmieniłem parametry bloku tak, by tylko jeden bit został wysyłany. Czyli MODE=1, MB_ADDR=4002 (tarujemy wagę sumaryczną, a nie MIN/MAX), DATA_LEN=1 (co ciekawe, gdy daję 2 funkcja zwraca błąd "Function code not suported"), a w miejsce tablicy podpiąłem "ALWAYS_TRUE" i działa. Generalnie uważam to za zagmatwane i dziwne rozwiązanie, możnaby to zrobić prościej, ale trudno.

    Dzięki Panowie za pomoc, na razie tematu nie zamykam, jeśli mi się nic do jutra w głowie nie urodzi, to zamknę.
    Pozdrawiam.