- Symulator MaSzyna -

Symulator EU07 (i nie tylko) => Bieżące Symulatorowe => Wątek zaczęty przez: maciek001 w 13 Listopada 2016, 17:07:48

Tytuł: MaSzyna z portem COM
Wiadomość wysłana przez: maciek001 w 13 Listopada 2016, 17:07:48
Konfiguracja portu COM:
Standardowa ramka UART -> 8 bitów danych, 1 bit stopu, bez kontroli parzystości i przepływu
Prędkość można ustawiać w pliku eu07.ini. Ja używam 0,5Mbps (przejściówka UART-USB).

Jak działa transmisja:
Transmisję rozpoczyna PC-et wysyłając pierwszy bajt danych. Mikrokontroler od razu odsyła pierwszy bajt danych.
Drugi bajt danych z PC - drugi bajt danych z uKontrolera itd.
Jeżeli uKontrolerowi skończą się dane do wysłania to tylko odbiera.
(http://pliki.pwsztar.edu.pl/~m_witek/maszyna/pliki/ramka.PNG) - link aktywny będzie w przyszłości

Pogrubione elementy już działają i są przeze mnie przetestowane:

Przesyłane Bajty:
z PC-ta:
1B: prędkość w km/h bez cyfr po przecinku
2B: wyjścia cyfrowe
3B: wyjścia cyfrowe
4B: wyjścia cyfrowe
5B: wyjścia cyfrowe -> ogrzewanie składu, jazda na oporach, poślizg, żaluzje wentylatorów, -, -, czuwak, SHP
6B: wyjścia cyfrowe -> stycz.liniowe, różnicowy obw. pomocniczych, nadmiar. przetwornicy, róznicowy obw. gł, nadm. silników, WS, zanik prądu przy jeździe na oporach, nadmiar. sprężarki
7B: wyjścia cyfrowe -> Hasler: 1 i 2 bit rysik1, 3 i 4 bit rysik2, 5 rysik3, -, -, brzęczyk SHP
8B: wyjście PWM1 - cylinder hamulcowy - młodsze bity
9B: wyjście PWM1 - cylinder hamulcowy - starsze bity
10B: wyjście PWM2 - przewód główny - młodsze bity
11B: wyjście PWM2 - przewód główny - starsze bity
12B: wyjście PWM3 - zbiornik główny - młodsze bity
13B: wyjście PWM3 - zbiornik główny - starsze bity
14B: wyjście PWM4 - amperomierz 1 grupy silników - młodsze bity
15B: wyjście PWM4 - amperomierz 1 grupy silników - starsze bity
16B: wyjście PWM5 - amperomierz 2 grupy silników - młodsze bity
17B: wyjście PWM5 - amperomierz 2 grupy silników - starsze bity
18B: wyjście PWM6 - amperomierz 3 grupy silników - młodsze bity
19B: wyjście PWM6 - amperomierz 3 grupy silników - starsze bity
20B: wyjście PWM7 - woltomierz WN - młodsze bity
21B: wyjście PWM7 - woltomierz WN - starsze bity
22B: wyjście PWM8 - kanał wolny - młodsze bity
23B: wyjście PWM8 - kanał wolny - starsze bity
24B: wyjście PWM9 - kanał wolny - młodsze bity
25B: wyjście PWM9 - kanał wolny - starsze bity
26B: wyjście PWM10 - kanał wolny - młodsze bity
27B: wyjście PWM10 - kanał wolny - starsze bity
28B: wyjście PWM11 - kanał wolny - młodsze bity
29B: wyjście PWM11 - kanał wolny - starsze bity
30B: wyjście PWM12 - kanał wolny - młodsze bity
31B: wyjście PWM12 - kanał wolny - starsze bity

z uKontrolera (pulpitu):
1B: wejścia cyfrowe -> puste,  wyłącznik WS-a, impuls zał. WS, odblok. silników trakc., puste, odblok nadmiar. przetwornicy i ogrzewania poc., wył. styczników lin., kasowanie CA/SHP
2B: wejścia cyfrowe -> puste, przetwornica, sprężarka, piasecznica(?), ogrzewanie składu, przełącznik hamowania, przełącznik hamowania, rozruch wysoki/niski
3B: wejścia cyfrowe -> patyk1, patyk2, przyhamowanie przy poślizgu, przyciemnienie świateł lok, przyciemnienie świateł lok, odluźniacz, syrena wysoka, syrena niska
4B: wejścia cyfrowe -> bateria, puste
5B: wejścia cyfrowe -> puste
6B: wejścia cyfrowe -> puste
7B: wejście cyfrowe -> puste
8B: pozycja nastawnika od 0
9B: pozycja bocznika od 0
10B: wejście analogowe1 - hamulec zasadniczy - młodsze bity
11B: wejście analogowe1 - hamulec zasadniczy - starsze bity
12B: wejście analogowe2 - hamulec pomocniczy - młodsze bity
13B: wejście analogowe2 - hamulec pomocniczy - starsze bity
14B: wejście analogowe3 - kanał wolny - młodsze bity
15B: wejście analogowe3 - kanał wolny - starsze bity
16B: wejście analogowe4 - kanał wolny - młodsze bity 
17B: wejście analogowe4 - kanał wolny - starsze bity

Jak widać wszystko było robione pod ET22 ale nie widzę powodu, żeby w wolne miejsca powrzucać do innych loków.
Jak może ktoś zauważył, część opisanych przełączników i kontrolek MaSzyna jeszcze nie obsługuje ale miejsce na nie już jest zarezerwowane ;)

Aktualizacja 2016.11.14 0850:
Rainsted obsługuje wybór komunikacji po porcie COM (feedbackmode 5).
Co się stanie gdy będę chciał otworzyć port COM a takiego nie będzie lub nie będzie podpięty sprzęt do komputera? - Komunikacja po porcie zostanie wyłączona i będzie można normalnie sterować z klawiatury.

Aktualizacja 2016.11.16 1905:
Zmiana ramki danych: 12 PWM-ów 16 bitowych i 4 kanały ADC max 16 bitowe. Uaktualnienie w exe i tekście wyżej już niedługo.

Aktualizacja 2016.11.19 1900:
Zmiana rozdzielczości ADC i PWM do max 16bitów. Aktualizacja ramki i funkcji pinów

Aktualizacja 2016.11.20 2300:
Kolejna aktualizacja danych: prędkość przeniesiona na pierwszy bajt, zmiana przesyłania starszych i młodszych bitów danych 16 bitowych - aktualizacja exe

Aktualizacja 2016.11.21 1200
Były drobne błędy we wcześniejszym exe. Teraz wszystko już działa jak powinno.  Zaznacze pogrubieniem to, co już działa

Aktualizacja 2016.11.21 1800
Aktualizacja exe - mierniki działają w odpowiedniej kolejności.

