• Tidak ada hasil yang ditemukan

menghadapi beberapa latency dan keanehan dari PC sendiri, karena tidak satupun dari mereka yang benar-benar real-time dan selalu membuat micro-penundaan ketika menjalankan

Dalam dokumen Tutorial Conecting GBRL to ARDUINO UNO (Halaman 31-45)

tugas-tugas lainnya. Terlepas dari itu, kami telah datang dengan cara-cara untuk memastikan aliran

G-kode yang handal dan sederhana.

Streaming Protocol: Simple Send Response [Direkomendasikan untuk Grbl v0.9 +]

Send-respon streaming yang protokol adalah yang paling bodoh-bukti dan metode yang paling

sederhana untuk streaming program kode untuk Grbl. Antarmuka host PC hanya mengirim baris G-kode untuk Grbl dan menunggu untuk ok atau kesalahan: respon sebelum mengirim baris berikutnya

dari G-kode. Jadi, tidak peduli apakah Grbl perlu menunggu ruang di buffer perencana tampilan-depan untuk menyelesaikan parsing dan mengeksekusi baris terakhir G-kode atau jika komputer host sibuk melakukan sesuatu, ini menjamin baik untuk PC host dan Grbl , yang diprogram G-kode telah dikirim dan diterima dengan baik. Contoh dari protokol ini diterbitkan dalam script simple_stream.py kami dalam repositori kami.

Namun, itu juga yang paling lambat tiga protokol streaming diuraikan. Grbl dasarnya memiliki dua buffer antara pelaksanaan langkah-langkah dan antarmuka host PC. Salah satunya adalah serial menerima buffer. Sebentar ini menyimpan hingga 127 karakter data yang diterima dari PC host sampai Grbl

memiliki waktu untuk mengambil dan mengurai garis dari G-kode. Buffer lainnya adalah tampilan-depan perencana penyangga. Penyangga ini menyimpan hingga 17 gerakan garis yang

percepatan-direncanakan dan dioptimalkan untuk eksekusi langkah. Karena protokol send-respon menerima garis G-kode sementara PC host menunggu jawaban, seri Grbl ini menerima buffer biasanya kosong dan kurang dimanfaatkan. Jika Grbl secara aktif menjalankan dan melaksanakan langkah-langkah, Grbl akan segera mulai melaksanakan dan mengosongkan tampilan-depan perencana penyangga, ketika mengirimkan respon ke host PC, menunggu baris berikutnya dari host PC, setelah menerima itu, mengurai dan rencana itu, dan menambahkannya ke akhir buffer tampak-depan.

Meskipun komunikasi lag ini mungkin mengambil hanya sepersekian detik, ada efek kumulatif, karena ada lag dengan setiap blok kode yang dikirim ke Grbl. Dalam skenario tertentu, seperti program G-kode yang mengandung banyak sekuensial, sangat singkat, segmen garis dengan harga pakan yang tinggi, lag kumulatif dapat cukup besar untuk mengosongkan dan kelaparan tampilan-depan perencana penyangga dalam waktu ini. Hal ini bisa mengakibatkan start-stop motion ketika streaming tidak bisa bersaing dengan pelaksanaan program G-kode. Juga, karena Grbl hanya bisa merencanakan dan mengoptimalkan apa yang ada di tampilan-depan perencana penyangga, kinerja melalui jenis gerakan akan pernah penuh kecepatan, karena tampak-depan penyangga akan selalu sebagian penuh ketika menggunakan metode streaming yang ini. Jika aplikasi yang diharapkan Anda tidak mengandung banyak segmen garis pendek dengan harga pakan yang tinggi, protokol streaming yang ini harus lebih dari cukup untuk sebagian besar aplikasi, sangat kuat, dan merupakan cara cepat untuk memulai. Namun, kami tidak merekomendasikan penggunaan metode ini untuk Grbl versi v0.8 atau sebelum karena beberapa masalah kinerja dengan versi ini.

Streaming Protocol: Via Flow Control (XON / XOFF)

Untuk menghindari risiko kelaparan tampilan-depan perencana penyangga, protokol aliran kontrol streaming yang dapat digunakan untuk mencoba untuk menjaga seri Grbl ini menerima penyangga penuh, sehingga Grbl memiliki akses langsung ke garis g-kode berikutnya untuk mengurai dan rencana tanpa menunggu untuk host PC untuk mengirimkannya. Flow control, juga dikenal sebagai kontrol aliran software XON / XOFF, menggunakan dua karakter khusus untuk memberitahu host PC ketika memiliki atau tidak memiliki ruang dalam serial menerima buffer untuk menerima data lagi. Ketika ada ruang, biasanya di 20% penuh, karakter khusus dikirim ke PC host menunjukkan siap menerima. PC host akan mulai mengirim data sampai menerima yang lain karakter khusus stop-terima, biasanya di 80% penuh. XON / XOFF fitur kontrol aliran software Grbl ini dapat diaktifkan melalui config.h, tetapi tidak secara resmi didukung untuk alasan berikut.

