NJ シリーズ
データベース接続 CPU ユニット
FH シリーズ
画像処理システム
NJ と FH による画像とデータの紐付け実現方法
目 次
1. 概要 ........................................................................................ 1
1.1. 概要 ................................................................................. 1
1.2. 対象読者 ......................................................................... 1
1.3. 対象スキル ...................................................................... 1
2. 対象製品 ................................................................................. 2
3. 画像とデータの紐付け ........................................................... 3
3.1. 実現できること............................................................... 3
3.2. 本資料で説明する実現例 ................................................ 5
4. NJ がファイル名を決定する場合の実現例............................ 6
4.1. 機器構成 ......................................................................... 7
4.2. システム構成 .................................................................. 8
4.3. タイミングチャート ....................................................... 94.4. サンプルプログラム（FH 側）..................................... 10
4.5. サンプルプログラム（NJ 側） ..................................... 15
5. FH がファイル名を決定する場合の実現例 ......................... 19
5.1. 機器構成 ....................................................................... 20
5.2. システム構成 ................................................................ 21
5.3. タイミングチャート ..................................................... 225.4. サンプルプログラム（FH 側）..................................... 23
5.5. サンプルプログラム（NJ 側） ..................................... 27
6. 参照情報 ............................................................................... 29
7. 注意事項 ............................................................................... 30
8. 改訂履歴 ............................................................................... 30

FST-ZAD130076A

1．概要

1. 概要
1.1. 概要
本資料は、NJ シリーズ データベース接続 CPU ユニット（以下、NJ）と FH シリーズ（以下、FH）を使用して、画像ファイルと計測データの紐付けを実現するための考え方と実現例について記載しています。

参考
画像ファイルと計測データの紐付けとはFH で保存する画像ファイル名を FH と NJ とで共有することで、NJ が計測データと画像フ
ァイル名とを合わせてデータベースに記録することを意味します。
これにより、データベース上の計測データから計測時の画像ファイルを参照することができるようになります。

使用上の注意本資料で説明している内容は、考え方を説明するための例であり、お客様のシステムでの動作を保証するものではありません。

1.2. 対象読者
・ FH で保存する画像と、NJ で記録するデータの紐付け方法を理解したい方

1.3. 対象スキル
・ FH、および NJ の基本的な操作ができる方
・ NJ のデータベース接続 CPU ユニットを使用したデータベース接続、および基本的なアプ
リケーションの構築ができる方・ FH のカスタムコマンド、およびマクロが理解できる方・ EtherCAT®を使って NJ と FH シリーズを接続し、NJ から FH を操作する方法を理解できる方

12．対象製品

2. 対象製品
名称
マシンオートメーションコントローラ

形式

バージョン

形 N501-1□20

1.08

形 FH-1□□□5.0

形 FH-3□□□

5.1

NJ シリーズ データベース接続 CPU ユニット
画像センサ FH シリーズ

2

3．画像とデータの紐付け

3. 画像とデータの紐付け
3.1. 実現できること
3.1.1.

従来の画像センサとコントローラの組み合わせでの問題点
画像センサが保存する画像ファイルと、コントローラが保存するデータとが紐付けできていないため、日付や時間などから推定して照合する必要がありました。
データから画像ファイルを特定できない

画像ファイル

データベース
データを記録画像ファイルを保存（画像情報なし）

画像センサ

3.1.2.

コントローラ

本資料における解決策
画像センサ・コントローラ間で画像ファイル名を共有することで、画像とデータの確実な照合を可能にします。
データから画像ファイルを特定できる

画像ファイル
決められたファイル名でデータベース
画像ファイル名を含めてデータをデータベースに記録

画像を保存

画像ファイル名を共有
画像センサ

NJシリーズ

FHシリーズ

データベース接続CPU3

3．画像とデータの紐付け

3.1.3.

実現内容のイメージ（共有フォルダ）
下図のように、指定されたフォルダ構成・ファイル名で画像ファイルが保存されます。下の例では、保存先フォルダを「Image¥YYYY-MM-DD¥HH-MM」、ファイル名を「シリアルNo.jpg」として指定しています。

共有フォルダ3.1.4.

Image├─2014-01-21│ ││ ├─18-05│ │0014.jpg│ │0015.jpg│ │0016.jpg│ │0017.jpg│ ││ ├─18-06│ │0018.jpg│ │0019.jpg│ │0020.jpg│ ││ ├─18-09│ │0021.jpg│ │0022.jpg│ │0023.jpg│ │0024.jpg│ │0025.jpg│ │0026.jpg│ ││ ├─18-13│ │0027.jpg

実現内容のイメージ（データベース）
下図のように、計測結果のデータとともに、保存先フォルダ・ファイル名が同じレコードに記録されます。

データベースTimeStamp
2014/1/21 18:05

SerialNo
14

Result1
1173.056641

Result2
405.3557478

Result3-0.620404412

DirName2014-01-21¥18-05

FileName
0014.jpg

2014/1/21 18:05

15

1173.372587

404.8877704-0.497596154