Aktualizacja 2016.11.23 2030

Właśnie napisałem w jaki sposób można się połączyć z komputerem za pomocą mikrokontrolera. Dodatkowo wrzuciłem prosty program do testowania transmisji bez potrzeby włączania MaSzyny. Teraz każda nowa aktualizacja będzie pogrubiona dla większej czytelności. Zapraszam do dyskusji poniżej!

Aktualizacja 2016.12.16 1645
Dodany wpis mwdinputenable do pliku eu07.ini


Aktualizacja 2017.05.13 1540
Udostępnienie pliku MWD-dokumentacja.xls - dokumentacja interfejsu.


Kilka słów jak przyłączyć się do projektu jako tester i zbudować własny pulpit (lub choćby sam kontroler):
Co będzie potrzebne? Podstawowa znajomość mikrokontrolerów (obsługa UART) i przejściówka UART-USB :) Przejściówkę można kupić na np allegro już za 7 zł (bez przesyłki). Podłączając przejściówkę należy zacząć od masy (GND) - masę mikrokontrolera podłączyć z masą przejściówki, TXD do RXD oraz RXD do TXD - linie te odpowiadają za przesyłanie danych między komputerem (za pośrednictwem przejściówki) a mikrokontrolerem.

Na wstępie napiszę, że program został tak napisany, że nie blokuje klawiatury. Jedyne co na razie może nam blokować klawiaturę to krany hamulców ale je możemy wyłączyć w pliku eu07.ini zmieniając tekst obok mwdbreakenable z yes na 0 lub no ;)

Pierwszym krokiem jest zaprogramowanie mikrokontrolera w taki sposób, żeby odbierał dokładnie tyle danych ile znajduje się w ramce oraz odsyłał dokładnie tyle samo danych (mogą być zera). Dane najprościej zapisywać do tablicy 8-bitowej ( zmienna 8-bitowa - 1 Bajt). Tablica powinna mieć wymiar przynajmniej taki ile mamy bajtów danych - 31 bajty (na dzisiejszy dzień - 23.11.2016). Jeżeli będziemy chcieli także wysyłać dane zwrotne to przyda nam się druga tablica przynajmniej 17 bajtowa. Ze względu na większą prostotę (moim zdaniem) odbierania danych na temat lampek, manometrów i innych wskaźników skupię się na odbieraniu danych.
Jeżeli piszemy w C to najprościej zadeklarować i zainicjalizować je np w taki sposób:
uint8_t TablicaZPC[31] = {0}, TablicaDoPC[17] = {0};Zmienne te dobrze jest umieścić poza ciałem głównej funkcji jako zmienne globalne (warto napisać przed deklaracją słowo "volatile").

Dla bardziej wtajemniczonych "kodopisarzy" polecam użycie struktur.
Jak widać, od razu zeruje ich wartości żeby nie było problemów np: przesyłamy cały czas jakąś przypadkową wartość i symulator trzyma nam wciśnięty przycisk kasowania CA/SHP.
W jaki sposób odebrać dane? Jestem przyzwyczajony do ATMEG więc na nich oprę swój "poradnik":
Najprościej napisać nasz program w taki sposób aby działał sekwencyjnie. Oznacza to, że program będzie wykonywał zadanie po zadaniu bez skoków "w bok" np do przerwań.  Podstawową sprawą w każdym programie jest inicjalizacja zmiennych i konfigurowanie peryferiów układu (wejścia/wyjścia, timery, PWM-y itd...). Tym jednak zajmiemy się na końcu, a zaczniemy od sprawdzenia co w ogóle będzie nam potrzebne przez napisanie części kodu.
Kolejną ważną rzeczą w programie jest pętla nieskończona. W niej umieścimy odbieranie danych, wysyłanie danych, odczyt wartości z klawiszy i przetwornika ADC oraz sterowanie wyjściami.
Tak jak wspomniałem wcześniej, nasz kod będzie wykonywał się sekwencyjnie. Pierwszym krokiem jest odbiór i wysyłanie danych. Musimy pamiętać, że naszym obowiązkiem jest odebrać WSZYSTKIE bajty z komputera i wysłać WSZYSTKIE bajty, na które komputer będzie czekał. To czy wykorzystamy wszystkie dane, które odebraliśmy lub uzupełnimy wszystkie bajty, które powędrują do komputera nie jest już istotne. W zależności od mikrokontrolera nasz kod może się nieco różnić, np atmega32 ma tylko jeden układ USART (korzystamy z jego wersji asynchronicznej - UART) ale np już inna atmega może mieć dwa! Wtedy rejestry, których będziemy używać będą nazywać się inaczej, mianowicie będą miały swoje numerki (np UDR-atmega32 i UDR0-atmega168). W nocie (datasheet) układu znajdziemy przykładowe kody, które możemy wykorzystać w naszym programie:
- inicjalizacja UART - wykonujemy tylko RAZ przed wejściem w pętlę główną programu
- odbiór bajtu danych
- nadawanie bajtu danych

Na razie skupmy się nad komunikacją: musimy odebrać 31 bajtów i od razu wysłać 17. Możemy to zrobić w następujący sposób:
for(i=0; i<31; i++)     //pętla umożliwiająca wysłanie 31 bajtów danych
{
   while (!(UCSRA & (1<<RXC));   //czekamy na odebranie bajtu danych
   TablicaZPC[i] = UDR;  //zapis danych do naszej tablicy
   if (i < 17)   //zabezpiecznie, żeby nie wysłać za dużo danych do komputera
   {
        while (!(UCSRA & (1<<UDRE)));   //sprawczanie czy już wysłano wcześniejsze dane (czekanie na wysłanie danych)
        UDR = TablicaDoPC[i];     // wysłanie danych do komputera
   }
}
W taki oto prosty sposób wysłaliśmy i odebraliśmy wszystkie niezbędne dane :)
Teraz zostaje nam tylko przetworzyć te dane według wiedzy wyżej (czyli który bit, którego bajtu odpowiada) i wyrzucenie tych informacji np na wyjście mikrokontrolera.
Teraz wracamy do kodu przed główną pętlą (nieskończoną - while(1)) i inicjalizujemy UART zgodnie z wytycznymi na początku wątku.
Teraz poniżej możemy wykonywać resztę czynności takich jak odczyt przycisków i zapisywanie ich do tablicy lub czytać z tablicy i "świecić" odpowiednimi wyjściami mikrokontrolera. [/s]
Tytuł: Odp: MaSzyna z portem COM
Wiadomość wysłana przez: Mariusz1970 w 24 Listopada 2016, 00:21:51
Fajnie, ale zasadnicze pytanie, po co to opisujesz? Na moje, przetrzesz szlak w trudzie i znoju :), wystawiasz na forum: gotowy wsad do uK, lacznie ze zrodlem, dokumentacje i czesc piesni :)
Tytuł: Odp: MaSzyna z portem COM
Wiadomość wysłana przez: EU40 w 24 Listopada 2016, 07:22:55
To może ja, jako pierwszy laik. :)
A więc zacznijmy od punktu nr 2, tj. zakup mikrokontrolera.
Włożyć do USB każdy potrafi, ale teraz pytanie: pod co go podłączyć na wyjściu?
Pod płytkę Arduino?
Tytuł: Odp: MaSzyna z portem COM
Wiadomość wysłana przez: maciek001 w 24 Listopada 2016, 11:02:35
Fajnie, ale zasadnicze pytanie, po co to opisujesz? Na moje, przetrzesz szlak w trudzie i znoju :), wystawiasz na forum: gotowy wsad do uK, lacznie ze zrodlem, dokumentacje i czesc piesni :)
A może by tak samemu coś zrobić a nie tylko liczyć, że ktoś zrobi wszystko za nas? Chcę wskazać drogę, szlak już przetarty ;)
Przy okazji może ktoś ma jakąś sugestię, co by się jeszcze przydało, co zmienić itd :)

