今回の記事ではBeckhoff TwinCAT3とTF6281の組わせでEthernet/IP Scannerを立ち上げ、FANUC ROBOGUIDE側でR784 OptionsでEthernet/IP Adpaterと接続させます。
また、FANUC ROBOGUIDE側のIOデータMapping方法を説明し、実際にTwinCAT側からEnable信号やリセット信号を送信します。
Step by Step、From Zero To Hero。
さ、はじめよう!
Implementation
FANUC Side
まずはFANUC ROBOGUIDE側から始めます。
Options
Ethernet/IP Adapterを使用するにはR784 Optionsが必要です。
Start Teach Pendant
Robotの設定を変更するためにTeach Pedantを起動します。
Host Comm
最初は基本のEthernet設定を行うため6 SETUP>SETUP 2>8 HOST Commを開きます。
1 TCP/IPを開きます。
こちらはROBOTのIPアドレスなどを設定できます。
Port #1 IP addr
こちらのIPアドレスはPCのNetwork Adapterと同じ設定してください。
Done!
PC Jog/OP Panel IP
Panel IPなども設定しましょう。
Restart
Robot Controllerを再起動します。
PING
Port #1 IP addrを選択し、PING機能を使用しを接続テストします。
Done!
Ethernet/IP Setting
今度はEthernet/IPの設定を行うため5 I/O>I/O 2>4 Ethernet/IPを開きます。
今回の記事で使用するのはConnection1です。
Disable
FANUCロボットのAdapter機能を変更するために、まずConnetionを無効にする必要があります。Enableの欄を選び>FALSEをクリックします。
Connection1 のEnable状態は現在FALSEになりました。
CONFIG
Conenction1の設定を変更するのであれば、Connection1を選び>CONFIGをクリックします。
現在Connection1の設定画面が表示されます。
Enable
最後はAdapterをEnableに戻すのを忘れずに。
Variables
次はSystem変数を修正するため、MENU 1>0–NEXT–を開きます。
MENU2が表示され、6 SYSTEM> 2 Variables画面を開きます。
こちらはFANUC Robot Controllerのシステム変数設定画面になります。
189 $EIP_ENBL_IOという変数があります。
$EIP_ENBL_IOを1に設定してください。
Config
今度はロボットControllerの設定を変更するため、MENU 1>0–NEXT–をクリックします。
MENU 2 >6 SYSTEM> 5 Configを開きます。
42 Remote/Local SetupはDefaultでOP panel Keyです。
CHOICEをクリックし、Remoteに選択してください。
これでOKです!
7 Enable UI signalsにもTRUEに設定してください。
UOP
次はUOPのMapping設定を行うためI/O>UOPを開きます。
UO
I/O UOP OutのMonitor画面が表示されます。
CONFIGボタンをクリックしUOPもMappingを行います。
こちらは現在UOのMappingです。
最初にRACK値を設定します。
89番はEthernet/IP Rackで、UOのRACKを変更するとSTATはPENDに変わります。
RACK値、SLOT値、START値が正しく設定されるとDevice NameはEthernetIPに表示されます。
UI
次はUIの設定を行うためIN/OUTをクリックしましょう。
こちらはUIの設定画面になります。
同じくRACK=89とSlot=1を設定し、STARTは1,9,17にします。
STAT.がPENDING状態に変わります。
Robot Controllerを再起動します。
Export EDS File
Ethernet/IPを構築するのEDS FileをExportするため、7 FILE>1 Fileを開きます。
BACKUPをクリックします。
BACKUP 2>2 Com. Conf.をクリックします。
Done!EDS FileがExportできました。
いまROBOGUIDEのProjectにある場所を開くために、File>Explore Fodler>Your project Name Folderをクリックしてください。
RobptGuideが自動でいま作業中のFolderをExplore でひらいてくれます。
TwinCAT Side
次はTwinCAT側の準備です。今回の記事ではまず通信確立・UIOのMAPPINGまでの説明になります。
Install EDS File
先程RobptGuideからExportしたEDS Fileを下記のFolderに格納してください。
C:\TwinCAT\3.1\Config\Io\EtherNetIP
Add Ethernet/IP Scanner
I/O>Devices>Add New Itemで新しいFieldbus Driverを追加します。
Etherent/IP>Ethernet/IP Scannerを選び>Okで進みます。
AdapterのTabを開き、SearchボタンをクリックしてEtherent/IP Scannerとして使用するScanner Network Interfaceを設定しましょう。
現在IPCで使用できるNetwork Interfaceを一覧できます。
Task
次はEthernet/IP ScannerのTaskを追加するため、Sync Taskを開きます。
Special Sync Taskを選び>Create new I/O Taskします。
新しいTask名を入力してください。
Done!
Scanner IP
次はEthernet/IP ScannerのIP アドレスを設定します。先程追加したEthernet/IP Scannerをクリックしてください。
SettingsのTabを開きます。
F800.0にあるIP address・Network Mask・Gateway addressを設定しましょう。
Done!
Add FANUC Adapter
Ethernet/IP Scannerの設定が終わりましたので、次はFANUC のEthernet/IP Adapterを追加します。先程設定したScannerを右クリック>Add New Itemします。
FANUC Robotを選ぶ>Okします。
Done!
Adapter IP
Settings>8000.0からFANUC ロボットのIpアドレスを設定します。
今回のTutorialでは192.168.5.67になります。
Add Connection
Beckhoff TwinCAT3とFANUCの間のEthernet/IP Connectionを設定します。
先程追加したFANUCロボットAdapterを右クリック>Append IO Connection>Adapter on slot1をクリックしてください。
EDS Fileに沿って変数を自動作成しますか?Yesで進みます。
Done!Connection1が追加されました。
InputsとOutputsは先程RobptGuideで定義された変数サイズと一致しています。
Configure
EDS Fileから接続設定をImportしましたので、基本的には設定を変更する必要がありませんが、アプリケーションに合わせてTimeoutやRPIを設定してください。
Add PLC
Fieldbusの設定が終わりましたので、次はPLCプログラムを作ります。
PLC>右クリック>Add New Itemします。
Standard PLC Projectを選び>Addします。
Program
これから構造体とFUNCTION BLOCKを作成します。
DUT_FANUC_UI1
こちらはFANUCのUI1に合わせて作成した構造体です。
TYPE DUT_FANUC_UI1 : STRUCT UI01_IMSP :BIT; UI02_Hold :BIT; UI03_SFSP :BIT; UI04_CycleStop :BIT; UI05_FaultReset :BIT; UI06_Start :BIT; UI07_Home :BIT; UI08_Enable :BIT; UI09_RSR1,UI10_RSR2 ,UI11_RSR3,UI12_RSR4 ,UI13_RSR5,UI14_RSR6 ,UI15_RSR7,UI16_RSR8:BIT; UI17_PNSStrobe:BIT; UI18_ProdStart :BIT; UI19,UI20,UI21,UI22 ,UI23,UI24,UI25,UI26 ,UI27,UI28,UI29,UI30 ,UI31,UI32 :BIT; END_STRUCT END_TYPE |
DUT_FANUC_UO1
こちらはFANUCのUO1に合わせて作成した構造体です。
TYPE DUT_FANUC_UO1 : STRUCT UO01_CmdEnabled:BIT; UO02_SystemReady:BIT; UO03_PrgRunning:BIT; UO04_PrgPaused:BIT; UO05_MotionHeld:BIT; UO06_Fault :BIT; UO07_AtPerch:BIT; UO08_TPEnabled:BIT; UO09_BattAlarm:BIT; UO10_Busy :BIT; UO11_ACK1 :BIT; UO12_ACK2 :BIT; UO13_ACK3 :BIT; UO14_ACK4 :BIT; UO15_ACK5 :BIT; UO16_ACK6 :BIT; UO17_ACK7 :BIT; UO18_ACK8 :BIT; UO19_SNACK :BIT; UO20_Reserved:BIT; UO21,UO22,UO23 ,UO24,UO25,UO26 ,UO27,UO28,UO29 ,UO30,UO31,UO32:BIT; END_STRUCT END_TYPE |
FB_FANUC_Basic
こちらはFANUCロボットを制御するFUNCTION BLOCKです。
FUNCTION_BLOCK FB_FANUC_Basic VAR_INPUT END_VAR VAR_OUTPUT qEnable:BOOL; qFault:BOOL; END_VAR VAR _rawIn AT %I*:ARRAY[0..7]OF BYTE; _rawOut AT %Q*:ARRAY[0..7]OF BYTE; _EIPConnectionState AT %i*:UINT; _UI1:DUT_FANUC_UI1; _UO1:DUT_FANUC_UO1; END_VAR |
METHOD PUBLIC Enable
こちらのMethodはFANUCロボットをENABLEするに最低限必要な信号(IMSP・SFSP・ENABLE・HOLD)を有効にします。
METHOD PUBLIC Enable : BOOL VAR_INPUT iTrigger:BOOL; END_VAR VAR _RobotEnable:BOOL; END_VAR _RobotEnable:=iTrigger AND NOT Fault(); _UI1.UI01_IMSP:=_RobotEnable; _UI1.UI03_SFSP:=_RobotEnable; _UI1.UI08_Enable:=_RobotEnable; _UI1.UI02_Hold:=_RobotEnable; |
METHOD PROTECTED Fault
こちらのMethodはFANUCロボットから受信したFault信号でロボットのFault状態を出力します。
METHOD PROTECTED Fault : BOOL Fault:=_UO1.UO06_Fault OR _UO1.UO09_BattAlarm ; |
METHOD PUBLIC Rest
こちらのMethodはFANUCロボットのエラーをリセットします。
METHOD PUBLIC Rest : BOOL VAR_INPUT iTrigger:BOOL; END_VAR _UI1.UI05_FaultReset:=iTrigger; |
METHOD PUBLIC Update
こちらはのMethodをUser programに呼び出さない限りFANUCロボットとTwinCAT間の信号を更新しません。
METHOD PUBLIC Update : BOOL MEMMOVE( destAddr:=ADR(_UO1) ,srcAddr:=ADR(_rawIn[0]) ,n:=4 ); MEMMOVE( destAddr:=ADR(_rawOut[0]) ,srcAddr:=ADR(_UI1) ,n:=4 ); qEnable:=_UO1.UO01_CmdEnabled AND _UO1.UO02_SystemReady; qFault:=Fault(); |
MAIN
こちらはMAINプログラムになります。
PROGRAM MAIN VAR Robot1:FB_FANUC_Basic; bReset:BOOL; bEnable:BOOL; RobotEnable,RobotFault:BOOL; END_VAR Robot1.Update(); Robot1.Rest(iTrigger:=bReset); Robot1.Enable(iTrigger:=bEnable); RobotEnable:=Robot1.qEnable; RobotFault:=Robot1.qFault; |
Build
Build>Build Solutionでプロジェクトをコンパイルします。
Link
最後はUser programの変数とProcess DataをMappingします。Inputs>すべてを選択>Change Multi Linkをクリックします。
先程作成したFunction Blockには%I*として定義したProcess Inputがあり、こちらの変数を選択しましょう。
Outputs>すべてを選択>Change Multi Linkをクリックします。
先程作成したFunction Blockには%Q*として定義したProcess Outputがあり、こちらの変数を選択しましょう。
Download
最後はActivate ConfigurationでプロジェクトをRuntimeにDownloadします。
OKで進みます。
TwinCATをRun Modeに切り替えます。
Result
まずFANUCロボット側から確認しましょう。AdapterにはScanner IPが表示され、そのIPアドレスはBeckhoff TwinCAT3にScanner IPアドレスになります。
こちらの動画でTwinCATからFANUCロボットをEnableする操作になります。
ROBOGUIDE.Enable robot From TwinCAT via Ethenret/IP
こちらの動画でTwinCATからFANUCロボットをDisableする操作になります。
ROBOGUIDE.Disablerobot From TwinCAT via Ethenret/IP
こちらの動画ではTwinCATからFANUCロボットのエラーをリセットする操作になります。