Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

sterowanie silnikiem krokowym po RS z S7-300

bigmaster 21 Aug 2017 16:35 2484 14
SterControl
  • #1
    bigmaster
    Level 15  
    Cześć

    Konfiguracja
    S7-300 6ES7 314-6EH04-0AB0
    + CP 340-RS422/485
    KTP600 BASIC COLOR pn

    kontroler silnika krokowego ślinik krokowy nanotec
    SMC-3B P3CT0485
    Silnik krokowy z enkoderem

    Ogólne pytanie:
    1. czy da się tym sterować silnikiem po RS?
    1a. wyciągnąć z tego położenie, zadać położenie, prędkość chwilową, zadać prędkość.
    dada ze posuw liniowy na śrubie
  • SterControl
  • #2
    jamjampoland
    Level 14  
    Z tego co wyczytałem w dokumentacji tego kontrolera to komunikuje się on po porcie RS485 - jeżeli twój sterownik wspiera taką komunikację to nie powinno być problemu. W dokumencie "Programming Manual" na stronie którą podałeś są przykładowe polecenie wysyłane do kontrolera. Najlepiej na samym początku przetestować komunikacje z kontrolerem za pomocą jakiegoś programu np.: realterm, a potem zabrać się do obsługi połączenie za pomocą karty RS485 na sterowniku.
  • #4
    bigmaster
    Level 15  
    Czas wrócić, do tematu, niestety nie działą,
    pomocny post do RS485
    https://www.elektroda.pl/rtvforum/topic2083707.html
    Dodano po 3 [godziny] 10 [minuty]:
    NO to problem w programmer używam bloków ze strony Siemens do falownika G120. w których jes FC5
    Teraz bloki z Krokówki tez mają FC5.
    Jak zmienię nazwę FC to podmieni aromatycznie w programie?
    sterowanie silnikiem krokowym po RS z S7-300 jak to obejsc? sterowanie silnikiem krokowym po RS z S7-300
  • SterControl
  • #5
    bigmaster
    Level 15  
    Komunikacja już dział.

    Jak wpisać string do DB
    np: '#1s100\r'
  • #6
    bigmaster
    Level 15  
    pare testów w adapterem RS

    W programie realterm Widze wysłane zeczy z DB
    ale jak próbuje wysłać np'100' programem realterm do PLC to nic się nie zapisuje do DB(dioda rxd mruga na
    czy to znaczy ze połańczanie kabel jest dobrze poszyty?

    cp340sterowanie silnikiem krokowym po RS z S7-300)
  • #7
    bigmaster
    Level 15  
    No to powili ogarnięte, Suport z Niemiec wytłumaczył mi łopatologicznie komunikacje.
    Programista Manuel mówi że komenda ma się zaczynać od '#'a konczyć na '\r'
    I teraz w ASCII niema \ wiec jest '0x0D'hex w w ustawianiach PtP należny zmienić na szukanie znaku kocowego 'D'hex
    Żeby było tego mało,
    a na dodatek znak kocowy nie może być \r tylko '$r'. i to w jednym DB.DBB JAK ŁĄCZE SRING.
    np.
    KOMENDA STARTU :'#1A\r'
    DB10 -string [254]
    DB10.DBB0 #
    DB10.DBB1 1
    DB10.DBB2 A
    DB10.DBB3 $r

    Odpowiedz kolesia wszytko zależy od urządzenia z którym się komunikujemy.

    PS
    Trzeba było bardziej na wykładach uważać z komunikacji szeregowej 10 lat temu:)
  • #8
    bigmaster
    Level 15  
    Kurcze nie mogę napisać pętli w LADaby to działało z płynną zmianą parametrów

    Dodano po 16 [godziny] 6 [minuty]:

    udało sie wczoraj ruszyć teraz tylko stałe sprawdzanie pozycji
  • #9
    bigmaster
    Level 15  
    no to problem komunikacja RS422 mnie chba przerosła budowa tegko protokołu to jakis koszmar.
    urzywam znaku koca paczki(wymug sterownika krokówki)

    no i teraz tak:
    stworzyłem 3 bloki funkcyjne z komunikacja P_send i P_rev.
    1. FB300 pozycjonuje :
    komendy:
    p2
    D0
    A
    Musze wsłać
    #1p2$r
    #1D0$r
    #1A$r
    2. FB302 jest to ruch absolutny
    3. sprawdzenie pozycji.

    stringa buduje po 1 znaku (urzywajac conect string)
    w tym 1 przypadku otwieram komunikacje 3 razy następnie dezaktywuje FB
  • #10
    bigmaster
    Level 15  
    Nowy problem doś poważny.
    Chyba przez to ze mam 3 razy wywołuje funkcje P_send i P_rcv
    3 razy to znaczy trzy FB 300 302 303 gdy jeden z aktywny blokuje EN pozostałych dwóch.
    Wychodzi na to ze tak nie mozna. bo gdy za szybko przełączam FB to wtedy jakby CP 340 sie zawieszało i pomaga reset PLC

    czy jest inna przyczyna?
  • #12
    bigmaster
    Level 15  
    cześć poproszę o sprawdzenie kodu.
    zamysłem jest żeby wysłał to w pętli a zewnętrzna funkcja podmienia DB50 z stringiem
  • #13
    bigmaster
    Level 15  
    zrobione teraz zasuwa komunikacja :)
    pozostaje podmiana DB z porównaniem send z resiwe

    przez to że komunikacja wcześniej się zawieszał musiałem zmienić logikę programu.
    Wiec teraz cały czas komunikuje się z krokówką wyszłam ciągle DB50 (ma jedną zmienną typu string[254]).
    W FB306 NW3 tworzy komendę i zapisuje do DB54
    W innej części programu następuje przepisanie DB54 do DB50 (funkcja BLKMOV)

    W FB306 od NW4 do NW12, tam obcinam, przewracam stringi z DB52(odpowiedz z krokówki) i porównuję do siebie to co wysłałem z tym co odebrałem
    Gdy równe wtedy resetuje flagę aktywując wysłanie tej danej komendy .
    Komeda która zawsze będzie(gdy inne komendy się zakończą) odpytywana jest położeni #1I$r

    Moe pytanie:
    Jak to wrzucić porównani czyli wiersze od NW4 do NW12 do FC(mam problem z zmiennych string potrzebuję ich dużo) zęby stworzyć wykorzystać wielokrotnie po wysłaniu kilku komend(każda zbór komendy będzie osobnym FB)
    to co wyłam to jest komenda stop #1S$r

    A teraz muszę stworzyć podmienić 4 razy DB50 zęby silnik ruszył
    komenda
    1: #1p2$r (zmian trybu na absolutny) (string w ramce |-2|4|#|1|p|2|$r| )
    #1d$r (Reset)
    #1o500$r (zadana prędkość w Hz)
    #1A$r (start)

    Przetwarzanie string jest potrzebne ponieważ odpowiedz dostaję
    np: |-2|0|1|p|2|$r|, bez liczby znów,zawsze równa 0 bez #

    wszelka krytyka i sugestie mile widziane
  • #14
    bigmaster
    Level 15  
    od rana dział komunikacja, liczniki obecnie
    Tx23530
    Rx22535
    Bład Rx 16#0811

    Wygląda na, to ze gubi trochę komunikacji, dlatego muszę sprawdzać komendę czy dobre wracają
  • #15
    bigmaster
    Level 15  
    Problem rozwiązany.
    korzystamy z gotowych bloków do wysłanie i odbierania po RS.
    Przykład na stronie siemensa.
    Do tego dopisujemy własny BLOK FB który na bieżąco porównuje paczkę wysłaną z paczką odebraną .
    jeżeli są równe to możemy wysłać następnego paczkę.
    I tak w kółko.

    nie używałem żadnych priorytetu co ma być pierwsze wysłanie działa to bardzo szybko a gdy nie wysyłam nic to odpytuje sterownik krokówki o położenie.

    Pozdrawiam
    dziękuje za wyrozumiałość