Bilangan dan representasi data di perangkat kendali: biner, heksadesimal, bit dan byte, bilangan bertanda, skala bilangan bulat, titik mengambang, dan luapan
Seorang teknisi membaca suhu ruang pendingin dari pengendali melalui alat baca data dan mendapat angka 65.516, padahal suhu sebenarnya sekitar minus 2 derajat. Pada mesin lain, ia memasukkan setelan suhu bilas 82 dan air menjadi dingin, karena pengendali menyimpan suhu dalam sepersepuluh derajat sehingga angka itu dibaca 8,2 derajat. Kedua kesalahan berasal dari cara perangkat kendali menyimpan bilangan. Bab ini menjelaskan biner dan heksadesimal, bit, byte, dan bit status, bilangan bertanda dengan komplemen dua, bilangan bulat berskala, titik mengambang dan batas ketelitiannya, luapan pada penghitung, paritas, dan kode tampilan serta kode galat, supaya angka dari perangkat kendali dapat dibaca dengan benar.
Seorang teknisi menyambungkan alat baca data ke pengendali ruang pendingin sebuah dapur untuk mencatat suhu. Alat itu menampilkan angka 65.516 untuk suhu ruang. Ia mengira sensornya rusak dan hampir memesan pengganti. Rekannya yang pernah membaca manual pengendali itu menjelaskan bahwa suhu disimpan sebagai bilangan bertanda dalam sepersepuluh derajat; angka 65.516 yang dibaca sebagai bilangan tak bertanda sebenarnya berarti minus 20, yaitu minus 2,0 derajat. Sensornya baik.
Pada minggu yang sama, teknisi yang sama mengubah setelan suhu bilas mesin pencuci piring lewat aplikasi servis dan memasukkan angka 82. Air bilas menjadi dingin dan mesin menampilkan galat. Pengendali itu menyimpan suhu dalam sepersepuluh derajat, sehingga angka 82 berarti 8,2 derajat; angka yang benar adalah 820. Perangkat kendali tidak menyimpan "suhu" atau "tekanan"; ia menyimpan bilangan bulat dalam pola bit, dan artinya ditentukan oleh aturan yang ditulis pabrik. Bab ini menjelaskan aturan-aturan itu.
Batas pembahasan
Bab ini membahas bilangan dan data di perangkat kendali: biner, heksadesimal, bit, byte, dan word, bit status dan penyaringan bit, bilangan bertanda, bilangan bulat berskala, titik mengambang, luapan, paritas, dan kode tampilan serta kode galat. Dekomposisi persoalan, algoritma, dan makna data ada di Bab 1; logika Boole dan tabel kebenaran di Bab 7 · Sistem, Diagram & Diagnosis; papan kendali dan pengubah analog ke digital di Bab 2; angka penting dan pembulatan di Bab 3 · Satuan & Matematika; eksponen dan notasi ilmiah di Bab 9 · Satuan & Matematika; I/O analog dan penskalaan PLC di Bab 66 · Kelistrikan & Kendali. Pemrograman dan format berkas tidak dibahas. Mengubah parameter mesin mengikuti izin dan petunjuk pabrik. Sumbernya adalah narasi Berpikir Komputasional, narasi Teknik Elektro dan Elektronika, narasi Satuan dan Pengukuran, dan narasi Teknik Air dan Lingkungan, ditambah pengetahuan komputasi umum yang ditandai di peta sumber. Aturan representasi bilangan adalah aturan baku (nilai literatur umum); angka contoh adalah angka latihan.
Mengapa perangkat kendali memakai biner
Rangkaian digital paling andal bila hanya membedakan dua keadaan: ada tegangan atau tidak, tertutup atau terbuka. Satu keadaan itu disebut bit, bernilai 0 atau 1. Narasi Teknik Elektro dan Elektronika mengutip buku elektronika dasar yang, untuk membuktikan sebuah aturan logika, mencantumkan empat kemungkinan gabungan biner dua masukan. Dengan bit ada pola yang mungkin.
Narasi Berpikir Komputasional mengutip buku panduan elektronika bahwa mikrokontroler yang populer berukuran 4, 8, 16, dan 32 bit, yaitu lebar data yang diolah sekaligus, dan bahwa himpunan instruksi adalah kumpulan semua instruksi yang dapat dilakukan pengolah. Lebar data itu menentukan rentang bilangan yang dapat disimpan dalam satu langkah, dan karena itu juga batas yang dapat terlewati bila nilai terlalu besar.
Biner dan desimal
Dalam desimal, setiap tempat bernilai sepuluh kali tempat di kanannya. Dalam biner, setiap tempat bernilai dua kali:
Bilangan tak bertanda dengan bit berkisar dari 0 sampai : 0 sampai 255 untuk 8 bit, 0 sampai 65.535 untuk 16 bit. Untuk mengubah desimal ke biner, bagi berulang dengan 2 dan catat sisanya dari bawah ke atas, atau kurangkan pangkat dua terbesar yang muat secara berurutan.
Narasi Teknik Elektro dan Elektronika mengutip buku elektronika praktis yang menanyakan beda tegangan untuk bit paling tidak berarti, dan buku panduan elektronika tentang pengubah digital ke analog berbobot biner. Bit paling kanan bernilai terkecil; pada pengubah analog ke digital, bit itu sama dengan satu langkah tegangan seperti di Bab 2.
Heksadesimal
Bilangan biner panjang sulit dibaca. Heksadesimal memakai enam belas lambang, 0 sampai 9 dan A sampai F, dan setiap lambang mewakili tepat empat bit:
| Biner | Heks | Desimal |
|---|---|---|
| 0000 | 0 | 0 |
| 1001 | 9 | 9 |
| 1010 | A | 10 |
| 1111 | F | 15 |
Bilangan 182 ditulis atau B6 dalam heksadesimal, biasanya ditandai awalan 0x atau akhiran h. Heksadesimal dipakai untuk alamat register, kode galat, dan isi memori di manual servis. Membaca heksadesimal berarti memecahnya per empat bit: 0x25 adalah 0010 0101.
Narasi Satuan dan Pengukuran mengutip buku dasar instrumentasi dan pengukuran bahwa tampilan dilakukan dengan sejumlah angka tertentu; tampilan tujuh segmen pada mesin dapat menampilkan heksadesimal, sehingga huruf seperti b, C, d, E, dan F pada layar kecil sering berarti angka 11 sampai 15, tidak singkatan.
Sebagian perangkat, terutama jam waktu nyata dan tampilan angka, memakai bentuk desimal berkode biner: setiap angka desimal disimpan dalam empat bit tersendiri. Angka 45 disimpan sebagai 0100 0101, yang bila dibaca sebagai heksadesimal tampak seperti 0x45. Bila jam pengendali menunjukkan pukul 0x23, dalam bentuk ini artinya pukul 23, tidak 35. Manual menyebut bentuk mana yang dipakai setiap register.
Bit, byte, word, dan bit status
Delapan bit membentuk satu byte, dan dua byte membentuk satu word 16 bit pada banyak perangkat. Selain menyimpan bilangan, sebuah word sering dipakai sebagai kumpulan bit status, dengan setiap bit berarti satu keadaan: pintu tertutup, pemanas menyala, level tercapai, alarm aktif. Narasi Teknik Elektro dan Elektronika mengutip buku panduan elektronika tentang bit pembagi yang dapat dikendalikan mikrokontroler, dan modul instalasi motor listrik bahwa pada PLC tertentu terdapat bit-bit khusus dengan fungsi khusus.
Untuk membaca satu bit dari sebuah word, dipakai penyaringan dengan operasi DAN: word dikalikan bit demi bit dengan pola yang hanya memuat 1 di posisi yang ingin dilihat. Hasil bukan nol berarti bit itu menyala. Untuk menyalakan satu bit tanpa mengubah yang lain dipakai operasi ATAU, dan untuk mematikannya operasi DAN dengan pola kebalikan. Aturan operasi ini sama dengan logika Boole di Bab 7 · Sistem, Diagram & Diagnosis, hanya dikerjakan pada setiap bit sekaligus.
Bila sebuah nilai menempati lebih dari satu byte, urutan byte di memori atau di kabel komunikasi juga harus diketahui. Sebagian perangkat mengirim byte yang lebih berarti lebih dulu, sebagian sebaliknya. Nilai 16 bit 0x1234 yang dikirim dengan urutan terbalik terbaca 0x3412, yaitu 13.330, bukan 4.660. Bila nilai yang terbaca selalu "aneh tetapi stabil", urutan byte dan urutan register adalah dugaan pertama.
Penomoran bit biasanya dimulai dari 0 untuk bit paling kanan. Manual yang menyebut "bit 5" berarti bit keenam dari kanan, bernilai atau 0x20.
Bilangan bertanda: komplemen dua
Untuk menyimpan bilangan negatif, hampir semua perangkat memakai komplemen dua (nilai literatur umum). Pada bit, bit paling kiri bernilai negatif, , dan bit lain positif seperti biasa. Rentang 16 bit bertanda menjadi sampai .
Aturan praktis membaca bilangan 16 bit yang mungkin bertanda: bila angka tak bertandanya 32.768 atau lebih, kurangkan 65.536:
Narasi Teknik Elektro dan Elektronika mengutip buku dasar instrumentasi dan pengukuran tentang pengubah 10 bit dengan rentang penuh plus minus 10 V; besaran yang dapat negatif, seperti tegangan dua arah atau suhu di bawah nol, harus disimpan dan dibaca sebagai bilangan bertanda. Kasus pembuka terjadi karena alat baca diatur membaca bilangan tak bertanda.
Untuk 8 bit, rentang bertanda adalah sampai , dan angka tak bertanda 128 atau lebih dikurangi 256. Bila nilai bertanda 8 bit dipindahkan ke register 16 bit, bit tandanya harus diperluas ke kiri; tanpa itu, yang berpola 1111 1111 berubah menjadi . Nilai negatif kecil yang tiba-tiba terbaca sebagai angka positif sekitar 250 atau sekitar 65.500 hampir selalu disebabkan kesalahan tanda seperti ini.
Bilangan bulat berskala dan titik tetap
Banyak pengendali tidak menyimpan angka desimal, tetapi bilangan bulat yang dikalikan faktor skala. Suhu 65,5 °C disimpan sebagai 655 dengan skala 0,1; tekanan 3,45 bar disimpan sebagai 345 dengan skala 0,01. Cara ini disebut titik tetap: letak koma desimal tetap dan disepakati, tidak disimpan.
Akibatnya:
- Setiap register mempunyai satuan dan skala yang harus dibaca di manual.
- Ketelitian dibatasi oleh skala: dengan skala 0,1 °C, perbedaan 0,05 °C tidak dapat disimpan.
- Rentang dibatasi oleh lebar bit dan skala: 16 bit bertanda dengan skala 0,1 hanya dapat menyimpan sampai .
Narasi Teknik Air dan Lingkungan mengutip manual matematika operator pengolahan air bahwa bilangan dibulatkan untuk mengurangi jumlah angka di kanan koma desimal, dan narasi Satuan dan Pengukuran mengutip buku matematika operator sistem air bahwa 48 yang dibulatkan ke puluhan terdekat menjadi 50. Pengendali dengan skala tetap melakukan pembulatan seperti itu setiap kali menyimpan nilai, sehingga nilai yang dibaca kembali dapat sedikit berbeda dari nilai yang dimasukkan.
Titik mengambang
Untuk rentang yang sangat lebar, sebagian perangkat memakai bilangan titik mengambang, yang menyimpan angka penting dan pangkat secara terpisah seperti notasi ilmiah di Bab 9 · Satuan & Matematika. Narasi Teknik Elektro dan Elektronika mengutip buku manual perbaikan elektronika bahwa koprosesor titik mengambang adalah rangkaian khusus untuk mempercepat hitungan matematika.
Format titik mengambang 32 bit yang umum menyimpan sekitar tujuh angka penting desimal (nilai literatur umum). Akibat yang perlu diketahui:
- Bilangan besar kehilangan angka di belakang: di atas sekitar 16,8 juta, penambahan 1 tidak lagi mengubah nilainya.
- Pecahan desimal sederhana, seperti 0,1, tidak dapat disimpan tepat, sehingga dapat tersimpan sedikit berbeda dari 0,3.
- Membandingkan dua nilai titik mengambang dengan "sama dengan" tepat sering gagal; yang dibandingkan adalah selisihnya terhadap toleransi.
Register titik mengambang 32 bit biasanya menempati dua register 16 bit, dan urutan kedua register itu berbeda antarpabrik. Membaca dengan urutan yang salah menghasilkan angka yang sama sekali tidak masuk akal.
Format titik mengambang juga mempunyai pola khusus untuk tak hingga dan untuk "bukan bilangan", yang muncul misalnya bila pengendali membagi dengan nol karena sensor putus. Alat baca sering menampilkannya sebagai inf atau NaN. Tanda itu adalah petunjuk diagnosis yang berguna: ada hitungan di pengendali yang menerima masukan tidak sah.
Luapan dan pembatasan
Bila hasil hitungan melebihi rentang lebar bit, terjadi luapan. Pada bilangan tak bertanda, nilainya berputar kembali dari nol: penghitung 8 bit yang bernilai 250 ditambah 10 menjadi 4. Pada bilangan bertanda, luapan dapat mengubah bilangan positif besar menjadi negatif.
Luapan sering muncul pada penghitung waktu. Penghitung milidetik 16 bit tak bertanda berputar setiap 65,5 detik; penghitung milidetik 32 bit berputar setiap sekitar 49,7 hari. Program yang menghitung selang waktu dengan cara yang benar tetap bekerja melewati putaran itu, tetapi program yang salah dapat berhenti atau berkelakuan aneh tepat setelah mesin menyala berhari-hari. Gejala "mesin macet setiap sekitar tujuh minggu dan normal setelah dimatikan" dapat berasal dari hal seperti ini.
Sebagian pengendali memakai pembatasan sebagai pengganti luapan: nilai yang melebihi batas ditahan di batas tertinggi. Pembatasan lebih aman daripada putaran, tetapi menyembunyikan bahwa nilai sebenarnya lebih besar.
Paritas dan pemeriksaan sederhana
Data yang dikirim atau disimpan dapat berubah karena gangguan. Cara pemeriksaan paling sederhana adalah bit paritas: satu bit tambahan yang membuat jumlah bit 1 genap (paritas genap) atau ganjil (paritas ganjil). Narasi Teknik Elektro dan Elektronika mengutip buku ringkasan teknik elektro bahwa gerbang ATAU eksklusif adalah pembangkit dan pendeteksi paritas ganjil.
Paritas mendeteksi perubahan satu bit, tetapi tidak dua bit sekaligus. Pemeriksaan yang lebih kuat, seperti jumlah periksa dan pemeriksaan siklik, dipakai pada komunikasi data dan dibahas di Bab 5.
Kode tampilan dan kode galat
Layar mesin sering menampilkan kode singkat, bukan kalimat. Narasi Berpikir Komputasional mengutip manual pemandu operator sebuah mesin cuci bahwa tanda NIV 2 menunjukkan level air yang tercapai adalah level 2. Kode seperti itu hanya dapat dibaca dengan tabel dari manual mesin yang sama; kode yang sama pada mesin lain atau versi program lain dapat berarti hal berbeda.
Kode galat yang tersimpan juga sering berupa bilangan atau pola bit: satu angka dapat memuat beberapa galat sekaligus bila setiap bit berarti satu galat. Kode 0x05, misalnya, dapat berarti bit 0 dan bit 2 menyala, yaitu dua galat berbeda. Mencatat kode persis seperti tertulis, termasuk huruf dan awalan heksadesimal, mencegah salah baca. Laporan servis menyebut kode, arti menurut manual, versi program, dan keadaan mesin saat kode muncul, supaya pola galat dapat dianalisis kemudian seperti di Bab 12 · Sistem, Diagram & Diagnosis.
Contoh kerja
Contoh 1: biner ke desimal dan sebaliknya. . Desimal 200 menjadi biner: , jadi .
Contoh 2: membaca word status. Manual sebuah pengendali (angka latihan) menyebut bit 0 pintu tertutup, bit 2 pemanas menyala, dan bit 5 alarm level rendah. Register status terbaca 0x0025. Dalam biner, 0x25 adalah 0010 0101: bit 0, bit 2, dan bit 5 menyala. Pintu tertutup, pemanas menyala, dan alarm level rendah aktif bersamaan, keadaan yang patut diperiksa karena pemanas menyala dengan level rendah.
Contoh 3: penyaringan bit. Untuk memeriksa bit 5 saja, DAN sama dengan , tidak nol, sehingga alarm aktif. Untuk bit 1, DAN sama dengan 0, sehingga bit itu mati.
Contoh 4: suhu negatif. Alat baca menunjukkan 65.516 untuk register suhu 16 bit dengan skala 0,1 °C. Karena 65.516 lebih dari 32.767, nilai bertandanya , dikali 0,1 menjadi °C. Alat baca diatur ulang membaca bilangan bertanda.
Contoh 5: setelan berskala. Register setelan suhu bilas berskala 0,1 °C. Untuk 82 °C, nilai yang dimasukkan . Memasukkan 82 menghasilkan 8,2 °C, seperti pada kasus pembuka. Sebelum menyimpan, nilai dibaca kembali dari layar mesin dalam satuan derajat untuk memastikan.
Contoh 6: pengubah dua arah. Pengubah 10 bit dengan rentang plus minus 10 V mempunyai langkah mV. Tegangan negatif disimpan sebagai bilangan bertanda atau dengan pergeseran, tergantung rancangan; lembar data menentukan cara membacanya.
Contoh 7: luapan penghitung waktu. Penghitung milidetik 32 bit tak bertanda berputar setelah ms, yaitu hari. Pengendali yang macet setiap sekitar 50 hari dan normal kembali setelah dimatikan diduga mempunyai masalah seperti ini; pabrik ditanya apakah ada pembaruan program untuk itu.
Contoh 8: penghitung energi titik mengambang. Penghitung energi disimpan sebagai titik mengambang 32 bit dalam watt-jam. Setelah mencapai 16.777.216 Wh, sekitar 16,8 MWh, penambahan 1 Wh tidak lagi mengubah nilai, sehingga penghitung tampak berhenti walaupun mesin bekerja. Penghitung disimpan dalam kilowatt-jam, dalam bilangan bulat 32 bit, atau direset berkala dengan pencatatan.
Contoh 9: paritas genap. Data 1011 0110 mempunyai lima bit 1. Dengan paritas genap, bit paritas 1 supaya jumlahnya enam. Bila satu bit berubah selama pengiriman, jumlahnya menjadi ganjil dan penerima tahu ada galat; bila dua bit berubah, jumlahnya tetap genap dan galat tidak terdeteksi.
Kondisi berhenti
Hentikan pengubahan parameter dan minta petunjuk pabrik atau penyelia bila:
- Satuan, skala, atau tanda sebuah register tidak tertulis jelas di manual versi yang sama dengan mesin.
- Nilai yang dibaca kembali setelah disimpan berbeda dari yang dimaksud.
- Parameter yang akan diubah menyangkut batas pengaman, seperti suhu tertinggi atau waktu tunggu kunci pintu.
- Kode galat tidak terdapat di tabel manual atau artinya berbeda antara versi program.
- Gejala berulang pada selang waktu tetap yang panjang, seperti beberapa minggu, menunjuk masalah program yang memerlukan pembaruan dari pabrik.
Salah tafsir yang sering terjadi
- "Angka di register adalah nilai sebenarnya." Angka itu harus dikalikan skala dan dibaca dengan tanda yang benar.
- "Angka 65.516 berarti sensor rusak." Bisa jadi bilangan negatif yang dibaca tak bertanda.
- "Huruf di layar adalah singkatan." Pada tampilan tujuh segmen, huruf sering berarti angka heksadesimal.
- "Titik mengambang selalu teliti." Ketelitiannya terbatas sekitar tujuh angka penting.
- "Luapan hanya terjadi pada komputer besar." Penghitung kecil di pengendali mesin juga dapat meluap.
- "Kode galat yang sama berarti sama di semua mesin." Arti kode bergantung pada mesin dan versi programnya.
Hubungan dengan bab lain
Bab 7 · Sistem, Diagram & Diagnosis memberi logika Boole, Bab 2 papan kendali dan pengubah analog ke digital, Bab 3 · Satuan & Matematika pembulatan, Bab 9 · Satuan & Matematika notasi ilmiah, dan Bab 66 · Kelistrikan & Kendali penskalaan I/O analog PLC. Bab berikutnya di rak ini membahas program kendali sebagai algoritma waktu nyata.
Latihan dan pembahasan
- Ubah 0x3F ke biner dan desimal.
- Register 16 bit bertanda terbaca 0xFFF6. Berapa nilainya?
- Register tekanan bernilai 1.234 dengan skala 0,01 bar. Berapa tekanannya?
- Penghitung 8 bit tak bertanda bernilai 250, lalu ditambah 10. Berapa nilainya, dan apa yang terjadi?
- Mengapa penghitung energi titik mengambang 32 bit dapat tampak berhenti?
- Hitung bit paritas genap untuk 0110 0011.
Kunci jawaban beralasan
- 0x3F adalah 0011 1111, yaitu .
- 0xFFF6 adalah 65.526 tak bertanda; karena lebih dari 32.767, nilai bertandanya .
- bar. Satuan dan skala dipastikan dari manual, karena register yang sama dapat berskala 0,1 pada perangkat lain.
- . Penghitung meluap dan berputar dari nol; program yang tidak memperhitungkan putaran dapat menganggap waktu atau jumlah mundur.
- Titik mengambang 32 bit hanya menyimpan sekitar tujuh angka penting. Di atas sekitar 16,8 juta, langkah terkecil yang dapat disimpan lebih dari 1, sehingga penambahan 1 Wh hilang dalam pembulatan.
- 0110 0011 mempunyai empat bit 1, sudah genap, sehingga bit paritas genap 0.
Referensi
Bab terkait
- Dekomposisi, algoritma, data, dan otomasi keputusan sederhanaKomputasional · Bab 1
- Logika urutan dan diagram keadaan: tabel kebenaran, aljabar Boole dasar, diagram waktu, diagram keadaan, diagram tangga, dan urutan program mesinSistem, Diagram & Diagnosis · Bab 7
- Papan kendali dan mikrokontroler: bagian mikrokontroler, catu daya dan reset, masukan digital dan analog, keluaran dan penggerak, dan diagnosis papanKomputasional · Bab 2
- Satuan, dimensi, konversi, dan angka pentingSatuan & Matematika · Bab 3
- Eksponen, logaritma, dan desibel: pangkat dan notasi ilmiah, prefiks, pertumbuhan dan peluruhan eksponensial, logaritma, skala logaritmik, dan desibel daya dan teganganSatuan & Matematika · Bab 9
- PLC lanjutan: I/O analog, penskalaan, PID, HMI, dan komunikasiKelistrikan & Kendali · Bab 66
- Komunikasi data perangkat lapangan: serial, bus dan alamat, protokol tanya-jawab, register, pemeriksaan galat, dan diagnosisKomputasional · Bab 5
Uji diri · 3 soal
Cek pemahaman sebelum berpindah bab
Tulis jawaban dengan kata-kata Anda sendiri, lalu bandingkan dengan pembahasan dari latihan asli bab ini. Sistem tidak menebak benar-salah jawaban terbuka; Anda yang menilai bagian mana yang sudah dipahami.
Ubah 0x3F ke biner dan desimal.
Register 16 bit bertanda terbaca 0xFFF6. Berapa nilainya?
Register tekanan bernilai 1.234 dengan skala 0,01 bar. Berapa tekanannya?
Bab terdekat
Urutan baca menurut rak: Komputasional · Bab 4.
Urutan baca menurut rak: Komputasional · Bab 2.
Bab lain dalam Berpikir Komputasional.