工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 産業技術

Go on PLCnext を使ってみる

このブログでは、PLCnext で Go を使用してアプリケーションを構築するための最初の手順について説明します。 Go に慣れていない人のために、参照 Web サイト www.golang.org を引用したいと思います

Go が好まれる特別な理由は、Web アプリケーションの作成が簡単でありながら静的バイナリにコンパイルできるため、プログラムを展開するために PLCnext コントローラーにパッケージをインストールする必要がないことです。


このブログでは、2 つの小さなプログラムを使用した PLCnext のコンパイルのみを扱います。コンパイルがうまくいくことを確認するための従来の HelloWorld プログラムと、Go の能力を示すための小さな REST API 呼び出し。このブログの作成で使用したもの:

それでは、HelloWorld アプリケーションから始めましょう。 HelloWorld.go という名前の新しいファイルを作成し、HelloWorld の例のコードをファイル内に貼り付けます。ファイルを保存して端末を開き、正しいディレクトリにいることを確認します。

以下のコマンドを使用して、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")
}
go

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} // 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))
}


産業技術

  1. Code Ready Containers:クラウドでのプロセス自動化ツール入門
  2. セラミック3D印刷の開始
  3. 基本的な染料に精通する!
  4. TJBot入門
  5. RAK 831 LoraGatewayおよびRPi3の使用を開始する
  6. RAK831LoRaゲートウェイとRPi3の使用を開始する
  7. 保険におけるAI入門:入門ガイド
  8. Arduinoチュートリアル01:はじめに
  9. イーグルグループ入門:知っておくべきこと
  10. My.Cat.com を開始する
  11. Node-RED と Docker の使用開始