この間TwinCAT3 Modbus TCPのTF6250を使用しModbus TCP/IP Clientを実装しましたね。次はModbus Serverを立ち上げ、Factory IOと連携してみますね。そのServer設定するSoftwareはなんかTwinCAT2みたいですねー。
あとModbusTCpScannerを探すには少し大変でしたー
今回はその立ち上げの方法とそのあとFactoryIoと連携を説明します。
Modbus Area
Serverセットアップ
TF6250をインストールしたあとに以下のDirectoryをアクセスしてください:
C;/TwinCAT3/Functions/TF6250-Modbus-TCP/Win32/Server
そのFolderになるTcModbusSrvCfgを起動します。
このような画面が出てきます。
IP AddressはDefaultのLocal IP 127.0.0.1、Portは502です。
TwinCAT3のTF6250はXML-BaseでModbus TCP/IP Serverの構成管理しています。
Get Configuration
まずいまのConfigurationをゲットします。
Get Configurationをクリックします。
Runtimeが止まることになりますが、いいですかって。
Yesします。
Export Configuration
いまのConfigurationがGetしたところ、次はXMLとしてExportします。
Export Configurationをクリックします。
Runtimeが止まることになりますが、いいですかって。
Yesします。
保存先を設定します。
このようなXMLがExportされます。
Edit
Notepadなどのソフトを起動します。
各StartAddress・EndAddressを値をアプリケーション合わせて設定しましょう。
ここでVarはGVL.mb_xxxxxになっていますね。
つまりそのあとTwinCATのプロジェクトにもまったく同じな変数を作成する必要があります。まぁ、その名前も変更できますー
Import Configuration
XML修正終わったら次はImport Configurationします。
Runtimeが止まることになりますが、いいですかって。
Yesします。
先のFileを選び、Saveします。
Set Configuration
最後はConfigurationをSetします。
Runtimeが止まることになりますが、いいですかって。
Yesします。
それでOK。
プロジェクト作成
せっかくModbus TCP Server立ち上げてたので、Factory IOと連携しなにかみせましょう。2段のConveyorがあり、荷物は左のConveyorから流れて、右の曲がりのConveyorにSensorがあり、Sensorが荷物の位置を検知し連動します。曲がりのConveyorが3つのSensorがあります。Entry・Center・Exitです。
TwinCAT側
GVL作成
まずModbus TCPのRegister Areaを作ります。
{attribute ‘qualified_only’}
VAR_GLOBAL
mb_Input_Coils : ARRAY [0..255] OF BOOL;
mb_Output_Coils : ARRAY [0..255] OF BOOL;
mb_Input_Registers : ARRAY [0..255] OF WORD;
mb_Output_Registers : ARRAY [0..255] OF WORD;
END_VAR
PROGRAM
次は制御のプログラムです。
VAR
VAR
wEntryConveyorRun :Word;
bCurvedConveyorRun :BOOL;
bConveyorExitSensor :BOOL;
bCurvedConveyorEntrySensor
,bCurvedConveyorCenterSensor
,bCurvedConveyorExitSesnor
,bCurvedConveyorEmpty :BOOL;
bCapactiveSensor :WORD;
rSetPoint :REAL;
R_trig :r_trig;
F_trig :f_Trig;
ton :ton;
END_VAR
Code
//
wEntryConveyorRun:= REAL_TO_WORD( rSetPoint /10.0*5000.0);
gvl.mb_Input_Registers[0]:=wEntryConveyorRun;
//
bConveyorExitSensor:=NOT GVL.mb_Output_Coils[1];
bCurvedConveyorEntrySensor:= GVL.mb_Output_Coils[2];
bCurvedConveyorCenterSensor:= GVL.mb_Output_Coils[3];
bCurvedConveyorExitSesnor:= GVL.mb_Output_Coils[4];
R_Trig(clk:=bConveyorExitSensor);
F_Trig(clk:=bConveyorExitSensor);
ton(
in:=NOT bCurvedConveyorEntrySensor
AND NOT bCurvedConveyorCenterSensor
AND NOT bCurvedConveyorExitSesnor
,PT:=T#1S
,Q=>bCurvedConveyorEmpty
);
IF bCurvedConveyorEmpty THEN
bCurvedConveyorRun:=FALSE;
END_IF
IF R_Trig.q
OR bConveyorExitSensor
THEN
bCurvedConveyorRun:=TRUE;
END_IF
gvl.mb_Input_Coils[1]:=bCurvedConveyorRun;
ライセンス
注意するのはModbus Serverだけを使用し、TF6350のFunction使わないときにライセンスの再入力Windowが出てこないです。そこでManualでライセンスを入れましょう。
FactoryIO側
File>Driversします。
Modbus TCP/IP Clientを選びます。
そして右にあるCONFIGURATIONをクリックします。
HostとPortは先設定した通り入れます。
I/O Pointsも同じように合わせましょう。
Connectionが成立したら緑のCheck Markが見えます。
そしてIOを割り付けましょう。
よし、それでOKです。
Result
そして以下のLinkからFactoryIOのサンプル・TwinCATプロジェクト・ModbusTCP Configuiration FileのZipをダンロードできます。
https://github.com/soup01Threes/TwinCAT3/blob/main/TwinCAT%20Project_ModbusServer_IOFactory.zip
最後
はーい、お疲れ様です。
もしなにか質問あれば、メール・コメント・Twitterなどでもどうぞ!
Twitterのご相談:@3threes2
メールのご相談:soup01threes*gmail.com (*を@に)