2014-01-21¥18-05

0015.jpg

2014/1/21 18:05

161173.414798

404.8188545-0.398787313

2014-01-21¥18-05

0016.jpg

2014/1/21 18:05

171173.404297

404.8978568-0.443065068

2014-01-21¥18-05

0017.jpg

2014/1/21 18:06

181173.365792

404.8925781-0.584134615

2014-01-21¥18-06

0018.jpg

2014/1/21 18:06

191173.094537

405.124721-0.760758197

2014-01-21¥18-06

0019.jpg

2014/1/21 18:06

20

1173.445763

404.8230148-0.4296875

2014-01-21¥18-06

0020.jpg

2014/1/21 18:09

21

1173.055492

405.2954396-0.4296875

2014-01-21¥18-09

0021.jpg

2014/1/21 18:09

221173.019252

405.1922357-0.540865385

2014-01-21¥18-09

0022.jpg

2014/1/21 18:09

23

1173.012251

405.1204427-0.703125

2014-01-21¥18-090023.jpg

2014/1/21 18:09

24

1173.056641

405.2941406-0.608675373

2014-01-21¥18-090024.jpg

2014/1/21 18:09

25

1172.957442

405.2701823-0.330882353

2014-01-21¥18-090025.jpg

2014/1/21 18:09

26

1172.973851

405.2256651-0.620404412

2014-01-21¥18-090026.jpg43．画像とデータの紐付け

3.2. 本資料で説明する実現例
本資料では下記の 2 通りの実現方法について、それぞれの実現例を紹介しています。
(1) NJ がファイル名を決定する場合
NJ 側でファイル名を決定して、FH に対してファイル名の通知と計測指示を出力することで、NJ-FH 間でファイル名を共有します。実現例の詳細については「4.NJ がファイル名を決定する場合の実現例」を参照してください。
【適用例】
NJ から FH に対して EtherCAT®通信で計測トリガを入力する場合など、NJ が計測のタイミングを制御している場合(2) FH がファイル名を決定する場合
FH 側でファイル名を決定して、NJ に対してファイル名の通知と計測結果を出力することで、NJ-FH 間でファイル名を共有します。実現例の詳細については「5.FH がファイル名を決定する場合の実現例」を参照してください。
【適用例】
FH に接続されたセンサなどから計測トリガをかける場合など、NJ が計測のタイミングを制御できない場合

5

4．NJ がファイル名を決定する場合の実現例

4. NJ がファイル名を決定する場合の実現例
NJ がファイル名を決定する場合の実現例について説明します。
この方法では、NJ 側のプログラムで保存先のフォルダ名や画像ファイル名を変更することができます。
本章では、下図のように NJ から FH に対して EtherCAT®通信によってファイル名の通知と計測指示を出力する場合を例にして説明します。

参考
NJ から FH に一度の通信で送信できるのは DINT 型データ 4 つまでです。
そのため、フォルダ名／ファイル名の可変部分は数値データに基づいて決定する必要があります。

共有フォルダEthernet
データベース

EtrherCAT®

RUN

PA3001PWR

ERROR

NJ501-1520

BUSY

SD PWRSD BUSY

NET RUN

PORT1
EtherNet/IP

NET ERR
LINK/ACTNET RUN

PORT2
EtherCATNET ERR
LINK/ACT(1) NJ は FH に対して、下記の通信コマンドを発行します。本資料では、「通信カスタムコ
マンド」を使用することで 1 回の通信処理で以下の処理を行います。
・ 「ユニットデータ設定」コマンドで「ユーザデータ」に保存先フォルダ名とファイル名の基になるデータを書き込む
・ 「計測実行」コマンドで計測を実行する(2) FH はサーバ PC の共有フォルダに計測画像を保存します。本資料では計測フロー中の「マクロ」を使って下記の処理を実行します。
・ (1)で書き込まれた「ユーザデータ」を取得して、文字列操作により保存先フォルダ名とファイル名を生成する
・ 計測画像を保存する(3) FH は NJ に対して、計測結果を出力します。
(4) NJ は計測結果とファイル名の両方をデータベースに書き込みます。

6

4．NJ がファイル名を決定する場合の実現例

4.1. 機器構成
本章で想定している機器構成を下記に示します。

サーバ(PC) 共有フォルダ

Ethernet
EtrherCAT®

データベース

FHシリーズ
形FH-1□□□
形FH-3□□□

NJシリーズ
データベース接続CPUユニット
形NJ501-1□20
RUN

PA3001PWR

ERROR

NJ501-1520

BUSY

SD PWRSD BUSY

NET RUN

PORT1
EtherNet/IP

NET ERR
LINK/ACTNET RUN

PORT2
EtherCATNET ERR
LINK/ACT

7

4．NJ がファイル名を決定する場合の実現例

