ASCII untuk Data PLC: Kod Perpuluhan, Heksadesimal dan Kawalan
Pelajari cara aksara ASCII, nilai perpuluhan, bait heksadesimal dan kod kawalan muncul dalam rentetan PLC dan mesej bersiri, dengan kaedah praktikal untuk mendiagnosis kerosakan pembingkaian dan pe...
ASCII kekal lazim dalam projek PLC kerana banyak peranti industri bertukar teks satu bait pada satu-satu masa. Pembaca kod bar, pencetak label, penimbang, pemacu, get laluan bersiri dan terminal pengendali sering mewakili arahan serta ukuran sebagai kod aksara. Jurutera yang boleh beralih antara aksara, nilai perpuluhan dan bait perenambelasan menyelesaikan masalah pautan ini dengan lebih pantas.
Perkara yang ditakrifkan oleh ASCII
American Standard Code for Information Interchange asal ialah set aksara tujuh bit. Ia mentakrifkan 128 nilai, bernombor dari 0 hingga 127. Nilai 0 hingga 31 dan 127 ialah aksara kawalan. Nilai 32 hingga 126 ialah aksara boleh cetak, termasuk huruf, digit, tanda baca dan ruang.
Spesifikasi RFC 20 yang dihoskan oleh IETF mendokumentasikan kedudukan kod dan makna yang dimaksudkan. Sistem moden biasanya menyimpan aksara ASCII dalam bait lapan bit. Bit tertinggi kekal sifar untuk ASCII standard.
Perpuluhan, perenambelasan dan perduaan ialah bait yang sama
Tag PLC mungkin memaparkan nilai yang sama dalam beberapa format nombor. Huruf besar A ialah 65 dalam perpuluhan, 41 dalam perenambelasan dan 01000001 dalam perduaan. Digit 0 ialah 48 dalam perpuluhan atau 30 dalam perenambelasan. Ini bukan aksara yang berbeza. Ini ialah paparan berbeza bagi corak angka yang sama.
Perenambelasan berguna semasa pentauliahan kerana satu bait boleh ditulis dalam dua digit heks. Tangkapan paket, pemantau bersiri dan manual peranti juga cenderung memaparkan nilai bait dalam heks. Perpuluhan selalunya lebih mudah apabila arahan PLC memerlukan pemalar integer.
Kod kawalan penting dalam mesej industri
Banyak protokol bersiri menggunakan aksara kawalan sebagai pembatas. Carriage return ialah 13 dalam perpuluhan atau 0D dalam heks. Line feed ialah 10 dalam perpuluhan atau 0A dalam heks. Start of Text ialah 02 dalam heks, manakala End of Text ialah 03 dalam heks. Peranti mungkin mengabaikan arahan yang sah jika penamat yang diperlukan tiada.
Jangan anggap setiap peranti menggunakan CR/LF. Sesetengahnya hanya memerlukan CR. Yang lain menggunakan pembatas boleh cetak, panjang mesej tetap atau bait jumlah semak. Sahkan bingkai tepat dalam manual protokol pengilang.
Bagaimana rentetan PLC menjadi tatasusunan bait
Platform PLC menyimpan rentetan dengan cara yang berbeza. Sesetengahnya meletakkan panjang semasa sebelum data aksara. Yang lain memperuntukkan tatasusunan tetap dan menamatkan teks dengan bait sifar. Apabila data merentasi sempadan protokol, peranti penerima melihat bait dan bukannya jenis rentetan dalaman pengawal.
Periksa kedua-dua panjang rentetan yang diisytiharkan dan penimbal asas. Bait lama selepas panjang semasa boleh muncul dalam data yang dihantar jika rutin menghantar keseluruhan penimbal. Kosongkan destinasi atau hantar hanya bilangan aksara aktif.
Kaedah diagnosis praktikal
- Tangkap bait yang dihantar dengan tepat menggunakan pemantau bersiri, penganalisis protokol atau halaman diagnosis get laluan.
- Tulis setiap bait dalam heks dan petakan semula nilai boleh cetak kepada aksara.
- Tandakan bait pembingkaian, penamat, pemisah, medan panjang dan jumlah semak.
- Bandingkan tangkapan dengan manual peranti, termasuk ruang dan penggunaan huruf besar atau kecil.
- Ulang tangkapan untuk mesej yang diketahui baik dan bandingkan kedudukan bait.
Pendekatan pada peringkat bait ini memisahkan kerosakan pemformatan daripada masalah pendawaian, kadar baud dan pariti. Jika tangkapan menunjukkan teks yang boleh dibaca tetapi tidak lengkap, tumpukan pada pembinaan rentetan. Jika setiap bait salah, sahkan tetapan fizikal dan bersiri terlebih dahulu.
Ralat pelaksanaan yang lazim
Mengelirukan digit dengan nilai angkanya
Aksara “5” ialah ASCII 53 dalam perpuluhan, bukannya nilai integer 5. Menukar nombor yang diukur kepada teks memerlukan rutin pemformatan. Menyalin integer mentah ke dalam penimbal aksara menghasilkan bait kawalan.
Mencampurkan teks heks dengan bait perduaan
Teks “41” mengandungi dua aksara: 34 heks dan 31 heks. Satu bait dengan nilai 41 heks mewakili huruf A. Tentukan sama ada protokol memerlukan teks heks yang boleh dibaca manusia atau data perduaan mentah.
Mengabaikan pengekodan melebihi ASCII
ASCII merangkumi huruf Inggeris dan set simbol yang terhad. UTF-8 menggunakan nilai bait yang sama untuk 128 aksara pertama, tetapi aksara bukan ASCII menggunakan berbilang bait. Peranti lama mungkin menolak bait tersebut atau mengiranya dengan tidak betul.
Panduan reka bentuk untuk kod PLC yang mudah diselenggara
Kekalkan pemformatan protokol dalam satu rutin. Namakan pemalar untuk kod kawalan dan bukannya menyebarkan literal angka dalam logik tangga atau teks berstruktur. Catat penimbal penghantaran akhir dalam heks semasa pentauliahan. Sertakan contoh dalam dokumentasi projek.
Apabila protokol berkembang melebihi pembingkaian teks mudah, gunakan mesin keadaan yang ditakrifkan. Jejaki kedudukan penerimaan, tamat masa, keadaan bingkai dan hasil pengesahan secara berasingan. Ini memudahkan diagnosis percubaan semula dan mesej tidak sah.
Untuk corak pengendalian data yang lebih luas, lihat pengulangan melalui tatasusunan dalam sistem PLC. Untuk peranti berangkaian, panduan menggunakan peranti Modbus TCP menambah konteks pembingkaian dan pentauliahan.
Senarai semak pentauliahan
- Sahkan set aksara dan susunan bait.
- Sahkan pembatas dan penamat dalam heks.
- Periksa sama ada mesej mempunyai panjang tetap atau panjang yang diawali.
- Bezakan teks heks boleh cetak daripada data perduaan mentah.
- Sahkan tingkah laku tamat masa, percubaan semula dan pengosongan penimbal.
- Arkibkan tangkapan bait yang diketahui baik bersama fail projek.
ASCII adalah mudah, tetapi kegagalan industri sering tersembunyi dalam satu bait yang hilang atau tersalah baca. Anggap mesej sebagai urutan nilai angka terlebih dahulu. Tukarkannya semula kepada teks hanya selepas bingkai difahami.