今回の記事ではEXORのJSMART707MパネルからBACnet Serverを立ち上げ、Beckhoff TwinCAT3とTF8020で各Objectをアクセスし、またTF8020のFB自動生成機能を利用しPLCプロジェクトからObjectをアクセスします。
さ、始めよう!
Reference Link
Implementation
EXOR Side
Add Protocol
JMobile StudioからProtocolを追加します。
BACnetを選択します。
BACnet機能の設定画面が表示されます。
Panel Device ID
Panel Device IDはEXOR パネルのBACnetのID番号になります。Defaultでは262000です。
IP UDP Port
IP UDP Port番号はDefaultが47808です。
Devices
赤枠はEXORパネルの各アナログ・Binaryなどのデバイス数を設定できます。
Finally
こちらは今回の記事の設定になります。
Add Tags
BACnet Driverでデバイスを追加しても、Tagsを定義する必要があります。
こちらはBACnetのTag画面になります。
Object Property
Object Propertyは該当するTagにアクセスするPropertyを設定できます。85はPresent Valueです。
Device ID
Device IDは該当するTagが所属するBACnet Server IDを設定します。下図では262000を設定する場合、該当するTagsはBACnet Server IDは262000(つまりEXOR JSMART707M自分自身になります)。
もし他のBACnetを Serverにアクセスしたい場合は、Device IDに合わせてください。
Object Type
Object Typeは該当するTagsのObject タイプになります。
Data Type
Data Typeは該当するTagsのデータタイプになります。
Object Instance
こちらは該当するTagsのInstance番号になります。
Finally
Done!
Screen
最後は確認用の画面を作成します。
Beckhoff Side
Add BACnet/IP Device
Devices>右クリック>Add New Itemで新しいBACnet/IP Deviceを追加します。
BACnet>BACnet IP Deviceを選び>OKします。
Done!BACnet IPデバイスが追加されました。
Add BACnet Client
次はBACnet Clientを追加するため、Device>右クリック>Add New Itemします。
BACmet Clientを選び>OKします。
Done!
Settings
BACnet Clientを開き、Identificationの項目をEXORパネルに合わせてください。
BACnetIDとUdp Portを最低限に合わせて行いましょう。
もしIPCのIPが複数ある場合は、Local Settings>Modeにある”Use Operating System Settings”のCheck boxを外し、IPを別途に設定してください。
Result
よし、Device DiagnosisのStatusで”Online”が表示され、TwinCAT3がEXORパネルのBACnet Objectを見ることができました。
Scan
次はEXORパネルにあるBACnet ObjectをTwinCAT プロジェクトに追加するため、Object1をクリックしましょう。
Done!EXORにあるBACnet Objectをすべて検索できました!
各ObjectのPresent ValueやEventStateも確認できました。
Implementation2
Beckhoff Side
Add PLC
PLC>Add New Itemで新規PLCを追加します。
Standard PLC Projectを選び>Addします。
Create FB Code
Beckhoff TF8020を使用することによりBACnetのObject Function Blockを自動的にPLCに生成し追加できます。先程追加したEXORと接続してるBAcnet Clientをダブルクリックします。
この機能を使用すると、PLCでBACnetクライアントを参照するために必要なFunction Blockを自動的に生成できます。Cyclice Data>FB Codeをクリックします。
PLCプロジェクトに生成したいBAcnet ObjectをCheck入れ、”Create in PLC”をクリックしFunction Blockを自動生成しましょう。
Done!FB_BACnet_Object1が自動生成されました。
Function Blockの中に入出力のInterfaceやプログラムもすでに定義されました。
Add Library
先程生成したFunction Blockを使用するためBAcnetのライブラリを追加します。Reference>Add libraryします。
Tc3_BACnetRev14を選び>OKで追加します。
Rev14やRev12をどちらしかPLCプロジェクトに使用できませんので、今回記事でTc3_BACnetRev14を設定しFB CodeをExportしたので、PLCにもこの設定に合わせてTc3_BACnetRev14をImportしましょう。
AmsNetId
PLCプロジェクトにあるAmsNetIdをBACnetのIDにLinkしましょう。
Device1(BACnet IP)>Ams NetIdを設定しましょう。
Progarm
最後はMAINプログラムに、先程自動生成したFB_BACnet_Object1のInstanceを定義し、プログラムに呼び出しましょう。
PROGRAM MAIN VAR exor:FB_BACnet_Object1:=(Client:=(nDeviceInstance := 262000)); END_VAR exor(); |
nDeviceInstanceに設定した262000はEXORのBACnet IDに合わせます。
Result
各Objectにある”bReady”がTrueになり、PLCプロジェクトのFB InstanceはEXORパネルのBACnet Serverと接続成功です。
EXORパネルからANALOG_VALUE_0が”22”を入力すると、fValが22に反映されます。
次はPLCからANALOG_VALUE_1値を変更します。fPreValが3.2をEXORパネルに設定し、fPreValが3.2に反映されています。
次はePriorityをEXORパネルのBACnet IP Serverより高く設定するため、現在値をFirstに変更します。
Done!bEnWriteをTrueしfValを1.1に変更すると、ANALOG_VALUE_1のPresent値が1.1になります!