Pil biru STM32F103 sebagai PLC

Pendahuluan


Tentunya, setiap orang yang pernah memulai atau baru mulai belajar mikrokontroler STM32 memiliki papan debugging buatan China, yang dijuluki wisatawan asing Pil Biru (tablet biru).

Papan ini didasarkan pada chip STM32F103C8T6, yang merupakan prosesor 32-bit berdasarkan inti Cortex-M3. Gambar di bawah ini menunjukkan tugas papan dan pin klasik.

Penampilan papan klasik
Gambar saya

Penugasan pin
Gambar saya

Bagaimana cara membuat PLC dari cara improvisasi dalam 5 menit?


Seperti yang sering terjadi, pelajaran dari Internet telah mengajarkan Anda cara bekerja dengan pengatur waktu, USART, beralih status keluaran, dan bahkan bekerja dengan DMA! Dan setelah semua tes, papan aman mengambil tempat di rak suku cadang - hal yang baik, tetapi sejauh ini tidak ada aplikasi yang layak telah ditemukan.

Jika Anda membaca artikel ini, maka saatnya untuk mengambil papan dari rak dan meniup debu, karena sekarang kita akan membuat pengontrol logika yang dapat diprogram berdasarkan itu yang akan memenuhi standar internasional IEC61131-3.

Setelah mikroprosesor di-flash dengan firmware yang terpasang (sayangnya, hingga publikasi kode sumber dalam paket tersedia), mikroprosesor akan dapat berfungsi sebagai PLC. Dan hal yang paling menarik adalah board dapat diprogram menggunakan perangkat lunak standar GX Developer FX yang dirancang untuk pemrograman pengontrol Mitsubishi FX2N. Perangkat lunak ini (dan Russified) saya bebas unduh dari situs web resmi Mitsubishi setelah mendaftar.

Jadi, fitur baru apa yang diperoleh papan biru kecil kami setelah firmware?

Pertama, Anda sekarang dapat menghubungkannya ke komputer menggunakan konektor micro-USB. Untuk memberikan pertukaran data antara lingkungan pemrograman dan pengontrol, Anda harus menginstal driver port COM virtual. Mereka dapat diunduh dari tautan dari dokumen bluepill_update.pdf di lampiran. Setelah menginstal driver dan menghubungkan papan ke USB, perangkat baru akan muncul di perangkat komputer pribadi, seperti yang ditunjukkan pada gambar.

Jenis konfigurasi perangkat keras pengontrol setelah menginstal driver
Gambar saya


Sekarang Anda dapat menjalankan FX Developer GX yang kami instal. Setelah memulai program, Anda akan memiliki jendela berikut:

Peluncuran pertama FX Pengembang GX
Gambar saya

Langkah selanjutnya adalah membuat proyek baru. Dalam menu Proyek - Proyek baru. Jendela ini akan terbuka untuk Anda:

Proyek Baru di FX Pengembang GX
gambar

Anda tidak dapat mengubah apa pun di sini, dan klik OK. Jadi - kami memiliki proyek kosong, dan sekarang kami perlu mengkonfigurasi koneksi online ke papan tulis.

Untuk melakukan ini, pilih di menu Online - Pengaturan Transfer. Jendela ini akan terbuka untuk Anda:

Menyiapkan konektivitas di GX Developer FX
gambar

Anda tidak dapat mengubah apa pun di sini, dan klik OK. Jadi - kami memiliki proyek kosong, dan sekarang kami perlu mengkonfigurasi koneksi online ke papan tulis.

Untuk melakukan ini, pilih di menu Online - Pengaturan Transfer. Jendela ini akan terbuka untuk Anda:

Menyiapkan konektivitas di GX Developer FX
gambar

Dalam seri antarmuka PC, pilih Ordinal (ini terjemahan yang salah - seharusnya

Serial) dan Anda akan melihat jendela ini:

Penyiapan port serial
gambar

