Mempersingkat PLCnext REST API: Menyiapkan Reverse Proxy
PLCnext REST Interface adalah alat yang luar biasa baik untuk menyajikan dan menerima data dari sistem back-end. REST, atau REpresentational State Transfer, adalah gaya arsitektur perangkat lunak yang terdiri dari pedoman dan praktik terbaik untuk membuat layanan web yang scalable. Ada banyak informasi yang bagus sudah ada di PLCnext infoportal, pastikan untuk memeriksa! URI yang disediakan oleh PLCnext Firmware sempurna jika Anda dapat membangun sistem Anda dari awal. Namun mereka tidak ideal jika Anda ingin memasang ulang antarmuka REST yang ada di PLCnext. Blog ini akan menunjukkan kepada Anda cara menyiapkan URI Anda sendiri dan menghubungkannya dengan variabel-variabel Anda dengan reverse proxy. Kami memulai dengan menyiapkan contoh kecil dan bekerja dari sana!
Prasyarat
Saya menggunakan controller AXC F 2152 dengan FW2020.6 dan PLCnext Engineer 2020.6. Tetapi hal yang sama seharusnya mungkin dengan versi sebelumnya setelah 2020.0. Saya akan menggunakan PuTTY untuk menyiapkan koneksi SSH dan postman untuk menangani permintaan HTTP saya. Saya telah menonaktifkan autentikasi untuk tujuan pengembangan, Anda tidak boleh melakukan yang sama dalam produksi! Instruksi untuk PLCnext Engineer akan diberikan sangat tinggi level, tidak yakin harus melakukan apa? Lihat infoportal PLCnext dan video instruksi dan/atau bandingkan dengan proyek contoh! Controller yang saya gunakan memiliki alamat IP 192.168.10.10, silakan ubah ini ke alamat IP yang Anda gunakan.
Contoh
Dalam blog ini saya akan menggunakan pump UDT sederhana sebagai contoh. Anda dapat mengunduh program contoh dari halaman GitHub ini, atau tentu saja membuat sendiri. Matikan penggunaan “user management” di pengaturan eHMI dan buat variabel global. Gunakan variabel ini pada halaman eHMI sehingga kita dapat menggunakannya di API.
Pemanggilan API Pertama
Mungkin kita harus terlebih dahulu menemukan apa yang tepat kita ubah dalam beberapa saat!
Mari kita kirim permintaan GET untuk mendapatkan nilai pompa pertama kita.
Gunakan Postman untuk mengirim permintaan GET ke URI berikut:
GET https://192.168.10.10/_pxc_api/api/variables?paths=Arp.Plc.Eclr/Pump1
(Anda dapat mengubah Pump1 menjadi variabel Anda sendiri)
Hasilnya adalah:
{
"apiVersion": "1.4.0.0",
"projectCRC": 3448945666,
"userAuthenticationRequired": true,
"variables": [
{
"path": "Arp.Plc.Eclr/Pump1",
"value": {
"xStatus": false,
"iNumberOfStarts": 0,
"sStatus": ""
}
}
]
}
Menyiapkan endpoint kustom
Buka sesi shell, buat password root dan login sebagai root user.
Selanjutnya, ketik perintah berikut di terminal Anda, pergi ke “bawah” terminal dan hati-hati tidak mengetik sesuatu di antaranya!
nano /etc/nginx/nginx.conf
Salin tempel bagian berikut ke terminal dan simpan dengan ctrl + s dan tutup dengan ctrl +x.
location /Pump1 {
proxy_pass https://127.27.0.1:443/_pxc_api/api/variables?paths=Arp.Plc.Eclr/Pump1;
}
Mengirim permintaan ke endpoint baru
Kirim permintaan GET baru dengan postman, kali ini ke URI berikut:
GET https://192.168.10.10/Pump1
Menerima jawaban yang sama? Selamat proxy Anda telah diatur dengan sukses!
Menyiapkan beberapa pompa
Oke, tapi bagaimana jika saya memiliki beberapa pompa? Nah, satu pendekatan bisa membuat array yang menampung pump UDT Anda. Anda bisa mendapatkan seluruh array dengan memanggil variabel atau hanya elemen yang Anda inginkan dengan menentukan indeks yang Anda inginkan antara kurung siku, misalnya Pump2[1] akan memberikan elemen dengan indeks 1 dalam array bernama Pump2.
Tapi itu subjek dari blog ini. Kami juga dapat menyiapkan proxy dengan cara sehingga kami dapat mengakses beberapa pompa.
Ubah teks yang ditempel dalam langkah sebelumnya agar cocok dengan skema berikut:
location /pumps {
proxy_pass https://127.27.0.1:443/_pxc_api/api/variables?paths=Arp.Plc.Eclr;
}
Mengirim permintaan GET dengan postman ke URI pertama akan memberikan Anda yang sama seperti sebelumnya. Mengirim permintaan GET ke URI kedua akan memberikan Anda array dengan tipe data yang sama.
https://192.168.10.10/pumps/Pump1
https://192.168.10.10/pumps/Pump2
Sekarang Anda harus memiliki semua yang diperlukan untuk mencocokkan skema API apa pun yang Anda temukan dan mengintegrasikannya di perangkat PLCnext Anda!
Baca lebih lanjut
https://www.howtogeek.com/343877/what-is-an-api/ https://www.w3schools.com/tags/ref_httpmethods.asp https://medium.com/@TebbaVonMathenstien/what-is-an-api-and-why-should-i-use-one-863c3365726b https://restfulapi.net/rest-api-design-tutorial-with-example/