Erste Go-Applikation auf PLCnext bauen: Einsteiger-Guide
Dieser Blog führt durch die ersten Schritte, eine Go-Applikation auf dem PLCnext zu erstellen. Für Go-Unkundige: Referenz golang.org.
Vorteil von Go: Einfach Web-Applikationen erstellen, kompiliert aber zu einem statischen Binary – keine Paketinstallation auf dem PLCnext-Controller nötig für Deployment.
Dieser Blog behandelt nur das Cross-Compiling für PLCnext mit zwei kleinen Programmen: Klassisches Hello World (Kompilierung testen) und kleiner REST-API-Call (Go-Power demonstrieren). Verwendet:
- Ubuntu 18.04 LTS mit VS und Go
- WinSCP für Binary-Transfer
- PuTTY für Ausführung
Hello World
Datei HelloWorld.go erstellen, Code aus Beispiel einfügen, speichern. Terminal im richtigen Verzeichnis öffnen.
Code ausführen (während Entwicklung):
go run HelloWorld.go
„Hello World“ sollte erscheinen. Statisches Binary erstellen:
go build HelloWorld.go
./HelloWorld
Wieder „Hello World“. Auf PLCnext ausführen:
./HelloWorld: cannot execute binary file: Exec format error
Architektur stimmt nicht (Ubuntu vs. PLCnext). Einfach Binary für PLCnext bauen (läuft dann nicht mehr auf Ubuntu):
env GOOS=linux GOARCH=arm GOARM=7 go build HelloWorld.go
Datei auf Controller übertragen, ausführbar machen (chmod +x HelloWorld), ausführen → „Hello World“. Glückwunsch – erstes Go-Programm für PLCnext! REST-API-Beispiel anpassen.
Hello World Beispiel
package main
import "fmt"
func main() {
fmt.Println("hello world")
}
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} // TLS-Check deaktivieren (schlechtes Zertifikat)
MakeRequest()
}
func MakeRequest() {
resp, err := http.Get("https://192.168.18.10/_pxc_api/api/variables?paths=Arp.Plc.Eclr/MainInstance.bInputs") // IP & Variablen anpassen
if err != nil { log.Fatalln(err) }
body, err := ioutil.ReadAll(resp.Body)
if err != nil { log.Fatalln(err) }
log.Println(string(body))
}
Industrietechnik
- Code-Ready Containers: Praktischer Leitfaden für Cloud-native Prozessautomatisierung mit Red Hat OpenShift
- Praktischer Leitfaden zu keramischem 3D-Druck: Techniken, Materialien, Design-Tipps
- Basisfarbstoffe (Basic Dyes) verstehen: Anwendungen, Sicherheit & Branchenanwendungen
- TJBot starten: Bauen, konfigurieren und per Sprache steuern
- Schritt-für-Schritt: RAK 831 LoRa Gateway auf Raspberry Pi 3 deployen
- LoRa-Gateway mit RAK831-Modul auf Raspberry Pi 3 bauen – Schritt-für-Schritt-Anleitung
- KI in der Versicherung: Ein praxisnaher Starter-Guide für die reale Umsetzung
- Arduino Einsteiger Tutorial #1: Erstes Projekt (Blink)
- Entdecken Sie die Eagle Group: Ihr Partner für hochwertige Metallfertigung
- Cat®-Maschinen optimieren: Der ultimative My.Cat.com-Leitfaden