Gunakan MATLAB untuk Memanfaatkan Data IoT Langsung Anda
Jika Anda pernah melakukan analisis data dari sensor atau jenis sumber data lainnya, kemungkinan besar Anda mengikuti proses di mana Anda mengumpulkan data, Anda mengonversi data dan kemudian menggunakan MATLAB untuk memproses dan menganalisis data. Menggunakan MATLAB untuk menganalisis data adalah alat yang sangat terkenal untuk menyelesaikan tugas itu. Mengumpulkan dan mengonversi data, sehingga dapat digunakan di MATLAB, dapat memakan waktu yang sangat lama. Berkat integrasi yang diselesaikan oleh MathWorks, sekarang dimungkinkan untuk dengan mudah menghubungkan MATLAB dengan data langsung yang dipublikasikan dan berlangganan di DDS. Dengan MATLAB menjadi salah satu alat teratas yang digunakan untuk menganalisis data dan DDS dengan cepat menjadi middleware komunikasi data aplikasi IIoT, integrasi ini akan memungkinkan beberapa pembuatan prototipe dan analisis pengujian yang sangat cepat untuk pengembang. Postingan blog ini akan membahas beberapa contoh cara memublikasikan data DDS dan juga cara berlangganan data DDS menggunakan MATLAB.
Memulai
Untuk memulai, Anda harus memastikan bahwa MATLAB dan RTI Connext DDS diinstal di komputer Anda. Untuk rangkaian contoh ini, versi berikut digunakan:
- MathWorks MATLAB R2016b
- Blockset DDS MathWorks 2.9.2
- RTI Connext DDS 5.2.3 (video tutorial - instalasi untuk Linux dan Windows)
- Aplikasi Demo RTI Shapes (diinstal dengan Connext DDS; lihat tutorialnya di sini)
- PC Windows 10
Setelah Anda menginstalnya, cukup ikuti video di tautan ini untuk menyelesaikan dan memverifikasi instalasi:Video Instalasi
Inisialisasi
Setelah Anda menginstal dan memverifikasi semuanya, hanya ada beberapa langkah untuk menyiapkan DDS dengan tepat di dalam MATLAB.
- Impor tipe data yang akan digunakan dalam proyek Anda.
- Buat Peserta Domain DDS
- Buat Penulis Data DDS
- Buat Pembaca Data DDS
Mengimpor tipe data di MATLAB itu sederhana. Di DDS, tipe data ditentukan menggunakan file IDL. Pernyataan impor MATLAB dapat membaca file IDL secara langsung dan akan membuat file ".m" yang diperlukan untuk bekerja dengan tipe data tersebut dalam penerjemah MATLAB. Panggilan MATLAB berikut akan mengimpor tipe data yang disebut "ShapeType" dari file ShapeType.idl yang terletak di direktori kerja saat ini:
>> DDS.import('ShapeType.idl','matlab','f')
Sekarang tipe data tersebut tersedia untuk digunakan saat membuat DataReaders dan DataWriters topik Anda di DDS. Perhatikan juga, bahwa setelah impor selesai, langkah ini tidak lagi harus dijalankan di masa mendatang. Jenisnya akan tersedia di MATLAB ke depan. Hal berikutnya yang harus dilakukan untuk menjalankan penemuan DDS adalah membuat Peserta Domain DDS. Itu dapat dicapai dalam panggilan ini:
>> dp =DDS.DomainParticipant;
Dengan menggunakan objek DomainParticipant (dp) ini, Anda kemudian dapat membuat objek DataWriter dan DataReader. Dua perintah berikut akan menambahkan objek penulis data dan objek pembaca data ke dp yang menetapkan jenisnya sebagai "ShapeType" yang baru dibuat dan topiknya masing-masing menjadi "Segitiga" dan "Persegi".
>> dp.addWriter('ShapeType','Triangle')>> dp.addReader('ShapeType','Square')
Berlangganan Data dalam Demo Bentuk
ShapeType digunakan sehingga akan berkomunikasi dengan aplikasi RTI Shapes Demonstration (Shapes) standar yang disediakan oleh RTI. Bentuk memungkinkan pembuatan DataWriters dan DataReader topik "Persegi", "Lingkaran" dan "Segitiga" yang pada gilirannya didasarkan pada tipe data "ShapeType". Untuk informasi lebih lanjut tentang cara menggunakan aplikasi Shapes, klik di sini untuk melihat video tutorial kami.
Di Shapes, langkah selanjutnya adalah membuat subscriber dari Triangle. Di layar berikutnya biarkan semua opsi QoS lainnya sebagai default.
Menerbitkan Data di MATLAB
Sekarang kita memiliki pengaturan DataWriter di MATLAB untuk mengirimkan ShapeType pada topik Segitiga, dan juga kita memiliki pengaturan Demo Bentuk untuk menerima publikasi, mari kita latih penulisnya. Perintah berikut akan mengisi bidang ShapeType dan kemudian mempublikasikan data pada Topik Segitiga:
%% membuat instance ShapeTypemyData =ShapeType;myData.x =int32(75);myData.y =int32(100);myData.shapesize =int32(50);myData.color ='GREEN';%% tulis data ke DDSdp.write(myData);
Hasil pada Topik Segitiga dalam Demo Bentuk akan menjadi Segitiga Hijau tunggal yang ditampilkan di sini:
Beberapa kasus penggunaan yang lebih menarik dari penerbitan Triangle dalam MATLAB adalah:
%% Menerbitkan Segitiga Hijau dalam satu baris pada 1 Hzfor i=1:10 myData.x =int32(20 + 10*i); myData.y =int32(40 + 10*i); dp.tulis(datasaya); pause(1);end%% Menerbitkan Segitiga Hijau dalam pola Lingkaran pada 20Hz untuk i=1:1000 sudut =10*pi * (i/200); myData.x =int32(100 + (50 * cos(sudut))); myData.y =int32(100 + (50 * sin(sudut))); myData.shapesize =int32(40); myData.color ='HIJAU'; dp.tulis(datasaya); jeda(0.05);akhir
Output yang dihasilkan pada Demo Bentuk masing-masing adalah:
Menerbitkan Data dalam Demo Bentuk
Dalam demonstrasi Shapes, buat penerbit Square. Di layar berikutnya cukup pilih warna dan biarkan semua opsi QoS lainnya sebagai default. Tangkapan layar berikut menunjukkan layar Square Publish. Untuk demonstrasi saya, saya telah memilih Orange Square. Ini akan memublikasikan Posisi X,Y di layar setiap 30 mdtk.
Berlangganan Data di MATLAB
Jika Anda ingat sebelumnya kami menambahkan Square Topic DataReader ke Domain Participant di MATLAB. Kami akan menggunakan DataReader ini untuk berlangganan data yang sekarang kami terbitkan dari Demonstrasi Bentuk. Perintah berikut di MATLAB akan membaca 10 sampel pada 1 Hz.
%% membaca data untuk i=1:10 dp.read() pause(1);end
Output yang dihasilkan dalam MATLAB akan menjadi 10 laporan sebagai berikut:
Sesuatu yang Lebih Menarik
Sekarang kita memiliki kedua arah, mari lakukan sesuatu yang lebih kreatif dengan data. Pertama kita akan membaca data Kotak dan memodifikasinya untuk mengganti koordinat X dan Y dan kemudian menerbitkannya kembali ke Segitiga MERAH. Kedua, kita akan mengambil data Posisi yang dihasilkan dan memplotnya langsung di dalam MATLAB. Ini adalah perintah yang digunakan di MATLAB untuk melakukannya.
%% mengalokasikan array 100 elemenxArray =zeros(1,100);%% menjalankan loop untuk mengumpulkan data dan menyimpannya ke dalam array%% juga mengganti koordinat X dan Y dan kemudian mempublikasikan ulang ke %% topik Segitiga untuk i=1:100 [myData, status] =dp.read(); if ~isempty(myData) x =myData(1).x; y =myData(1).y; xArray(i) =x; yArray(i) =y; myData(1).y =x; myData(1).x =y; myData(1).color ='MERAH'; dp.tulis(datasaya(1)); end pause(0.05)end%% Plot Data Posisi Xt =1:100;plot(t,xArray);legend('xPos');xlabel('Time'), ylabel('Position');title('X Posisi');
Output yang dihasilkan dalam Demo Bentuk akan menjadi Segitiga Merah yang bergerak berlawanan dengan Kotak Oranye dan juga Plot akan dihasilkan dalam MATLAB yang menunjukkan data Posisi X:
Seperti yang Anda lihat, integrasi DDS dengan MATLAB sangat mudah digunakan dan membuatnya sangat mudah untuk mengumpulkan data, memasukkan data, dan menganalisis data. Untuk demonstrasi ini, kami menggunakan Aplikasi Bentuk sederhana, tetapi data yang digunakan dapat dengan mudah menjadi data aplikasi Anda sendiri. Jika Anda ingin mengetahui lebih lanjut tentang Integrasi MATLAB dengan RTI Connext DDS, silakan kunjungi situs ini di situs MathWorks:Integrasi DDS MATLAB. Jika Anda ingin mempelajari lebih lanjut tentang menggunakan Connext DDS, klik di sini untuk mendapatkan akses ke sumber daya pengembang kami.