truST#Part02_RuntimeをIPCにインストールしよう

こちらは新しい記事シリーズでOPEN SOURCEのTrustST Platformを紹介します。truSTは、VS Code上で動作するオープンソースのIEC 61131-3ツールチェーンであり、リアルタイム診断、定義先移動、ブレークポイント付きデバッガー、ハードウェア不要のテスト用ランタイムを備えています。

第2話はAdvantechのIPCでRuntimeのインストール・プロジェクトビルドなどを紹介します。

さ、FAを楽しもう!

前書き

いつも私の技術ブログとYouTubeチャンネルをご覧いただき、心より感謝申し上げます。また、いまFullさん(full@桜 八重 (@fulhause) / X)と共に毎週水曜日の夜にお届けしている「高橋クリス」ラジオ番組を運営しています。

技術は独り占めせず、届けるもの

私たちは工場の生産技術や制御に関する技術情報を、ブログや動画などで無料公開しています。「知識は誰でもアクセスできるべき」という信念のもと、現場で役立つ具体的なノウハウやトラブル事例などを発信してきました。すべて無料で続けているのは、「知らなかったせいで困る人」を少しでも減らしたいからです。

また、もしあなたの現場で…

  • 「このPLCとデバイスの組み合わせ、ちゃんと動くのかな?」
  • 「EtherCAT通信でうまくいかない部分を検証してほしい」
  • 「新しいリモートI/Oを試したいけど社内に検証環境がない」

など、困っている構成や試してみたいアイデアがあれば、ぜひお知らせください。機器の貸出や構成の共有が可能であれば、検証し、記事や動画で発信します(ご希望に応じて匿名対応も可能です)。

支援のかたち

現在、私達の活動はほぼ無償で続けており、記事や動画の制作には、時間と検証環境の整備が必要です。この活動を継続的にコンテンツを提供するためには、皆様の温かいご支援が大変重要です。

メンバーシップ(ラジオの応援)

Fullさんとのラジオをより充実させるための支援プランです。

https://note.com/fulhause/membership/join

Amazonギフトリスト

コンテンツ制作に必要な機材・書籍をリストにしています。

https://www.amazon.co.jp/hz/wishlist/ls/H7W3RRD7C5QG?ref_=wl_share

Patreon(ブログ・動画活動への応援)

月額での小さなご支援が、記事の執筆・検証環境の充実につながります。

https://www.patreon.com/user?u=84249391

Paypal

小さな支援が大きな力になります。

https://paypal.me/soup01threes?country.x=JP&locale.x=ja_JP

知ってたら助かること、届けたいだけです

あなたの応援が、知識の共有をもっと自由で持続可能なものにしてくれます。これからもどうぞよろしくお願いします。

soup01threes*gmail.com

https://x.com/3threes2

技術はひとりじゃもったいない。

インストール

こちらのコマンドでtruST Runtimeをインストールします。

https://github.com/johannesPettersson80/trust-platform/blob/main/docs/deploy/INSTALL.md

git clone https://github.com/johannesPettersson80/trust-platform.git trust-platform
cd trust-platform
cargo build -p trust-runtime –release
sudo install -m 0755 target/release/trust-runtime /usr/local/bin/trust-runtime

Reference Link

http://soup01.com/ja/category/trust-platform/

トラブル

次は私インストールするとき発生したトラブルの解決方法を紹介します。

fatal: unable to access

最初にgithub.comアクセスできないエラーが最初に発生しました。

fatal: unable to access ‘https://github.com/Autonomy-Logic/openplc-runtime.git/’: Could not resolve host: github.com

ネット接続の確認

まずインターネットと接続しているかを確認します。

ping 8.8.8.8

DNS解決の確認

次はgithub.comと通信できるかを確認します。

ping github.com

DNS設定の修正

自分の場合はDNSの設定問題でしたので、下記のように修正すればOKです。

sudo nano /etc/resolv.conf

nameserver 8.8.8.8
nameserver 8.8.4.4

‘cargo’ not found,

今度はcargoパッケージがないのエラーですね。

oem@ubuntu:~/trust-platform$ cargo build -p trust-runtime –release
Command ‘cargo’ not found, but can be installed with:
sudo apt install cargo

