CAN Layer 2 - komunikacja PLC - karta PCI

Pytania i odpowiedzi dotyczące sprzętu Unitronics

Moderatorzy: Marek Sikora, Mateusz Sikorski

CAN Layer 2 - komunikacja PLC - karta PCI

Postprzez goldi » Śr, 30 maja 2012, 09:15

Witam,
Z tego co wyczytałem w dokumnetacji to w celu komunikacji sterownika V350 z jakimkolwiek urządzeniem po magistrali CAN należu użyć CAN Layer 2 z Com Port w zakładce Com Initilize. Próbuje wykonać program który umozliwi komunikacje V350 z kartą PCI w komputerze. Czy mógłby ktoś wspomóc jakimiś przykładowymi programami? Byłbym wdzięczny.
goldi
 
Posty: 35
Dołączył(a): Pn, 2 kwi 2012, 20:05

Re: CAN Layer 2 - komunikacja PLC - karta PCI

Postprzez Adrian Surma » Śr, 30 maja 2012, 09:50

Proszę napisać jak ma wyglądać komunikacja. Czy chce Pan wysłać dane do komputera? W załączniku przykładowy program do wysyłki danych do urządzenia ID=2. Na ekranie wpisuje się początkowy adres wektora danych do wysyłki.
Załączniki
CANlayer2.zip
(164.71 KiB) Pobrane 799 razy
Adrian Surma
Adrian Surma
 
Posty: 142
Dołączył(a): Pt, 6 cze 2008, 07:17

Re: CAN Layer 2 - komunikacja PLC - karta PCI

Postprzez goldi » Śr, 30 maja 2012, 09:58

Dziękuję za odpowiedź.
Komunikacja ma polegać na wysłaniu ramki danych ze sterownika na komputer oraz odebraniu ramki wysyłanej z komptuera w sterowniku. Karta jest frimy advantech PCI-1680U, używam porgramu producenta CANTest. Udało mi się wysłać liczbe ze sterownika na ten program za pomocą przykladowego programu (broadcast-to-network-CAN.vlp). Próbowałem za pomocą innych przykładowych programów odebrać ramkę na sterowniku ale nie udało się.
Za chwilę sprawdzę Pana program.

Używam VisiLogic 8.01, a pański program jest napisany na nowszej wersji. Nie mogę otworzyć programu.
goldi
 
Posty: 35
Dołączył(a): Pn, 2 kwi 2012, 20:05

Re: CAN Layer 2 - komunikacja PLC - karta PCI

Postprzez Adrian Surma » Śr, 30 maja 2012, 10:41

Witam
Proszę pobrać najnowszą wersję oprogramowania --> http://unitronics.com/Data/Uploads/Visi ... up_940.exe
W załączniku dodatkowo przykład odbierania danych z komputera. Adres PLC to ID=1. Proszę powiedzieć jak po wysłaniu danych z komputera zmieniły się rejestry MB0, MI2, MI3, MI4, MB1 (w sensie z jakich wartości na jakie). Jak zainstaluje Pan nową wersję Visilogic. Proszę również przetestować poprzedni program. Jak Pan może proszę o wysyłkę linka do informacji na temat programu, z którego Pan korzysta.
Załączniki
CANlayer2ex.zip
(168.35 KiB) Pobrane 853 razy
Adrian Surma
Adrian Surma
 
Posty: 142
Dołączył(a): Pt, 6 cze 2008, 07:17

Re: CAN Layer 2 - komunikacja PLC - karta PCI

Postprzez goldi » Śr, 30 maja 2012, 13:20

Dziękuję bardzo za odpowiedź.
Wszystko będę mógł przetestować dopiero w poniedziałek. Wtedy odpowiem na Pana pytania.
Jeśli chodzi o pytanie o link do programu to ma Pan na myśli program CANTest?
goldi
 
Posty: 35
Dołączył(a): Pn, 2 kwi 2012, 20:05

Re: CAN Layer 2 - komunikacja PLC - karta PCI

Postprzez Adrian Surma » Śr, 30 maja 2012, 13:24

Tak. Czy można pobrać ten program albo zobaczyć dokumentację do niego ?. Przydadzą się informacje typu - w jakim standardzie odbierać musimy dane (identyfikator) 11bit czy 29bit.
Adrian Surma
Adrian Surma
 
