PLCnextでGoアプリケーションを構築:初心者向けガイド
このブログでは、PLCnextでGo言語を使用してアプリケーションを構築する最初のステップをガイドします。Goに馴染みのない方のために、公式サイトwww.golang.orgから引用します。
Goを好む理由の1つは、Webアプリケーションを簡単に作成できるのに静的バイナリにコンパイルされるため、PLCnextコントローラにプログラムをデプロイする際にパッケージをインストールする必要がないことです。
このブログでは、PLCnext向けのクロスコンパイルのみを扱い、2つの小さなプログラムで示します。コンパイルが正常に動くか確認する定番のHello Worldプログラムと、Goの威力を示す小さなREST API呼び出しです。このブログ作成に使用した環境:
- Ubuntu 18.04 LTSマシン(VS CodeとGoインストール済み)でプログラム作成
- WinSCPでバイナリをコントローラに転送
- PuTTYでプログラム実行
まずHello Worldアプリケーションから始めましょう。HelloWorld.goという新しいファイルを作成し、Hello Worldのサンプルコードを貼り付けて保存。ターミナルを開き、正しいディレクトリにいることを確認。以下のコマンドでGoコードをビルドして実行。正しくインストールされていればターミナルに「Hello World」と表示されます。アプリケーション構築中はこのコマンドを使用できます。
go run HelloWorld.go
前述の通り、静的バイナリにビルドすることも可能。最初のコマンドでビルド、次のコマンドで新しく作成されたバイナリを実行。うまくいけば再びターミナルに「hello world」が表示されます。
go build HelloWorld.go
./HelloWorld
このバイナリをPLCnextコントローラで実行しようとすると:
./HelloWorld: cannot execute binary file: Exec format error
これはUbuntuマシンとPLCnextのアーキテクチャが異なるためです。幸い、PLCnext用のバイナリを作るのはかなり簡単です(ただしこの新しいバイナリはUbuntuマシンでは動きません)。以下のようにビルド環境を設定すると、GoはPLCnext向けのバイナリを生成します。
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ロボットを構築
- RAK 831 LoRaゲートウェイをRaspberry Pi 3に導入するステップバイステップガイド
- Raspberry Pi 3 と RAK831 モジュールで LoRa ゲートウェイを構築するステップバイステップガイド
- Arduino初心者チュートリアル01: 最初のプロジェクトを始めよう
- Eagle Groupを知る:コンセプトから完成まで一貫した高品質金属加工のパートナー
- セラミック3Dプリント実践ガイド:技術、材料、設計のコツ
- 保険業界における AI:実践的スターターガイド
- DockerでPLCnextにNode-REDをデプロイ:ステップバイステップガイド
- Code-Ready Containers:Red Hat OpenShiftによるクラウドネイティブプロセス自動化の実践ガイド
- 基本染料の理解:用途・安全性・産業応用