こちらはキーエンスの新しいシリーズ、小型二次元コードリーダSR-750シリーズの記事です!今回はSR-750を使用するには必要な簡単セットアップ、そしてBeckhoff TwinCAT3とEtherent/IPの接続方法・プログラムを紹介します。
(Youtube ChannelのCommentリクエストより)
さ、はじめよう!
Reference Video
Beckhoff.TwinCAT3 Etherent/IPとKeyence SR750を連携しよう
SR750?
SR-750は小型でありながら難読コードでも安定した自動読み取りが可能で、取り込みと処理に新アルゴリズムを採用しています。
それにより、難読コードでもクラス最高の読み取り性能を実現し、様々な材質のワーク(DPM)に直接印字されたコードも安定して読み取ることができます。
Tool Installation
SR-750をセットアップするにはAutoID Network Navigatorが必要なので、キーエンスからソフトウェアをもらってください。
ライセンスに同意し、Next>で進みます。
Next>で進みます。
ソフトウェアの言語を選び、Installを開始します。
しばらく待ちます…
Done!
FTP Serverを起動しますか?とりあえずNoでOKです。
Startup
AutoID Network Navigatorを起動します。
Done!
Register Device
手元にあるSR-750と接続するため、+ボタンをクリックしデバイスを登録します。
SR-750と接続するInterfaceの選択画面が表示され、今回はEtherentと繋がります。
次はPCのInterfaceを設定します。
ちなみにSR-750のIP アドレスは192,168.100.100です。
次はデバイスの検索画面が表示され、Auto Searchでデバイスを検索しましょう。
Done!SR-750を見つけました。
Done!デバイスリストに先ほど登録されたデバイスには緑のランプがついていて、つまり現在PCのとSR-750とつながっています。
Monitor
Monitorボタンをクリックすれば、現在のカメラのライブ画像を確認できます。
カメラを2次元コードにもしっかり認識できます。
右下にはReading Testの表で2次元コードのデータやテスト結果を確認できます。
Tuning
Tuningボタンをクリックしてカメラを自動調整することもできます。
Done!
Code
Code を開き各Bankを読み込む2次元コードを設定できます。
Drop ListからCodeを設定しましょう。
Done!
Reading Tabに戻ります。
下はBank2をDataMatrixに変わりましたね。
Result
Done!DataMatrixのコードにも検出されました。
Send Configuration
SR-750のセットアップを完了したら、Transfer>Send Configurationでプロジェクトをデバイスに転送しましょう。
Retrieve Configuration
Ethernet/Ip?
EtherNet/IPは、ODVA(Open DeviceNet Vendor Association Inc.
DeviceNet Vendor Association, Inc)によって提唱された産業用通信ネットワークで、
EtherNet/IP通信は、通常のEthernet通信とネットワークを共有することができます。
Scanner and adaptor
EtherNet/IP通信では、あるデバイスが他のデバイスに「コネクション」と呼ばれる通信回線を開きます。
コネクションを開くデバイスは「スキャナー」(オリジネーター)と呼ばれ、受信するデバイスは「アダプター」(ターゲット)と呼ばれる。PLCは主にスキャナとして使用され、SR-750はアダプター機器となります。
Cyclic communication and message communication
EtherNet/IPでは、周期的なデータの送受信を行うサイクリック通信(Implicit message)と、コマンド/レスポンスの送受信を行うメッセージ通信(Explicit message)があります。
(明示的メッセージ)があります。
Cyclic communication
サイクリック通信 サイクリック通信では、送受信するデータの優先順位に応じてRPI(通信周期)を設定することができる。全体の通信負荷を調整したデータの送受信が可能です。
SR-750シリーズでEtherNet/IPを使用してサイクリック通信を行う場合、SR-750シリーズの機能がPLC機器に割り当てられます。
注意するのはサイクリック通信の通信周期やデータサイズなどの通信設定は、PLC側で行います。また、EtherNet/IP機器を含む多数の機器を接続するネットワークにおいて、負荷が大きい場合遅延やパケットロスが発生する場合がありますので、。運用前に十分な検証を行ってください。
Function Overview
Reading instruction
読み取り指示を行い、また読取終了、バンク設定読取等の操作もやります。
Preset instructions
正常に読み取られたデータをプリセットデータとして記録します。また、PLC からプリセットデータを登録または削除します。
Calibration instructions
キャリブレーションを実行し、また校正結果をセットバンクに保存できます。
Error-handling
本体で発生したエラーの原因を調べ、エラーを返す。
(例えば:Buffer overflow check/cancellation)
Main unit status acquisition
本体の状態(BUSY状態)を確認します。
Operation results acquisition
サイレントモードに設定すると、読み取りデータは更新されません。
Terminal status acquisition
入力端子、出力端子の状態を取得します。
Main unit reset instructions
SR-750 シリーズのソフトウェアリセットを表示します。
Assemblies
Result data (Input Assemblies)
入力アセンブリは、SR-750シリーズからの応答をPLCに書き込むデバイスです。
(Instance ID: 0x64)
Control data (Output Assemblies)
出力アセンブリは、PLCからの命令をSR-750シリーズに書き込むデバイスです。
(Instance ID: 0x65)
Message communication
メッセージ通信では、コマンド/レスポンスによってタイミングがコントロールされる。
Specification Of SR-750
こちらはSR-750のEtherent/IP接続使用になります。
Time chart
Implementation
Keyence Side
IPComm
Communication1のTabを開き、SR-750のIPアドレスとSubnet Maskを設定してください。
Comm
次はCommunication2のTabを開き、Data Port2をEthernetに設定してください。
Protocol
そしてProtocolをEthernet/IPに設定し、Detailsボタンをクリックします。
Ethernet/IP接続のデータサイズやByte Swapingを設定できますが、今回Defaultのままにします。
Table
Table Tabを開くとSR750のパラメータを一覧や設定できます。
TwinCAT3 Side
今度はTwinCAT3側を設定します。
Install EDS File
Keyence HPからSR-750のEDS FileをDownloadし、下記のDirectoryに格納してください。
Add Devices
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 SR-750 Adapter
Ethernet/IP Scannerの設定が終わりましたので、次はKeyence のEthernet/IP Adapter SR-750を追加します。先程設定したScannerを右クリック>Add New Itemします。
SR-750を選ぶ>Okします。
Done!
Adapter IP
Settings>8000.0からKeyence SR-750のIpアドレスを設定します。
今回のTutorialでは192.168.100.100になります。
Add Connection
Beckhoff TwinCAT3とKeyence SR-750の間のEthernet/IP Connectionを設定します。
先程追加したKeyence SR-750Adapterを右クリック>Append IO Connection>Class1をクリックしてください。
EDS Fileに沿って変数を自動作成しますか?Yesで進みます。
Done!Connectionが追加されました。
Etherent/IPの通信設定は実際のアプリケーションに合わせて設定しましょう。
Add PLC
Fieldbusの設定が終わりましたので、次はPLCプログラムを作ります。
PLC>右クリック>Add New Itemします。
Standard PLC Projectを選び>Addします。
DUT
DUT_SR750_EIP_INData
こちらはSR750 Ethernet/IPのInput Assemblyに合わせて定義した構造体です。
TYPE DUT_SR750_EIP_INData : STRUCT Error :BIT; //Buffer Overflow Error OR General Error is ON. ResultDataAvailable:BIT; //This displays whether read data exists or not,using in Handshake ResultDataStrobe:BIT; // BufferOverFlow:BIT; //buffer overflow error occurs. GeneralError:BIT; Busy:BIT; //TryBusy,LockBusy,ModeBusy or ErrBusy is on TryBusy:BIT; LockBusy:BIT; ModeBusy:BIT; ErrBusy:BIT; ReadComplete:BIT; //when reading is complete PresentComplete:BIT; //when preset reading is complete. RegisterPresetDataComplete:BIT; //when preset data registration is complete. TuneComplete:BIT; //when tuning is complete. EXTRequestComplete:BIT; //when “Reading”, “Preset reading” or “Tuning” is performed with the IN terminal or command and the operation is complete. ReadFailure:BIT; //when reading error or comparison NG occurs. PresentFaliure:BIT; //when preset reading fails. RegisterPresetDataFailure:BIT; //when preset data registration fails. TuneFailure:BIT; //when tuning fails. EXTRequestFailure:BIT; //when “Reading”,”Preset reading” or “Tuning” is performed with the IN terminal or command and the operation fails. IN1Status:BIT; //This represents IN1 terminal status. IN2Status:BIT; //This represents IN2 terminalstatus. OUT1Status:BIT; //This represents OUT1 terminal status. OUT2Status:BIT; //This represents OUT2 terminal status. OUT3Status:BIT; //This represents OUT3 terminal status. noname5_arrBIT:BIT; Unstable:BIT; //ON when any of the following Unstable Bits (9 to 12) is ON. MatchingLevelUnstable:BIT; //Matching level judgment result ISOIEC15415Unstable:BIT; //ISO/IEC15415 verification judgment resul AIMDPMUnstable:BIT; //ISO/IEC TR 29158 (AIM DPM-1-2006) verification judgment result SAEAS9132Unstable:BIT; //SAE AS9132 Unstable verification judgment result MatchingLevel:UINT; ISOIEC15415Grade:UINT; AIMDPMGrade:UINT; ReadResultCode:UINT; PresentResultCode:UINT; RegisterPresetDataResultCode:UINT; TuneResultCode:uint; EXTRequestResultCode:UINT; GeneralErrorCode:UINT; ReadyDataReadyCount:UINT; ReadyDataUpdateCount:UINT; ResultDataSize:UINT; ResultData:ARRAY[0..127]OF BYTE; END_STRUCT END_TYPE |
DUT_SR750_EIP_OutData
こちらはSR750 Ethernet/IPのOutput Assemblyに合わせて定義した構造体です。
TYPE DUT_SR750_EIP_OutData : STRUCT ResultDataLatch:BIT; ErrorClear:BIT; ReadRequest:BIT; //The SR-750 Series starts reading. PresetRequest:BIT; //Preset reading starts. RegisterPresetDataRequest:BIT; //Specified preset data is registered to Address 5, 6 and above TuneRequest:BIT; //Tuning starts ReadCompleteClear:BIT; //”Reading Complete” Bit of Input Assemblies is cleared. PresetCompleteClear:BIT; //”Preset Reading Complete” Bit of Input Assemblies is cleared. RegisterPresetDataCompleteClear:BIT;//”Preset Data Registration Complete” Bit of Input Assemblies is cleared. TuneCompleteClear:BIT; //”Tuning Complete” Bit of Input Assemblies is cleared. EXTRequestCompleteClear:BIT; //”External Instruction Operation Complete” Bit of Input Assemblies is cleared. BankNumber:UINT; //Input a bank number here and start reading. UserDataSize:UINT; UserData:array[0..63]OF BYTE; END_STRUCT END_TYPE |
DUT_SR750_EIP
こちらは先程Input AssemblyとOutput Assemblyをまとめた構造体です。
TYPE DUT_SR750_EIP : STRUCT in AT %I*:DUT_SR750_EIP_INData; out AT %Q*:DUT_SR750_EIP_OutData; CommStatus AT %I*:UINT; END_STRUCT END_TYPE |
DUT_HMI_SR750_PB
こちらはSR750をHMIから操作する構造体です。
TYPE DUT_HMI_SR750_PB : STRUCT bRead:BOOL; bClear:BOOL; bReset:BOOL; END_STRUCT END_TYPE |
DUT_HMI_SR750_PL
こちらはSR750の状態をHMIで表示する構造体です。
TYPE DUT_HMI_SR750_PL : STRUCT Status:DUT_SR750_EIP_INData; Data:STRING; END_STRUCT END_TYPE |
DUT_HMI_SR750
こちらは先程HMIの操作と表示をまとめた構造体になります。
TYPE DUT_HMI_SR750 : STRUCT PB:DUT_HMI_SR750_PB; PL:DUT_HMI_SR750_PL; END_STRUCT END_TYPE |
GVL
GVL_HMI
こちらはHMI操作のGlobal変数です。
{attribute ‘qualified_only’} VAR_GLOBAL SR750_1:DUT_HMI_SR750; END_VAR |
GVL_Mapping
こちらはSR750のEthernet/IP データをMappingするGlobal 変数です。
{attribute ‘qualified_only’} VAR_GLOBAL SR750_1:DUT_SR750_EIP; END_VAR |
Program
こちらのプログラムはSR750をEthernet/IP経由でTriggerしたり、状態を取得しHMIで表示したりします。
PROGRAM MAIN VAR Result:STRING; bRead:BOOL; R_TRIG:R_TRIG; END_VAR GVL_Mapping.SR750_1.out.ReadRequest:=GVL_HMI.SR750_1.PB.bRead AND GVL_Mapping.SR750_1.CommStatus=0 ; R_TRIG(CLK:=GVL_Mapping.SR750_1.out.ReadRequest); IF R_TRIG.Q THEN Result:=’ ‘; END_IF IF GVL_Mapping.SR750_1.in.ReadComplete THEN MEMMOVE( destAddr:=ADR(Result) ,srcAddr:=ADR(GVL_Mapping.SR750_1.in.ResultData) ,n:=GVL_Mapping.SR750_1.in.ResultDataSize); ELSIF GVL_Mapping.SR750_1.in.ReadFailure THEN GVL_HMI.SR750_1.PL.Status.ResultDataSize:=0; GVL_HMI.SR750_1.PL.Data:=’ERROR!!!!’; END_IF; GVL_Mapping.SR750_1.out.ErrorClear:=GVL_HMI.SR750_1.PB.bReset; GVL_Mapping.SR750_1.out.ReadCompleteClear:=GVL_HMI.SR750_1.PB.bClear; GVL_HMI.SR750_1.PL.Status:=GVL_Mapping.SR750_1.in; GVL_HMI.SR750_1.PL.Data:=Result; |
Visualize
こちらはSR750の操作画面です。
Build
Build>Build Solutionでプロジェクトをコンパイルします。
Link Input/Output
SR750の入出力Process DataをPLCとMappingしましょう。
Download
最後はActivate ConfigurationでプロジェクトをRuntimeにDownloadします。
OKで進みます。
TwinCATをRun Modeに切り替えます。
Start
最後はTwinCAT3 Runtimeを起動します。
Result
Stateを開いてSR750とTwinCAT3のEthernet/IP接続状態を確認しましょう。
State=0なので、いまTwinCAT3とEthernet/IPが接続正常です。
こちらはTwinCAT3からSR750にTriggerを送信し、QR Codeを読み取る動画です。
Beckhoff.Using Ethere/IP to communicate with Keyence SR-750(QR Code)
こちらはTwinCAT3からSR750にTriggerを送信し、Data Matrixを読み取る動画です。
Beckhoff.Using Ethere/IP to communicate with Keyence SR-750(DataMatrix)
Project Download
こちらのLinkで今回の記事のプロジェクトをDownloadしてください。
https://github.com/soup01Threes/TwinCAT3/blob/main/TwinCATWithSR750_EIP.tnzip