Posty: 142
Dołączył(a): Pt, 6 cze 2008, 07:17

Re: CAN Layer 2 - komunikacja PLC - karta PCI

Postprzez goldi » Śr, 30 maja 2012, 13:29

To jest program firmy Advantech, dołączany do sterowników karty. Umożliwia deklarację prędkości przesyłu, rozmiar ramki, ID, oraz rodzaj identyfikatora(SFF, EFF). Jeśli go znajdę w sieci to załączę do tematu.
goldi
 
Posty: 35
Dołączył(a): Pn, 2 kwi 2012, 20:05

Re: CAN Layer 2 - komunikacja PLC - karta PCI

Postprzez goldi » Śr, 30 maja 2012, 13:33

http://support.elmark.com.pl/advantech/ ... manual.pdf
Na stronie 87 (93 pliku) jest opis programu CANTest.
goldi
 
Posty: 35
Dołączył(a): Pn, 2 kwi 2012, 20:05

Re: CAN Layer 2 - komunikacja PLC - karta PCI

Postprzez Adrian Surma » Śr, 30 maja 2012, 13:43

Ok. W takim razie proszę jeszcze przetestować inny program z załącznika. Pamiętać o ustawieniach karty: baud rate:500Kb, rozmiar ramki 8 bytes, rodzaj identyfikatora - SFF. Adres id karty=5. Podobnie proszę obserwować zmiany rejestrów po wysyłce danych z karty: od MI7 kolejne, oraz MB2.
Załączniki
CANlayer2czytaj.zip
(167.7 KiB) Pobrane 820 razy
Adrian Surma
Adrian Surma
 
Posty: 142
Dołączył(a): Pt, 6 cze 2008, 07:17

Re: CAN Layer 2 - komunikacja PLC - karta PCI

Postprzez goldi » Pn, 4 cze 2012, 08:49

Witam,
Sprawdzam Pana programy, ale póki co nie dostrzegam jakichkolwiek wyników.
Jeśli chodzi o same przykłady programów to napisał je Pan dla modelu V350-35-R2, a ja pracuję na modelu V350-35-R6. Podczas kompilacji pojawia się komunikat:
Incompatible hardware configuration definitions: beetween project (V350-35-R2) & PLC (V350-35-R6)

Pomimo tego program zostaje wgrany do sterownika, czy rozbieżność pomiędzy modelami może być przyczyną nie działania programu?
Prosi Pana o podanie zmian w rejestrach. Czy te zmiany powinienem zaobserwować w funkcji 'Watches'? Nie potrafię odnaleźć stanu początkowego rejestrów oraz ewentualnych zmian spowodowanych wysyłaniem ramki z komputera na sterownik.
Kolejne pytanie, do czego służy przycisk 'SEND' w pliku CANlayer2? Pytam bo nie potrafię określić zmiennej do jakiej odwołuje się ta funkcja na wyświetlaczu sterownika.
Czy programy, które Pan załączył są sprawdzone i działają u Pana poprawnie?
goldi
 
Posty: 35
Dołączył(a): Pn, 2 kwi 2012, 20:05

Re: CAN Layer 2 - komunikacja PLC - karta PCI

Postprzez Mateusz Sikorski » Pn, 4 cze 2012, 09:17

Witam,
aby zniknął komunikat o niekompatybilności urządzeń należy z lewego okna z drzewem projektu wybrać Hardware Configuration i zmienić sterownik na V350-35-R6. Nie mniej jednak nie powinno to mieć żadnego wpływu na działanie programu, jeśli nie używane są fizyczne wejścia / wyjścia.

Rejestry, do których zapisywane powinny być dane z komputera określa wyjście E z bloku "CAN_L2 Scan". Podczas podglądu działania programu (niebieskie okulary z górnego menu lub wciśnięcie przycisku F9 w VisiLogic), u dołu niech Pan wybierze zakładkę operands, a następnie Memory Integer. Potem trzeba znaleźć rejestr wpisany w wyjściu E z bloku "CAN_L2". Przy dobrej konfiguracji powinny pojawiać się odpowiednie wartości w rejestrze podanym oraz/lub poniżej przy wysyłaniu danych z komputera.

Przycisk SEND w programie CANlayer2 faktycznie nie jest podłączony do żadnej zmiennej, a powinien do MB0 (w polu Touch).
Mateusz Sikorski
Elmark Automatyka S.A.
Mateusz Sikorski
 