Włożyć do USB każdy potrafi, ale teraz pytanie: pod co go podłączyć na wyjściu?
Pod płytkę Arduino?
Można użyć płytki arduino bo z tego co wiem to Uno ma USB i FT232 na wejściu. Niestety w programowaniu w arduino nic nie pomogę... w C już bardziej, bo można arduino programować także w C ;)

  Dodano: 27 Listopada 2016, 22:13:44
To jest coś w rodzaju instrukcji jak skorzystać z tego co zostało zrobione. Opisałem to w miarę prosty sposób mam nadzieję ;)

Wróćmy do wątku: był pomysł, żeby zwiększyć prędkość z 8 bitów do 16 bitów, żeby można było przesłać prędkości większe niż 255km/h. Czy ktoś może się odnieść do tego w jakiś sposób? Pytanie też, czy ilość danych przesyłanych jest wystarczająca? Oraz taki pomysł z ostatniej chwili: można jeszcze teoretycznie robić zestawy różnych konfiguracji pod różne typy lokomotyw. To teoretycznie nie jest potrzebne bo można sobie piny odpowiednio przypisać w mikrokontrolerze.
Tytuł: Odp: MaSzyna z portem COM
Wiadomość wysłana przez: firleju w 27 Listopada 2016, 23:19:59
Prędkość na 16bit-ach: mnie obojętnie, ale nie wiem czy ktoś będzie robił pulpit z comem żeby jeździć czymś szybszym niż Pendolino.
Brakuje w opisie rozdzielczości, w jakich podajesz na wyjście dane zmienne, szczególnie dotyczy to hamulców.
Tytuł: Odp: MaSzyna z portem COM
Wiadomość wysłana przez: maciek001 w 28 Listopada 2016, 09:42:42
Co do rozdzielczości to dane mogą być max 16-bitowe. W pliku eu07.ini konfigurujemy odpowiednimi wpisami - jest podane w opisie (dopisałem "rozdzielczość" bo rzeczywiście mało jasno było to zaznaczone).
Tytuł: Odp: MaSzyna z portem COM
Wiadomość wysłana przez: firleju w 28 Listopada 2016, 22:36:30
Troszeczkę niejasno napisałem. Zakres maksymalny jest ok, nie wiem czemu napisałem rozdzielczość kiedy chodziło mi o jednostki miary. Czyli maksymalny zakres ok, jeszcze jednostki w jakich wystawiasz dane. Rozdzielczość i zakres wynika z najmniejszej jednostki jaką możesz ustawić.
Tytuł: Odp: MaSzyna z portem COM
Wiadomość wysłana przez: maciek001 w 05 Grudnia 2016, 17:45:42
Prędkość w km/h bez cyfr po przecinku, zakresy analogowe procentowo, gdzie max to 2^rozdzielczości - 1 ;) jak np masz ciśnienie to tak jak na mierniku, jeżeli amperomierze to tak samo - podajesz maksymalną wartość jaką może pokazywać. Program przelicza wszystko na procenty i zakres bierze z rozdzielczości danego przetwornika, gdzie rozdzielczość podaje się przez maksymalną (i minimalną czasem też) wartość liczbową jaką można odczytać na danym kanale. Udostępniłem program, który pokazuje pozycje np kranu hamulca i podaje wartość jako liczbę ;)

Aktualizacja:
Dokonałem kilku zmian w programie i opisie - między innymi wpisy do eu07.ini
W ciągu kilku dni powinienem dokonać aktualizacji całego tekstu.

Poprawnie działają już hamulce - kalibracja polega na wpisaniu wartości liczbowej (min i max) sczytanej z przetwornika ADC. Zrobienie tego jest bardzo proste:
1. Włączamy debuglog
2. włączamy mwddebugenable
3. dla mwddebugmode wpisujemy 1
Dzięki temu na bieżąco będzie nam się wyświetlać wartość obydwóch kranów hamulców.
4. Zapisujemy wartości dla skrajnych pozycji - dla pozycji odcięcia mamy wartość minimalną, na hamowania awaryjnego mamy maksymalną. Jeżeli nie to należy zamienić polaryzację potencjometru.
5. wpisujemy odczytane wartości do pliku eu07.ini:
- dla hamulca zespolonego: mwdmainbreakconfig 0 1000 (wartości 0 i 1000 są wartościami przykładowymi)
- dla hamulca pomocniczego: mwdlocbreakconfig 0 999
KONFIGURACJA ZAKOŃCZONA
Tytuł: Odp: MaSzyna z portem COM
Wiadomość wysłana przez: miko22 w 14 Lutego 2017, 21:04:37
Udało mi się przekonwertować nadawanie i odbiór według Twojego przykładu z pierwszego postu na język Arduino (bajty w tablicach liczone są od 0):
volatile uint8_t TablicaZPC[31] = {0};
volatile uint8_t TablicaDoPC[17] = {0};
void setup() {
  pinMode(13, OUTPUT);     //ustawienie pinu 13 (wbudowana w Arduino dioda LED) jako wyjście cyfrowe
  digitalWrite(13, LOW);     //ustawienie stanu niskiego na pinie 13
  Serial.begin(500000);     //nawiązanie komunikacji z prędkością 500000b/s
  while(!Serial){};     //czekanie do nawiązania komunikacji z komputerem
}

