Memulai dengan Go di PLCnext
Blog ini akan memandu Anda melalui langkah pertama dalam membangun aplikasi dengan Go di PLCnext. Bagi yang belum familiar dengan Go, saya akan mengutip website referensi www.golang.org
Alasan khusus untuk menyukai Go adalah mudahnya membuat aplikasi web tetapi masih dapat dikompilasi ke biner statis, oleh karena itu Anda tidak perlu menginstal paket pada pengontrol PLCnext untuk menerapkan program.
Blog ini hanya akan menangani kompilasi untuk PLCnext dengan dua program kecil. Program HelloWorld klasik untuk memastikan kompilasi berjalan dengan baik dan panggilan REST API kecil untuk menunjukkan kekuatan Go. Dalam pembuatan blog ini saya menggunakan:
- Mesin Ubuntu 18.04 LTS dengan VS an Go diinstal untuk membuat program
- WinSCP untuk mentransfer biner ke pengontrol
- Putty untuk menjalankan program.
Oke, mari kita mulai dengan aplikasi HelloWorld kita. Buat file baru bernama HelloWorld.go dan tempel kode dari contoh HelloWorld di dalam file. Simpan file dan buka terminal Anda dan pastikan Anda berada di direktori yang benar.
Dengan perintah di bawah ini Anda akan membuat dan menjalankan kode Go Anda. Jika semuanya telah terinstal dengan benar, Hello World akan ditampilkan di terminal Anda. Anda dapat menggunakan perintah ini saat Anda masih membuat aplikasi.
go run HelloWorld.go
Seperti yang saya katakan, juga dimungkinkan untuk membuat kode menjadi biner statis. Ini dilakukan dengan perintah pertama di bawah, perintah berikutnya menjalankan biner yang baru dibuat. Jika semuanya berjalan dengan baik, hello world kembali ditampilkan di terminal Anda.
go build HelloWorld.go
./HelloWorld
Saat Anda mencoba menjalankan biner ini pada pengontrol PLCnext, Anda mendapatkan:
./HelloWorld: cannot execute binary file: Exec format error
Ini karena arsitektur mesin Ubuntu dan PLCnext tidak cocok. Untungnya cukup mudah untuk membuat biner yang berfungsi untuk PLCnext (tetapi perhatikan bahwa biner baru ini tidak akan berjalan di mesin Ubuntu). Saat Anda mengatur lingkungan build seperti yang dijelaskan di bawah ini. Go akan membuat biner yang cocok untuk PLCnext.
env GOOS=linux GOARCH=arm GOARM=7 go build
dan untuk contoh kita adalah
env GOOS=linux GOARCH=arm GOARM=7 go build HelloWorld.go
Saat Anda mentransfer file ini ke pengontrol dan menjalankannya, Anda akan melihat hello world muncul sekali lagi, jika demikian, selamat. Anda telah menulis program Go pertama Anda untuk pengontrol PLCnext! Lihat panggilan REST API dan ubah sesuai kebutuhan Anda!
Masalah dengan langkah sebelumnya?
Sudahkah Anda membuat file tersebut dapat dieksekusi dengan chmod +x HelloWorld ?
Contoh Halo Dunia
package main
import "fmt"
func main() {
fmt.Println("hello world")
}
go
Panggilan API REST (HTTP GET)
package main
import (
"crypto/tls"
"io/ioutil"
"log"
"net/http"
)
func main() {
http.DefaultTransport.(*http.Transport).TLSClientConfig = &tls.Config{InsecureSkipVerify: true} // Disable TLS check due to bad certificate
MakeRequest()
}
func MakeRequest() {
resp, err := http.Get("https://192.168.18.10/_pxc_api/api/variables?paths=Arp.Plc.Eclr/MainInstance.bInputs") // change to your IP adress and variables
if err != nil {
log.Fatalln(err)
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatalln(err)
}
log.Println(string(body))
}