Sementara suara dalam logika, kontrol aliran software memiliki sejumlah masalah. Waktu antara Grbl dan PC host hampir tidak pernah sempurna sinkron, sebagian besar karena protokol USB dan USB-serial chip converter pada setiap Arduino. Hal ini menimbulkan masalah besar ketika mengirim dan menerima ini khusus karakter aliran-kontrol. Ketika seri Grbl ini menerima buffer rendah, waktu antara ketika mengirimkan siap menerima karakter dan saat PC mengirimkan data lebih semua tergantung segala sesuatu di antaranya. Jika host PC sibuk atau Arduino-USB seri converter tidak mengirimkan karakter pada waktu, lag ini dapat menyebabkan Grbl untuk menunggu lebih banyak data serial untuk datang sebelum parsing dan mengeksekusi baris berikutnya dari G-kode. Lebih buruk lagi meskipun, jika serial menerima buffer mendekati penuh dan halte-menerima karakter dikirim, host PC mungkin tidak

menerima sinyal pada waktunya untuk menghentikan transfer data dan lebih-aliran penyangga seri Grbl ini. Ini buruk dan akan merusak aliran data.

Karena metode software aliran-kontrol tergantung pada kinerja converter-USB serial pada Arduino dan host PC, watermark rendah dan tinggi untuk siap-menerima dan berhenti-menerima karakter harus disetel untuk setiap kasus. Dengan demikian, itu tidak benar-benar solusi kuat. Dalam pengalaman kami dengan kontrol aliran software XON / XOFF, itu benar-benar TIDAK bekerja dengan Arduinos dengan Atmega8U / 16u-USB seri chip converter (pada semua Arduinos arus dari Uno ke Mega2560). Untuk beberapa alasan, ada USB paket penundaan yang berada di luar kendali Grbl dan hampir selalu menyebabkan korupsi data. Namun, XON / XOFF bekerja, tetapi hanya pada Arduinos tua atau mikro kontroler yang menampilkan sebuah FTDI RS232 chip yang converter-USB serial, seperti Duemilanove atau pengendali dengan break-out papan FTDI. Firmware FTDI ini andal mengirim XON / XOFF karakter khusus dalam waktu dan tepat waktu. Kami tidak yakin mengapa ada perbedaan seperti antara mereka. Jika Anda memutuskan untuk menggunakan XON / XOFF kontrol aliran perangkat lunak untuk GUI Anda, perlu diingat bahwa, pada saat ini, itu akan hanya benar-benar bekerja dengan FTDI USB-serial

converter. Tapi, hal yang besar tentang metode ini adalah bahwa Anda dapat terhubung dengan Grbl lebih emulator Program serial seperti Coolterm, mengaktifkan XON / kontrol aliran XOFF, memotong dan paste program g-kode seluruh ke dalamnya, dan Grbl akan mengeksekusi sepenuhnya . (Bagus tapi tidak benar-benar diperlukan.)

Streaming Protocol: Karakter-Menghitung [Direkomendasikan dengan Reservasi]

Untuk mendapatkan yang terbaik dari kedua dunia, kesederhanaan dan keandalan metode send-respon dan jaminan performa maksimal dengan kontrol aliran software, kami datang dengan protokol karakter-penghitungan sederhana untuk streaming program G-kode untuk Grbl. Ia bekerja seperti metode send-respon, di mana PC host mengirimkan garis dari G-kode untuk Grbl untuk mengeksekusi dan menunggu  jawaban, tapi, bukannya membutuhkan khusus karakter XON / XOFF untuk kontrol aliran, protokol ini

hanya menggunakan tanggapan Grbl ini sebagai cara untuk andal melacak berapa banyak ruang yang ada di seri Grbl ini menerima buffer. Contoh dari protokol ini diuraikan dalam stream.py streaming yang script repo kami.

