Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Industrietechnik

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:

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

  1. Code-Ready Containers: Praktischer Leitfaden für Cloud-native Prozessautomatisierung mit Red Hat OpenShift
  2. Praktischer Leitfaden zu keramischem 3D-Druck: Techniken, Materialien, Design-Tipps
  3. Basisfarbstoffe (Basic Dyes) verstehen: Anwendungen, Sicherheit & Branchenanwendungen
  4. TJBot starten: Bauen, konfigurieren und per Sprache steuern
  5. Schritt-für-Schritt: RAK 831 LoRa Gateway auf Raspberry Pi 3 deployen
  6. LoRa-Gateway mit RAK831-Modul auf Raspberry Pi 3 bauen – Schritt-für-Schritt-Anleitung
  7. KI in der Versicherung: Ein praxisnaher Starter-Guide für die reale Umsetzung
  8. Arduino Einsteiger Tutorial #1: Erstes Projekt (Blink)
  9. Entdecken Sie die Eagle Group: Ihr Partner für hochwertige Metallfertigung
  10. Cat®-Maschinen optimieren: Der ultimative My.Cat.com-Leitfaden