PLCnext 用にフリーソフトウエアをビルドする (C言語)

フリーソフトウエアのソースコードを PLCnext 用にビルドすることができます。
ここでは EPC 1502 を例に取り、GNU Hello というとてもシンプルなC言語のソースコード配布パッケージを GNU からダウンロードして PLCnext で動作させるまでの手順を紹介します。

目次

クロスビルド用ホスト環境の構築

STEP
クロスビルド用ホスト環境のシステム要件確認

PLCnext Info Center で、クロスビルド用ホスト環境に必要なシステム要件を確認し、要件に合う PC を用意します。

クロスビルド用ホスト環境のシステム要件

今回は、クロスビルド用ホスト環境として Linux の Ubuntu 18.04.6 LTS を用いることとします。実機の PC へ Ubuntu をインストールしても構いませんが、Virtual Box のような仮想環境でも問題ありません。Ubuntu のインストール方法については Ubuntu のサイトなどをご参照ください。

クロスビルド用ホスト環境の Ubuntu をインターネットへ接続可能なように設定しておいてください。

STEP
SDKとクロスコンパイル支援用ツールのダウンロード

EPC 1502 の製品ページから「ダウンロード」をクリックし、ジャンプ先にある「ソフトウエア」の項目を確認して下さい。

「pxc-glibc-」で始まるファイルと「PLCnext」で始まるファイルについて、Linux 用のものをそれぞれダウンロードします。

なお、これらのファイルのバージョンと PLCnext の FW バージョンは同じである必要があるので、注意してください。今回の例では、FW 2022.0.7 LTS を搭載した EPC 1502 を対象としているため、上記の通りバージョン 2022.0 のファイルを使うことができます。

以降、今ダウンロードした「pxc-glibc-」で始まるファイルを Linux SDK、 「PLCnext」で始まるファイルをPLCnCLI と呼びます。

PLCnCLI Linux SDK を操作するためのコマンドラインツール。Linux SDK のインストールもこちらのツール を使います。
Linux SDKLinux SDK 本体となります。ソースコードのビルドに必要なツールが全て含まれています。
STEP
ホスト環境 (Ubuntu) へ一般的なビルド用ツールをインストール

クロスビルド用ホスト環境である Ubuntu を起動し、SDK 類のインストールや一般的なビルド作業に必要となるパッケージをインストールします。

$ sudo apt install xz-utils python3 build-essential libunwind8 sshpass libtool pkg-config

STEP
ホスト環境 (Ubuntu) へ PLCnCLI をインストール

まず PLCnCLI をインストールします。STEP 2 で ダウンロードした PLCnCLI ファイルを Ubuntu 上の適当な場所へ配置し、そのディレクトリ上で以下の様に実行してください。
(ファイル名は STEP 2 で紹介したものを使用しています。ご使用のバージョンに合わせて適宜読み換えて下さい。)

$ chmod a+x PLCnext_Toolchain_Linux_2022.0.sh
$ ./PLCnext_Toolchain_Linux_2022.0.sh

実行するとソフトウエアライセンス条項が表示され同意を求められるので、問題がなければ “y” を入力して Enter キーを押します。

そうするとシェルスクリプトが置いてあるディレクトリに plxncli というディレクトリが作成され、このディレクトリの下に plcncli というツールが用意されます。

[…中略…]
Please type y to accept, n otherwise: y
Creating directory plcncli
Verifying archive integrity… 100% MD5 checksums are OK. All good.
Uncompressing PlcNextCli 22.0.0.952 100%
PLCnext 2022.0 was installed in ./plcncli. To include the CLI in the path please execute the following command: sudo ln -sf /home/[例:ユーザのホームディレクトリ]/plcncli/plcncli /bin/plcncli

plxncli ディレクトリ下の plcncli ツールにパスを通すため以下のコマンドを実行します。

$ ln -s [plcncli ディレクトリへのパス]/plcncli /usr/local/bin/plcncli

plcncli ツールにパスを通っていることを確認するため、以下のコマンドを実行します。

$ plcncli version

以下のようにバージョンが表示されたら、plcncli の準備完了となります。

plcncli 22.0.0 LTS (22.0.0.952)

STEP
ホスト環境 (Ubuntu) へ Linux SDK をインストール

STEP 4 でインストールした PLCnCLI を用いて Linux SDK をインストールします。STEP 2 で ダウンロードした Linux SDK を Ubuntu 上の適当な場所へ配置し、そのディレクトリ上で以下の様に実行してください。
(ファイル名は STEP 2 で紹介したものを使用しています。ご使用のバージョンに合わせて適宜読み換えて下さい。)

$ chmod a+x pxc-glibc-x86_64-epc1502-image-sdk-corei7-64-epc1500-64-toolchain-2022.0.sh
$ sudo plcncli install sdk -d /opt/pxc/sdk/EPC1502/2022.0 -p ./pxc-glibc-x86_64-epc1502-image-sdk-corei7-64-epc1500-64-toolchain-2022.0.sh

上記の plcncli コマンドは、
plcncli install sdk -d [SDK インストール先ディレクトリへのパス] -p [SDK スクリプトファイルへのパス]
という構成になっています。
[SDK インストール先ディレクトリへのパス] 名に、EPC1502/2022.0 のように ターゲット名/バージョン番号を入れておくと管理しやすくなります (ディレクトリは自動的に作られます)。