Di sini kita memilih nomor port COM yang sesuai dengan yang terlihat di perangkat komputer pribadi. Ini disebut STMicroelectronics Virtual COM Port (COM2) dalam kasus kami. Sekarang kita dapat memeriksa apakah ada koneksi. Untuk melakukan ini, klik tombol Uji Koneksi di dialog sebelumnya. Jika semuanya beres, maka Anda akan memiliki pesan seperti pada gambar di bawah ini:

Pemeriksaan koneksi
Gambar saya

Dan sekarang kita dapat dengan aman melanjutkan ke hal yang paling menarik - memprogram pengontrol. Versi ini mendukung tiga bahasa: IL - instruksi bahasa, tipe tampilan string. LAD - bahasa logika tangga, tipe tampilan visual. SFC - bahasa blok berturut-turut, jenis tampilan visual. Dan Anda selalu dapat beralih antara menampilkan bahasa IL dan LAD dan sebaliknya. Berikut ini adalah program LAD yang khas:

Program Manajemen - LAD
Gambar saya

Dan di sini adalah program yang sama, tetapi dalam bahasa IL:

Program Manajemen - IL
Gambar saya

Tentu saja, ini semua baik, tetapi saya ingin melihat ke dalam logika program - untuk memahami apa yang terjadi di sana. Untuk melakukan ini, tekan tombol F3 - dan jika program ditulis ke controller, tampilan akan dialihkan ke mode pemantauan online. Untuk merekam program, Anda perlu memilih di menu Online - Tulis ke controller.

Jendela berikut akan ditampilkan:

Pemilihan elemen proyek untuk ditulis ke controller
Gambar saya

Di jendela, pilih opsi untuk merekam (di sini seluruh program dan parameter pengontrol dipilih), dan klik tombol Jalankan. Program ini akan memberi tahu Anda bahwa untuk merekam pengontrol akan beralih ke mode STOP (Anda akan melihat ini oleh kepunahan LED yang terhubung ke PC13), ia akan merekam dan menempatkan pengontrol ke mode RUN.

Dan ini adalah bagaimana kode sumber untuk program LAD akan ditampilkan online:

Jenis bagian dari program dalam bahasa LAD dalam mode pemantauan online
Gambar saya

Dan bagian yang sama dari program IL online:

Jenis bagian dari program dalam pemantauan online IL
Gambar saya

Dan di sini adalah kode sumber SFC:

SFC - penampilan program
Gambar saya

Untuk kenyamanan pengujian, saya menggunakan pengembangan pengujian lama dari perangkat keras pengendali, yang karena satu dan lain alasan belum digunakan. Salah satu papan ini ditunjukkan pada gambar di bawah ini:

Papan Debug - Pengontrol Menengah
Gambar saya

Papan ini menyediakan isolasi galvanik untuk UART1, UART2, dan bus 1-kawat. Input dan output terpisah juga diisolasi secara galvanis. Mnemonik berikut diterima untuk program: X1 adalah input dengan alamat 1, Y2 adalah output dengan alamat 2, M104 adalah operan bit dengan alamat 104, D1000 adalah register umum dengan alamat 1000. Versi firmware yang ada dalam lampiran memiliki batasan berikut: Jumlah langkah program adalah 1000 (maksimum yang dimungkinkan adalah 8000).
Jumlah register - 2000 (kisaran D0000-D1999). Jumlah variabel bit - 3072 (kisaran M0-M3071). UART1 - dukungan untuk master / slave Modbus RTU, jumlah budak dalam mode master -2 (kemungkinan maksimum - 128) .UART2 - dukungan untuk Modbus RTU master / slave, jumlah budak dalam mode master -2 (maksimum yang mungkin - 128).

Secara default, parameter komunikasi serial adalah 57600, 8N1. UART1 - dalam mode slave dengan alamat 1, UART2 - juga dalam mode slave dengan alamat 2.

Untuk bus 1-kawat, saat ini, dukungan hanya untuk sensor seperti DS18B20, jumlah budak -2 (maksimum yang mungkin adalah 128).

Membongkar program dari pengontrol dan mengubahnya menjadi bentuk yang dapat dibaca manusia juga didukung (Saya lebih suka LAD).