Perbedaan utama antara protokol ini dan yang lainnya adalah PC host perlu mempertahankan hitungan berdiri dari berapa banyak karakter itu telah dikirim ke Grbl dan kemudian mengurangi jumlah karakter yang sesuai dengan garis dieksekusi dengan masing-masing respon Grbl. Misalkan ada program G-kode singkat yang memiliki 5 baris dengan 25, 40, 31, 58, dan 20 karakter (menghitung pakan baris dan

karakter carriage return juga). Kita tahu Grbl memiliki serial 127 karakter menerima buffer, dan PC host dapat mengirim hingga 127 karakter tanpa meluap buffer. Jika kita membiarkan PC host mengirim sebanyak baris lengkap seperti yang kita tanpa atas mengalir seri Grbl dapat menerima buffer, tiga baris pertama dari 25, 40, dan 31 karakter dapat dikirim untuk total 96 karakter. Ketika Grbl merespon, kita tahu baris pertama telah diproses dan tidak lagi dalam membaca penyangga serial. Seperti berdiri, membaca penyangga seri sekarang memiliki 40 dan 31 karakter baris di dalamnya untuk total 71

karakter. PC host perlu kemudian menentukan apakah itu aman untuk mengirim baris berikutnya tanpa meluap buffer. Dengan baris berikutnya pada 58 karakter dan buffer serial pada 71 untuk total 129 karakter, host PC harus menunggu sampai lebih banyak ruang telah dibersihkan dari buffer serial. Ketika respon Grbl berikutnya masuk, baris kedua telah diproses dan hanya baris ketiga 31 karakter tetap dalam buffer serial. Pada titik ini, itu aman untuk mengirim tersisa dua 58 dan 20 karakter baris program g-kode untuk total 109.

Sementara tampaknya rumit, karakter-penghitungan ini streaming yang protokol sangat efektif dalam praktek. Selalu memastikan membaca seri penyangga Grbl ini diisi, sementara tidak pernah meluap itu. Memaksimalkan kinerja Grbl dengan menjaga tampilan-depan perencana penyangga penuh oleh lebih memanfaatkan aliran data dua arah dari port serial, dan itu cukup sederhana untuk menerapkan sebagai script stream.py kami menggambarkan. Kami telah stres diuji ini protokol karakter-menghitung ekstrim dan belum gagal. Tampaknya, hanya kecepatan koneksi serial adalah batas.

UPDATE: Sampai baru-baru, kami merekomendasikan bahwa Grbl GUI menggunakan protokol streaming yang ini. Hal ini memang sangat efisien dan efektif, tetapi ada beberapa tambahan penulis hal

antarmuka harus sadar. Ini adalah masalah yang sedang dikerjakan untuk rilis v1.0.

Sejak GUI yang preloading seri RX penyangga Grbl dengan perintah, Grbl akan terus

mengeksekusi semua g-kode antri di RX penyangga serial. Masalah pertama adalah jika ada kesalahan pada awal buffer RX, Grbl akan terus menjalankan buffered g-kode yang tersisa dan GUI tidak akan mampu mengendalikan apa yang terjadi. Solusi sementara adalah untuk

memeriksa semua g-kode melalui modus cek $ C, sehingga semua kesalahan yang diperiksa sebelum streaming.

Ketika Grbl menyimpan data ke EEPROM, AVR membutuhkan semua menyela dinonaktifkan selama proses menulis ini, termasuk seri RX ISR. Ini berarti bahwa jika g-kode atau Grbl $ perintah menulis ke EEPROM, data yang dikirim selama menulis mungkin akan hilang. Hal ini biasanya jarang dan biasanya terjadi saat mengalirkan perintah G10 tidak tepat dalam program. Untuk ketahanan, GUI harus melacak dan mendeteksi ini menulis perintah EEPROM dan

menangani mereka secara tepat dengan menunggu antrian untuk menyelesaikan mengeksekusi sebelum mengirim lebih banyak data. Perhatikan bahwa protokol send-respon sederhana tidak tidak menderita masalah ini.

Berinteraksi dengan Sistem Grbl ini

menulis GUI untuk Grbl, seperti bagaimana menggunakan pelaporan status, perintah kontrol real-time, berurusan dengan EEPROM, dan pesan umum penanganan.

Status Pelaporan

Ketika sebuah ? karakter dikirim ke Grbl (tidak ada line feed atau carriage return karakter tambahan yang dibutuhkan), maka akan langsung merespon dengan sesuatu seperti <Idle, MPOS:

0.000,0.000,0.000, WPos: 0.000,0.000,0.000> melaporkan posisi negara dan saat ini . Itu ? selalu

