KV-5000のテストも兼ねてソケット通信にトライしてみました。
テーマはWake-On-Lan。
PLCからイーサーネット上のパソコンの電源をリモートでONできるのか?です。
(問題なく出来ます。)私の能力不足に見かねてか?キーエンスからサンプルプログラムを頂きました。
最期の方に載せてあります。ネットワークの基礎知識はここで、程ほどに吸収します。(とても全ては理解出来ませんから。。。)
http://www.atmarkit.co.jp/fwin2k/serial/index/index.htmlどうすればリモートでPCをON出来るのか。
http://nskw.dyndns.org/~w004/Tips/Network/WOL.htmlhttp://blog.livedoor.jp/magic_packet/とりあえずUDPでマジックパケットの送信が出来ればPLCからでも出来そうである。
叩き起こされるPCがWOLに対応しているか以下のソフトで確認。
PCリモート起動ソフト
http://www.vector.co.jp/soft/win95/net/se383546.html問題なく起動できた。
では、KV-5000の設定から。
KV-LE20V ユーザーズマニュアル 参照
http://www.keyence.co.jp/seigyo/req/download/manual/index.jsp?done=/seigyo/index.jsp相手先PC
IP:
192.168.1.175 ここが間違いブロードキャストアドレス
255.255.255.255.(FF.FF.FF.FF)です。 MAC:00-1A-92-C9-19-56
(送信データはこれの16回繰り返し)ユニットエディタでの設定
設定項目 内容
先頭DM番号 10000
先頭リレー番号 30000
IPアドレス 192.168.1.220
サブネットマスク 255.255.255.0
KVソケット0 UDP
サンプルプログラムで使用するデータの格納領域
DM0〜DM7 通信設定
DM1000 送信データ長(バイト単位)
DM1001〜 送信データ
DM100〜 通信ステータス
サンプルプログラムを真似てラダーを作成。
注:間違いプログラムです。ちなみにキーエンスのマニュアルのサンプルラダーは誤植(間違い?)が多いので鵜呑みにしてはいけません。
受信はマジックパケットの垂れ流し(送信のみ)ですので、プログラムしていません。





で結果です。
ソケットオープンも送信完了もまたソケットクローズもきちんと動作しているようです。
がしかし、リモートPCのONは出来ませんでした。(^^ゞ
なぜだぁ〜
そこでネットワークのパケットモニターしてみました。
これはPCソフト(PCリモート起動ソフト)によるUDPパケットです。
なぜ1024オクテット(=バイト)ものパケットを送信しているのかは不明ですが。。。

でこっちがPLCからのパケットです。
ARP要求しています。
ARPとは
http://www.7key.jp/nw/tcpip/ip/arp.html

KV-5000 UDP通信パケットモニタ
[ ADDRESS ]
MAC : 00-01-fc-03-b3-dd (Keyence Corporation)
IP : 192.168.1.220
[ STATISTICAL INFORMATION ]
Frame (Total 784 byte)
Other 0 byte
IEEE 802.3 0 byte
EtherII(DIX) 784 byte
IEEE SNAP 0 byte
802.3 Raw 0 byte
Type
Other 0 byte
IP 124 byte
Other 0 byte
ICMP 124 byte
IGMP 0 byte
GGP 0 byte
IP 0 byte
TCP 0 byte
EGP 0 byte
IGP 0 byte
UDP 0 byte
ISOTP4 0 byte
IGRP 0 byte
OSPFIGP 0 byte
ARP 660 byte
RARP 0 byte
IPX 0 byte
NetBIOS 0 byte
Raw 0 byte
[パケット情報] (192.168.1.220 -> 255.255.255.255 アドレスマスク要求)
取得時間 : 13:10:02
パケットサイズ : 62 オクテット
[MAC層] (EtherII(DIX))
送信先 ハードウエアアドレス : ff-ff-ff-ff-ff-ff
送信元 ハードウエアアドレス : 00-01-fc-03-b3-dd (Keyence Corporation)
イーサネット タイプ : 0x0800 (IP)
[IPヘッダ]
バージョン : 4
ヘッダ長 : 20
サービス タイプ : 0x00
全データ長 : 0x0030 (48)
識別子 : 0x23
フラグメント : 0x0000 (未使用:0 分割不可:0 後続:0 オフセット:0)
生存時間 : 0x80 (128)
プロトコル : 0x01 (ICMP Internet Control Message [RFC792,JBP])
チェックサム : 0x7826
送信元 IPアドレス : 192.168.1.220
送信先 IPアドレス : 255.255.255.255
[ICMPヘッダ]
タイプ : 0x11 (17 アドレスマスク要求)
コード : 0x00
チェックサム : 0xEEFF
[データ] 20 (20 オクテット)
00000000 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00000001 : 00 00 00 00 ....
[パケット情報] (ARP要求 where is 192.168.1.175)
取得時間 : 13:42:15
パケットサイズ : 60 オクテット
[MAC層] (EtherII(DIX))
送信先 ハードウエアアドレス : ff-ff-ff-ff-ff-ff
送信元 ハードウエアアドレス : 00-01-fc-03-b3-dd (Keyence Corporation)
イーサネット タイプ : 0x0806 (ARP)
[ARPパケット]
ハードウエア タイプ : 0x0001 (Ethernet 10Mbps)
プロトコル : 0x0800 (IP)
ハードウエア アドレス長 : 6 オクテット
プロトコル アドレス長 : 4 オクテット
オペレーション コード : 0x0001 (ARP要求)
送信元 ハードウエアアドレス : 00-01-fc-03-b3-dd
送信元 IPアドレス : 192.168.1.220
送信先 ハードウエアアドレス : 00-00-00-00-00-00
送信先 IPアドレス : 192.168.1.175
ARP要求したってリモートPCは寝ているのだから、MACアドレスの返答はあるわけ無いじゃん。
UDPはコネクション確立がないのだからブロードキャストで素直に送信データ送ってくれたらWOL出来そうなのだが。。。
相手先MACアドレスの取得が出来ないと送信しないシステムなのかな?
でPLC(KV−5000)からのWake-On-Lanテストは、ラダープログラムが悪いのか失敗しました。
ソケットエラーが出ているのか、受信プログラムも書いて確認してみよう。
【追記】
さらに受信プログラムを追加して試して見るも変化なし。
ソケットモニター

UDPソケット通信を開始しても、相変わらずARP要求のみしか送信されない。
パケットキャプチャーしても変化なし。
メーカーの休みが明けたら、詳細問合せしてみよう。
営業さんから出来ませんと言われましたが、その後再度連絡がありました。「出来るそうです」と。。。※キーエンス本社からサンプルプログラムを頂きました。RUN時1スキャンONで実行していますから、RUNと同時に動作します。ご注意を。間接指定と繰返しで大変スマートなプログラムです。
WakeOnLan.kpzWakeOnLan_kpr .pdf自分のプログラムの間違いは、相手先アドレスにブロードキャスト(FF FF FF FF =10進では255 255 255 255)を指定しなかったことと、送信データにFFが1バイト抜けていました。(^^ゞ
また、KV-5000をLANに接続するたびに(LANケーブルの抜き差し)ICMPアドレスマスク要求メッセージが送信されます。



●ICMPアドレスマスク要求メッセージ/ICMPアドレスマスク応答メッセージとは。
要求フォーマットを使うことによって、ホストが要求をブロードキャストし、自分のサブネットマスクを決めることができる。
ブロードキャストに応えてくれるのは、あらかじめきめられている情報 提供ホストで、ルーターがこれになっているのが一般的。