Beckhoff#TwinCAT TF6300 でFTPServerにFileをUploadしよう

この記事ではTF6300を使用しTwinCATでFTP Clientを実装して、最後はRaspberryからFTP Serverを立ち上げ、TwinCATからFileをUploadする例を説明します。

よろしくおねがいします。

Installation

下記のLinkからTF6300のインストールFileをDownloadします。

https://www.beckhoff.com/en-en/products/automation/twincat/tfxxxx-twincat-3-functions/tf6xxx-tc3-connectivity/tf6300.html

Exeをダブルクリック。

英語を選択します。

Next>.

ライセンスに同意し、Nextします。

情報を入力し、Next>します。

Completeを選び、Next>します。

Next>.

Install.

しばらくお待ち下さい。

これで終了です。

Configuration

こちらは今回の構成です。前も書いた通りRaspberry pi4がFTP Severを構築し、TwinCATのTF6300がFTP ClientとしてFileをUploadします。この記事ではRaspberry pi4のFTP Server構築方法も説明しますので安心してください。

System Requirment


Add Reference

Tc2_FTPライブラリを追加します。


FB_FTP_FILEIPLOADEX

このExampleでは FB_FTP_FileUploadEを使用しFileをFTP SeverにUploadします。


VAR_INPUT

sNetID T_AmsNetId := ”;AMS network ID
sHost T_IPv4Addr := ‘127.0.0.1’;FTP ServerのIP
nPort UDINT:= 21;FTP port (Defaultは 21).
sUsername STRING     := ”;FTP ServerにLoginするときのUser name
sPassword STRING     := ”;FTP ServerにLoginするときのPassword
sSrcFile T_MaxString := ”;FTP ServerにUploadするFileのPath
sDesFile T_MaxString := ”;FTP ServerのUpload先
bExecute BOOL立ち上げ=実行
tTimeout TIME     := T#15s;Timeout

VAR_OUTPUT

bBusy BOOLTrue=FB実行中
bError BOOLTrue=エラー
nErrID UDINTエラー情報
nProgress UDINT実行情報

Raspberry Setup

いまからRaspberry pi4でFTP Serverを構築します。

Install vsftpd

Pi4をUpdateしvsftpd Packageをインストールします。

sudo apt-get update
sudo apt-get install vsftpd

Edit vsftpd.conf

.conf fileを開きます。

sudo nano /etc/vsftpd.conf

以下のSettingをUncommentします。

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
chroot_local_user=YES

そして以下のCodeを.conf fileに追加します。

user_sub_token=$USER
local_root=/home/$USER/ftp


FTP Directory for Pi User

PI UserのFtp directoryを作成します。 

mkdir /home/pi/ftp
mkdir /home/pi/ftp/files

.
Directoryの権限を変更します。

chmod a-w /home/pi/ftp

Restart

FTP ServerをRestartします。

sudo service vsftpd restart

Server test

FileZillaを使用しServerとClientの通信テストをします。

https://filezilla-project.org/download.php?type=client#close

もしConnectionがOKであれば、以下のようなMessageが見えます。

Program

次はプログラムを作成します。以下は今回のFTP Function BlockのClass diagramです。


File to Raspberry

このFileは今回Uploadする予定です。


FB_FTPClient

VAR

FUNCTION_BLOCK FB_FTPClient
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
FTPFIleUpload:FB_FTP_FileUploadEx;
END_VAR

PROPERTY DestFilePath : String

転送先のset/get Propertyです。

GET

DestFilePath:=FTPFIleUpload.sDesFile;

SET

FTPFIleUpload.sDesFile:=DestFilePath;

PROPERTY ErrorID : UDINT

ErrorID のget Propertyです。

GET

ErrorID:=FTPFIleUpload.nErrId;

PROPERTY Host : String

FTP Server IPのset/get Propertyです。

GET

Host:=FTPFIleUpload.sHost;

SET

FTPFIleUpload.sHost:=Host;

PROPERTY Password : String

FTP Server のUser Passwordのset Propertyです。

SET

FTPFIleUpload.sPassword:=Password;

PROPERTY Port : UDINT

FTP Server Portのset/get Propertyです。

GET

Port:=FTPFIleUpload.nPort;

SET

FTPFIleUpload.nPort:=Port;

PROPERTY Progress : UDINT

Function block現在Progressのget Propertyです。

GET

Progress:=FTPFIleUpload.nProgress;

PROPERTY SrcFilePath : String

FTP Serverへ転送するFile Pathのset/get Propertyです。

GET

SrcFilePath:=FTPFIleUpload.sSrcFile;

SET

FTPFIleUpload.sSrcFile:=SrcFilePath;

PROPERTY UserName : String

FTP Server User login UserNameのset/get Propertyです。

GET

UserName:=FTPFIleUpload.sUsername;

SET

FTPFIleUpload.sUsername:=UserName;

METHOD Send:DINT

そのMethodがbSendをReceiveしTrueになるとFileをFTP Server へ転送します。

VAR

METHOD Send : DINT
VAR_INPUT
bSend:BOOL;
END_VAR

Code

FTPFIleUpload(
bExecute:=bSend
);

Send:=16#0;
IF FTPFIleUpload.bBusy THEN
Send:=16#1;
END_IF
IF FTPFIleUpload.bError THEN
Send:=16#2;
END_IF

MAIN

VAR

VAR
FTPUpload:FB_FTPClient;
bSend:BOOL;
END_VAR

Code

FTPUpload.UserName:=’pi’;
FTPUpload.Password:=’raspberry’;
FTPUpload.Host:=’192.168.3.14′;
FTPUpload.Port:=DEFAULT_FTP_PORT;
FTPUpload.SrcFilePath:=’C:\FTPFiles\text.txt’;
FTPUpload.DestFilePath:=’/files/text.txt’;
FTPUpload();
FTPUpload.Send(bSend);

Result

bSendをTrueします。TwinCATがFileをFTP Serverへ転送するはずです。

FileZillaからそのFileが転送されたかどうかをCheckできます。

Raspberry PIからcatコマンドでも確認できます。

Touble – 16×0707

0x707 はDeviceがReadyしてないと示すエラーです。

TF6300のライセンスを入れてください。


Touble 16×8226

転送元、転送先を確認してください。

Sample Code

以下のLinkからSource CodeをDownloadしてください。

https://github.com/soup01Threes/TwinCAT3/blob/main/TF6300_Demo01_UploadFile.tnzip

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

シェアする

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

フォローする