以下のようなメッセージが表示されれば SDK のインストールは完了です。

[…中略…]
[100%] Install SDK.
Exploring the SDK /opt/pxc/sdk/EPC1502/2022.0.
Successfully installed sdk ./pxc-glibc-x86_64-epc1502-image-sdk-corei7-64-epc1500-64-toolchain-2022.0.sh in /opt/pxc/sdk/EPC1502/2022.0.

SDK インストール先に指定したディレクトリは以下のようになっています。
$ cd /opt/pxc/sdk/EPC1502/2022.0/
$ ls
cmake sysroots
environment-setup-corei7-64-pxc-linux toolchain.cmake
site-config-corei7-64-pxc-linux version-corei7-64-pxc-linux

ソースコード配布パッケージ「GNU Hello」のクロスビルド

STEP
GNU Hello のダウンロード

GNU Operating System の GNU Hello 用サイトから最新のソースコード配布パッケージをダウンロードします。

$ wget http://ftp.gnu.org/gnu/hello/hello-2.12.1.tar.gz

ダウンロードする最新バージョンのファイル名は、GNU Operating System の GNU Hello 用サイト上で確認してください。

STEP
ファイルの解凍

ダウンロードしたファイルのある場所で以下のように解凍し、新しく作られたディレクトリへ移動します。

$ tar xvfz hello-2.12.1.tar.gz
$ cd hello-2.12.1

STEP
クロスビルド用環境へ移行

以下のコマンドを実行し、EPC 1502 用のクロスビルド環境を有効化します。

$ source /opt/pxc/sdk/EPC1502/2022.0/environment-setup-corei7-64-pxc-linux

STEP
configure スクリプトによる Makefile の生成 (要注意)

GNU のソースコード配布パッケージには configure というスクリプトが含まれており、実行すると Makefile が作成されてビルドの準備が整います。クロスビルド時は configure 実行時に –host パラメータを指定する必要があります。

以下のようにして、EPC 1502 用に configure を実行して下さい。

$ ./configure –host=x86_64-pxc-linux

[…中略…]
config.status: creating po/Makefile

ビルドからインストールまでの手順は、カレントディレクトリ内の “INSTALL” というテキストファイルに記載されています。

–host 引数に指定すべき値は、以下の様に環境変数 TARGET_PREFIX を参考にするとわかります。
$ printenv | grep TARGET_PREFIX
TARGET_PREFIX=x86_64-pxc-linux-
→ “x86_64-pxc-linux” が –host へ指定すべき値

STEP
make の実行

make を実行します。

$ make

[…中略…]
gcc -g -O2 -o hello src/hello.o ./lib/libhello.a
make[2]: Leaving directory ‘[作業ディレクトリ名]/gnu_hello/hello-2.12.1′
make[1]: Leaving directory ‘[作業ディレクトリ名]/gnu_hello/hello-2.12.1′

カレントディレクトリ内に hello というファイルができます。

$ ls
ABOUT-NLS INSTALL README-dev config.in doc man AUTHORS Makefile THANKS config.log hello po COPYING Makefile.am TODO config.status hello.1 src ChangeLog Makefile.in aclocal.m4 configure lib stamp-h1 ChangeLog.O NEWS build-aux configure.ac m4 tests GNUmakefile README config.h contrib maint.mk

PLCnext 実機で hello を実行

STEP
PLCnext へ hello ファイルを転送

クロスビルドによって作成された hello ファイルを PLCnext 実機へ転送します。

$ sftp admin@192.168.1.10

EPC 1502 のデフォルト設定値は以下の通りです。

LAN ポート X3192.168.1.10
LAN ポート X2192.168.2.10
ユーザ名admin
パスワード(PLCnext 本体表面ラベルに記載、8桁の英数字)
EPC 1502 のデフォルト設定

IP アドレスの設定が正しいはずなのに接続できないときは、以下を実行して指定したホストの鍵をknow_hostsから抹消してから、sftp を再試行してみてください。
$ ssh-keygen -R 192.168.1.10

sftp の put コマンドを用いて、hello ファイルを PLCnext へ転送します。転送が終わったら exit コマンドで sftp を終了してください。

sftp> put hello /opt/plcnext
Uploading hello to /opt/plcnext/hello
hello 100% 209KB 3.5MB/s 00:00
sftp> exit

STEP
PLCnext のターミナルへログイン

PLCnext へ SSH でログインしてください。

$ ssh admin@192.168.1.10

PLCnext のアドミンユーザのホームディレクトリは /opt/plc/next です。
admin@epc1502:~$ pwd
/opt/plcnext/

STEP
hello の実行

hello ファイルを実行します。

admin@epc1502:~$ ./hello

以下のように表示されたら成功です。

Hello, world!

PLCnext の EPC 1502 を例にとって紹介しましたが、EPC 1522 や AXC F 1152/2152/3152 でも手順は同じです。
ご使用の PLCnext の製品ページから Linux SDK と PLCnCLI をダウンロードしてご使用ください。

  • URLをコピーしました!
目次