この記事ではTF6300を使用しTwinCATでFTP Clientを実装して、最後はRaspberryからFTP Serverを立ち上げ、TwinCATからFileをUploadする例を説明します。
よろしくおねがいします。
Installation
下記のLinkからTF6300のインストールFileをDownloadします。
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 | BOOL | True=FB実行中 |
bError | BOOL | True=エラー |
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