rozważania o CNC

OPROGRAMOWNIE => EMC2 => Wątek zaczęty przez: markcomp Listopada 28, 2023, 12:55:16



Tytuł: M66
Wiadomość wysłana przez: markcomp Listopada 28, 2023, 12:55:16
M66


M66 to polecenie, które służy do odczytu lub ustawienia stanu wejścia lub wyjścia cyfrowego lub analogowego w systemie LinuxCNC. M66 pozwala na synchronizację ruchu z sygnałami zewnętrznymi, takimi jak czujniki, przełączniki, przekaźniki, itp. M66 ma następującą składnię:

M66 Pn Ln En Qn Fn

gdzie:

•  Pn to numer wejścia lub wyjścia, który chcemy odczytać lub ustawić. Może być to liczba całkowita od 0 do 63 lub nazwa sygnału HAL, np. motion.digital-in-0.

•  Ln to poziom logiczny, który chcemy odczytać lub ustawić. Może być to 0 lub 1 dla wejść lub wyjść cyfrowych, lub wartość zmiennoprzecinkowa dla wejść lub wyjść analogowych.

•  En to tryb działania polecenia M66. Może być to jedna z następujących wartości:

•  0: odczytaj stan wejścia i zapisz go do zmiennej #<_halpin>

•  1: ustaw stan wyjścia na wartość Ln

•  2: zatrzymaj program, aż stan wejścia będzie równy Ln

•  3: zatrzymaj program, aż stan wejścia będzie różny od Ln

•  4: zatrzymaj program, aż stan wejścia będzie rosnący (z 0 na 1)

•  5: zatrzymaj program, aż stan wejścia będzie malejący (z 1 na 0)

•  Qn to czas oczekiwania w sekundach, po którym polecenie M66 zwróci błąd, jeśli nie zostanie spełniony warunek En. Jeśli Qn jest równy 0, to polecenie M66 będzie czekać w nieskończoność.

•  Fn to numer rejestru, do którego zostanie zapisany stan wejścia lub wyjścia po wykonaniu polecenia M66. Może być to liczba całkowita od 1 do 30.

Przykład użycia polecenia M66:

M66 P3 L1 E2 Q10 F5

To polecenie zatrzyma program, aż wejście nr 3 będzie miało stan 1, lub zwróci błąd, jeśli to nie nastąpi w ciągu 10 sekund. Po zakończeniu polecenia, stan wejścia nr 3 zostanie zapisany do rejestru nr 5.


Tytuł: Odp: M66
Wiadomość wysłana przez: markcomp Listopada 28, 2023, 12:59:38
Komenda M66 w G-code LinuxCNC służy do oczekiwania na spełnienie warunków związanych z wejściami i wyjściami (I/O), zanim program G-code przejdzie dalej. To umożliwia synchronizację działania maszyny CNC z warunkami zewnętrznymi, takimi jak wciskanie przycisków, zakończenie pracy czujników, itp.

Skrócony format komendy M66 to:

M66 P<condition> L<timeout> Q<code>

P: Numer wejścia lub wyjścia (I/O), którego warunek musi być spełniony.

L: Czas maksymalny oczekiwania w milisekundach.

Q: Kod G-code do wykonania, gdy warunek zostanie spełniony lub upłynie timeout.

Przykład użycia:

M66 P1 L2000 Q100

W powyższym przykładzie:

P1: Oznacza, że warunek dotyczy wejścia/wyjścia o numerze 1.
L2000: Oznacza maksymalny czas oczekiwania 2000 milisekund (2 sekundy).

Q100: Oznacza, że jeśli wejście/wyjście nr 1 zostanie aktywowane w ciągu 2 sekund, wykonaj kod G-code o numerze 100.

Często M66 jest używane w połączeniu z M62 (ustaw wejście/wyjście) i M63 (odczyt wejścia/wyjścia). Na przykład:

