在 PLCnext 上构建首个 Go 应用:新手入门指南
本文指导您在 PLCnext 上构建 Go 应用的第一步。不熟悉 Go 的读者可参考官网 www.golang.org。
Go 的一大优势:易于创建 Web 应用,却能编译为静态二进制,部署到 PLCnext 无需安装额外依赖包。
本文仅涵盖针对 PLCnext 的交叉编译,包含两个小程序:经典 HelloWorld 验证编译流程,及一个 REST API 调用展示 Go 实力。制作过程中使用:
- Ubuntu 18.04 LTS + VS Code + Go 开发环境
- WinSCP 传输二进制文件
- PuTTY 执行程序
HelloWorld 入门
新建 HelloWorld.go 粘贴示例代码,保存。终端进入目录,运行:
go run HelloWorld.go
若安装正确将显示 "Hello World"。开发阶段可反复用此命令。
编译为静态二进制:
go build HelloWorld.go
./HelloWorld
再次显示 "hello world" 即成功。但直接在 PLCnext 运行该二进制会报错:
./HelloWorld: cannot execute binary file: Exec format error
因 Ubuntu 与 PLCnext 架构不匹配。幸好易解决:设置构建环境变量即可生成适配 PLCnext 的二进制(注意:新二进制无法在 Ubuntu 运行)。
env GOOS=linux GOARCH=arm GOARM=7 go build
示例完整命令:
env GOOS=linux GOARCH=arm GOARM=7 go build HelloWorld.go
传输到控制器运行,再次看到 "hello world" 即成功!您已编写首个 PLCnext Go 程序。请尝试修改 REST API 示例适配您的需求!
遇到问题?
是否执行 chmod +x HelloWorld 赋予执行权限?
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} // 跳过 TLS 验证
MakeRequest()
}
func MakeRequest() {
resp, err := http.Get("https://192.168.18.10/_pxc_api/api/variables?paths=Arp.Plc.Eclr/MainInstance.bInputs") // 修改为您的 IP 和变量
if err != nil { log.Fatalln(err) }
body, err := ioutil.ReadAll(resp.Body)
if err != nil { log.Fatalln(err) }
log.Println(string(body))
}
工业技术
- 优化Cat®机械:My.Cat.com终极指南
- TJBot 入门指南:构建、配置与语音控制您的 AI 机器人
- 树莓派 3 部署 RAK 831 LoRa 网关分步指南
- 基于 RAK831 模块与树莓派 3 构建 LoRa 网关:分步指南
- Arduino入门教程01:开始你的第一个项目
- Eagle Group:从概念到成品的优质金属制造合作伙伴
- 陶瓷3D打印实操指南:技术、材料与设计技巧
- 保险业 AI 落地实战指南:从认知到规模化应用
- 在 PLCnext 上用 Docker 部署 Node-RED:分步实战指南
- Code-Ready Containers实战指南:基于Red Hat OpenShift的云原生流程自动化
- Connext DDS 101:新手入门完全指南
- 碱性染料认知全景:用途、安全红线与跨行业应用