Skocz do zawartości

piotr96

Użytkownicy
  • Zawartość

    95
  • Rejestracja

  • Ostatnio

  • Wygrane dni

    3

piotr96 zajął 1. miejsce w rankingu.
Data osiągnięcia: 9 maja.

Treści użytkownika piotr96 zdobyły tego dnia najwięcej polubień!

Reputacja

62 Bardzo dobra

O piotr96

  • Ranga
    4/10

Informacje

  • Płeć
    Mężczyzna

Ostatnio na profilu byli

1 120 wyświetleń profilu
  1. Na forum Xilinxa znajduje się temat, w którym omawiany jest identyczny problem. Rozwiązaniem jest ustawienie wartości zmiennej (pola) XILINXD_LICENSE_FILE. W to pole wpisz ścieżkę do pliku z licencją, następnie kliknij przycisk Set.
  2. Generalnie coś takiego w miejscu liczenia uchybu: float currentSpeed = (pos - prevPos)/deltaT; // error float e = targetSpeed - currentSpeed; prevPos = pos; Tę zmienną prevPos trzeba gdzieś też wcześniej zadeklarować, najlepiej tam, gdzie pos. Jako targetSpeed można pewnie użyć tej zmiennej, która już tam była w kodzie (zwróć jedynie uwagę na typ, czy potrzeba floatów tak, jak to zrobiłem, czy wystarczą Ci liczby całkowite). Nie chce mi się analizować całego kodu dokładnie, dziwi mnie, że uchyb liczysz jako różnicę wartości aktualnej i zadanej (zamiast odwrotnie). Ogólnie to dobrze te
  3. Nie jestem pewien, czy dobrze zrozumiałem problem. Jeżeli chcesz sterować prędkością zamiast pozycją, to musisz: 1. Obliczyć aktualną prędkość – skoro masz pozycję, to prędkość możesz spróbować w najprostszym przypadku oszacować jako różnicę aktualnej pozycji oraz poprzedniej podzielonej przez przyrost czasu (trzeba zapamiętać pozycję z poprzedniego obiegu pętli). 2. Liczyć uchyb układu regulacji jako różnicę prędkości zadanej oraz aktualnej (obliczonej w punkcie 1) zamiast różnicy pozycji.
  4. Większość projektów pewnie da się przenieść na FPGA, ale nie jest to na pewno przenoszenie jeden do jednego. Do konfiguracji FPGA używa się w większości przypadków języków opisu sprzętu VHDL lub Verilog, są też narzędzia np. od AMD Xilinxa typu High Level Synthesis, które algorytm napisany w C/C++ są w stanie skonwertować do VHDL/Verilog, ale jeszcze nie korzystałem z nich. Pisanie kodów źródłowych dla FPGA różni się od mikrokontrolerów, możliwe jest zrównoleglanie obliczeń, masz kontrolę nad w zasadzie każdym taktem zegara. Jeżeli chcesz zamrugać diodą podłączoną do nóżki mikrokontrolera, t
  5. @wieniek04 Wybrałeś wersję, która wymaga maszyny wirtualnej. Masz zainstalowany program Oracle VirtualBox? Nie wiem, czy nie trzeba go zainstalować przed instalacją środowiska Xilinxa.
  6. Twój układ działa jak zatrzask, spróbuj przerobić go na przerzutnik wyzwalany zboczem sygnału zegarowego. Na przykład tutaj jest artykuł, który powinien trochę rozjaśnić temat, jak z dwóch tego typu przerzutników wykonać jeden, wyzwalany zboczem (konfiguracja „master-slave").
  7. piotr96

    Źródła wiedzy PLC

    Materiałów możesz szukać na MyMitsubishi lub na forum wsparcia technicznego. Poza oczywiście wyszukiwarką (i programem e-manual viever – ale nie wiem, czy seria Q też w nim jest) – w google wpisz symbol sterownika, hasło np. „user manual"/"hardware manual" itp. i na pewno coś znajdziesz. Najlepiej po instalacji GXW2 trochę się nim pobawić. Jeżeli czegoś nie wiesz, to magiczny przycisk F1 zazwyczaj uruchamia jakieś okienko z pomocą. Mitsubishi organizuje też dość często jakieś webinary, ale raczej o jakimś konkretnym zagadnieniu. Organizowane są również odpłatne, stacjonarne sz
  8. piotr96

    Tablice structur w c++

    Oczywiście, iterator w języku C++ to coś innego, ale na uczelni, którą kończyłem, często nazywano zmienną sterującą pętli właśnie iteratorem pętli. I taki iterator, w potocznym znaczeniu, miałem na myśli. Jeżeli kogoś wprowadziłem w błąd, to przepraszam. Być może jest to niepoprawne, ale widzę, że na innych uczelniach też się używa tego sformułowania: Jeżeli już chcemy czepiać się słówek, to bardzo rażące w oczy jest sformułowanie: Tego też nauczyłem się na jednym przedmiocie na politechnice, dotyczącym badań operacyjnych (nieprawidłowość tego sformułowania to dla dużej częś
  9. Zgodnie z zasadami języka VHDL, sygnał na początku procesu ma automatycznie poprzednią wartość, dlatego te instrukcje else są z tego punktu widzenia zupełnie niepotrzebne. Autor pewnie miał na myśli zwiększenie czytelności kodu (może uważa definiowanie kompletnych instrukcji warunkowych za dobrą praktykę programistyczną) albo obawiał się podobnego zagadnienia, jak z klauzulą when others – żeby zawsze definiować wprost wszystkie przypadki, ale moim zdaniem niepotrzebnie w tym przykładzie automatu.
  10. Ja kiedyś do prostych animacji (gry asteroidy – projekt na studiach) używałem Visual Studio, języka C++ z biblioteką SFML. Jest raczej prosta, w internecie było trochę przykładów. Ciekawą alternatywą jest na pewno Qt, nawet na Forbocie jest kurs wprowadzający. Bibliotekę tę można również używać w środowisku Visual Studio, ale dedykowanym narzędziem jest QtCreator. Do tej biblioteki znajdziesz dużo różnych przykładów, na przykład tutaj są przykłady z animacjami 3D. Dokumentacja tej biblioteki jest moim zdaniem bardzo dobra.
  11. piotr96

    Tablice structur w c++

    Zauważ, że sprawdzenie jest w kodzie już po pętli for. Zwróć uwagę jaką wartość ma wówczas iterator i. Porównujesz przebieg samochodu o indeksie n z samochodem o indeksie n-1, a w tablicy masz tylko samochody o indeksach 0, 1, 2, ..., n-1. W tablicy pod pozycją samochodu o indeksie n są jakieś śmieci.
  12. Raczej nic nie powinno się doinstalowywać. W pliku z rozszerzeniem pro masz dodany port szeregowy poprawnie. Nie pamiętam dlaczego, ale ja w projekcie sprzed dwóch lat używałem coś takiego: #include "QtSerialPort/qserialportinfo.h" Możesz spróbować, może zadziała.
  13. Kiedyś do tego celu użyłem czujnika optycznego odbiciowego, ale nie jest to trafny wybór w przypadku materiałów pylących. Po pewnym czasie czujnik jest pokryty kurzem/pyłem, trzeba by go czyścić na bieżąco. Może poszukaj pod hasłem „łopatkowy czujnik poziomu materiałów sypkich" – może gdzieś znajdziesz taki czujnik w przystępnej cenie, bo pierwsze wyniki w wyszukiwarce przedstawiają czujniki drogie, używane w automatyce.
  14. Ok, załączam jeszcze przykładowy kod testowy (w VHDL), gdybyś chciała się pobawić w symulacji. Jest tam zasymulowane przesłanie kolejno po sobie czterech liczb: 1, 2, 3, 4. W rzeczywistości ramki przychodzą z większymi odstępami czasowymi pomiędzy nimi. Ale i tak nie widzę skąd bierze się ta „3". LIBRARY ieee; USE ieee.std_logic_1164.ALL; use IEEE.Numeric_std.ALL; use ieee.math_real.all; ENTITY test IS END test; ARCHITECTURE behavior OF test IS --Inputs signal i_Clk : std_logic := '0'; signal i_UART_RX : std_logic := '0'; --Outputs signal o_UART_TX : std_logic; sig
  15. Tak, o to chodziło, chciałem się upewnić, czy ustawienia są takie same jak w kodzie odbiornika UART. Te piny DTR i CTS nie powinny mieć znaczenia, ponieważ nie używasz opcji „Flow Control". Chyba, że ten konwerter działa jakoś inaczej, ale to mało prawdopodobne. Chyba pozostaje sprawdzić dokładnie kod tego odbiornika UART, jego działanie w symulacji. Szkoda, że nie masz możliwości podejrzeć przesyłanej ramki, ale raczej powinna być poprawna.
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.