「ソフテックだより」では、ソフトウェア開発に関する情報や開発現場における社員の取り組みなどを定期的にお知らせしています。
さまざまなテーマを取り上げていますので、他のソフテックだよりも、ぜひご覧下さい。
ソフテックだより(発行日順)のページへ
ソフテックだより 技術レポート(技術分野別)のページへ
ソフテックだより 現場の声(シーン別)のページへ
私はソフテックに入社して14年になります。
入社後まもなく自社製SCADA「FAVIEW」のシステム構築などを手掛けるようになり、PLCやタッチパネルソフトも担当して10年以上経ちました。
ソフテックの特徴として「一人の社員が【仕様検討・見積もり】【ソフト開発・社内試験】【現場への納入・動作確認】を一貫して行う」という点があげられますが、私も例外ではなく、ひと月に1〜2度は出張に出かけながら日々の業務を行う毎日です。
私が初めて触れた10年以上前と比べるとPLCも高機能化が進み、パソコンで簡単に参照できるようなファイルを作成することも可能になっています。
そこで、今回は私が2011年に対応したシステムを基に、キーエンス製PLCを使用したCSVファイル作成の方法についてご紹介します。
お客様から依頼のあったシステム(以降「ロガーシステム」と記載)は以下の要求仕様があり、使用するPLCの機種を選定する必要がありました。
各機種の比較結果は以下の通りです。
検討項目 | 三菱電機 Qシリーズ |
横河電機 FA-M3 SP66/67シリーズ |
キーエンス KVシリーズ |
---|---|---|---|
ファイル保存のためのユニット追加 | ×(Webサーバユニット) | ○(不要) | ○(不要) |
ファイル保存先 | △(CF) | ○(SD) | ○(SD) |
メモリカード命令 | × | ○ | ○ |
自由なファイル内容作成 | × | ○ | ○ |
通信マクロ機能 | × | × | ○ |
スクリプト記述 | × | ×(※1) | ○ |
外部入出力 | △(別ユニット) | △(別ユニット) | ○(CPU内蔵) |
状態表示機能 | × | △(LED2灯) | ○(4×12字LCD) |
表1. PLC機能・相違点比較結果
3機種のうちキーエンス製PLCについては、ソフテックとしては使用実績がありましたが、私個人は使用したことはありませんでした。
そのため少々不安はありましたが、キーエンス製PLCは以下のようにメリットが多いことから使用することを決めました。
なお、キーエンス製PLCは「ロギング機能」を備えていますが、作成される形式がロガーシステムの要求仕様に合わないため、ユーザープログラムによるファイル作成を行うこととしました。
シリアル通信の場合は、CPUユニット(KV-3000)のみあれば実現可能です。
CPU内蔵のシリアルポートはRS-232Cですが、コネクタ形状が4ピンのモジュラコネクタ(電話線の差込口のような形)となるため、ロガーシステムではシリアルコミュニケーションユニット(KV-L20V)を追加し、RS-232C・D-sub 9ピンでの接続としました。
CPUユニットには電源も内蔵されていますが、DC24V入力対応となっています。
AC100Vで使用する場合は、AC電源ユニット(KV-U7)や外部電源が必要となります。
ロガーシステムでは使用実績があるオムロン製パワーサプライ(S8VS-03024)を選択しました。
図1. システム構成
なお、Ethernet接続の場合は、上位機種のKV-5000を選定することでCPUユニットにEthernetポートが標準装備されており、ソケット通信・FL-net通信等を行うことができます。
別機種の「KV-5500」はソケット通信・FL-net通信不可のためご注意ください。KV-5500はEtherNet/IP通信に特化しています。
ロガーシステムのプログラム構成は、「シリアル通信処理」と「CSVファイル保存処理」の2つに分けられます。
通信マクロ機能(※2)を備えているため通信処理の作成が容易になることもキーエンス製PLCを選定した理由の1つでしたが、結果的にはラダーで作成しました。
パソコンから送られるデータが「ASCII形式でデータをカンマ区切りにした形(そのままCSVファイルに書き出せる内容)」で送られるため型変換など複雑な処理は不要であること、受信応答を返す必要が無いなど、通信マクロを使用する利点が無くなったためです。
結果として、受信したデータをそのままの形でバッファリング(余裕を見て100件)するだけのシンプルな処理となりました。
ロガーシステムでは、まず連番のフォルダを作りその中にCSVファイルを格納する必要があったため、以下のような手順で処理を行いました。
図2. 処理の流れ
フォルダ名やファイル名の作成のため、文字列処理を行っています。
キーエンス製PLCではスクリプトが使用できるため、以下のように分かりやすく記述することができました。
図3. スクリプトによる簡素化
メモリカード命令として、データの読み書き・空き容量の確認など様々な命令が用意されています。
ロガーシステムではフォルダの作成を行う「MMKDIR」、ファイルへの書き込みを行う「MPRINT」の2つの命令を使用しています。
MMKDIR命令
フォルダ名を格納したデバイスと、作成完了を通知するデバイスの2つのパラメータを指定します。
図4. MMKDIR命令の記述例
フォルダ作成は即時完了するわけではなく、完了するまでに数スキャンを要するため、完了通知のデバイスにより完了を確認して次の処理(ファイル書込み等)を行う必要があります。
作成しようとするフォルダがすでに存在する場合は、MMKDIRは正常終了となるため事前にフォルダの有無を確認する必要はありません。
MPRINT命令
フォルダ名・拡張子まで含めたファイル名を格納したデバイス、書き込むデータを格納したデバイス、書込み完了を通知するデバイスの3つのパラメータを指定します。
図5. MPRINT命令の記述例
初めは同じくメモリカードへの書込み命令である「MWRIT」命令を使用することにしていましたが、実際にソフトを作成してみると行全体がダブルコーテーションで囲まれてしまうことがわかりました。(保存形式に「ASCII文字列」を指定)
作成したCSVファイルをExcelで開くと先頭のセルに1行全ての文字が入ってしまい、後から加工や参照がしにくい形となっていました。
そこで、各データを一度バイナリ形式(文字ではなく数値として扱う)に変換し、保存形式に「バイナリ」を指定するとダブるコーテーションでは囲まれず希望どおりの形になりました。
しかし、実際には小数点付きのデータがあるため保存形式に「浮動小数点型実数」を指定すると、今度は数値が指数表記(0.01→1.E-02)になってしまい、見づらくなってしまうことがわかりました。
その他の実現方法を再検討し、「MPRINT」命令を使用することにしました。
初めにMPRINT命令の使用例を見た際には、作成されるファイルの拡張子が”.TXT”となっているため「CSVファイルを作成したいロガーシステムの仕様には合わない」と早とちりしてしまいましたが、拡張子まで指定可能であることから問題無くCSVファイルを作成することができました。
MWRIT命令は保存形式の指定や、ファイル内の途中にデータを挿入できるなど機能豊富ですので、より複雑なファイル作成を行う際に威力を発揮すると思います。
また、MWRIT命令では改行コード(CR+LF)を付加するかどうかをオプションにより指定できますが、MPRINT命令では書き込むデータにあらかじめ改行コードを含めておく必要があります。
初めてキーエンス製PLCを使用しましたが、特に大きなトラブルも無く無事に納品を済ませることができました。
その理由として大きいのは、作成するソフトのボリュームが小さく使用する機能が限られていた点です。
それだけでなく、キーエンスの技術営業の方からツールの操作方法のレクチャーを受けたり、技術窓口の電話がつながりやすく不明点をすぐに解消できるなど、サポート面が充実していたことも理由の1つだと感じています。
工場など製造現場でも、製品開発やトラブル状況解析のための情報収集や、既製品のため簡単に手を入れられない装置からのデータの取得などファイル作成を行う場面は様々考えられます。
一昔前ならファイルを扱うにはパソコンを用意する必要がありましたが、今回ご紹介したファイル作成機能など各社ともPLCの機能が豊富になり、駆動部分が無く故障が少ないPLCのみでシステムを構成することもできるようになってきました。
新機能をいち早くモノにし、お客様へ色々なご提案をしていきたいと考えております。
(S.T.)
関連ページへのリンク
関連するソフテックだより