Program ini dibangun menggunakan sistem operasi real-time ChibiOS RT.

Pengaturan komunikasi pada modbus RTU dan bus 1-kawat dikonfigurasikan menggunakan program yang dapat Anda temukan di lampiran. Sebagai contoh, kami sekarang mempertimbangkan pengaturan dan pencarian sensor dengan alamat yang tidak dikenal. Setelah memulai program, Anda akan memiliki jendela ini:

Tampilan program konfigurator setelah memulai
Gambar saya

Buka tab 1-kawat dan pilih master 1-kawat, dan pastikan untuk mengklik tombol Tulis ke PLC untuk menulis ke pengontrol:

Pengaturan wizard 1-kawat
Gambar saya

Dan sekarang, setelah mengklik tombol Cari slave, sebuah jendela terbuka di mana Anda dapat memilih alamat di area D0000-D2000, mulai dari mana nilai suhu yang direkam dari sensor akan dicatat dalam bentuk angka titik mengambang.

Jendela pencarian budak 1-kawat
Gambar saya

Dan jendela di bawah ini ditampilkan setelah pencarian yang berhasil untuk semua sensor yang terhubung ke bus pertukaran data.

Jendela pencarian budak - 3 sensor suhu yang terhubung ditemukan
Gambar saya


Di sini kita dapat menambahkan sensor yang ditemukan ke konfigurasi saat ini atau sepenuhnya mengganti yang sekarang dengan yang baru. Dalam kasus kami, data suhu akan dikirim ke area register pengontrol di alamat D1500, D1502 dan D1504 dalam bentuk angka titik mengambang. Yang tersisa hanyalah menekan tombol Write to PLC dan restart papan untuk mengaktifkan konfigurasi perangkat keras baru.

Mengunduh konfigurasi baru ke controller
Gambar saya

Apa lagi yang bisa ditambahkan tentang program konfigurasi? Ada satu titik - ini adalah representasi angka floating point di pengontrol FX2N. Untuk menyederhanakan input konstanta dalam format ini, kami harus menggunakan catatan konstan dengan pengubah H. Segera setelah penerjemah pengontrol menemukan pengubah seperti itu, ia memahami bahwa sejumlah dalam format titik apung akan ditransmisikan dengan itu, tetapi dalam bentuk catatan IEE754 dengan presisi tunggal. Jendela program pada tab Konverter ditunjukkan di bawah ini.

Mengkonversi format angka titik mengambang
Gambar saya

Kesimpulan - apa yang kita dapatkan:


Waktunya telah tiba untuk pertanyaan - tetapi pada kenyataannya, berapa kecepatan controller seperti itu? Semuanya sederhana di sini - ketika polling kedua port komunikasi melalui modbus RTU (slave controller - kedua port) pada kecepatan 500 kbps dan panjang query 122 register, polling 17 sensor suhu dan menjalankan program yang paling "berat" (terdiri dari operan biner) dari 7745 langkah, siklus eksekusi adalah 21 ms. Dan tentu saja ada juga kelemahan dalam pengontrol seperti itu. Yang pertama adalah bahwa papan biru berbeda dalam kualitas rendah komponen, dan karena itu saya sarankan menerapkan daya eksternal ke papan sebelum menghubungkan mini-USB. Yang kedua adalah, tentu saja, bahwa tidak ada memori non-volatile (lebih tepatnya, ada - tetapi hanya 9 register di area yang didukung oleh baterai). Dan Anda sendiri mengerti bahwa perangkat seperti itu paling baik tidak digunakan untuk aplikasi kritis atau dalam produksi. Tetapi untuk rumah atau untuk pelatihan - ini adalah yang paling murah, terjangkau dan mudah dimengerti.

Saya mencoba membuat tinjauan luas - dan jika Anda memiliki masalah, tulis. Saya akan sangat senang jika Anda menemukan kesalahan dalam implementasi program. Saya harap artikel ini akan informatif dan Anda tidak membuang waktu untuk membacanya.

Unduhan untuk artikel ini ada di bawah ini.

Source: https://habr.com/ru/post/id424733/


All Articles