void loop() {
  for(byte i=0; i<31; i++){     //pętla umożliwiająca wysłanie 31 bajtów danych
   while(!Serial.available());     //czekamy na odebranie bajtu danych
   TablicaZPC[i] = Serial.read();     //zapis danych do naszej tablicy
   if(i < 17){   //zabezpiecznie, żeby nie wysłać za dużo danych do komputera
    Serial.flush();     //sprawczanie czy już wysłano wcześniejsze dane (czekanie na wysłanie danych)
    Serial.print(TablicaDoPC[i]);     // wysłanie danych do komputera
   }
  }

  digitalWrite(13, (TablicaZPC[4] & (1<<1)));     //ustawienie wyjścia 13 (dioda LED) według stanu bitu 2 w bajcie 4 w TablizaZPC
}

Zacząłem od sprawdzania poszczególnych kontrolek i tak np. w ET41 zamiast kontrolki jazdy na oporach jest kontrolka sygnalizacji wentylatorów oporów, a w ET22 jak i w EU07 303E nie działa to w ogóle. Kontrolek CA, SHP, styczników liniowych i WSa jak na razie nie udało mi się uruchomić ani w ET41, ani w ET22. Do tego mimo wpisu "mwdbreakenable no", nie daje mi się z klawiatury sterować kran hamulca pomocniczego (zasadniczy działa).
Tytuł: Odp: MaSzyna z portem COM
Wiadomość wysłana przez: maciek001 w 14 Lutego 2017, 22:29:31
Masz tego aktualnego exe-ca? Sprawdzałem przedtem oby dwa i działało ;) Aktualnie są jakieś kończące się prace z przenosinami do Cpp i nie wiem czy nie będzie przerwa na razie.
Tytuł: Odp: MaSzyna z portem COM
Wiadomość wysłana przez: miko22 w 14 Lutego 2017, 23:07:01
Tak, mam tego z ostatniej aktualizacji. Natomiast za pomocą dołączonego programu testowego doszedłem do tego, że aby odczytać bit 2 bajtu 5, muszę mieć w kodzie wpisane odczytywanie bajtu 8. Podobnie z pozostałymi bajtami - przesunięcie o 3 numerki. Mimo tej poprawki i możliwości ustawienia stanu wyjścia z programu odpowiednim bitem, kontrolka jazdy na oporach nadal nie reaguje z poziomu MaSzyny. Natomiast jeśli dodam do kodu wysyłanie jednego bitu, to wysyła ten bit "impulsowo" (czyli najpierw 1 i od razu 0) na wszystkie bajty:
if(digitalRead(2)==LOW){     //jeśli wejście na pinie 2 ma stan niski (zwarte przycikiem do masy)
    TablicaDoPC[3] = TablicaDoPC[3] | (1<<1);     //ustawienie bitu 2 w bajcie 3 w TablicaDoPC na 1
  }
  else{
    TablicaDoPC[3] = TablicaDoPC[3] & !(1<<1);     //w przeciwnym przypadku na 0
  }

Edit: Dodam jeszcze tylko, że kiedy sprawdzam działanie komunikacji na arduinowym monitorze portu szeregowego, to wszystko działa poprawnie. Jedynie zamiast "Serial.write()" muszę używać wtedy "Serial.print()", bo inaczej nic mi nie wyświetla w oknie odbioru danych, ale z kolei przy "Serial.print()" w Twoim programie jest już całkowita dyskoteka - odczytuje chwilowe przesłanie dosłownie każdego bitu po kolei (mimo ustawionych zer w tablicy "DoPC").
Natknąłem się natomiast na coś takiego, jak Arduino DUE. Jego klon kosztuje 1/3 tego co PoKeys (oryginał 169zł), a gdyby zadziałało z MaSzyną, to dałoby znacznie więcej możliwości od PoKeys. Środowisko programowania jest to samo, ale w odróżnieniu od innych Arduin, to oparte jest nie na ATmedze 16MHz, ale na procesorze ARM 84MHz. Posiada 54 cyfrowe wejścia/wyjścia, w tym 12 kanałów PWM, 4 osobne interfejsy UART, jeden I2C, do tego osobno drugi interfejs I2C, 12 wejść analogowych i 2 wyjścia analogowe. Dla "nieznających się", łącznie dwa interfejsy I2C (piny SDA i SCL) pozwalają m.in. zwiększyć ilość cyfrowych wejść/wyjść za pomocą dopinanych układów scalonych o przynajmniej 384 i więcej, jeśli tylko znajdzie się układy z innymi adresami! Do tego pełna swoboda przypisywania sobie poszczególnych wejść/wyjść według własnego uznania (program pisze się samemu - na forum można by wstawić też jakiegoś gotowca dla mniej wymagających) i możliwość dodania innych funkcji w tym samym urządzeniu (obsługa mierników NN, symulowanie efektów świetlnych przy załączaniu/wyłączaniu się sprężarek i co kto sobie jeszcze wymyśli). Więcej szczegółów technicznych dot. płytki na stronie polskiego dystrybutora (https://botland.com.pl/arduino-moduly-glowne/1214-arduino-due-arm-cortex.html).
Tytuł: Odp: MaSzyna z portem COM
Wiadomość wysłana przez: maciek001 w 18 Lutego 2017, 21:56:26
I2C pozwala zaadresować max 128 urządzenia o różnych adresach (od 0 do 127). Jeżeli chcemy zwiększyć ilość elementów na magistrali musimy używać dodatkowych scalaków (np multipleksery I2C). Do zwiększenia ilości wejść/wyjść można wykorzystać SPI i bufory SIPO i PISO. Prędkość mikrokontrolera nie ma większego znaczenia ;)
Funkcja Serial.Printf() najprawdopodobniej posługuje się znakami ASCII, a Serial.Out() wyrzuca bit po bicie tak jak jest w buforze (tablica, struktura).