M62 P1    ; Ustaw wejście/wyjście nr 1 na aktywne
M66 P1 L2000 Q100 ; Oczekuj na aktywację wejścia/wyjścia nr 1 przez 2 sekundy i wykonaj kod 100

Warto zauważyć, że używanie komendy M66 wymaga obsługi wejść/wyjść przez kontroler maszyny CNC oraz dostępności odpowiednich czujników lub sygnałów, które mogą być monitorowane. Dzięki temu można dostosować działanie maszyny w trakcie wykonywania programu G-code w oparciu o warunki zewnętrzne.


Tytuł: Odp: M66
Wiadomość wysłana przez: markcomp Listopada 28, 2023, 01:02:36
z dokumentacji LinuxCNC

https://www.linuxcnc.org/docs/html/gcode/m-code.html#mcode:m66


16. M66 Wait on Input
M66 P- | E- <L->
P- - specifies the digital input number from 0 to 3. (Adjustable from motmod argument num_dio)

E- - specifies the analog input number from 0 to 3. (Adjustable from motmod argument num_aio)

L- - specifies the wait mode type.

Mode 0: IMMEDIATE - no waiting, returns immediately. The current value of the input is stored in parameter #5399

Mode 1: RISE - waits for the selected input to perform a rise event.

Mode 2: FALL - waits for the selected input to perform a fall event.

Mode 3: HIGH - waits for the selected input to go to the HIGH state.

Mode 4: LOW - waits for the selected input to go to the LOW state.

Q- - specifies the timeout in seconds for waiting. If the timeout is exceeded, the wait is interrupt, and the variable #5399 will be holding the value -1. The Q value is ignored if the L-word is zero (IMMEDIATE). A Q value of zero is an error if the L-word is non-zero.

Mode 0 is the only one permitted for an analog input.

M66 Example Lines
M66 P0 L3 Q5 (wait up to 5 seconds for digital input 0 to turn on)
M66 wait on an input stops further execution of the program, until the selected event (or the programmed timeout) occurs.

It is an error to program M66 with both a P-word and an E-word (thus selecting both an analog and a digital input). In LinuxCNC these inputs are not monitored in real time and thus should not be used for timing-critical applications.

The number of I/O can be increased by using the num_dio or num_aio parameter when loading the motion controller. See the Motion section for more information.

Note
M66 will not function unless the appropriate motion.digital-in-nn pins or motion.analog-in-nn pins are connected in your HAL file to an input.
Example HAL Connection
net signal-name motion.digital-in-00 <= parport.0.pin10-in


Tytuł: Odp: M66
Wiadomość wysłana przez: markcomp Listopada 28, 2023, 01:12:32
M66 - przyśpieszenie reakcji


Aby przyśpieszyć reakcję na sygnał z switcha wskazującego gotowość, możesz rozważyć kilka optymalizacji. Oto kilka sugestii:

Ustaw niski timeout w M66:

Zmniejsz czas oczekiwania w komendzie M66, aby skrócić czas reakcji. Ustaw krótki czas oczekiwania, jeśli to możliwe, z zachowaniem wystarczającego marginesu na prawidłową detekcję sygnału.

M66 P<condition> L<short_timeout> Q<code>

Zastosuj optymalizacje w kodzie G:

Spróbuj zoptymalizować kod G, aby ograniczyć ilość operacji i skoków, zwłaszcza w obszarze, który jest aktywowany przez M66. Mniej złożony kod może skrócić czas wykonania.

Sprawdź sprzęt:
Upewnij się, że sprzęt odpowiedzialny za odczyt sygnału z switcha jest szybki i nie wprowadza opóźnień. Sprawdź, czy nie ma problemów związanych z fizycznym podłączeniem switcha.
Przemyśl konfigurację sprzętową:

Jeśli to możliwe, zastanów się nad użyciem innych rodzajów wejść/wyjść lub sprzętu do obsługi sygnału. Niektóre konfiguracje sprzętowe mogą oferować szybszą reakcję na zmiany stanu.