4.2. システム構成
本章で想定しているシステム構成を下記に示します。
Image├─2014-01-21│ ││ ├─18-05│ │0014.jpg│ │0015.jpg│ │0016.jpg│ │0017.jpg│ ││ ├─18-06│ │0018.jpg│ │0019.jpg│ │0020.jpg│ ││ ├─18-09│ │0021.jpg│ │0022.jpg│ │0023.jpg│ │0024.jpg│ │0025.jpg│ │0026.jpg│ ││ ├─18-13│ │0027.jpg

画像ファイル

データベース②④③

TimeStamp
2014/1/21 18:05

SerialNo
14

Result1
1173.056641

Result2
405.3557478

Result3-0.620404412

DirName2014-01-21¥18-05

FileName
0014.jpg

2014/1/21 18:05

15

1173.372587

404.8877704-0.497596154

2014-01-21¥18-05

0015.jpg

2014/1/21 18:05

161173.414798

404.8188545-0.398787313

2014-01-21¥18-05

0016.jpg

2014/1/21 18:05

171173.404297

404.8978568-0.443065068

2014-01-21¥18-05

0017.jpg

2014/1/21 18:06

181173.365792

404.8925781-0.584134615

2014-01-21¥18-06

0018.jpg

2014/1/21 18:06

191173.094537

405.124721-0.760758197

2014-01-21¥18-06

0019.jpg

2014/1/21 18:06

20

1173.445763

404.8230148-0.4296875

2014-01-21¥18-06

0020.jpg

2014/1/21 18:09

21

1173.055492

405.2954396-0.4296875

2014-01-21¥18-09

0021.jpg

2014/1/21 18:09

221173.019252

405.1922357-0.540865385

2014-01-21¥18-09

0022.jpg

2014/1/21 18:09

23

1173.012251

405.1204427-0.703125

2014-01-21¥18-090023.jpg

2014/1/21 18:09

24

1173.056641

405.2941406-0.608675373

2014-01-21¥18-090024.jpg

2014/1/21 18:09

25

1172.957442

405.2701823-0.330882353

2014-01-21¥18-090025.jpg

2014/1/21 18:09

26

1172.973851

405.2256651-0.620404412

2014-01-21¥18-090026.jpg①
FH

NJ(1) NJ から FH に渡されるデータ
日付を表す数値データ「YYYYMMDD」
時刻を表す数値データ「HHMM」
シリアル No.を表す数値データ「nnnn」(2) FH が共有フォルダに作成する画像ファイル名
S:¥Image¥YYYY-MM-DD¥HH-MM¥nnnn.jpg※S:¥は FH で設定されているネットワークドライブ(3) FH から NJ に渡されるデータ
計測結果データ（LREAL 型 3 つ）
(4) NJ が DB 書き込むテーブルの構造
計測日時「TimeStamp」
シリアル No.「SerialNo」
計測結果データ 1「Result1」
計測結果データ 2「Result2」
計測結果データ 3「Result3」
保存先ディレクトリ（相対パス）「DirName」
画像ファイル名「FileName」

参考
本章の例では、画像ファイルの保存先は基準となるフォルダ（FH がネットワークドライブ
として参照している共有フォルダ）からの相対パスで DB に記録されています。
実際に DB に記録されたデータから画像ファイルを参照する際には絶対パスを生成する必要があります。

8

4．NJ がファイル名を決定する場合の実現例

4.3. タイミングチャート
コマンドコード

NJ→FH コマンドパラメータ0～3
コマンド実行0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0

処理実行中

0 0 0 0 0 1 1 1 1 1 1 0⑤0 0 0 0

コマンド実行完了

0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0

FH→NJ

計測結果
データ出力完了0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0

① ②③

④

(1) NJ が「コマンドコード」、「コマンドパラメータ」をセットします。コマンドコードとパラメータの詳細については「4.4.1.通信フォーマット」を参照してください。
(2) その後、「処理実行中」信号と「コマンド実行完了」信号が OFF になっていることを確認して、「コマンド実行」信号を OFF→ON します。これにより、FH に対して通信コマ
ンドが発行されます。
(3) FH は指定されたコマンドを実行します。
「処理実行中」信号が ON します。
(4) その後、計測フローの「Fieldbus データ出力」が実行されると計測結果を出力します。
「データ出力完了」信号が ON します。
NJ は「データ出力完了」信号の ON により、データベースへのレコード書込を実行します。
(5) NJ は「コマンド実行完了」信号が ON したことを入力条件として、「コマンド実行」信号を OFF します。

9

4．NJ がファイル名を決定する場合の実現例

4.4. サンプルプログラム（FH 側）
4.4.1.

通信フォーマット「4.3.タイミングチャート」の(1)でセットされる「コマンドコード」、「コマンドパラメータ」
を下記に示します。
コマンドコード：DWORD#16#0

通信カスタムコマンド No.0 を指定

コマンドパラメータ 0：UINT#YYYYMMDD 例）2013 年 1 月 23 日ならば、UINT#20130123
コマンドパラメータ 1：UINT#HHMM

例）12 時 24 分ならば、UINT#1234

コマンドパラメータ 2：UINT#シリアル No

4.4.2.

通信カスタムコマンド