Co do samego kodu: będę testował dopiero w tygodniu na symulatorze bo nie mam na tyle sprzętu w mieszkaniu.
Tytuł: Odp: MaSzyna z portem COM
Wiadomość wysłana przez: maciek001 w 13 Maja 2017, 15:24:20
Drodzy czytelnicy i udzielający się w tym wątku.
Postanowiłem zrobić dokumentację w arkuszu kalkulacyjnym znajdującym się TUTAJ (http://pliki.pwsztar.edu.pl/~m_witek/maszyna/)
Plik zawiera opis:
Tytuł: Odp: MaSzyna z portem COM
Wiadomość wysłana przez: Łakasabasz w 09 Sierpnia 2017, 15:38:47
Według mnie to uK powinien pierwszy rozpocząć komunikację przez wysłanie pierwszego bajtu o wartości np. 0xFF (255). To by otworzyło drogę do Plug & Play.
Przy komunikacji liczą się pojedyncze bajty czyli liczby całkowite, więc wyrzuciłbym wpisy w pliku eu07.ini dla liczb rzeczywistych.
Trzecia rzecz też odnośnie komunikacji, idźmy w Full Duplex czyli transmisję w dwie strony jednocześnie, a nie jak teraz Half Duplex. Nie potrzeba wątków, ale wystarczy wysyłać po bajcie sterującym od uK do maszyny, a maszyna rozpocznie wysyłanie ramki do uK. Arduino ma bufor danych więc nie ma z tym problemów, odczyta to co zostało wysłane kiedy będzie miało czas. (uK - mikrokontroler)

P.S. Includy dla arduino na https://git.eu07.pl/Lakasabasz/Arduino-Maszyna-Port (https://git.eu07.pl/Lakasabasz/Arduino-Maszyna-Port)
Tytuł: Odp: MaSzyna z portem COM
Wiadomość wysłana przez: miko22 w 10 Sierpnia 2017, 04:16:31
Według mnie to uK powinien pierwszy rozpocząć komunikację przez wysłanie pierwszego bajtu o wartości np. 0xFF (255). To by otworzyło drogę do Plug & Play.
Moim zdaniem lepiej jednak, kiedy to MaSzyna rozpoczyna komunikację z tego względu, że pulpit (mikrokontroler) jest z reguły połączony przez USB z komputerem przed uruchomieniem się exe MaSzyny i może sobie spokojnie czekać, aż wczyta się jakiś scenariusz i exe zgłosi gotowość do współpracy przez wysłanie pierwszej informacji. W sytuacji odwrotnej potrzebny byłby jakiś dodatkowy przycisk, który wciskałoby się po stwierdzeniu, że scenariusz już się wczytał i uK może nawiązać komunikację z exe.

A czy działa Ci może komunikacja z Arduino na obecnych exe C++ od @tmj? Bo mi od exe++170330 nie działa odbieranie danych z uK, choć @tmj nie wprowadzał w tym czasie żadnych celowych zmian w tym zakresie. Poniżej kod, którego używam w UNO do testów nie zmieniając go i do exe++170330 wszystko działa, a od niego włącznie już nie odbiera informacji z uK...
volatile uint8_t TablicaZPC[31] = {0};
volatile uint8_t TablicaDoPC[17] = {0};
int cleanbuf;
void setup() {
  pinMode(13, OUTPUT);     //ustawienie pinu 13 (wbudowana w Arduino dioda LED) jako wyjście cyfrowe
  digitalWrite(13, LOW);     //ustawienie stanu niskiego na pinie 13
  pinMode(2, INPUT_PULLUP);     //ustawienie pinu 2 jako wejście z podciągnięciem do zasilania
  Serial.begin(500000);     //nawiązanie komunikacji z prędkością 500000b/s
  Serial.setTimeout(10);
  while(!Serial){};     //czekanie do nawiązania komunikacji z komputerem
}

void loop() {
  //while(Serial.available()){     //jeśli jakieś dane są w buforze
  for(byte i=0; i<31; i++){     //pętla umożliwiająca wysłanie 31 bajtów danych
   while(!Serial.available()){};     //czekamy na odebranie bajtu danych
   TablicaZPC[i] = Serial.read();     //zapis danych do naszej tablicy
   if(i < 16){   //zabezpiecznie, żeby nie wysłać za dużo danych do komputera
    Serial.flush();     //sprawczanie czy już wysłano wcześniejsze dane (czekanie na wysłanie danych)
    Serial.write(TablicaDoPC[i]);     // wysłanie danych do komputera
   }
  }
  //}

  digitalWrite(13, (bitRead(TablicaZPC[6], 1)));     //ustawienie wyjścia 13 według stanu bitu 1 w bajcie 4 w TablicaZPC (kontrolka jazdy na oporach)
  if(!(digitalRead(2))){     //jeśli wejście na pinie 2 ma stan niski (zwarte przycikiem do masy)
    bitWrite(TablicaDoPC[3], 0, 1);     //ustawienie bitu 1 w bajcie 3 w TablicaDoPC na 1 ( zał. baterii)
  }
  else{
    bitWrite(TablicaDoPC[3], 0, 0);     //w przeciwnym przypadku na 0
  }

  delay(10);
 
}
Tytuł: Odp: MaSzyna z portem COM
Wiadomość wysłana przez: Łakasabasz w 10 Sierpnia 2017, 12:59:24
Mój projekt tworzę tak, że pierwsze inicjujesz klasę podając w konstruktorze bitrate, a potem jeżeli chcesz używać innych pinów do UART to rx, tx, jeśli nie to zostaje domyślnie. Gdy zainicjujesz klasę wywołujesz funkcję read(), a ona odczytuje dane z maszyny i porządkuje je do odpowiednich zmiennych. Odczytujesz wartości zmiennych przez getXX(). Więc ten sposób lepiej żeby uK rozpoczynał komunikację.
Nie testowałem biblioteki na "żywca", nie jest jeszcze skończona. Zrobiłem obsługę odczytu danych (funkcja read() i getXX()), ale jeszcze nie ma obsługi wysyłki danych (send())
Tytuł: Odp: MaSzyna z portem COM
Wiadomość wysłana przez: Łakasabasz w 14 Sierpnia 2017, 19:07:12
Dotarłem do momentu gdzie w dokumentacji są luki...
Chodzi o to gdzie mają być dane impulsowe, a gdzie ma być stała wysyłka danych. Potrzebuje informacji o przetwornicy, sprężarki, ogrzewania, pantografy, przyciemnienie reflektorów, bateria i światła. Bez tego nie ruszę, bo mogę dla ułatwienia użyć słowa static i to zabezpieczy przed niechcianym wyłączeniu np. przetwornicy.
75% ukończenia projektu. Potem wyślę na git zip i opis jak używać biblioteki.
Tytuł: Odp: MaSzyna z portem COM
Wiadomość wysłana przez: miko22 w 14 Sierpnia 2017, 20:29:18
Czyli jednym słowem hebelki? Nie wiem, na jak bardzo robisz "gotowca" pod względem obsługi wejść/wyjść w Arduino, ale jeśli o to chodzi, to prawdziwe hebelki (i włącznik baterii też) mają styki bistabilne, czyli po załączeniu zwierają np. dany pin Arduino do masy przez cały czas, a z kolei exe potrzebuje (przynajmniej z klawiatury) tylko impulsu na załączenie/wyłączenie danego elementu obsługiwanego hebelkiem.
Tytuł: Odp: MaSzyna z portem COM
Wiadomość wysłana przez: Łakasabasz w 15 Sierpnia 2017, 19:12:39
Klasa będzie w pełni obsługiwać komunikację. Jedyne funkcje które powinieneś używać to .read() .send() i wszelkiego rodzaju .setXX(). Potem dam rekomendację, aby nadpisać funkcję set() tak aby obsługiwała tylko to co masz na pulpicie. Co by ci tu jeszcze powiedzieć? Nie będziesz musiał się babrać w tablicach i wyszukiwać odpowiedniego bitu danych.

Edit: I tak nie ruszę bez danych standardu komunikacji od maciek001. Proponuję nazwać ten standard MaszCOM ver 1 :D
Tytuł: Odp: MaSzyna z portem COM
Wiadomość wysłana przez: miko22 w 15 Sierpnia 2017, 19:22:19
I będzie to wprowadzone do gałęzi rozwojowej @tmj, żeby można było korzystać ze wszystkich nowych możliwości exe C++? Jak tak, to świetnie :-D Bo teraz próbuję coś sklecić z Arduino DUE i PoKeys jednocześnie, ale najlepsze exe, jakie mam do dyspozycji z działającą komunikacją jest z 26 lutego...

EDIT: Aha, jak byś mógł, to dodaj też od razu możliwość zmiany prędkości transmisji jak u maćka001, bo np. takie Arduino DUE ma logikę na 3,3V i przy domyślnych 500000bd/s robią się straszne zakłócenia i musiałem obniżyć, puki co na standardowe dla Arduino 9600bd/s.
Tytuł: Odp: MaSzyna z portem COM
Wiadomość wysłana przez: Łakasabasz w 16 Sierpnia 2017, 13:04:46
Nie, to będzie biblioteka na arduino. Maciek tworzy standard i wprowadza obsługę od exe, a ja stoję po drugiej stronie i na podstawie dokumentacji standardu przygotowuję bibliotekę do arduino (i innych uK obsługujących arduino ide), która zajmuje się całą komunikacją. U nie ma "domyślnej prędkości", przy konstruktorze klasy z automatu musisz podać prędkość, albo kompilator cię nie puści.

https://git.eu07.pl/Lakasabasz/Arduino-Maszyna-Port (https://git.eu07.pl/Lakasabasz/Arduino-Maszyna-Port)

Tam masz to co udało mi się napisać. To dwie klasy, ale postaram się uprościć obsługę drugiej do maksimum, tak abyś musiał używać jednej, głównej. Jutro jadę na wczasy więc nie będę nic commitował przez 2 tyg, ale nadal czekam na uwagi w sprawie kodu i oczywiście czekam na Maćka aby podał mi hebelki.
Tytuł: Odp: MaSzyna z portem COM
Wiadomość wysłana przez: miko22 w 16 Sierpnia 2017, 14:13:03
Ok, przetestuję w przyszłym tygodniu, bo po jutrze jadę z pulpitem do Chabówki ;) A ze standardową prędkością przesyłu danych w Arduino chodziło mi o to, że 9600bd/s to najczęściej spotykana prędkość w przeróżnych przykładach i stąd określiłem ją jako standardową.
Tytuł: Odp: MaSzyna z portem COM
Wiadomość wysłana przez: Łakasabasz w 29 Września 2017, 17:00:12
Projekt dead?
Tytuł: Odp: MaSzyna z portem COM
Wiadomość wysłana przez: firleju w 29 Września 2017, 18:16:56
Cały czas lecą poprawki na gicie. Czemu projekt ma być dead?
Tytuł: Odp: MaSzyna z portem COM
Wiadomość wysłana przez: Łakasabasz w 30 Września 2017, 13:29:29
Poczytaj poprzednie posty. Stanęło na tym że w dokumentacji brakuje paru szczegółów co uniemożliwia dalszą pracę, a autora niema od wakacji więc...
No chyba że ktoś aktywny przejmie projekt.
Tytuł: Odp: MaSzyna z portem COM
Wiadomość wysłana przez: maciek001 w 30 Września 2017, 13:39:02
Sorki! Żyję :) Prace trwają z pomocą milek7. Aktualnie podstawowe rzeczy w ET22 (bo na tym mam jak testować) działają. Podstawowe mam na myśli pulpit (bez przełącznika hamowania). Najnowsze exe dostępne pod adresem: https://ci.appveyor.com/api/buildjobs/yoh3vc3f007wb9u9/artifacts/builds%2Fbuild_win64%2FRelWithDebInfo%2Feu07%2B%2Bng.exe

