Membuat Aplikasi Go Pertama di PLCnext: Panduan Pemula
Blog ini akan memandu Anda melalui langkah pertama dalam membangun aplikasi dengan Go pada PLCnext. Bagi yang tidak familiar dengan Go, saya ingin mengutip situs referensi www.golang.org
Alasan khusus untuk menyukai Go adalah mudah untuk membuat aplikasi web tetapi masih mengkompilasi ke binary statis, jadi Anda tidak perlu menginstal paket pada PLCnext controller 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 pemanggilan REST API kecil untuk menunjukkan kekuatan Go. Dalam pembuatan blog ini saya telah menggunakan:
- Sebuah mesin Ubuntu 18.04 LTS dengan VS dan Go terinstal untuk membuat program
- WinSCP untuk mentransfer binary ke controller
- Putty untuk mengeksekusi program.
Oke, mari kita mulai dengan aplikasi HelloWorld kita. Buat file baru bernama HelloWorld.go dan tempelkan kode dari contoh HelloWorld di dalam file. Simpan file dan buka terminal Anda dan pastikan Anda berada di direktori yang tepat.
Dengan perintah di bawah Anda akan membangun dan menjalankan kode Go Anda. Jika semuanya terinstal dengan benar Hello World harus ditampilkan di terminal Anda. Anda dapat menggunakan perintah ini saat Anda masih membangun aplikasi Anda.
go run HelloWorld.go
Seperti yang saya katakan, juga mungkin untuk membangun kode ke binary statis. Ini dilakukan dengan perintah pertama di bawah, perintah berikutnya menjalankan binary yang baru dibuat. Jika semuanya berjalan dengan baik, hello world ditampilkan lagi di terminal Anda.
go build HelloWorld.go
./HelloWorld
Ketika Anda mencoba menjalankan binary ini pada PLCnext controller Anda mendapatkan:
./HelloWorld: cannot execute binary file: Exec format error
Ini karena arsitektur mesin Ubuntu dan PLCnext tidak cocok. Untungnya cukup mudah untuk membuat binary yang bekerja untuk PLCnext (tapi perhatikan bahwa binary baru ini tidak akan berjalan pada mesin Ubuntu). Ketika Anda mengatur lingkungan build seperti yang dijelaskan di bawah. Go akan membuat binary yang cocok untuk PLCnext.
env GOOS=linux GOARCH=arm GOARM=7 go build
dan untuk contoh kita akan menjadi
env GOOS=linux GOARCH=arm GOARM=7 go build HelloWorld.go
Ketika Anda mentransfer file ini ke controller dan menjalankannya Anda seharusnya melihat hello world muncul sekali lagi, jika demikian, selamat. Anda telah menulis program Go pertama Anda untuk PLCnext controller! Lihat pemanggilan REST API dan modifikasi sesuai kebutuhan Anda!
Masalah dengan langkah sebelumnya?
Apakah Anda telah membuat file dapat dieksekusi dengan chmod +x HelloWorld ?
Hello World example
package main
import "fmt"
func main() {
fmt.Println("hello world")
}
go
REST API Call ( 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))
}