mengambil-off dan dihapus dari serial menerima buffer setiap kali Grbl mendeteksi satu. Jadi, ini dapat dikirim setiap saat. Juga, untuk membuatnya sedikit lebih mudah untuk GUI untuk mengambil laporan status, mereka selalu terbungkus oleh <> chevrons.

Pengembang dapat menggunakan data ini untuk memberikan posisi pada layar digital-membaca-out (DRO) bagi pengguna dan / atau untuk menunjukkan pengguna posisi 3D di ruang kerja virtual. Kami sarankan query Grbl untuk? real-time status laporan tidak lebih dari 5Hz. 10Hz dimungkinkan, tetapi di beberapa titik, ada semakin berkurang dan Anda pajak CPU Grbl lain dengan meminta untuk

menghasilkan dan mengirim banyak data posisi.

Laporan status Grbl adalah cukup hanya dalam organisasi. Selalu dimulai dengan kata yang

menggambarkan keadaan mesin seperti IDLE (deskripsi ini tersedia di tempat lain di Wiki). Nilai data berikut biasanya dalam urutan yang tercantum di bawah dan dipisahkan oleh koma, tapi mungkin tidak dalam urutan yang tepat atau dicetak sama sekali. Laporan output tergantung pada $ 10 laporan status topeng pengaturan pengguna.

MPOS: 0.000,0.000,0.000: Mesin posisi terdaftar sebagai X, Y, Z koordinat. Unit (mm atau inci) tergantung pada $ 13 Grbl pengaturan satuan pelaporan.

WPos:0.000,0.000,0.000 : Work position listed as X,Y,Z coordinates. Units (mm or inch) depends on$13 Grbl unit reporting setting.

Buf: 0: Jumlah gerakan antri di Grbl perencana penyangga.

Buf: 0: Jangka Waktu Gerakan Antri di Grbl Perencana Penyangga.

Real-Time Perintah Kontrol

Perintah kontrol real-time, ~ siklus start / melanjutkan,! pakan terus, dan ^ X soft-reset, semua segera sinyal Grbl untuk mengubah keadaan yang berjalan. Hanya suka ? laporan status, karakter kontrol ini dipetik-off dan dihapus dari buffer seri ketika mereka terdeteksi dan tidak memerlukan line-feed atau carriage-return karakter tambahan untuk beroperasi.

EEPROM Isu

Akses EEPROM pada Arduino AVR CPU mematikan semua interupsi sementara CPU membaca dan menulis ke EEPROM. Hal ini menimbulkan masalah untuk fitur tertentu dalam Grbl, terutama jika pengguna streaming dan menjalankan program g-kode, karena dapat menghentikan sementara utama

langkah pembangkit interupsi dari mengeksekusi tepat waktu. Sebagian besar akses EEPROM dibatasi oleh Grbl ketika itu di negara-negara tertentu, tetapi ada beberapa hal yang perlu pengembang untuk tahu.

Pengaturan tidak dapat dialirkan ke Grbl dengan baik kontrol aliran software XON / XOFF atau protokol streaming karakter-menghitung. Hanya protokol send-respon sederhana bekerja. Hal ini karena selama EEPROM menulis, CPU AVR juga menutup-down RX interupsi serial, yang berarti data dapat rusak atau hilang. Perhatikan bahwa protokol send-respon tidak mengirim data apapun sampai respon datang kembali.

Ketika mengubah koordinat kerja, percetakan $ # parameter, atau mengakses G28 / posisi yang telah ditetapkan G30, Grbl memiliki untuk mengambil mereka dari EEPROM. Ada kemungkinan kecil akses ini dapat menghentikan sementara stepper atau serial menerima mengganggu cukup lama untuk menyebabkan masalah gerak, tapi karena hanya menjemput 12 byte pada suatu waktu pada 2 siklus per mengambil, kemungkinan sangat kecil ini akan melakukan apa saja untuk bagaimana Grbl berjalan. Kami hanya menyarankan mengawasi ini dan melaporkan kepada kami masalah Anda mungkin berpikir berhubungan dengan ini.

Sebagai referensi:

Grbl ini EEPROM menulis perintah: G10 L2, G10 L20, G28.1, G30.1, $ x =, $ I =, $ Nx =, $ RST =

Grbl ini EEPROM membaca perintah: G54-G59, G28, G30, $$, $ I, N $, $ #

pesan Penanganan

Sebagian besar umpan balik dari Grbl cocok dengan kategori bagus sehingga GUI dapat dengan mudah mengatakan apa apa. Berikut adalah cara mereka terorganisir:

ok: Standard all-baik respon untuk satu baris dikirim ke Grbl.

error :: respon kesalahan Standard untuk satu baris dikirim ke Grbl.

ALARM :: Sebuah pesan kesalahan kritis yang terjadi. Semua proses berhenti sampai pengguna pengakuan.

[]: Semua pesan umpan balik dikirim dalam kurung. Ini termasuk parameter dan g-kode negara parser print-out.

<>: Laporan Status dikirim dalam chevrons

There are few things that don't fit neatly into this setup at the moment. In the next version, we'll try to make this more universal, but for now, your GUIs will need to manually account for these:

Pesan startup. $ Bantuan print-out.

$ N blok Start-up eksekusi setelah pesan startup. The $$ lihat Grbl pengaturan print-out.

G-kode Penanganan Kesalahan

Pada Grbl v0.9, g-kode parser sepenuhnya standar-compilant dengan lengkap pengecekan error. Ketika parser G-kode mendeteksi kesalahan dalam G-blok kode / line, parser akan membuang segala sesuatu di blok dari memori dan melaporkan kesalahan: kembali ke pengguna atau GUI. Dump ini dapat

menimbulkan masalah, karena G-kode yang buruk blok mungkin berisi beberapa perintah posisi berharga atau pengaturan kecepatan umpan.

Itu sangat dianjurkan untuk melakukan apa yang semua pengendali CNC profesional lakukan ketika mereka mendeteksi kesalahan dalam program G-kode, berhenti. Jangan lakukan apa-apa lagi sampai pengguna telah memodifikasi G-kode dan tetap kesalahan dalam program mereka. Jika tidak, hal-hal buruk bisa terjadi.

Sebagai layanan untuk GUI, Grbl memiliki "check G-kode" mode, diaktifkan oleh perintah sistem $ C. GUI bisa streaming program G-kode untuk Grbl, di mana ia akan mengurai, kesalahan-memeriksa, dan

melaporkan ok dan kesalahan: 's tanpa powering pada sesuatu atau bergerak. Jadi GUI dapat pra-memeriksa program sebelum streaming nyata. Untuk menonaktifkan "check G-kode" mode, mengirim perintah sistem $ C lain dan Grbl akan secara otomatis soft reset-flush dan re-initialize G-kode parser dan seluruh sistem. Hal ini mungkin harus berjalan di latar belakang saat pengguna pertama memuat sebuah program, sebelum pengguna set up mesin nya. Pembilasan ini dan re-inisialisasi membersihkan G92 oleh G-kode standar, yang beberapa pengguna masih salah gunakan untuk mengatur bagian mereka nol.

Jogging

Sayangnya, Grbl tidak memiliki antarmuka joging yang tepat, setidaknya untuk saat ini. Ini adalah untuk menghemat ruang flashdisk berharga untuk pengembangan Grbl v0.9, tetapi dapat diinstal pada rilis berikutnya dari Grbl. Namun, penulis Grbl GUI telah datang dengan cara untuk mensimulasikan joging dengan Grbl dengan mengirimkan gerakan tambahan, seperti G91 X0.1, dengan setiap klik joging atau tekan tombol. Ini bekerja dengan cukup baik, namun, jika tidak terkendali, pengguna dapat dengan mudah mengantri lebih gerakan dari yang mereka inginkan tanpa menyadarinya dan bergerak baik-masa lalu lokasi yang diinginkan.

Metodologi umum yang telah terbukti untuk bekerja adalah dengan hanya membatasi jumlah joging perintah yang dikirimkan ke Grbl. Hal ini dapat dilakukan dengan kunci mengulangi ketika ditekan menonaktifkan. Perencana penyangga ukuran antrian dapat dilacak sehingga hanya segelintir gerakan dapat antrian dan dieksekusi.

Sinkronisasi

Untuk situasi ketika GUI perlu menjalankan set khusus perintah untuk perubahan alat, auto-leveling, dll, ada sering perlu cara untuk mengetahui kapan Grbl telah menyelesaikan tugas dan buffer perencana kosong. Cara termudah mutlak untuk melakukan ini adalah untuk memasukkan perintah diam G4 P0.01, di mana P adalah dalam detik dan harus lebih besar dari 0,0. Ini bertindak sebagai kekuatan-sinkronisasi

cepat dan memastikan buffer perencana benar-benar kosong sebelum GUI mengirimkan tugas berikutnya untuk mengeksekusi.

Dalam dokumen Tutorial Conecting GBRL to ARDUINO UNO (Halaman 31-45)

Dokumen terkait