使用する通信カスタムコマンドを下記に示します。本資料ではコマンド No.0 に指定しています。
本カスタムコマンドで実行している処理内容については「4.4.4.ユーザデータ」を参照してく
ださい。
UNIT&=3

Rem ユーザデータのユニットNo.

Rem ユーザデータを設定する
SetUnitData UNIT&, 200, Str$(ARGMENTVALUE#(0))
SetUnitData UNIT&, 201, Str$(ARGMENTVALUE#(1))
SetUnitData UNIT&, 202, Str$(ARGMENTVALUE#(2))
Rem 計測Measure 2
参考
通信カスタムコマンドとはFH に対して、ユーザが独自に定義することができる通信コマンドです。
標準の通信コマンドにない機能を作成したり、1 つの通信コマンドで複数の処理をすることができます。
コマンドコードにコマンド No.の 16 進数（本資料では「00 HEX」）を指定してコマンドを実行することで設定された通信カスタムコマンドが実行されます。
コマンドパラメータ 0～3 の値が ARGMENTVALUE#(0～3)にセットされます。
詳細については「FH/NJ シリーズ 画像処理システム ユーザーズマニュアル(SDNB-712)」の「通信カスタムコマンドを使用する」を参照してください。

参考
通信カスタムコマンドはマクロプログラムで記述します。詳細については「FH/NJ シリーズ
画像処理システム ユーザーズマニュアル(SDNB-712)」の「マクロ機能について」を参照してください。
10

4．NJ がファイル名を決定する場合の実現例

4.4.3.

計測フロー

使用する計測フローを下記に示します。必要になる処理ユニットは「3. ユーザデータ」、
「4. マ
クロ」
、「8.Fieldbus データ出力」です。それ以外の処理ユニットについてはアプリケーショ
ンに応じて変更することができます。

11

4．NJ がファイル名を決定する場合の実現例

4.4.4.

ユーザデータ「4.4.2.通信カスタムコマンド」のコマンドが実行されることで、計測フローの「3.ユーザデータ」の「設定データ」に下図に示すような値が設定されます。
計測フローで「3.ユーザデータ」が実行されることで、「設定データ」が「データ」に反映されます。

「4.4.2.通信カスタムコマンド」のコマンドを実行すると、
コマンドパラメータ 0～2 の値がユーザデータ 0～2 の設定「3.ユーザデータ」がデータに設定されます

実行されると、「設定データ」の値が反映されます

使用上の注意計測フローを変更して、「ユーザデータ」のユニット No.が変わった場合、下記の値を変更してください。カスタムコマンド（マクロ機能）では処理ユニットに対してデータの設定/取得をする際に、ユニット No.を指定して動作しているため、ユニット No.が正しく指定されていないと正しく動作しません。
・「4.2.2.通信カスタムコマンド」の 1 行目、「UNIT&」に入力する値
・「4.4.5.マクロ」の 2 行目、「UNIT&」に入力する値

12

4．NJ がファイル名を決定する場合の実現例

4.4.5.

マクロ

計測フローの「4.マクロ」で記述するマクロを下記に示します。
「3.ユーザデータ」から日付・
時間・シリアル No を参照して、文字列操作により保存先フォルダ名とファイル名を生成し、計測画像をファイルに保存しています。
*MEASUREPROC
PATH$="S:¥"Rem 共有フォルダのパス

UNIT&=3

Rem ユーザデータのユニットNo.

Rem ユーザデータの取得
GetUnitData UNIT&, 1000, DATE&
GetUnitData UNIT&, 1001, TIME&
GetUnitData UNIT&, 1002, SERIAL&

Rem 文字列の生成
YEAR$=Left$(Str$(DATE&), 4)
MONTH$=Mid$(Str$(DATE&), 5, 2)
DAY$=Right$(Str$(DATE&), 2)
HOUR$=Left$(Str2$(TIME&, 4, 0, 1, 0), 2)
MINUTE$=Right$(Str2$(TIME&, 4, 0, 1, 0), 2)
NO$=Str2$(SERIAL&, 4, 0, 1, 0)

Rem 保存先フォルダ名の生成
DIR$=YEAR$+"-"+MONTH$+"-"+DAY$+"¥"+HOUR$+"-"+MINUTE$

Rem ファイル名の生成
FILE$="¥"+NO$+".jpg"

Rem ファイル保存
SaveMeasureImage 0, PATH$+DIR$+FILE$, 10100

Return参考
マクロコマンドの詳細については「FH/NJ シリーズ 画像処理システム ユーザーズマニュア
ル(SDNB-712)」の「マクロ機能について」を参照してください。

13

4．NJ がファイル名を決定する場合の実現例

4.4.6.

Fieldbus データ出力「8.Fieldbus データ出力」の内容を下記に示します。ここでは、「6.形状サーチⅢ」の結果を出力しています。

計測結果

14

4．NJ がファイル名を決定する場合の実現例

4.5. サンプルプログラム（NJ 側）
4.5.1.

プログラム(1) DB 接続／切断処理「Connect」を ON すると DB に接続します。OFF すると DB との接続を切断します。

参考
本資料で使用する DB マップ変数について
本資料ではローカル変数として下記のデータ型の変数「TableData」を DB マップ変数として使用しています。

15

4．NJ がファイル名を決定する場合の実現例(2) 計測実行処理「Trigger」を OFF→ON すると計測を実行します。
インライン ST（下記参照）

インライン ST//現在時刻の取得
DATE_DT:=GetTime();
DtToDateStruct(DATE_DT,DATE_sDT);//シリアルNo.の生成
Inc(SerialNo);//コマンドパラメータの生成
E005_Line0_Command_Parameter_0:=DATE_sDT.Year*10000+DATE_sDT.Month*100+DATE_sDT.Day;
E005_Line0_Command_Parameter_1:=DATE_sDT.Hour*100+DATE_sDT.Min;
E005_Line0_Command_Parameter_2:=SerialNo;//コマンドコードの生成
E005_Line0_Command_Code:=DWORD#16#0;//コマンド応答処理実行
st_CmdResp:=1;

16

4．NJ がファイル名を決定する場合の実現例(3) コマンド応答処理
CASE st_CmdResp OF
0:

//待機中
E005_Line0_Command_Request:=FALSE;

1://コマンド実行
IF (E005_Line0_Busy=FALSE
AND E005_Line0_Command_Completion=FALSE) THEN
E005_Line0_Command_Request:=TRUE;
st_CmdResp:=2;
END_IF;

2://実行中
IF (E005_Line0_Busy=FALSE
AND E005_Line0_Command_Completion=TRUE) THEN
IF E005_Line0_Response_Code=0 THEN
st_CmdResp:=0;//正常終了

st_CmdResp:=-1;//異常終了ELSE

END_IF;
E005_Line0_Command_Request:=FALSE;
END_IF;
END_CASE;

17

4．NJ がファイル名を決定する場合の実現例(4) データベース書込
E005_Line0_Result_Notification（データ出力完了）の OFF→ON により、データベース
へのレコード書込を実行します。
インライン ST（下記参照）

インライン ST//データベースに書き込むデータの生成//計測結果データ1～3
TableData.Result1:=E005_Line0_LREAL_Result_Data_0;
TableData.Result2:=E005_Line0_LREAL_Result_Data_1;
TableData.Result3:=E005_Line0_LREAL_Result_Data_2;
TableData.TimeStamp:=DATE_DT;//計測日時TableData.SerialNo:=SerialNo;//シリアルNo.

//保存先ディレクトリ（相対パス）
TableData.DirName:=CONCAT(
NumToDecString(DATE_sDT.Year,4,_eFILL_CHR#_ZERO),'-',
NumToDecString(DATE_sDT.Month,2,_eFILL_CHR#_ZERO),'-',
NumToDecString(DATE_sDT.Day,2,_eFILL_CHR#_ZERO));
TableData.DirName:=CONCAT(
TableData.DirName,'¥',
NumToDecString(DATE_sDT.Hour,2,_eFILL_CHR#_ZERO),'-',
NumToDecString(DATE_sDT.Min,2,_eFILL_CHR#_ZERO));//画像ファイル名
TableData.FileName:=CONCAT(
NumToDecString(SerialNo,4,_eFILL_CHR#_ZERO),'.jpg');

18

5．FH がファイル名を決定する場合の実現例

5. FH がファイル名を決定する場合の実現例
FH がファイル名を決定する場合の実現例について説明します。FH 側でファイル名を決定して、NJ に対してファイル名の通知と計測結果を出力することで、NJ-FH 間でファイル名を共有します。
この方法では、計測 ID と呼ばれる値から保存先のフォルダ名やファイル名を生成するため、フォルダ名／ファイル名の可変部分は計測 ID に基づいて決定する必要があります。
本章では、下図のように FH のパラレルインターフェースに接続されたセンサなどによって計測トリガが入力される場合を例にして説明します。

参考
計測 ID とは、FH が計測ごとに自動的に取得する ID（文字列）です。
文字列のフォーマットは以下の通りです。
「YYYY-MM-DD_HH-MM-SS-XXXX」

参考
FH から NJ 出力できるのは数値データ(DINT/LREAL)のみです。
そのため、フォルダ名／ファイル名の可変部分は数値データに基づいて決定する必要があります。

共有フォルダEthernet
データベース
EtrherCAT®

RUN

PA3001PWR

ERROR

NJ501-1520

BUSY

SD PWRSD BUSY

NET RUN

PORT1
EtherNet/IP

NET ERR
LINK/ACTNET RUN

PORT2
EtherCATNET ERR
LINK/ACT(1) 外部のセンサなどから FH に対して「計測トリガ（STEP 信号）」を出力します。
(2) FH はサーバ PC の共有フォルダに計測画像を保存します。
本資料では計測フロー中の「マクロ」を使って下記の処理を実行します。
・計測 ID を取得して、文字列操作により保存先フォルダ名とファイル名を生成する
・計測画像を保存する
19

5．FH がファイル名を決定する場合の実現例(3) FH は NJ に対して、計測結果と計測 ID を数値変換したものを出力します。
(4) NJ は計測 ID から文字列操作により保存先フォルダ名とファイル名を生成し、計測結果
と共にデータベースに書き込みます。

5.1. 機器構成
本章で想定している機器構成を下記に示します。

Ethernet
EtrherCAT®
パラレルインターフェース

サーバ(PC) 共有フォルダ

データベース

FHシリーズ
形FH-1□□□
形FH-3□□□

NJシリーズ
データベース接続CPUユニット
形NJ501-1□20
RUN

PA3001PWR

ERROR

NJ501-1520

BUSY

センサ

SD PWRSD BUSY

NET RUN

PORT1
EtherNet/IP

NET ERR
LINK/ACTNET RUN

PORT2
EtherCATNET ERR
LINK/ACT

使用上の注意本資料で説明している内容は、考え方を説明するための例であり、お客様のシステムでの動作を保証するものではありません。

20

5．FH がファイル名を決定する場合の実現例

5.2. システム構成
本章で想定しているシステム構成を下記に示します。
Image├─2014-01-21│ ││ ├─18-05│ │0014.jpg│ │0015.jpg│ │0016.jpg│ │0017.jpg│ ││ ├─18-06│ │0018.jpg│ │0019.jpg│ │0020.jpg│ ││ ├─18-09│ │0021.jpg│ │0022.jpg│ │0023.jpg│ │0024.jpg│ │0025.jpg│ │0026.jpg│ ││ ├─18-13│ │0027.jpg

画像ファイル

データベース①③

TimeStamp
2014/1/21 18:05

SerialNo
14

Result1
1173.056641

Result2
405.3557478

Result3-0.620404412

DirName2014-01-21¥18-05

FileName
0014.jpg

2014/1/21 18:05

15

1173.372587

404.8877704-0.497596154

2014-01-21¥18-05

0015.jpg

2014/1/21 18:05

161173.414798

404.8188545-0.398787313

2014-01-21¥18-05

0016.jpg

2014/1/21 18:05

171173.404297

404.8978568-0.443065068

2014-01-21¥18-05

0017.jpg

2014/1/21 18:06

181173.365792

404.8925781-0.584134615

2014-01-21¥18-06

0018.jpg

2014/1/21 18:06

191173.094537

405.124721-0.760758197

2014-01-21¥18-06

0019.jpg

2014/1/21 18:06

20

1173.445763

404.8230148-0.4296875

2014-01-21¥18-06

0020.jpg

2014/1/21 18:09

21

1173.055492

405.2954396-0.4296875

2014-01-21¥18-09

0021.jpg

2014/1/21 18:09

221173.019252

405.1922357-0.540865385

2014-01-21¥18-09

0022.jpg

2014/1/21 18:09

23

1173.012251

405.1204427-0.703125

2014-01-21¥18-090023.jpg

2014/1/21 18:09

24

1173.056641

405.2941406-0.608675373

2014-01-21¥18-090024.jpg

2014/1/21 18:09

25

1172.957442

405.2701823-0.330882353

2014-01-21¥18-090025.jpg

2014/1/21 18:09

26

1172.973851

405.2256651-0.620404412

2014-01-21¥18-090026.jpg②
FH

NJ(1) FH が共有フォルダに作成する画像ファイル名
S:¥Image¥YYYY-MM-DD¥HH-MM¥SSXXXX.jpg※S:¥は FH で設定されているネットワークドライブ「SSXXXX」は計測 ID の秒以下
(2) FH から NJ に渡されるデータ
計測結果データ（LREAL 型 3 つ）
日付を表す数値データ（LREAL 型）「YYYYMMDD」
時刻を表す数値データ（LREAL 型）「HHMM」
ファイル名（計測 ID の秒以下.jpg）を表す数値データ（LREAL 型）「SSXXXX」(3) NJ が DB 書き込むテーブルの構造
計測日時「TimeStamp」
シリアル No.「SerialNo」
計測結果データ 1「Result1」
計測結果データ 2「Result2」
計測結果データ 3「Result3」
保存先ディレクトリ（相対パス）「DirName」
画像ファイル名「FileName」

参考
本章の例では、画像ファイルの保存先は基準となるフォルダ（FH がネットワークドライブ
として参照している共有フォルダ）からの相対パスで DB に記録されています。
実際に DB に記録されたデータから画像ファイルを参照する際には絶対パスを生成する必要があります。

21

5．FH がファイル名を決定する場合の実現例

5.3. タイミングチャート
センサ 計測トリガ(STEP)
処理実行中

FH→NJ

0 0 0 0 1

0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0

計測結果
データ出力完了0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0①②③(1) パラレルインターフェースの計測トリガ(STEP)に接続されたセンサが ON します。
(2) FH は指定されたコマンドを実行します。
「処理実行中」信号が ON します。
(3) その後、計測フローの「Fieldbus データ出力」が実行されると計測結果を出力します。
「データ出力完了」信号が ON します。
NJ は「データ出力完了」信号の ON により、データベースへのレコード書込を実行します。

22

5．FH がファイル名を決定する場合の実現例

5.4. サンプルプログラム（FH 側）
5.4.1.

計測フロー

使用する計測フローを下記に示します。必要になる処理ユニットは「3.マクロ」、「4.ユーザデータ」、「8.Fieldbus データ出力」です。それ以外の処理ユニットについてはアプリケーショ
ンに応じて変更することができます。

23

5．FH がファイル名を決定する場合の実現例

5.4.2.

マクロ

計測フローの「3.マクロ」で記述するマクロを下記に示します。計測 ID(MeasureId$)を参照
して、文字列操作により保存先フォルダ名とファイル名を生成しています。
*MEASUREPROC
PATH$="S:¥"Rem 共有フォルダのパス

UNIT&=4

Rem ユーザデータのユニット No.

Rem 計測 ID(MeasureId$)から日時を分解して整数に変換
Rem MeasureId$のフォーマット：2014-01-06_11-50-03-4510
YEAR& = Val(Mid$(MeasureId$, 1, 4))
MONTH& = Val(Mid$(MeasureId$, 6, 2))
DAY& = Val(Mid$(MeasureId$, 9, 2))
HOUR& = Val(Mid$(MeasureId$, 12, 2))
MINUTE& = Val(Mid$(MeasureId$, 15, 2))
SEC& = Val(Mid$(MeasureId$, 18, 2))
MSEC& = Val(Mid$(MeasureId$, 21, 4))

Rem 保存先フォルダ名の生成
DIR$ = Str$(YEAR&) + "-" + Str2$(MONTH&, 2, 0, 1, 0) + "-" + Str2$(DAY&, 2, 0, 1, 0)
DIR$ = DIR$ + "¥" + Str2$(HOUR&, 2, 0, 1, 0) + "-" + Str2$(MINUTE&, 2, 0, 1, 0)

Rem ファイル名の生成
FILE$ = "¥" + Str2$(SEC&, 2, 0, 1, 0) + Str2$(MSEC&, 4, 0, 1, 0) + ".jpg"

Rem ファイル保存
SaveMeasureImage 0, PATH$+DIR$+FILE$, 10100

Rem 取得した日時をユーザデータに設定
SetUnitData UNIT&, 200, Str$((YEAR&*10000 + MONTH&*100 + DAY&))
SetUnitData UNIT&, 201, Str$(HOUR&*100 + MINUTE&)
SetUnitData UNIT&, 202, Str$(SEC&*10000 + MSEC&)

Return参考
マクロコマンドの詳細については「FH/NJ シリーズ 画像処理システム ユーザーズマニュア
ル(SDNB-712)」の「マクロ機能について」を参照してください。

24

5．FH がファイル名を決定する場合の実現例

5.4.3.

ユーザデータ「5.4.2.マクロ」のマクロコマンドが実行されることで、計測フローの「4.ユーザデータ」の「設定データ」に下図に示すような値が設定されます。
処理フローの「4.ユーザデータ」が実行されることで、「設定データ」が「データ」に反映されます。

「3.マクロ」が実行されると、ユーザデータ 0～2 の設定データに設定されます「4.ユーザデータ」が実行されると、「設定データ」の値が反映されます

使用上の注意計測フローを変更して、「ユーザデータ」のユニット No.が変わった場合、下記の値を変更してください。カスタムコマンド（マクロ機能）では処理ユニットに対してデータの設定/取得をする際に、ユニット No.を指定して動作しているため、ユニット No.が正しく指定されていないと正しく動作しません。
・「5.4.2.マクロ」の 2 行目、「UNIT&」に入力する値

25

5．FH がファイル名を決定する場合の実現例

5.4.4.

Fieldbus データ出力「8.Fieldbus データ出力」の内容を下記に示します。ここでは、「6.形状サーチⅢ」の結果とユーザデータの No.0～2 の値を出力しています。

6.形状サーチⅢの結果
ユーザデータの No.0～2（計測 ID から生成した、フォルダ／
ファイル名を決定する数値データ）

26

5．FH がファイル名を決定する場合の実現例

5.5. サンプルプログラム（NJ 側）
5.5.1.

プログラム(1) DB 接続／切断処理「Connect」を ON すると DB に接続します。OFF すると DB との接続を切断します。

参考
本資料で使用する DB マップ変数について
本資料ではローカル変数として下記のデータ型の変数「TableData」を DB マップ変数として使用しています。

27

5．FH がファイル名を決定する場合の実現例(2) データベース書込
E005_Line0_Result_Notification（データ出力完了）の OFF→ON により、データベース
へのレコード書込を実行します。
インライン ST（下記参照）

インライン ST//計測結果データ1～3
TableData.Result1 :=E005_Line0_LREAL_Result_Data_0;
TableData.Result2 :=E005_Line0_LREAL_Result_Data_1;
TableData.Result3 :=E005_Line0_LREAL_Result_Data_2;//日付を表す数値データ（LREAL型）「YYYYMMDD」を文字列に変換
YearMonthDay := NumToDecString(LREAL_TO_DINT(E005_Line0_LREAL_Result_Data_3), 8,_eFILL_CHR#_ZERO);//時刻を表す数値データ（LREAL型）「HHMM」を文字列に変換
HourMin := NumToDecString(LREAL_TO_DINT(E005_Line0_LREAL_Result_Data_4), 4, _eFILL_CHR#_ZERO);//ファイル名を表す数値データ（LREAL型）「SSXXXX」を文字列に変換
Msec := NumToDecString(LREAL_TO_DINT(E005_Line0_LREAL_Result_Data_5), 6, _eFILL_CHR#_ZERO);
TableData.TimeStamp := GetTime();
Inc(SerialNo);//計測日時//シリアルNo.のインクリメント

TableData.SerialNo := SerialNo; //シリアルNo.
//保存先ディレクトリ（相対パス）
TableData.DirName := CONCAT(LEFT(YearMonthDay,4),'-',
MID (YearMonthDay,2,5),'-',
RIGHT(YearMonthDay,2));
TableData.DirName:=CONCAT(
TableData.DirName,'¥',
LEFT(HourMin,2),'-',
RIGHT(HourMin,2));//画像ファイル名（SSXXXX.jpg）
TableData.FileName := CONCAT(Msec,'.jpg');28

6．参照情報

6. 参照情報
Man. No.

形式

マニュアル名称

SBCA-359

形 NJ501-1500

マシンオートメーションコントローラ NJ シリーズ CPU

形 NJ501-1400

ユニット ユーザーズマニュアル ソフトウェア編

形 NJ501-1300
形 NJ301-1200
形 NJ301-1100
SBCA-360形 NJ501-1500

マシンオートメーションコントローラ NJ シリーズ CPU

形 NJ501-1400

ユニット コマンドリファレンスマニュアル 基本編

形 NJ501-1300
形 NJ301-1200
形 NJ301-1100
SBCA-411N

形 NJ501-1520

マシンオートメーションコントローラ NJ シリーズ データ

形 NJ501-1420

ベース接続 CPU ユニット ユーザーズマニュアル

形 NJ501-1320
SDNB-712
SDNB-713
SDNB-714

形 FH-1□□□

画像センサ FH/FZ5 シリーズ画像処理システム ユーザー

形 FH-3□□□

ズマニュアル形 FZ5-L35□

画像センサ FH/FZ5 シリーズ画像処理システム ユーザー

形 FZ5-6□□

ズマニュアル 処理項目機能リファレンスマニュアル

形 FZ5-11□□

画像センサ FH/FZ5 シリーズ画像処理システム ユーザー
ズマニュアル 通信設定編

SDNB-715

形 FH-1□□□

画像センサ FH シリーズ画像処理システム オペレーショ

形 FH-3□□□

ンマニュアル Sysmac Studio 編

29

7．注意事項

7. 注意事項(3) 本資料を基にシステムを構築する場合は、構成する商品の取扱説明書をお読みいただき、仕様と性能および安全性についてのご確認をお願いいたします。
本資料で使われているマークには、次のような意味があります。
安全上の要点製品を安全に使用するために実施または回避すべきことを示します。

使用上の注意
製品が動作不能、誤動作、または性能と機能への悪影響を予防するために実施または回避すべきことを示します。

参考
必要に応じて読んでいただきたい項目です。
知っておくと便利な情報や、使用する上で参考となる内容について説明しています。

8. 改訂履歴
改訂記号

改訂年月

A

2014 年 2 月 28 日

改訂理由と改訂ページ
初版30

本資料の一部または全部を、オムロン株式会社の許可なしに複写、複製、再配布することを禁じます。
本資料の記載内容は、2014 年 2 月 28 日時点のものです。
本資料の記載内容は、改良のため予告なく変更されることがあります。
Microsoft Corporation のガイドラインに従って画面写真を使用しています。
Windows は米国 Microsoft Corporation の米国およびその他の国における登録商標です。
Excel は米国 Microsoft Corporation の米国およびその他の国における登録商標です。
Sysmac は、オムロン株式会社製 FA 機器製品の日本およびその他の国における商標または登録商標です。
EtherCAT®は、ドイツのベッコフオートメーション株式会社がライセンスを供与した登録商標であり、特許取得済みの技術です。
SD ロゴは、SD-3C,LLC の商標です。
ODVA、CIP、CompoNet、DeviceNet、EtherNet/IP は ODVA の商標です。
本資料に記載されている会社名・製品名は、一般に各社の商標または登録商標です。

オートメーションセンタ

技術部

東部技術グループ
東京都港区港南 2-3-13 品川フロントビル 7F(〒108-0075)
電話 03-6718-3530

西部技術グループ
大阪府大阪市北区堂島 1-6-20 堂島アバンザ 16F(〒530-0003)
電話 06-6347-5825© OMRON Corporation 2014

All Rights Reserved.