Crea tu primera aplicación Go en PLCnext: Guía para principiantes
Este blog te guiará a través de los primeros pasos para construir una aplicación con Go en el PLCnext. Para aquellos que no estén familiarizados con Go, me gustaría citar el sitio web de referencia www.golang.org.
Una razón particular para gustar Go es que es fácil crear aplicaciones web pero aún compila a un binario estático, por lo que no tienes que instalar paquetes en el controlador PLCnext para desplegar el programa.
Este blog solo manejará la compilación para PLCnext con dos pequeños programas. Un clásico programa HelloWorld para asegurar que la compilación va bien y una pequeña llamada a API REST para mostrar el poder de Go. En la elaboración de este blog he usado:
- Una máquina Ubuntu 18.04 LTS con VS y Go instalado para crear los programas
- WinSCP para transferir el binario al controlador
- Putty para ejecutar los programas.
Vamos, empecemos con nuestra aplicación HelloWorld. Crea un nuevo archivo llamado HelloWorld.go y pega el código del ejemplo HelloWorld dentro del archivo. Guarda el archivo y abre tu terminal y asegúrate de estar en el directorio correcto.
Con el comando de abajo compilarás y ejecutarás tu código Go. Si todo se instaló correctamente Hello World debería mostrarse en tu terminal. Puedes usar este comando mientras aún estás construyendo tu aplicación.
go run HelloWorld.go
Como dije, también es posible compilar el código a un binario estático. Esto se hace con el primer comando de abajo, el siguiente comando ejecuta el binario recién creado. Si todo va bien, hello world se muestra de nuevo en tu terminal.
go build HelloWorld.go
./HelloWorld
Cuando intentas ejecutar este binario en el controlador PLCnext obtienes:
./HelloWorld: cannot execute binary file: Exec format error
Esto es porque la arquitectura de la máquina Ubuntu y PLCnext no coinciden. Afortunadamente es bastante fácil crear un binario que funcione para PLCnext (pero ten en cuenta que este nuevo binario no funcionará en la máquina Ubuntu). Cuando configuras el entorno de compilación como se describe a continuación. Go creará un binario que es 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 transfieres este archivo al controlador y lo ejecutas deberías ver hello world apareciendo una vez más, si es así, ¡felicidades! ¡Has escrito tu primer programa Go para un controlador PLCnext! Echa un vistazo a la llamada a API REST y modifícala para adaptarla a tus necesidades.
¿Problema con el paso anterior?
¿Has hecho el archivo ejecutable con chmod +x HelloWorld?
Ejemplo Hello World
package main
import "fmt"
func main() {
fmt.Println("hello world")
}
Llamada a 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} // Deshabilitar verificación TLS por certificado malo
MakeRequest()
}
func MakeRequest() {
resp, err := http.Get("https://192.168.18.10/_pxc_api/api/variables?paths=Arp.Plc.Eclr/MainInstance.bInputs") // cambia a tu IP y 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
- Optimice su Maquinaria Cat®: Guía Definitiva de My.Cat.com
- Primeros Pasos con TJBot: Construye, Configura y Controla por Voz tu Robot IA
- Guía Paso a Paso para Desplegar una Pasarela LoRa RAK 831 en Raspberry Pi 3
- Construye una puerta de enlace LoRa con el módulo RAK831 en Raspberry Pi 3 – Guía paso a paso
- Tutorial Arduino para Principiantes 01: Inicia tu Primer Proyecto
- Descubra el Grupo Eagle: Su Socio para Fabricación Metálica de Calidad
- Guía práctica de impresión 3D cerámica: Técnicas, materiales y consejos de diseño
- IA en seguros: Guía práctica para implementación real
- Despliega Node-RED en PLCnext con Docker: Guía paso a paso
- Code-Ready Containers: Guía práctica para automatización de procesos cloud-native con Red Hat OpenShift
- Entendiendo los tintes básicos: Usos, seguridad y aplicaciones industriales