Wczoraj pulpit jeździł na Małopolskiej Nocy Naukowców na PWSZ w Tarnowie.

Co zostało przerobione:
- normalne sterowanie (nie ma już emulacji klawiatury)
- wykorzystana biblioteka opensource zamiast windowsowskiej - czy będzie działać na innych systemach? chyba tak.
- zmiana w parametrach z pliku eu07.ini (update już niedługo)

//uart <nazwa portu> <nie zmieniać> <częstość wysyłania danych (czas)>
uart COM3 500000 0.1 0.05

//uarttune <ham. zespolony min> <max> <ham. dodatkowy min> <max> <ciśnienie max w zbiorniku gł.> <max wartość dla PWM> (to samo dla przewodu gł i cylindrów hamulcowych)
uarttune 46.0 943.0 175.0 874.0 0.9 1023.0 0.7 1023.0 0.5 1023.0 4000.0 1023.0 800.0 1023.0

//uartfeature <nastawnik> <bocznik> <hamulec> <hamulec lokomotywy>
uartfeature no no yes yes

//uartdebug <wyświetlanie danych debugowania w konsoli>
uartdebug no
Tytuł: Odp: MaSzyna z portem COM
Wiadomość wysłana przez: Łakasabasz w 04 Października 2017, 17:32:25
maciek, wracając do poprzedniego problemu: potrzebuję odpowiedzi na pewne pytania

Dotarłem do momentu gdzie w dokumentacji są luki...
Chodzi o to gdzie mają być dane impulsowe, a gdzie ma być stała wysyłka danych. Potrzebuje informacji o przetwornicy, sprężarki, ogrzewania, pantografy, przyciemnienie reflektorów, bateria i światła. Bez tego nie ruszę, bo mogę dla ułatwienia użyć słowa static i to zabezpieczy przed niechcianym wyłączeniu np. przetwornicy.