Posty: 564
Dołączył(a): Śr, 13 lip 2011, 08:08

Re: CAN Layer 2 - komunikacja PLC - karta PCI

Postprzez goldi » Pn, 4 cze 2012, 09:50

Dziękuję bardzo za odpowiedź,
Program CANlayer2 działa poprawnie, wysyłam dane ze sterownika i odbieram je w programie CANTest na komputerze. Jedynym problem okazał się brak przypisania zmiennej do przycisku 'SEND'.
Dane w rejestrach: MI0 oraz MI1 mogę edytować natomiast w pozostałych są następujące: MI2=27, MI3=8, MI4=4, MI5=5, MI6=8, MI7=256.
Po wpisaniu w MI0=7, MI1=54 w VisiLogic oraz kliknięciu 'SEND' na sterowniku otrzymałem ramkę w programie CANTest jak w załączniku.

Za chwilę sprawdzę komunikację w drugą stronę, tj. z karty (PC) na sterownik.
Załączniki
cantest-send.TIF
(50.75 KiB) Pobrane 739 razy
goldi
 
Posty: 35
Dołączył(a): Pn, 2 kwi 2012, 20:05

Re: CAN Layer 2 - komunikacja PLC - karta PCI

Postprzez goldi » Pn, 4 cze 2012, 10:07

CANlayer2czytaj również działa poprawnie.
Dziękuję bardzo za pomoc.
W razie jakichkolwiek problemów odezwę się.

Pozdrawiam Panów.
goldi
 
Posty: 35
Dołączył(a): Pn, 2 kwi 2012, 20:05

Re: CAN Layer 2 - komunikacja PLC - karta PCI

Postprzez goldi » Wt, 5 cze 2012, 11:37

Po kilku nieudanych próbach postanowiłem zgłosić się o pomoc. Wykonałem program, który w założeniu ma realizować wysyłanie i odbieranie danych. Po uruchomieniu programu pokazuje się okno z wyborem transmisji (odbieranie, wysyłanie). W nowym oknie odbierania danych transmisja przebiega prawidłowo, wysyłam dane z komputera i odbieram na sterowniku. Po przejściu do pierwszego okna (głównego menu) wybieram opcje wysyłania danych. Po odpowiedniej konfiguracji wszystkich parametrów na komputerze i w sterowniku nie udaje się przesłać danej z PLC na PC. Nie wiem w czym może tkwić problem. Inny program, który służy tylko do wysyłania działa poprawnie.
goldi
 
Posty: 35
Dołączył(a): Pn, 2 kwi 2012, 20:05

Re: CAN Layer 2 - komunikacja PLC - karta PCI

Postprzez Mateusz Sikorski » Wt, 5 cze 2012, 11:39

Witam,
prosiłbym o przesłanie "nie działającego" programu. Zobaczymy, gdzie tkwi błąd.
Mateusz Sikorski
Elmark Automatyka S.A.
Mateusz Sikorski
 
Posty: 564
Dołączył(a): Śr, 13 lip 2011, 08:08

Re: CAN Layer 2 - komunikacja PLC - karta PCI

Postprzez goldi » Wt, 5 cze 2012, 11:50

Program w załączniku.
Załączniki
CAN-transmisja2.zip
(187.67 KiB) Pobrane 802 razy
goldi
 
Posty: 35
Dołączył(a): Pn, 2 kwi 2012, 20:05

Re: CAN Layer 2 - komunikacja PLC - karta PCI

Postprzez Mateusz Sikorski » Wt, 5 cze 2012, 12:20

Witam,
powodem takiego stanu rzeczy jest błąd w konfiguracji ekranów. Przy ekranie "wysylanie" oraz "odbieranie" chce Pan, żeby ciągle wykonywały się cały czas. Jednak w Pańskim programie wykonują się tylko raz przy załadowaniu ekranu (Choose "On load" Subroutine, zakładka Links & Jumps ekran). Jedyne co trzeba zrobić to wyczyścić z tego pola dany podprogram (prawym przyciskiem myszy) a następnie wybrać odpowiedni podprogram w oknie: Choose "While Displaying" Subroutine.
Dzięki takiemu zabiegowi, jeden z podprogramów będzie się wykonywał, dopóki dany ekran będzie aktywny.
Mateusz Sikorski
Elmark Automatyka S.A.
Mateusz Sikorski
 
