Codesys#FileをFTP Serverに送信してみよう

今回の記事ではBerghof ControllerにOSCAT NETWORKライブラリを利用し、USBに保存されたCSV FileをFTP Serverに送信します。FTP ServerはSeeedStudioのRecomputerR1125になります。

さ、FAを楽しもう。

Reference Link

Berghof#Directory内のアイテムをリストアップしよう

OSCATとは?

OSCAT=” Open Source Community for Automation Technology “、IEC61131-3規格に準拠したオープンソースライブラリを作成しました。このライブラリは、ベンダー固有の機能を排除しているため、すべてのIEC61131-3互換プログラマブルロジックコントローラに移植することができます。 

ベンダー仕様のライブラリを使用するPLCの動向は、通常、効率的に解決され、これらのライブラリも一部無償で提供されているが、それを使用することにはまだ大きな欠点があります。

  1. ほとんどのメーカーのライブラリは保護されており、ソースコードに自由にアクセスすることはできなく、これは、エラーが発生した場合であり、エラーの訂正は極めて困難で、しばしば不可能であります。
  2.  ベンダー仕様のライブラリを使用したグラフィック・プログラムの開発は、既存の機能を実際のニーズに合わせて調整したり拡張したりすることができないため、すぐに混乱し、非効率的でエラーが発生しやすくなり、また ソースコードが利用できません。
  3. ハードウェアの変更、特に他のメーカーへの移行は、独自のライブラリによって妨げられ、IEC61131のような標準規格が提供する利点も制限されてしまいます。 競合他社の独自ライブラリの置き換えは、メーカーのライブラリの範囲と内容が大きく異なるため、除外されることが多くなります。
  4. ソースコードを理解せずに複雑なモジュールを理解することは、しばしば非常に難しく、そのため、プログラムは非効率的でエラーが発生しやすくなります。

OSCATは、オープンなOSCATライブラリによって、PLCプログラミングのための強力で包括的な標準を作成します。この標準は、ソースコードで利用可能で、さまざまなアプリケーションによって詳細に検証され、テストされています。

FTP_CLIENT

モジュール FTP_CLIENT は、PLC から FTP サーバへのファイル転送、および FTP サーバから PLC へのファイル転送に使用されます。 また、TRUEのエッジをACTIVATEに送っていれば、転送プロセスを開始します。

VAR_INPUT

VariableTypeDescription
ACTIVATEBOOL 立ち上げて通信開始
FILE NAMESTRINGファイルパス/ファイル名
FTP_URLSTRING(STRING_LENGTH) FTPアクセスパス
FTP_DOWNLOAD BOOL UPLOAD = 0 DOWNLOAD = 1
FTP_ACTIV BOOL PASSIV = 0ACTIV = 1
FILE_DELETEBOOL 1=送信後、Fileを削除
TIMEOUTTIME タイムアウト設定
Dns_ip4DWORD DNSサーバーのIP4アドレス
PLC_ip4DWORD FTPサーバーのIP4アドレス

VAR_OUTPUT

VariableTypeDescription
DONEBOOL 1=エラーなしで転送完了
BUSYBOOL 1=転送中
ERROR_CDWORDエラーコード
ERROR_TBYTE エラータイプ

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の返答が出てきました。

Footer_Basic

Please Support some devices for my blog

Amazon Gift List

Find ME

Twitter:@3threes2
Email:soup01threes*gmail.com (* to @)
YoutubeChannel:https://www.youtube.com/channel/UCQ3CHGAIXZAbeOC_9mjQiWQ

シェアする

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

フォローする