PLCnext PLC を疑似 TTY 経由でリモート RS232/RS485 に接続する
この Makers Blog 記事では、Com Server が PLCnext プラットフォームに提供する可能性と利点について説明します。
はじめに
フエニックス コンタクトが PLC 用に提供する拡張モジュールは、たとえば次のようなシリアル アダプタです。
- AXL F RS UNI
- IB IL RS 232-PRO
- IB IL RS 485
- IB IL RS UNI
- …
すべての拡張モジュールには共通点があります。プロセスデータを介して周期的にアクセスできます。これにより、リアルタイム アプリケーションからシリアル デバイスと直接やり取りできるようになります。
場合によっては、これは私たちが望むものではありません。代わりに、既存の (C/C++) ライブラリを再利用したいので、リアルタイム コンテキストは必要ありません。ただし、これらのライブラリは通常、COM または TTY インターフェイスに直接アクセスできるようにプログラムされていることがわかります。
PLCnext Control
の TTY インターフェイスを作成するには、2 つのオプションがあります。 :
PLCnext Runtime
内から AXL または IL シリアル アダプタ用の TTY インターフェイスを作成するいくつかの関数 (C++ / C#) を実装します。 .
GW Device Server
透明な TCP to Serial
を提供します インターフェース。 Socat
のようなツールの助けを借りて シリアル/TCP トラフィックを疑似 TTY インターフェイスに直接転送できます。 GW Device Server
の使用 また、TLS 暗号化チャネルを介して遠隔地にあるシリアル デバイスと通信することもできます。
注意
このチュートリアルでは、PLC がクライアントとして機能し、GW Device Server
への接続を確立します。 .
(ただし、PLC Socat
を切り替えることも可能です) リッスン オプションに接続し、GW をクライアントとしてアクティブに PLC に接続します。)
セットアップ
GW デバイス サーバーのセットアップ
GW Device Server
に接続します ウェブベースの管理を介して。 GW Device Server
のデフォルトの IP アドレス は 192.168.254.254 です。
以下の設定を使用します:
LAN 設定 – セキュリティ
- SSH サーバーを有効にする
- Telnet サーバーを有効にする
- セキュア データ モードを無効にする
- TFTP サーバーを無効にする
シリアル設定
- ポート 1 の構成 (COM1):ポート 8000 で TCP 接続を有効にする
- ポート 2 の構成 (COM2):ポート 8001 で TCP 接続を有効にする
GW デバイス サーバーのテスト
GW Device Server
が設定されているかどうかをテストするには 正しく、最初に PLC を GW Device Server
に接続します イーサネット経由。次に、GW Device Server
の 2 つの DSUB アダプターを接続します。
ツール Telnet
を使用してセットアップをすばやくテストできます .このツールを使用すると、PLC から GW Device Server
にデータを送信できます。 Port8000/COM1 でシリアル ケーブルを介して Port8001/COM2 に送信し、最後に PLC で受信します。
以下のコマンドを使用します:
ssh [email protected]
sudo passwd root
su root
ip addr add 192.168.254.10 dev eth0
telnet 192.168.254.254 8000
## open another shell session
telnet 192.168.254.254 8001
# Type some messages
Socat の構築
Socat
をビルドするには Linux OS で簡単に実行するには、次のコマンドを使用します:
mkdir tmp
cd tmp
git clone git://repo.or.cz/socat.git
cd socat
## TODO: Modify to your SDK location
source /opt/pxc/release/axcf2152/2020/0/environment-setup-cortexa9t2hf-neon-pxc-linux-gnueabi
. /opt/pxc/release/axcf2152/2020/0/site-config-cortexa9t2hf-neon-pxc-linux-gnueabi
mkdir install
autoconf
./configure $CONFIGURE_FLAGS --prefix=$(pwd)/install --enable-openssl-method
make -j2
make install
Socat のデプロイとインストール
Socat
をデプロイするには インストール後、次のスクリプトを実行します:
cd tmp
mkdir -p deploy
cd deploy
mkdir -p usr
cp -r ../../Daemon/* .
cp -r ../socat/install/* usr/
# Create package
tar -cf ../socat-binaries.tar .
cd ..
scp socat-binaries.tar [email protected]:~/
ssh -ttt [email protected] \
"mkdir -p /opt/plcnext/socat-binaries && \
tar -xf /opt/plcnext/socat-binaries.tar -C /opt/plcnext/socat-binaries"
展開後、PLC に ssh できるようになりました。したがって、最初に次のコマンドを実行してディレクトリと構成ファイルを設定し、PLC を準備します。
deploy$ ssh [email protected]
[email protected]:~$ su root
[email protected]$ mkdir -p /etc/default/socat
[email protected]$ touch /etc/default/socat/socat.conf
[email protected]$ touch /etc/init.d/SocatDaemon
ここで、socat.conf
を変更します ファイルを使用して、必要に応じてシリアル インターフェイスのパラメーターを構成します。
nano /etc/default/socat/socat.conf
ファイルの中身はこんな感じです。
TARGETIP="192.168.254.254"
TARGETPORT="8000"
TTYNAME="/dev/ttyGWDeviceServer"
OPTIONS="pty,link=$TTYNAME tcp-connect:$TARGETIP:$TARGETPORT,forever,interval=15"
BAUD="9600"
PARITY=""
DATABITS="csN 8"
STOPBITS="-cstopb"
FLOWCONTROLL=""
さらにパラメーターを変更する必要がある場合は、SocatDaemon
も変更する必要があります。 ファイル。 TTY パラメーターの詳細については、stty のマニュアル ページを参照してください。
SocatDaemon
を作成します GW Device Server
に自動的に接続するためのファイル Socat
を使用
注:
この SocatDaemon ファイルは、エラー/切断管理などを行わない例です。
nano /etc/init.d/SocatDaemon
ファイルには次の内容が含まれています。(クリックしてコードを表示/非表示)
すべての構成ファイルが配置されたので、Socat
のセットアップに進みます。 バイナリと Socat
の登録
chmod +x /etc/init.d/SocatDaemon
cd /opt/plcnext/socat-binaries
chmod +x usr/bin/*
cp -r usr /
update-rc.d -s -v SocatDaemon 99
/etc/init.d/SocatDaemon start
すべてが正しく設定されていれば、ps -e | grep socat
のようなコマンドを使用して実行中のデーモンを確認できます。 . Socat
も確認できます cat /var/log/socat.log
にあるログ .
端末から TTY インターフェースにアクセスする
これで、TTY インターフェースを介してメッセージを送信できます。
sudo echo "PLC to GW $var" > /dev/GWDeviceServer
疑似 TTY を継続的にテストするには、次のようなコマンドを使用できます
while true; do sleep 5 && sudo echo "PLC to GW $var" >/dev/ttyUSB0 && var=$((var+1)); done
cat /dev/GWDeviceServer
を実行すると、着信トラフィックを表示できます。 .これで、あらゆるアプリケーションが、PLC に直接接続されているかのように、GW デバイス サーバーに接続されたシリアル デバイスにアクセスできます。
産業技術