Posty: 564
Dołączył(a): Śr, 13 lip 2011, 08:08

Re: CAN Layer 2 - komunikacja PLC - karta PCI

Postprzez goldi » Wt, 5 cze 2012, 16:13

Tak przypuszczałem, że problem tkwi w mojej nieznajomości VisiLogic.
Dziękuję za pomoc.
goldi
 
Posty: 35
Dołączył(a): Pn, 2 kwi 2012, 20:05

Re: CAN Layer 2 - komunikacja PLC - karta PCI

Postprzez goldi » Cz, 28 cze 2012, 07:43

Mam pewien problem do rozwiązania, ale nie wiem czy uda mi się wytłumaczyć o co chodzi.
Komunikacja karta PCI - sterownik PLC działa poprawnie. Z programu, który steruje kartą wysyłam ramkę do PLC, który odbiera ją bez problemu. Teraz, zrobiłem coś w stylu potwierdzenia, tzn. sterownik PLC wysyła ramkę zwrotną do programu karty PCI. Problem jest taki, że ramka jest wysyłana non stop, bez przerwy, do momentu aż wyłączę sterownik lub zamknę port karty. Chciałbym żeby ramka została wysłana tylko raz jeśli kolejna ramka jest taka sama. Wydaje mi się, że chodzi tylko o podpięcie do 'CAN_L2 Send' jakiejś funkcji, która sprawdzałaby czy kolejna ramka (string) jest taki sama (lub inna) i wtedy program wykonywałby się dalej, tzn została wysłana jedna ramka. Drugą opcją jest zastosowanie funkcji, która z ciągu odbieranych ramek z 'CAN_L2 Send' brała pod uwagę pierwszą ramkę i tylko taką wysyłała do karty. Nie wiem czy jasno wyjaśniłem mój problem, proszę o pomoc.
goldi
 
Posty: 35
Dołączył(a): Pn, 2 kwi 2012, 20:05

Re: CAN Layer 2 - komunikacja PLC - karta PCI

Postprzez Mateusz Sikorski » Cz, 28 cze 2012, 08:05

Witam,
proponuję na początku programu kopiować całą ramkę do innych rejestrów (blok Vector -> Copy). Na końcu programu należałoby porównywać oba ciągi rejestrów ze sobą (blok Vector -> Compare) i w przypadku, gdy są różne niech setuje jeden z bitów (MB), którego styk normalnie otwarty będzie ustawiony przed blokiem "CAN_L2 Send". W przypadku, gdy oba ciągi są identyczne niech ten bit będzie resetowany. Nie daje to jednak 100% gwarancji, że sterownik PLC wyśle ramkę przy zmianie ramki, dlatego proponowałbym przed kopiowaniem ramki z początku programu, ustawić styk normalnie otwarty MB ten sam co w przypadku CAN_L2 Send. Dawałoby to wtedy następujący algorytm (chronologicznie z wykonywaniem programu):

1) przed blokiem Vector Copy znajduje się bit np. MB0, odpowiadający za porównanie ramki otrzymanej z karty PCI z ramką skopiowaną (na razie jest pusta).
Jeśli ramka otrzymana jest inna wtedy zostanie skopiowana do innego obszaru pamięci.
2) porównanie ramek (musi odbywać się co skan programu bez żadnych warunków)
3) odbiera Pan cały czas ramkę z karty PCI bez żadnych warunków
4) przed blokiem CAN_L2 Send ustawiony jest ten bit MB0. Jeśli przy porównaniu sterownik wykrył różnicę (program nie skopiował ramki, gdyż wykonywane jest to przed porównaniem) to wyśle określone potwierdzenie. Jeżeli ramka jest identyczna, program nie wyśle nic.

Mam nadzieję, że to pomoże Panu.
Mateusz Sikorski
Elmark Automatyka S.A.
Mateusz Sikorski
 
Posty: 564
Dołączył(a): Śr, 13 lip 2011, 08:08

Re: CAN Layer 2 - komunikacja PLC - karta PCI

Postprzez goldi » Cz, 28 cze 2012, 08:56

Rozumiem Pana pomysł i wydaje się być dobry tylko nie potrafię jakoś przelać go do VisiLogic. Gdyby mógł Pan zerknąć na to co zrobiłem i poprawić co trzeba byłbym wdzięczny. Plik w załączniku.
Załączniki
odbieranie+potwierdzenie.zip
(180.04 KiB) Pobrane 827 razy
goldi
 
