欧米のエンジニアのように、ラダーとプログラミング言語を用途によって使い分けてできるようようになるという目標ですが、最近はWeb関係ばかりやっていたので、久しぶりにPLCについてです。
キーエンスのKV-nanoとパソコンをシリアルで接続しましたが、初めに少しハマってしましたので書きます。
初めにハマったこと
まずキーエンスのホームページでシリアル通信のマニュアルを探しても目当てのものがなく、Ethernetマニュアルの上位リンクでコマンドを確認して試みんだのですが、どうしてもエラーE1しか返ってきませんでした。
途方にくれてKV Studioのメニューの項目をいろいろみてたら、ヘルプにシリアル通信のマニュアルがあることがわかりました。インストールしてなかったので、ホームページからKV STUDIO用マニュアルセットをダウンロードしインストールして見れるようになりました。
通信できなかった原因
単純なことで、通信開始CRをまず送る必要があります。マニュアルには詳しく乗ってませんが、下記のような挙動をすることがわかりました。
コマンドメモ
コマンドはいろいろな種類がありますが、とりあえず以下のコマンドを使用することにしました。
内容 | コマンド | 用途 |
---|---|---|
通信開始 | CR | |
通信終了 | CQ | |
モニタ登録(メモリ) | MWS | DMデータランダム読み出し |
モニタ読み出し(メモリ) | MWR | DMデータランダム読み出し |
モニタ登録(ビット) | MBS | ビットデータランダム読み出し |
モニタ読み出し(ビット) | MBR | ビットデータランダム読み出し |
連続読み出し | RDS | 文字列読み出し |
連続書き込み | WRS | 文字列書き込み |
書き込み | WR | DM/ビットを1点書き込み |
デバイス登録に共通するデータ形式
.U | 10進数16ビット符号なし |
.S | 10進数16ビット符号あり |
.D | 10進数32ビット符号なし |
.L | 10進数32ビット符号あり |
.H | 16進数16ビット |
デバイスは、デバイス種別+デバイス番号+データ形式で指定します。例えば、D100で10進数16ビット符号ありなら D100.Sとなります。
モニタ登録、モニタ読み出し
アドレスが連続してない場合、これを使ったほうが便利だと思いました。モニタ登録の主な挙動は下記の通りです。