Mógłbyś dodać te informacje do dokumentacji? Byłbym bardzo wdzięczny
Tytuł: Odp: MaSzyna z portem COM
Wiadomość wysłana przez: Milek7 w 04 Października 2017, 17:46:14
Nie rozumiem pytania. Pod tym względem dokumentacja jest chyba poprawna.
Można zobaczyć do implementacji w obecnym exe, jest dosyć bardziej czytelna od starej.
https://github.com/Milek7/maszyna/blob/lua/uart.h
https://github.com/Milek7/maszyna/blob/lua/uart.cpp
Tytuł: Odp: MaSzyna z portem COM
Wiadomość wysłana przez: Łakasabasz w 05 Października 2017, 10:05:41
Szanowna administracjo, proszę o czytanie poprzednich postów, ale jeżeli tak bardzo nie chcecie to przypomnę o co chodzi:
maciek001 implementuje mechanizm komunikacji przez port COM w maszynie i prowadzi dokumentację protokołu komunikacji. Ja aktualnie czekam, aż maciek uzupełni pewne fragmenty swojej dokumentacji, abym mógł dokończyć bibliotekę. Dokumentacja nie precyzuje "hebelków", które w maszynie są impulsowe, a w prawdziwym pulpicie bistabilne. Ja nie wiem czy przy każdym wysyłaniu aktualizacji wysyłać sygnał wysoki np. dla pantografów, czy tylko wystarczy raz, a potem drugi, aby je opuścić.
Kod w implementacji na git może być zmieniany z godziny na godzinę, a zmiany w dokumentacji będą wymuszały zmianę wersji całego protokołu komunikacji, przez co ja będę mógł pracować w swoim tempie dostosowując się do aktualnej dokumentacji, a implementacja na git w swoim.
Tytuł: Odp: MaSzyna z portem COM
Wiadomość wysłana przez: Milek7 w 05 Października 2017, 10:28:12
Działanie hebelków odpowiada rzeczywistemu stanu przełącznika na pulpicie, zależnie od tego jakiego jest rodzaju w symulowanej lokomotywie.
Tytuł: Odp: MaSzyna z portem COM
Wiadomość wysłana przez: tmj w 05 Października 2017, 13:42:06
Dokumentacja nie precyzuje "hebelków", które w maszynie są impulsowe, a w prawdziwym pulpicie bistabilne. Ja nie wiem czy przy każdym wysyłaniu aktualizacji wysyłać sygnał wysoki np. dla pantografów, czy tylko wystarczy raz, a potem drugi, aby je opuścić.
Typ przelacznikow po stronie exe zalezy od konfiguracji kabiny danego pojazdu. Jaki by on nie byl, instrukcje odbierane przez exe to z reguly "zmiana stanu urzadzenia X" wiec nie ma potrzeby wysylac polecen bez przerwy, a jedynie gdy zachodzi potrzeba przelaczenia urzadzenia z jednego polozenia w drugi.
Tytuł: Odp: MaSzyna z portem COM
Wiadomość wysłana przez: Milek7 w 05 Października 2017, 13:48:15
"zmiana stanu urządzenia" jest zawsze przy sterowaniu z klawiatury, ale w przypadku interfejsu UART sterowane jest rzeczywiste położenie przełącznika. (czyli przy hebelku bistabilnym żeby podnieść pantografy trzeba trzymać bit cały czas, w przypadku impulsowego tylko w momencie załączenia).
Tytuł: Odp: MaSzyna z portem COM
Wiadomość wysłana przez: tmj w 05 Października 2017, 14:19:56
No chodzilo mi o przesylanie instrukcji z modulu obslugi pulpitu do reszty exe, nie o wymiane miedzy modulem i fizycznym pulpitem. Z pytania dosc ciezko wywnioskowac o ktore faktycznie chodzi.
Tytuł: Odp: MaSzyna z portem COM
Wiadomość wysłana przez: adi-edu w 04 Lipca 2018, 08:44:06
@Łakasabasz Witam wszystkich, czy biblioteka komunikacyjna dla arduino powstała? Czy autor dodał już rekomendację do ustawiania odpowiedniego pulpitu? I gdzie można znaleźć tą bibliotekę?

Dzięki za odp.
Tytuł: Odp: MaSzyna z portem COM
Wiadomość wysłana przez: Łakasabasz w 08 Lipca 2018, 13:44:20
@adi-edu hmm biblioteka powstała do połowy czyli obsługuje poprawne odbieranie stanu z symulatora, niestety obsługi wysyłania danych do symulatora nie udało mi się napisać. Biblioteka nie była testowana, ale w związku z zainteresowaniem tym tematem podejmę pracę nad odświeżeniem kodu.

@maciek001 mógłbyś mi wysłać aktualną dokumentację komunikacji?

@Administrator/Deweloper czy jest dostępna jakaś platforma do kontroli kodu czy mam korzystać z github? git.eu07.pl nie działa, może macie jakieś plany z tym?
Tytuł: Odp: MaSzyna z portem COM
Wiadomość wysłana przez: Milek7 w 08 Lipca 2018, 13:47:34
Nie ma, używaj githuba.
Tytuł: Odp: MaSzyna z portem COM
Wiadomość wysłana przez: maciek001 w 09 Lipca 2018, 09:49:25
Proponowałbym wyczyścić ten temat i napiszę wszystko jeszcze raz od nowa. Co o tym myślicie?
Tytuł: Odp: MaSzyna z portem COM
Wiadomość wysłana przez: adi-edu w 10 Lipca 2018, 14:50:28
Jestem za, bo z punktu widzenia nowicjusza w temacie jest trochę namieszane ;)

P.S. PANOWIE - wielkie dzięki za kawał dobrej roboty!!! :D
Tytuł: Odp: MaSzyna z portem COM
Wiadomość wysłana przez: maciek001 w 12 Lipca 2018, 09:56:20
Wracam do domu 6.08.br. i będę skrobał całość jeszcze raz. W pierwszym poście zrobię edit jak się da i napiszę jeszcze raz wszystko przejrzyście.
Tytuł: Odp: MaSzyna z portem COM
Wiadomość wysłana przez: Łakasabasz w 12 Lipca 2018, 18:38:10
O i dobrze
Tytuł: Odp: MaSzyna z portem COM
Wiadomość wysłana przez: adi-edu w 26 Sierpnia 2018, 19:03:25
I  jak Panowie, ruszyło się coś w temacie?
Dodatkowo pytanie o wasze sposoby na fizyczny nastawnik jazdy np EN57? Tzn. Jak sczytujecie położenie do mikrokontrolera?
Tytuł: Odp: MaSzyna z portem COM
Wiadomość wysłana przez: maciek001 w 27 Sierpnia 2018, 16:06:53
Troszkę cierpliwości. Mam teraz trochę pracy. Kilka osób już pracuje nad kodem dla Arduino. W dziale "Nastawnik/Pulpit do komputera - Wskazówki i gotowe projekty" można poczytać co nieco na ten temat. Postaram się szybko naskrobać coś sensownego choć może być mało jasne ;)
Tytuł: Odp: MaSzyna z portem COM
Wiadomość wysłana przez: skorakora w 09 Grudnia 2018, 19:52:13
Gdzie jest ta dokumentacja ?
Bo nigdzie znaleźć nie mogę
Tytuł: Odp: MaSzyna z portem COM
Wiadomość wysłana przez: deletet w 04 Maja 2019, 23:29:47
Witam, jakieś nowości odnośnie projektu?
Tytuł: Odp: MaSzyna z portem COM
Wiadomość wysłana przez: kuba_mk w 27 Maja 2019, 21:39:14
Witam i przyłączam się do pytania.
Czy w ostatniej wersji symulatora 19.04 komunikacja przez uart odbywa się bez problemów?
I gdzie można znaleźć dokumentację odnośnie wymiany danych?