Posty: 35
Dołączył(a): Pn, 2 kwi 2012, 20:05

Re: CAN Layer 2 - komunikacja PLC - karta PCI

Postprzez Mateusz Sikorski » Cz, 28 cze 2012, 09:18

Witam,
w celu zapoznania się z funkcjonalnością każdego bloku polecam gorąco Panu Helpa programu VisiLogic. Jest napisany fenomenalnie i rozwieje Pańską każdą wątpliwość.
Po zajrzeniu tam znajdzie Pan,że :
1) bit MB5 (wyjście bloku Vector Compare) jest ustawiany na "1" wtedy gdy obie ramki się zgadzają (czyli odwrotnie tak jak Panu napisałem, przepraszam). W takim razie MB5 będzie "0" gdy ramki są różne.
2) odbiera Pan chyba więcej niż 1 lub 2 bajty ramki, prawda ? Jeśli zna Pan wielkość ramki to wie Pan do ilu rejestrów jest ona zapisywana (MI ma 2 bajty\16bitów). Wiedza ta będzie Panu potrzebna do wpisania ilości kolejnych MI w blokach Vector Copy oraz Vector Compare (wejście C). Proszę pamiętać, żeby ramka otrzymywana i ramka kopiowana nie nakładały się na siebie (teraz ma Pan ramkę otrzymywaną od MI7 a ramkę kopiowaną od MI10 - bardzo blisko siebie).
Mateusz Sikorski
Elmark Automatyka S.A.
Mateusz Sikorski
 
Posty: 564
Dołączył(a): Śr, 13 lip 2011, 08:08

Re: CAN Layer 2 - komunikacja PLC - karta PCI

Postprzez goldi » Cz, 28 cze 2012, 11:32

Przeanalizowałem bloki za pomocą helpa, ale póki co nie potrafię wyjść z tej sytuacji. Nadal sterownik wysyła non stop ramki. Nie rozumiem jednak do końca pomysłu Pana. Kopiując ramkę z rejestru do którego wysyła karta (MI7) do nowego rejestru (MI100) z każdym krokiem mam takie same wartości w obu rejestrach. W momencie porównywania wynik jest zawsze taki sam, ramki są identyczne bit równa się '1'. Nie rozumiem w jaki sposób ma zostać zrealizowane wysłanie tylko jednej ramki. Prosiłbym aby jeszcze raz krok po kroku napisał Pan co, gdzie i jak ustawić żeby jednak program wykonywał się poprawnie lub co wydaje się prostszym rozwiązaniem proponuję aby jednak wykonał Pan te zmiany w programie, który załączyłem i podzielił się nim.
goldi
 
Posty: 35
Dołączył(a): Pn, 2 kwi 2012, 20:05

Re: CAN Layer 2 - komunikacja PLC - karta PCI

Postprzez Mateusz Sikorski » Cz, 28 cze 2012, 13:41

Witam,

We wcześniejszej wiadomości napisałem, że musi Pan zanegować styk MB5 usytuowany przed blokiem "CAN_L2 Send" oraz przed blokiem "Vector Copy".
Dzieje się tak, ponieważ przy porównaniu dwóch ramek (Vector Compare) bit MB5 staje się "0" w przypadku, gdy ramki są różne. To w tym przypadku musi nastąpić wysłanie ramki i wpisanie tej ramki do ramki kopiowanej.

Przy podglądzie nie zauważy Pan różnicy między ramką otrzymaną a ramką skopiowaną, gdyż stan, kiedy będą one różne będzie trwał tylko jeden skan programu (<1ms).
Mateusz Sikorski
Elmark Automatyka S.A.
Mateusz Sikorski
 
Posty: 564
Dołączył(a): Śr, 13 lip 2011, 08:08

Re: CAN Layer 2 - komunikacja PLC - karta PCI

Postprzez goldi » Pt, 29 cze 2012, 07:31

Dziękuję bardzo, wszystko działa tak jak powinno.
Pozdrawiam
goldi
 
Posty: 35
Dołączył(a): Pn, 2 kwi 2012, 20:05

Następna strona

Powrót do Unitronics



Kto przegląda forum

Użytkownicy przeglądający to forum: Google [Bot] i 1 gość

cron