Создание первого Go-приложения на PLCnext: руководство для начинающих
Блог проведёт через первые шаги создания Go-приложения на PLCnext. Для незнакомых с Go: golang.org. Преимущество Go — легко создавать веб-приложения, компилируемые в статический бинарник, не требующий установки пакетов на контроллере.
Рассмотрим компиляцию для PLCnext на двух программах: классический Hello World и REST API вызов. Использовалось:
- Ubuntu 18.04 LTS с VS и Go
- WinSCP для передачи бинарника
- PuTTY для выполнения
Hello World
Создайте HelloWorld.go с кодом примера. Запуск для проверки:
go run HelloWorld.go
Сборка в статический бинарник:
go build HelloWorld.go./HelloWorld
На PLCnext получите ошибку Exec format error — архитектуры не совпадают (Ubuntu x64 vs ARM). Легко исправить: задайте переменные окружения для кросс-компиляции под ARMv7 Linux:
env GOOS=linux GOARCH=arm GOARM=7 go build HelloWorld.go
Перенесите бинарник на контроллер, сделайте исполняемым (chmod +x HelloWorld) и запустите — появится "hello world". Поздравляю, первое Go-приложение для PLCnext готово!
Пример Hello World
package main
import "fmt"
func main() {
fmt.Println("hello world")
}
REST API вызов (HTTP GET)
package main
import (
"crypto/tls"
"io/ioutil"
"log"
"net/http"
)
func main() {
http.DefaultTransport.(*http.Transport).TLSClientConfig = &tls.Config{InsecureSkipVerify: true}
MakeRequest()
}
func MakeRequest() {
resp, err := http.Get("https://192.168.18.10/_pxc_api/api/variables?paths=Arp.Plc.Eclr/MainInstance.bInputs")
if err != nil { log.Fatalln(err) }
body, err := ioutil.ReadAll(resp.Body)
if err != nil { log.Fatalln(err) }
log.Println(string(body))
}
Измените IP и переменные под свои нужды.
Промышленные технологии
- Code-Ready Containers: практическое руководство по облачно-ориентированной автоматизации процессов с Red Hat OpenShift
- Практическое руководство по керамической 3D-печати: техники, материалы и советы по дизайну
- Понимание основных красителей: применение, безопасность и отраслевое использование
- Начало работы с TJBot: сборка, настройка и голосовое управление ИИ-роботом
- Пошаговое руководство по развертыванию LoRa-шлюза RAK 831 на Raspberry Pi 3
- Сборка LoRa-шлюза на модуле RAK831 и Raspberry Pi 3 — пошаговое руководство
- ИИ в страховании: практическое руководство для реального внедрения
- Урок Arduino для начинающих 01: Начало работы с первым проектом
- Откройте для себя Eagle Group: ваш партнер по качественному металлообработке
- Оптимизация техники Cat®: полное руководство по My.Cat.com