Primeros pasos con Go on PLCnext
Este blog lo guiará a través de los primeros pasos para crear una aplicación con Go en PLCnext. Para aquellos que no están familiarizados con Go, me gusta citar el sitio web de referencia www.golang.org
Una razón particular por la que le gusta Go es que es fácil de crear aplicaciones web pero aun así se compila en un binario estático, por lo tanto, no tiene que instalar paquetes en el controlador PLCnext para implementar el programa.
Este blog solo manejará la compilación para PLCnext con dos pequeños programas. Un programa clásico de HelloWorld para asegurarse de que la compilación vaya bien y una pequeña llamada a la API REST para mostrar el poder de Go. En la elaboración de este blog he utilizado:
- Una máquina Ubuntu 18.04 LTS con VS an Go instalado para crear los programas
- WinSCP para transferir el binario al controlador
- Putty para ejecutar los programas.
Bien, comencemos con nuestra aplicación HelloWorld. Cree un nuevo archivo llamado HelloWorld.go y pegue el código del ejemplo de HelloWorld dentro del archivo. Guarde el archivo y abra su terminal y asegúrese de estar en el directorio correcto.
Con el siguiente comando, compilará y ejecutará su código Go. Si todo se instaló correctamente, Hello World debería mostrarse en su terminal. Puede usar este comando cuando todavía está creando su aplicación.
go run HelloWorld.go
Como dije, también es posible compilar el código en un binario estático. Esto se hace con el primer comando a continuación, el siguiente comando ejecuta el binario recién creado. Si todo va bien, en tu terminal se muestra de nuevo hola mundo.
go build HelloWorld.go
./HelloWorld
Cuando intenta ejecutar este binario en el controlador PLCnext, obtiene:
./HelloWorld: cannot execute binary file: Exec format error
Esto se debe a que la arquitectura de la máquina Ubuntu y PLCnext no coinciden. Afortunadamente, es bastante fácil crear un binario que funcione para PLCnext (pero tenga en cuenta que este nuevo binario no se ejecutará en la máquina Ubuntu). Cuando configura el entorno de compilación como se describe a continuación. Go creará un binario adecuado para PLCnext.
env GOOS=linux GOARCH=arm GOARM=7 go build
y para nuestro ejemplo sería
env GOOS=linux GOARCH=arm GOARM=7 go build HelloWorld.go
Cuando transfiera este archivo al controlador y lo ejecute, debería ver hola mundo apareciendo una vez más, si es así, felicitaciones. ¡Ha escrito su primer programa Go para un controlador PLCnext! ¡Eche un vistazo a la llamada a la API REST y modifíquela según sus necesidades!
¿Problema con el paso anterior?
¿Ha hecho el archivo ejecutable con chmod +x HelloWorld?
Ejemplo de Hola Mundo
package main
import "fmt"
func main() {
fmt.Println("hello world")
}
go
Llamada 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))
}
Tecnología Industrial
- Contenedores listos para el código:Introducción a las herramientas de automatización de procesos en la nube
- Introducción a la impresión 3D de cerámica
- ¡Familiarizándose con los tintes básicos!
- Introducción a TJBot
- Introducción a RAK 831 Lora Gateway y RPi3
- Introducción a RAK831 LoRa Gateway y RPi3
- Introducción a la IA en seguros:una guía introductoria
- Tutorial de Arduino 01:Primeros pasos
- Primeros pasos con Eagle Group:lo que necesita saber
- Cómo comenzar con My.Cat.com
- Node-RED y los primeros pasos con Docker