Bo generalnie plik moich marzeń linkowany w tym wątku - http://pliki.pwsztar.edu.pl/~m_witek/maszyna/ (http://pliki.pwsztar.edu.pl/~m_witek/maszyna/) - jest 503 forbidden
Da się coś z tym zrobić? Albo może ktoś sobie zapisał?
Tytuł: Odp: MaSzyna z portem COM
Wiadomość wysłana przez: kuba_mk w 06 Lipca 2019, 23:00:28
Jestem po testach metodą prób i błędów, zbudowaniu testowego pulpitu i mogę odpowiedzieć sobie na pytania. Może ktoś skorzysta...

Tak, komunikacja przez uart z Maszyną w wersji 19.04 działa.
Generalnie komunikacja odbywa się wg schematu opisanego w pierwszym poście tego wątku (te poskreślane). Poza jednym wyjątkiem - sygnał z nastawnika, bocznika i hamulców trzeba wysyłać o jeden bajt wcześniej.

Pojawiły się za to nowe pytania. Ktoś wie w którym miejscu Maszyna oczekuje od kontrolera pozycji nawrotnika??

No i po raz kolejny apeluję o udostępnienie dokumentacji dot. komunikacji z Maszyną po uart, jeśli ktoś posiada.
Tytuł: Odp: MaSzyna z portem COM
Wiadomość wysłana przez: Milek7 w 06 Lipca 2019, 23:09:41
Cytuj
Pojawiły się za to nowe pytania. Ktoś wie w którym miejscu Maszyna oczekuje od kontrolera pozycji nawrotnika??
Nie ma obecnie wyciągniętego osobnego parametru. Można podpiąć sterowanie pod polecenia reverserincrease i reverserdecrease w konfiguracji eu07_input-uart.ini
Do informacji jak działa komunikacja można popatrzeć do kodu:
https://github.com/eu07/maszyna/blob/master/uart.cpp
https://github.com/eu07/maszyna/blob/master/uart.h
Tytuł: Odp: MaSzyna z portem COM
Wiadomość wysłana przez: kuba_mk w 20 Lipca 2019, 02:09:39
Dzięki za odpowiedź. Nawrotnik ogarnięty.

Ale pojawił się problem z nastawnikiem.
Odczytuję jego pozycję z potencjometru, mapuję z zakresu przetwornika 0-1023 na 0-42 i wysyłam: 
TablicaDoPC[6] = map(analogRead(A1), 0, 1023, 0, 42);Po uruchomieniu symulatora wygląda obiecująco. Koło nastawnika wirtualnej kabiny obraca się razem z moim potencjometrem w całym zakresie. Tylko po uruchomieniu lokomotywy nie ma jazdy. Zadaję pozycję i... nic się nie dzieje. Problem nie występuje po "odłączeniu" nastawnika w pliki eu07.ini i sterowaniu klawiaturą. Moja idea chyba nie jest zła bo identycznie mam zrealizowany bocznik (tylko w zakresie pozycji 0-6) i działa. Problem nie jest sprzętowy, bo zamieniałem je miejscami. Z bocznikiem działa, z nastawnikiem nie. Co ciekawe, kiedy mapuję nastawnik tylko na 6 pozycji, to mogę ruszyć. Co więc robię źle? Jest jakiś warunek, którego nie spełniam, że nie mogę ruszyć? Dlaczego jeśli wysłam liczbę z zakresu 0-6 to jadę, a jeśli z zakresu 0-42 to nie? Nawet jeśli pozycję nastawnika mam zmapowaną dla przedziału 0-42, a potem podaję nawet pierwszą pozycję, to też nie mogę ruszyć.

Niestety nie jestem przesadnie biegły w programowaniu, stąd może głupie pytania...  Ze znalezieniem w kodzie informacji, że coś "idzie" na szóstym bajcie, a nie na siódmym sobie poradziłem. A tego nie mogę ugryźć.
Tytuł: Odp: MaSzyna z portem COM
Wiadomość wysłana przez: kuba_mk w 21 Lipca 2019, 13:05:07
Przypadkiem wpadłem na genialne w swojej prostocie rozwiązanie problemu. Zwyczajnie nie mogą być jednocześnie włączone programy ArduinoIDE i Maszyna, bo się gryzą i powstaje taki oto efekt.  Nie było pytania. Jadę dalej...
Tytuł: Odp: MaSzyna z portem COM
Wiadomość wysłana przez: mac310 w 14 Sierpnia 2019, 16:44:11
Pytanie do EXEkoderów. Chciałbym się przymierzyć do podłączenia rysików Haslera i widziałem, że są zarezerwowane bity na tę okoliczność (bajt 6 bity od 0 do 4). W tej chwili mam wrażenie, że tylko jazda pod prądem (B6b4) oraz hamowanie, ciśnienie w cylindrze hamulcowym (B6b3) są wyprowadzone. Ktoś mógłby to potwierdzić i jeśli tak to jest to czy pozostałe wyjścia można byłoby dopisać? Wg dokumentacji możliwości jest sporo ale ja dla przykładu mam Haslera z 5 dodatkowymi zapisami (1 pojedynczy i 2 podwójne opisane jako 5 ELR). W takiej konfiguracji można zapisać poza jazdą pod prądem/bez prądu oraz hamowanie (to co jest teraz), także przejechanie nad rezonatorem SHP z rozróżnieniem kierunku jazdy oraz kasowanie CA. W zasadzie kasowanie CA mogę ogarnąć poza symulacją, przejechanie nad rezonatorem SHP trochę trudniej ale też raczej mogę choć nie bardzo mogę ustalić, z której kabiny jest jazda bo to jest chyba rejestrowane przy SHP.
Tytuł: Odp: MaSzyna z portem COM
Wiadomość wysłana przez: Milek7 w 14 Sierpnia 2019, 16:53:42
Obecnie jest: ciśnienie w cylindrze, prąd na silnikach, aktywny radiostop i mruganie/buczenie ca/shp.
Tytuł: Odp: MaSzyna z portem COM
Wiadomość wysłana przez: mac310 w 14 Sierpnia 2019, 17:00:24
Hmm to ciekawe, bo ciśnienie i prąd udało mi się zaobserwować ale pozostałych to już nie bardzo. Czy to na wspomnianych bitach bajtu 6 jest czy inaczej?
W sumie to te opcje nie są potrzebne bo kasowanie CA mam skąd wziąć i od biedy najechanie na rezonator (czyli zapalenie lampki SHP) wystarczy. Jedynie problemem jest rozpoznanie z której kabiny jadę, bo tego niestety nie mam jak rozpoznać. Da radę to wyprowadzić na COM, żeby było wiadomo czy jadę z A czy z B?