Użyj innych komend:
Zamiast M66, zastanów się nad użyciem innych komend G-code, które mogą być bardziej zoptymalizowane pod kątem czasu reakcji w Twoim konkretnym przypadku.


Tytuł: Odp: M66
Wiadomość wysłana przez: markcomp Listopada 28, 2023, 01:15:31
Polecenie M66 służy do odczytu lub ustawienia stanu wejścia lub wyjścia cyfrowego lub analogowego w systemie LinuxCNC, ale może ono wymagać pewnego czasu oczekiwania, zanim warunek zostanie spełniony lub zwrócony błąd. Możliwe sposoby na optymalizację polecenia M66 to:

•  Zmniejszenie czasu oczekiwania Qn, który określa, po jakim czasie polecenie M66 zwróci błąd, jeśli nie zostanie spełniony warunek En. Jeśli Qn jest równy 0, to polecenie M66 będzie czekać w nieskończoność, co może spowalniać ruch. Możesz spróbować ustawić Qn na jakąś małą wartość, np. 0.1 lub 0.01, aby ograniczyć czas oczekiwania.

•  Zmiana trybu działania En, który określa, co ma zrobić polecenie M66, gdy odczyta lub ustawi stan wejścia lub wyjścia. Jeśli En jest równy 2, 3, 4 lub 5, to polecenie M66 zatrzyma program, aż stan wejścia będzie spełniał określony warunek. Może to być niepożądane, jeśli chcesz, aby ruch był płynny i niezależny od sygnału zewnętrznego. Możesz spróbować ustawić En na 0 lub 1, aby polecenie M66 tylko odczytało lub ustawiło stan wejścia lub wyjścia i kontynuowało program.

•  Sprawdzenie, czy numer wejścia lub wyjścia Pn, który chcesz odczytać lub ustawić, jest poprawny i odpowiada sygnałowi na switchu wskazującym gotować. Jeśli Pn jest niepoprawny lub niezgodny z sygnałem, to polecenie M66 może nie działać prawidłowo lub zwracać błędne wartości.


Tytuł: Odp: M66
Wiadomość wysłana przez: markcomp Listopada 28, 2023, 01:17:31
W LinuxCNC, oprócz M66, do sprawdzania warunków na pinach wejściowych można używać komendy M62 i M63. Poniżej znajdziesz krótkie wyjaśnienia tych komend:

M62 - Ustaw wejście/wyjście:

Komenda M62 pozwala na ustawienie określonego wejścia/wyjścia (pinu) na określoną wartość (aktywne lub nieaktywne). Przykład użycia:

M62 P1     ; Ustaw wejście/wyjście nr 1 na aktywne

Ta komenda pozwala na kontrolowanie stanu określonego wejścia/wyjścia.

M63 - Odczytaj wejście/wyjście:

Komenda M63 umożliwia odczytanie stanu określonego wejścia/wyjścia i zapisanie wyniku w zmiennej systemowej. Przykład użycia:

M63 P1 L10   ; Odczytaj stan wejścia/wyjścia nr 1 i zapisz wynik do zmiennej #<_HAL[1]>

Po wykonaniu tej komendy, stan wejścia/wyjścia nr 1 zostanie zapisany w zmiennej #<_HAL[1]>.

M64 - Czekaj na wejście/wyjście:

Komenda M64 pozwala na oczekiwanie na zmianę stanu określonego wejścia/wyjścia przed kontynuacją programu G-code. Przykład użycia:

M64 P1 L5000  ; Oczekuj na zmianę stanu wejścia/wyjścia nr 1 przez 5 sekund

Ta komenda pozwala na oczekiwanie na spełnienie warunku związanego z danym wejściem/wyjściem przed kontynuacją programu.

Przy dostępie do pinów wejściowych/wyjściowych warto sprawdzić dokumentację swojego kontrolera i systemu LinuxCNC, aby upewnić się, że komendy są obsługiwane i zrozumiane przez konkretny sprzęt.