今回の記事ではBerghof ControllerにOSCAT NETWORKライブラリを利用し、USBに保存されたCSV FileをFTP Serverに送信します。FTP ServerはSeeedStudioのRecomputerR1125になります。
さ、FAを楽しもう。
Reference Link
OSCATとは?
OSCAT=” Open Source Community for Automation Technology “、IEC61131-3規格に準拠したオープンソースライブラリを作成しました。このライブラリは、ベンダー固有の機能を排除しているため、すべてのIEC61131-3互換プログラマブルロジックコントローラに移植することができます。
ベンダー仕様のライブラリを使用するPLCの動向は、通常、効率的に解決され、これらのライブラリも一部無償で提供されているが、それを使用することにはまだ大きな欠点があります。
- ほとんどのメーカーのライブラリは保護されており、ソースコードに自由にアクセスすることはできなく、これは、エラーが発生した場合であり、エラーの訂正は極めて困難で、しばしば不可能であります。
- ベンダー仕様のライブラリを使用したグラフィック・プログラムの開発は、既存の機能を実際のニーズに合わせて調整したり拡張したりすることができないため、すぐに混乱し、非効率的でエラーが発生しやすくなり、また ソースコードが利用できません。
- ハードウェアの変更、特に他のメーカーへの移行は、独自のライブラリによって妨げられ、IEC61131のような標準規格が提供する利点も制限されてしまいます。 競合他社の独自ライブラリの置き換えは、メーカーのライブラリの範囲と内容が大きく異なるため、除外されることが多くなります。
- ソースコードを理解せずに複雑なモジュールを理解することは、しばしば非常に難しく、そのため、プログラムは非効率的でエラーが発生しやすくなります。
OSCATは、オープンなOSCATライブラリによって、PLCプログラミングのための強力で包括的な標準を作成します。この標準は、ソースコードで利用可能で、さまざまなアプリケーションによって詳細に検証され、テストされています。
FTP_CLIENT
モジュール FTP_CLIENT は、PLC から FTP サーバへのファイル転送、および FTP サーバから PLC へのファイル転送に使用されます。 また、TRUEのエッジをACTIVATEに送っていれば、転送プロセスを開始します。
VAR_INPUT
Variable | Type | Description |
ACTIVATE | BOOL | 立ち上げて通信開始 |
FILE NAME | STRING | ファイルパス/ファイル名 |
FTP_URL | STRING(STRING_LENGTH) | FTPアクセスパス |
FTP_DOWNLOAD | BOOL | UPLOAD = 0 DOWNLOAD = 1 |
FTP_ACTIV | BOOL | PASSIV = 0ACTIV = 1 |
FILE_DELETE | BOOL | 1=送信後、Fileを削除 |
TIMEOUT | TIME | タイムアウト設定 |
Dns_ip4 | DWORD | DNSサーバーのIP4アドレス |
PLC_ip4 | DWORD | FTPサーバーのIP4アドレス |
VAR_OUTPUT
Variable | Type | Description |
DONE | BOOL | 1=エラーなしで転送完了 |
BUSY | BOOL | 1=転送中 |
ERROR_C | DWORD | エラーコード |
ERROR_T | BYTE | エラータイプ |
URL examples
こちらはURLの設定例になります。
ftp://username:password@servername:portnummer/directory/ ftp://username:password@servername ftp://username:password @ servername / directory / ftp://servername ftp://username:password@192.168.1.1/directory/ ftp://192.168.1.1 |
Implementation
FTP Server Side
最初にFTP Serverのインストールから始めます。
Install FTP Server
こちらのコマンドでSeeedStudioのRecomputerにFTP Serverをインストールしましょう。
sudo apt-get update sudo apt-get install vsftpd |
Configuration
次はFTP Serverの設定を行います。
sudo nano /etc/vsftpd.conf listen=NO listen_ipv6=YES local_enable=YES write_enable=YES |
Codesys Side
次はCodesys側を構築します。
Install OSCAT NETWORK Library
下記のLinkからOSCAT Network ライブラリをDownloadしてください。
https://store.codesys.com/en/oscat-network.html
OSCATNetwork.packageを起動します。
OSCAT NETWORKライブラリをインストールしたいCODESYSバージョンを選択してください。
ライセンスに同意し、Continueで進みます。
しばらくお待ち下さい…
Done!
Install Library
次はCodesysプロジェクトにOSCAT NETWORKライブラリをImportするため、Library Managerを起動します。
Add Libraryをクリックします。
OSCAT NETWORKライブラリを追加します。
Done!
OSCAT_BASICライブラリも追加して行きましょう。
Program
こちらは今回記事で作成したFTP Server通信プログラムです。
VAR
こちらはプログラムで定義した変数です。fbFtpClientはOSCAT_NETWORK.FTP_CLIENTのInstanceになります。
PROGRAM pFTP VAR fbFtpClient:OSCAT_NETWORK.FTP_CLIENT; PLC_IP:DWORD; DNS_IP:DWORD; xActivate:BOOL; x1:BOOL; FILENAME : STRING; xDownload:BOOL; xCommand:BOOL; xDone:BOOL; END_VAR |
Network1
Network1はOSCAT_BASIC.DWORD_OF_BYTEを使用し、DNS アドレスをDWORDに変換します。
Network2
Network2はOSCAT_BASIC.DWORD_OF_BYTEを使用し、FTP ServerのIP アドレスをDWORDに変換します。
Network3
Network3はこれから実行する操作がDownloadかUploadかを決めます。
Network4
Download操作の場合は、FILENAMEはFTP ServerからDownloadしたFileの格納先を設定します。FTP_URLはFTP ServerにDownloadしたいFileのPathになります。
Network5
Upload操作の場合は、FILENAMEはFTP ServerにUploadしたいFileのPathを設定します。FTP_URLはFTP ServerにUploadしたFileの保存先Pathになります。
Network6
最後はOSCAT_BASIC.FTP_CLIENTを呼び出して起きましょう。
Login
Online>LoginでプロジェクトをDownloadしてください。
Result
ERROR_CとERROR_TにFTP_CLIENT FBが実行エラー発生したときの情報を取得できます。
また。WiresharkからもCodesys RuntimeとFTP Serverのやり取りを確認できます。
Done!Transfer Completeの返答が出てきました。