必要な基本ツールを入れます。

sudo apt update
sudo apt install -y curl build-essential

次に、Rust と Cargo をインストールします

curl –proto ‘=https’ –tlsv1.2 -sSf https://sh.rustup.rs | sh

環境変数を読み込みます

source “$HOME/.cargo/env”

最後はVersion確認です。

cargo –version
rustc –version

error: could not execute process `sccache

oem@ubuntu:~/trust-platform$ cargo build -p trust-runtime –release
error: could not execute process `sccache /home/oem/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/rustc -vV` (never executed)

Caused by:
No such file or directory (os error 2)

sccache を使わずにビルドしてみます。

unset RUSTC_WRAPPER
cargo install sccache –verbose

次はまたパッケージが足りないそうです。

error: failed to compile `sccache v0.14.0`, intermediate artifacts can be found at `/tmp/cargo-installwSuvlu`.
To reuse those artifacts with a future compilation, set the environment variable `CARGO_TARGET_DIR` to that path.

unset RUSTC_WRAPPER
cargo install sccache –verbose

依存パッケージを入れてからもう一回試します。

sudo apt update
sudo apt install -y build-essential pkg-config libssl-dev cmake

初めてのプロジェクトを作ろう!

今回の記事では直接SSH経由でIPCのコンソールに入って、コマンドでプロジェクトを作成します。空のFOLDERで下記のコマンドを実行します。

oem@ubuntu:~/p1$ sudo trust-runtime play

それだけで、truSTプロジェクトTemplateが自動作成され、Runtimeにも起動します。

コンソールにはサイクルタイム・Runtime状態などの情報が表示されます。

Templateのプログラム main.stにも作成されました。

IPアドレス:8080からtruSTのWeb serverをアクセスできます。

Re-Build Again

次はmain.stを変更してみましょう。まずCountを内部変数から外部変数に変更します。

そしてCountをサイクルごとに1を加算するようにします。

次はconfig.stでCount変数を%MW50のメモリに割り付けます。

下記のコマンドでプロジェクトをビルドします。

oem@ubuntu:~/p1$ sudo trust-runtime build
Wrote /home/oem/p1/project/program.stbc
Sources: 2 file(s)
– /home/oem/p1/project/src/config.st
– /home/oem/p1/project/src/main.st

最後にRuntimeを起動します。

oem@ubuntu:~/p1$ sudo trust-runtime play

ctl コマンドチェック

こちらのコマンドでRuntimeの状態を確認できます。

oem@ubuntu:~$ sudo trust-runtime ctl –project p1/project/ status
state=running fault=none

こちらのコマンドでRuntimeのIO状態を読み取ります。

oem@ubuntu:~$ sudo trust-runtime ctl –project p1/project/ io-read
{“id”:1,”ok”:true,”result”:{“snapshot”:{“inputs”:[{“address”:”%IX0.0″,”name”:”InSignal”,”value”:”Bool(true)”}],”memory”:[{“address”:”%MW50″,”name”:”Count”,”value”:”Word(332)”}],”outputs”:[{“address”:”%QX0.0″,”name”:”OutSignal”,”value”:”Bool(false)”}]}},”audit_id”:”audit-1772434021233-658-a8a04c7a”}

こちらのコマンドはRuntimeも運転状態を確認できます。

oem@ubuntu:~$ sudo trust-runtime ctl –project p1/project/ health
ok=true

また、下図のコマンドで指定したEnd-Pointの状態をアクセスも可能です。

oem@ubuntu:~$ sudo trust-runtime ctl –endpoint unix:///tmp/trust-runtime.sock io-read
{“id”:1,”ok”:true,”result”:{“snapshot”:{“inputs”:[{“address”:”%IX0.0″,”name”:”InSignal”,”value”:”Bool(true)”}],”memory”:[{“address”:”%MW50″,”name”:”Count”,”value”:”Word(4658)”}],”outputs”:[{“address”:”%QX0.0″,”name”:”OutSignal”,”value”:”Bool(false)”}]}},”audit_id”:”audit-1772434454168-9512-42376756″}

シェアする

  • このエントリーをはてなブックマークに追加

フォローする