Beckhoff#TwinCAT3でWindows applicationを実行

今回はTwinCAT PLCからWindows Applicationを呼び出す関数を紹介します。

ライブラリ追加

Reference>Add libraryします。

TC2_Utilitiesを検索し、追加してください。

Command Prompt Path確認

where cmdでCommand LineのPathを確認できます。

Function Block

今回使うのはNT_StartProcessというFunction BlocksでそのBlockがPLCからWindows applicationを呼び出すことができます。もちろんローカルPC限らずRemote PCでもOKです。

VAR_INPUT

NETIDT_AmsNetIdTwinCAT PCのAmeNetIdを指定できます。Localから空文字でOK。
PATHSTRT_MaxString実行するApplicationのPath
DIRNAMET_MaxStringこのApplication実行するWork Directory
COMNDLINET_MaxStringそのコマンドLine
STARTBOOL立ち上げ=実行
TMOUTTIMEApplicationのTimeout設定

VAR_OUTPUT

BUSYBOOLTrue=実行中
ERRBOOLTrue=エラーある
ERRIDUDINTそのエラー内容


プログラム

では実際プログラムをやってみましょう。今回はTerminalからテキストFileを作成し、文字列を一番うしろにAppendします。

VAR

VAR

//
stCommand:STRING(512);
stPrintingMessage:STRING:=’Hello,This is my message that write from TwinCAT PLC!’;
NT_StartProcess:NT_StartProcess;
//
bTrigger:BOOL;
bError:BOOL;
iErrorID:UDINT;
bReset:BOOL;
END_VAR

Code

stCommand:=’/C ‘;
stCommand:=CONCAT(stCommand,’echo ‘);
stCommand:=CONCAT(stCommand,stPrintingMessage);
stCommand:=CONCAT(stCommand,’>> ‘);
stCommand:=CONCAT(stCommand,’C:\Users\root\myfile.txt’);


NT_StartProcess(
NETID:=”
,PATHSTR:=cStCommandPath
,COMNDLINE:=stCommand
);

IF bReset THEN

bError:=FALSE;
iErrorID:=0;
bReset:=FALSE;
NT_StartProcess(Start:=False);
END_IF;

IF bTrigger AND NOT bError THEN

NT_StartProcess(Start:=TRUE);
IF NT_StartProcess.ERR THEN
bError:=TRUE;
iErrorID:=NT_StartProcess.ERRID;
END_IF

bTrigger:=FALSE;
NT_StartProcess(Start:=False);
END_IF

Result

該当するPathにmyfile.txtが作成されました。

中身はちゃんと文字列が出力されましたね。

注意

実行するコマンドはSTRINGなのでその文字列の長さを気をつけましょう。それ以上の数の文字格納できませんので、つまり、実行したいコマンドが一部しか実行にならないとか、エラーになるとかの可能性があります。

最後

はーい、お疲れ様です。

もしなにか質問あれば、メール・コメント・Twitterなどでもどうぞ!

Sample Codeは以下でダンロードできます:

https://github.com/soup01Threes/TwinCAT3/blob/main/TwinCAT%20Project_usingTerminal.tnzip

Twitterのご相談:@3threes2

メールのご相談:soup01threes*gmail.com (*を@に)

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

シェアする

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

フォローする