株式会社サンプロシステム
改定:2024年7月12日
製品に関するお問い合わせ先
product@sunprosys.co.jp
TEL:082-507-1067
「CANNEX(キャネックス)に関するお問い合わせ」とお伝えください
KV-XLE02を使用したKV-Studioのサンプルプロジェクトです。
CANNEX_XLE02_sample_240712.zip
※ZIPの解凍パスワードはお問い合わせいただいたお客様に無料でお伝えします。
使用しているファンクションブロックのパスワードは非公開です
Windowsのアプリケーションです。無料です。
CANNEXへのコマンド発行、CAN通信のモニタができます。
インストール手順
※初回起動時にファイアウォールの警告が出ます。
プライベートネットワーク、パブリックネットワークの両方にチェックを入れて
アクセスを許可してください
相手機器からの受信データはKV-XLE02のユニットプログラムで受信します。そのためスキャンタイムに影響することなく受信することが可能です。
500us間隔で8byteのデータが絶え間なく発生するようなCAN通信や、10us間隔で8byteのデータが幾つか連続で送られてきたあと500us間隔に戻るといった頻度の通信であれば取りこぼしなく受信することが可能です。
高負荷のデータを取り扱う場合は何かしらの工夫が必要になる場合がありますので
取りこぼしに関する正確な見解が必要な場合は、ご相談ください。
CANのボーレート、データサイズ、データの周期が分かれば評価することができます。
UDP通信のできる機器であればCANNEXを使用してCAN通信を行うことができますが、弊社はKV-XLE02(KEYENCE)を推奨しています。サンプルプログラムやマニュアルの説明はKV-XLE02を使用して記述しています。
KV-8000 + KV-XLE02をご利用のお客様に関しては、ドライブレコーダなどのログを通じてサポートを提供できます。ただし、Windowsアプリケーションや他メーカーのシーケンサを使用されているお客様に関しては、お問い合わせに対応できない場合がございます。OMRON製PLC(CJシリーズ / NJ・NXシリーズ):
Ethernetの受信割り込みができるユニットが存在しないため
高頻度で発生するデータに対応できません。
スキャンタイムに左右されます。
縦:70mm(LANコネクタ部突き出し部を含むと74mm) 横:70mm 高さ:16mm 取付穴:φ3.5×4(端から5mmの位置)
コネクタ | 内容 | ピン配列 | コネクタ型式 |
---|---|---|---|
CN1 | 基板電源 | 1:DC12-24V 2:0V(※1) |
基板側 : B2B-XH-A 相手側 : XHP-2 3mのコネクタ付きケーブル付属 |
CN3 | CAN | 1:CANH 2:CANL 3:GND(※1) |
基板側 : B3B-XH-A 相手側 : XHP-3 3mのコネクタ付きケーブル付属 |
CN4 | 出力4点 OUT1 : Run(CANNEX動作中) OUT2 : Ethernet通信確立 OUT3 : CAN Run OUT4 : CANNEX 高負荷 |
下図参照(図:パラレル出力回路) | 基板側 : B8B-XH-A 相手側 : XHP-8 3mのコネクタ付きケーブル付属 |
CN5 | Ethernet CAT5e以上推奨 PLC/PC接続用 |
- | RJ-45 LANケーブルはお客様にてご用意ください (CAT5e UTPで可) |
JP3 | CAN終端抵抗有無切替 | 短絡:終端抵抗あり 解放:終端抵抗なし |
出荷時ジャンパー装着(短絡) |
※1 0VとCAN GNDは絶縁されておらず、基板回路内で繋がりますのでご注意ください
OUT1-, OUT2-, OUT3-, OUT4-, 0Vはそれぞれ絶縁されていますが、 共通にして使用しても構いません。 CN1の0VとCN3の0Vは基板内で繋がっています CN1の24Vは12Vでも構いません。
JP3:終端抵抗の有無切替
IC3:CAN FDドライバIC(TJA1044BT/OZ ※NXP社製 または同等品)
125kbps / 250kbps / 500kbps / 1Mbps
125kbps / 250kbps / 500kbps / 1Mbps / 2Mbps / 4Mbps / 5Mbps
CAN:1-8 byte
CAN FD:0-8,12,16,20,24,32,48,64 byte
機器 | IPアドレス | 受信ポート | 送信ポート |
---|---|---|---|
CANNEX | 192.168.0.70 | 20000(変更不可) | 不定 |
PLC | 192.168.0.20 | 10000 | ユーザ任意 |
モニタツール用PC | 192.168.0.* | 39999 | 不定 |
上記は初期値です。専用のパソコンツールで変更できます。
IPアドレスは192.168.0.1 - 192.168.9.254の範囲内で変更可能です
サブネットマスクは255.255.255.0 固定です。
CANNEXのIPアドレスを変更することで
PLCのLANポート1つで複数のCANNEXを制御可能です。
(シーケンサCPUへの受信割り込みの頻度に注意する必要があります)
Byte index | 0 | 1 | 2 | 3 |
---|---|---|---|---|
Data | S | T | O | P |
内容 | コマンド |
CAN通信を停止します。
停止状態になると、相手機器からCANデータがきてもACKを返さなくなります。
Byte index | 0 | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|---|
Data | R | U | N | 0-1 | 0-3 | 0-5 |
内容 | コマンド | CAN種別 | アービトレーションフェーズ ボーレート |
データフェーズ ボーレート |
CAN通信を開始します。
相手機器からCANデータが来た場合、ACKを返します。
STTXで定期送信を設定している場合、定期送信が開始されます。
CAN種別
0:CAN
1:CAN FD
アービトレーションフェーズボーレート
0:125kbps
1:250kbps
2:500kbps
3:1Mbps
データフェーズボーレート
0:125kbps
1:250kbps
2:500kbps
3:1Mbps
4:2Mbps
5:5Mbps
上記以外のボーレートには対応しておりません。カスタム仕様で対応可能な場合があります。ご相談ください
CAN種別を「0:CAN」に設定した状態で、8byteより大きなサイズのデータを送信しようとした場合、CANNEXはCANバスにデータ送出を行いません。
CAN種別 : 1 (CANFD) アービトレーションフェーズボーレート : 2 (500kbps) データフェーズボーレート : 5 (5Mbps)
Byte index | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7-8 | 9-12 | 13 | 14-77 |
---|---|---|---|---|---|---|---|---|---|---|---|
Data | S | T | T | X | 0-29 | 0-15 | 0-3 | 1-65535 | 0x01-0x1FFFFFFF | 1-64 | 0x00-0xFF |
内容 | コマンド | 送信MBX | Sweep番号 | CS_TYPE | 送信周期[ms] | CAN ID | DLC | Data0 - Data63 |
CAN送信の設定
STOP中、RUN中どちらでも設定可
設定済のMBX、Sweep番号に再設定すると上書きされる
同じMBX番号にSweep番号1の伝文を設定することで下記のように交互に異なるデータを送信することができます(Sweep送信)
送信MBX : 3 SWEEP番号 : 0 CS_TYPE : 0 送信周期 : 1ms CANID : 0x00ABCDEF データ長 : 0x10 (16byte) 送信Data : 0x21, 0x22, 0x23... 0x30
Byte index | 0 | 1 | 2 | 3 | 4-7 | 8 | 9-72 |
---|---|---|---|---|---|---|---|
Data | S | H | O | T | 0x01-0x1FFFFFFF | 1-64 | 0x00-0xFF |
内容 | コマンド | CAN ID | DLC | Data0 - Data63 |
RUN中に送信すると、1shot送信する
CANID : 0x12345678 データ長 : 0x10 (16byte) 送信Data : 0x01, 0x02, 0x03... 0x10
Byte index | 0 | 1 | 2 | 3 |
---|---|---|---|---|
Data | D | E | L | 0-29, 99 |
内容 | コマンド | 送信MBX |
指定した送信MBXの設定を消去します
送信MBXに99を指定するか、「DEL」のみ送信すると全ての設定を消去します
送信MBX : 0x63 (99) ※全ての送信設定を消去
Byte index | 0 | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|---|
Data | T | S | T | O | P | 0-29, 99 |
内容 | コマンド | 送信MBX |
指定した送信MBXの設定を維持したまま、送信を停止します。
送信MBXに99を指定するか、「TSTOP」のみ送信すると全ての送信MBXの送信を停止します
送信MBX : 0x04 ※MBX04の定期送信を停止
Byte index | 0 | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|---|
Data | T | A | C | T | V | 0-29, 99 |
内容 | コマンド | 送信MBX |
指定した送信MBXの送信を再開する
送信MBXに99を指定するか、「TACTV」のみ送信すると全ての送信MBXの送信を再開します
送信MBX : 0x04 ※MBX04の定期送信を再開
Byte index | 0 | 1 | 2 | 3 | 4 |
---|---|---|---|---|---|
Data | F | I | L | T | 0-1 |
内容 | コマンド | フィルタ種別 |
フィルタ種別
※本コマンドはPLC側のEthernetの受信処理が追い付かず取りこぼしが発生する場合に、
不要なデータをCANNEXからPLCに送信しないようにするために存在します
フィルタ種別 : 0x00 ※CANの送受信データを全てPLCに送信する(フィルタしない)
Byte index | 0 | 1 | 2 | 3 |
---|---|---|---|---|
Data | C | S | 0-29 | 0-3 |
内容 | コマンド | 送信MBX | CS_CNT_TYPE |
指定した送信MBXのCANデータの一部を
CANNEX側でチェックサムやカウントに置き換えます。
(STTXコマンド内にも同様の機能があります)
チェックサムやカウントなし
下記の計算によるチェックサム、カウント
data6の下位4bit:カウンタ(0-F)
data7:チェックサム(ID, DLC, Data0-6の加算)
p_snd_frame.data[6] += k_snd_can_ary[i].cnt % 0x10; k_snd_can_ary[i].cnt++; p_snd_frame.data[7] = (uint8_t)(((p_snd_frame.id & 0x0700) >> 8) + (p_snd_frame.id & 0x00ff) + p_snd_frame.data_length_code + p_snd_frame.data[0] + p_snd_frame.data[1] + p_snd_frame.data[2] + p_snd_frame.data[3] + p_snd_frame.data[4] + p_snd_frame.data[5] + p_snd_frame.data[6]);
64bitカウント(D0-D7を使った64bitカウンタ)
p_snd_frame.data[1] = (cnt >> 48) & 0xFF; p_snd_frame.data[2] = (cnt >> 40) & 0xFF; p_snd_frame.data[3] = (cnt >> 32) & 0xFF; p_snd_frame.data[4] = (cnt >> 24) & 0xFF; p_snd_frame.data[5] = (cnt >> 16) & 0xFF; p_snd_frame.data[6] = (cnt >> 8) & 0xFF; p_snd_frame.data[7] = cnt & 0xFF; cnt++;
上記に当てはまらないチェックサム計算やカウントのデータ位置を変えたい場合、
CS_CNT_TYPEを追加しますのでご相談ください
Byte index | 0 | 1 | 2 | 3 | 4-5 |
---|---|---|---|---|---|
Data | S | T | S | P | 0-65535 |
内容 | コマンド | Step No. |
CANNEXから送られてくるCANデータに
任意の数値を付加してデバッグやロギングの際に活用できます。
本コマンドでStepNo.を設定するとCANNEXの電源を切るまでは
最後に設定したStepNo.が常時付加され続けます
Step No.を9999から12345に変更した例です
ラダープログラムの検査シーケンスが進むにつれてStep No.を変更しておくと
シーケンスとCANデータの突き合わせをする際に便利です。
Step No. : 0x3039 (12345)
Byte index | 0 | 1 | 2 |
---|---|---|---|
Data | L | O | G |
内容 | コマンド |
CANNEXをパソコンに接続して専用のアプリを起動した状態で
PLCから本コマンドをCANNEXに発行すると
パソコンはあらかじめ指定しておいたフォルダにCAN通信ログをCSVファイルで出力します。ファイル名はcan_log_YYMMddHHmmss.csv
となります。
出力されるログの項目(列)は、CANNEX Controlの「表示」設定の状態に従います。
例えば、「DLC表示」のチェックを外すと、CSVファイルにDLCの列は出力されません。
CAN通信中にLOGコマンドを複数回送信した場合、
一度CSV出力したCANデータは以降のLOGコマンドでは出力対象外となります。
例えば、CANデータを10回分受信後にLOGコマンドを実行し、その後追加でCANデータを35回受信し、LOGコマンドを実行すると、
1回目のCSVファイルには最初の10回分のデータが記録され、
2回目のCSVファイルには最新の35回分のデータが記録されます。
Byte index | 0 | 1 | 2 | 3 |
---|---|---|---|---|
Data | C | L | O | G |
内容 | コマンド |
CANNEXをパソコンに接続して専用のアプリを起動した状態で
PLCから本コマンドをCANNEXに発行すると
パソコン画面上の通信ログをクリアします
(ファイルの消去ではなく、画面表示のクリア)
CANNEXがRUN中にCANデータを受信すると、下記のフレームをPLCに送信します。
CANNEXは自らが送信したCANデータも受信しているため、CANバス上のデータが全てEthernetで送出されます。(FILTコマンドの設定による)
CANNEXが送信したCANデータは下記の「送受信種別」が0になります。
Byte index | 0-3 | 4-7 | 8-9 | 10-11 | 12-15 | 16-17 | 18-19 | 20-23 | 24-25 | 26-89 |
---|---|---|---|---|---|---|---|---|---|---|
Data | 0x00000000-0xFFFFFFFF | 0x00000000-0xFFFFFFFF | 0-1 | 0-65535 | 0 | 0-0xFFFF | 0-1 | 0x0-0x1FFFFFFF | 1-64 | 0x00-0xFF |
内容 | Index | TimeStamp(10us) | MSG_TYPE | Step No. | Reserved | CAN Error | 送受信種別 | CAN ID | DLC | Data0 - Data63 |
※総データ数はDLCに関わらず、90Byte固定で送信します
Index
CANメッセージ毎にインクリメントします。
STOPコマンド → RUNコマンドで0に戻ります。
0xFFFFFFFFの次は0に戻ります。
MSG_TYPE
0:CANデータ
1:Reserved(機能拡張用の予約。現在は未使用)
送受信種別
0:送信(CANNEXが送信したCANデータ)
1:受信(CANNEXが受信したCANデータ)
CAN Error
cString[0] = (uint8_t)((k_can_msg.index >> 8) & 0xFF); cString[1] = (uint8_t)((k_can_msg.index >> 0) & 0xFF); cString[2] = (uint8_t)((k_can_msg.index >> 24) & 0xFF); cString[3] = (uint8_t)((k_can_msg.index >> 16) & 0xFF); cString[4] = (uint8_t)((k_can_msg.ts_10us >> 8) & 0xFF); cString[5] = (uint8_t)((k_can_msg.ts_10us >> 0) & 0xFF); cString[6] = (uint8_t)((k_can_msg.ts_10us >> 24) & 0xFF); cString[7] = (uint8_t)((k_can_msg.ts_10us >> 16) & 0xFF); cString[8] = 0; // アライメント調整 cString[9] = (uint8_t)K_MSG_TYPE_CAN_DATA; cString[10] = (uint8_t)((PLC_step_no >> 8) & 0xFF); cString[11] = (uint8_t)((PLC_step_no >> 0) & 0xFF); cString[12] = 0; // 予備 cString[13] = 0; // 予備 cString[14] = 0; // 予備 cString[15] = 0; // 予備 cString[16] = (uint8_t)((k_can_msg.error >> 8) & 0xFF); cString[17] = (uint8_t)((k_can_msg.error >> 0) & 0xFF); cString[18] = 0; // アライメント調整 cString[19] = k_can_msg.tx; cString[20] = (uint8_t)((k_can_msg.can_id >> 8) & 0xFF); cString[21] = (uint8_t)((k_can_msg.can_id >> 0) & 0xFF); cString[22] = (uint8_t)((k_can_msg.can_id >> 24) & 0xFF); cString[23] = (uint8_t)((k_can_msg.can_id >> 16) & 0xFF); cString[24] = 0; // アライメント調整 cString[25] = (uint8_t)k_can_msg.dlc; memcpy(&(cString[26]), k_can_msg.data, 64);
Index : 0x000057F7 (22519) TimeStamp : 0x00225CFA (22520.26ms) MSG_TYPE : 0x0000 (0) StepNo. : 0x0000 (0) Reserved : 0x00000000 CAN Error : 0x0000 送受信種別 : 0x0000 (0) CANID : 0x00ABCDEF DLC : 0x0010 (16) byte 受信Data : 0x21, 0x22, 0x23, 0x24... 0x30 ※DLCに関わらず、受信Dataは64byte送られてきます。 DLCの値に応じて不要なデータは無視してください。 0x00以外の値が格納されている場合があります。 上記の例だとDLCは16byteなので、17byte以降のデータは無視してください。
KEYENCE KV-XLE02での受信は下図のように割り込みを用いて行います。
格納先に@DM0を指定した場合、下図のように値が格納されます。(@DM0 - @DM76)
下図のように記述すると、ID = 0x12345678のCANデータをDM0-DM63に格納することができます
割り込みでの処理のため取りこぼしが発生しません。
それでも取りこぼしの確認が必要な場合は、@DM0(Index)が1ずつインクリメントされていることを確認するようなプログラムを作成して確認してください。
※本マニュアルはKV-8000, KV-XLE02, KV-B8XTDの構成で説明します。
※設定ファイルが必要な方は、お問い合わせください
※下記のKV-Studioサンプルプロジェクトからインポートしてください
ダウンロードリンク
ここまでの手順で作成したプロジェクトファイルを下記からダウンロードできます。
番号 | 名称 | 内容 |
---|---|---|
OUT1 | CANNEX Run | CANNEX動作中 電源を供給し、マイコンプログラムが動作するとONします。 OFFしたままになる場合、基板故障の可能性があります |
OUT2 | ネットワーク接続済 | ネットワークに接続されています。 PLCやPCとの通信が確立を意味するものではありません LANケーブルがハブなどに接続されるとONします |
OUT3 | CAN Run | RUNコマンドを受け付けるとONします。 STOPコマンドでOFFします |
OUT4 | CANNEX 高負荷 | CANNEXから外部へのEthernetパケットの送信処理量を CANデータ受信量が上回っている状態です。 この出力がONする場合、サンプロシステムにご相談ください。 CANの仕様がCANNEXの処理能力を超えている可能性があります |
CANNEX Controlのセットアップファイルをダウンロードします。
zipファイルを解凍すると下記の2つのファイルがあります。
「setup.exe」をダブルクリックします。
「次へ」をクリック
「次へ」をクリック
「次へ」をクリック
「閉じる」をクリック
デスクトップに生成されるショートカットをクリックしてアプリケーションを起動
CANNEX Controlが起動します。
※見つからない場合 - パソコンのIPアドレスを192.168.0.*の3オクテット目(0の部分)を0-9に変更して検索 - サブネットマスクを255.255.255.0にする - モニタIPアドレスを192.168.0.255にして検索を実施する - CANNEXとパソコンを1対1で接続する(他の機器を外す)
CANNEXに変更内容が書き込まれ、自動でソフトウェアリセットがかかります
(電源再投入と同じ状態)
「モニタIPアドレス」を変更したIPアドレスに設定して「Apply」を押します。
※元のファームウェアに戻す場合は、古いファームウェアを書き込んでください
電源投入時はSTOP状態ですか? 電源切で送信設定は消えるのですか?
電源投入時はSTOP状態です。電源切りで送信設定(送信MBX)は消えます (IPアドレス、MACアドレスは記憶されますが、CANに関する設定は消えます)
TSTOP中にSTTXコマンドで該当する送信MBXの内容を変更すると送信を再開するのですか?
再開はせず、内容のみ書き換わって、TACTVで再開します 例 1. CANNEXの電源起動 2. STTX→RUN:定期送信開始 3. TSTOP:定期送信停止 4. STTXで上書き:定期送信は停止したまま 5. TACTV:定期送信再開 6. TSTOP:定期送信停止 7. STOP→RUN:定期送信は停止したまま 8. STOP→TACTV→RUN:定期送信開始 送信MBXごとにstopフラグを持っています 初期値:stop = false TSTOPコマンドでのみ stop = trueとなります stop = falseに戻すのはTACTVと電源再起動のみ
LOGコマンドについて、コマンド送信時からログを開始するのではなく、コマンド発行時にバッファに溜まっているデータをはき出すのですね?
はい。常時CSV出力するのではなく、コマンド受信時にバッファに 溜まっているデータをまとめてCSV出力します
CANFD ボーレート5Mbpsで、IDが全部で15種類、データの周期はすべて10ms、データサイズは64byteです。CANNEXは使用できますか?
はい。実際にCANNEXで通信を行い、 CANNEX Controlで記録したログ(CSVファイル)が下記です。 CANの受信処理よりもEthernetの送出処理の方が早いため CANNEX側では取りこぼしなく適切に処理を行うことができます。 PLC側でも受信割り込みで取りこぼしなくデータを取得できました。 スキャンプログラムで本データをどのように扱うかはユーザ様次第となります。
CANFD ボーレート5Mbpsで、IDが全部で4種類、データの周期はすべて1ms、データサイズは64byteです。CANNEXは使用できますか?
Ethernetの送出処理よりも、CANの受信処理のほうが早いため CANNEXの処理能力を超えてしまい、データの取りこぼしが発生してしまいます。
CANNEXの処理能力を超えているかどうかを判断をするにはどうすればよいですか?
弊社にCANの仕様をお伝えいただくか、 デモ機+CANNEX Controlを使用して確認することができます。
下記のようにCANNEX ControlにてCANバスにデータを送出する設定を行います。
実際にCANバスにデータを送出し、「負荷OVER」の値が0であることを確認します。
負荷OVERの値が増加する場合、CANNEXの処理能力を超えています。OMRONや三菱製のシーケンサでも使用できますか?
メーカー問わずEthernetのUDP通信の送受信ができる機器であれば使用可能です。 ただし、CANデータの発生頻度、Ethernet通信ユニットや CPUの処理能力次第でデータを取りこぼします。
定期送信で何種類のIDを送れますか?
最大30種類送信できます。それ以上必要な場合はご相談ください。 カスタム仕様にて対応できます。