三菱電機のシーケンサラインアップに、ユニバーサルモデルの高速タイプ Q03UDV, Q04UDV, Q06UDV, Q13UDV, Q26UDV が加わりました。
多くの魅力があるので、早速案件で使おうかということになっています。
メリット
- 超高速処理
- LD命令が、ユニバーサルモデルの9.5ns --> 1.9ns
- PC MIX値が、ユニバーサルモデルの60命令/μs --> 227命令/μs
- CPU内蔵デバイスメモリを、最大60Kワードに容量アップ。
- 内蔵Etherポート経由で、CSVロギング機能を提供
などなど、従来の価格ほぼ据え置きでの性能アップは嬉しいですね。
しかし、モーションコントローラの時でもそうだったのですが、こうした高速化の時には命令毎に高速化の度合いが違うので要注意です。
今回、三角関数などの浮動小数点計算とCALL命令周りの速度アップが芳しくないので注意しましょう。
単位:μs | QnH | Q04UDEH | Q04UDV |
LD, LDI, AND, ANI,OR,ORI | 0.034 | 0.0095 | 0.0019~0.0078 |
OUT | 0.068 | 0.0095 | 0.0039~0.0078 |
$+ S D | 29 | 8.1~13.9 | 1.9~6.2 |
BMOV S D K1 | 7.1 | 5.4~7.0 | 1.8~5.5 |
BMOV S D K96 | 14 | 5.9~7.6 | 2.3~6.0 |
SIN(単精度) | 50 | 4.1~5.7 | 1.6~6.7 |
SINP(倍精度) SIND | 837 | 8.5~13.8 | 2.6~20.5 |
CALL Pn(ファイル内) | 0.88 | 2.6~4.0 | 0.9~0.9 |
CALL Pn(共通ポインタ) | 14 | 4.0~5.3 | 3.2~12.3 |
CALL Pn S1~S5 | 48 | 28.7~33.4 | 8.5~29.5 |
あと、この記事執筆時点では、パソコンからPLCのEthernetポート直接アクセスに関して、EZsocketライブラリのバージョンアップが行われておらず通信できません。
MXcomponentのライブラリのほうは既に提供されています。
今日は仕事ネタ。
モーションで多軸制御をしていると、シーケンスで同じ回路を沢山書く場面に良く遭遇しますね。
警報回路とか、各軸の位置決め回路とか。
同じ回路の展開はコピペ+デバイス置換で作ってゆく事が多いと思いますが、どうしてもタイプミスが残ってしまって、立ち上げ時にすぐに動かなかったり潜在バグになったり、変更の際の打ち込みの手間が大変だったり、悩みの種です。
どうしたら良いかなと考えていたところで、ふと三菱のGXWorks2の編集で右クリックしてみると、「CSVファイルからの読出」「CSVファイルへ書込」メニューがあるではないですか!
ということで、今回はこれを試してみました。
GXWorks2の回路編集状態で右クリックすると、コンテキストメニューが出てきます。その一番下に、ありますネ。
私が実行した手順は、以下のとおりです。
標準的な回路を1つ作って、CSVファイルへ書き込む
多軸展開したい回路のベース回路をひとつ、ラダーで作ります。
ここで、次のような注意点があります
- 後で変更する可能性がある回路はできるだけ無くしておく。
実際の運転プログラムからの指令やインターロックなど、軸単位で異なる条件や、現場で変更しそうなところは、総合接点として入れておき、そのコイル回路を別プログラムに書くような構成です。 - デバイスマップをよーく考えて作っておく
当然ながら、デバイスのマッピングには細心の注意を払い、無駄なく、デバイスのかぶりがないように設計しておきます。
書込んだCSVファイルを参考に、EXCELで編集
ここは腕の見せ所です。
- CSVで書きだしたファイルは、ニモニック表記になっています。 「そんなのわからない」 なんて言わずに良く見ているとすぐに理解できてきます。
- 多軸展開となる部分や、位置決めポイント展開となる部分などは変数としてEXCELでデバイス番号の計算式を作ります。
- 書き出しのために1行にしないといけないので、その部分は軸数ぶんのコピペは仕方ないでしょう。 必要に応じてマクロ化したりすれば、割と簡単になりそうですけど、変更しやすいように作っておくのがミソなので最小限がオススメです。
- 最終行に「END」をお忘れなく。
CSVファイルで保存
書き出した時のCSVを参考に、1シートの縦に長ーいシートをつくり、それをタブスペーサのテキスト形式で保存します。
CSV形式で保存すると、カンマ区切りになってしまうので、GXWorks2で読み込めません。 タブ区切りで保存しましょう。 私の場合はテキスト形式でやりました。
文字コードの変換
私のローカルPC環境の問題かもしれないですが、Shift-JISで書かれたタブ区切りのCSVファイルは、読み込みに失敗します。
- 一旦、テキストエディタで開いて、unicodeで保存。
- その後、拡張子をcsvに変更します。
GXWorks2で読み込み
例の右クリックのコンテキストメニューで、読み込みます。 表示中のプログラムにごっそり上書きされるので、要注意。
いかがでしょうか。 使い方は人それぞれですが、なかなか良いと思いますよこれ!
久しぶりに、仕事で使うツールを購入。
今回は、新分野へ飛びこみます。
主に組み込み用途として使われる、三菱のC言語コントローラーと、その周辺ツールソフト。
これがまた、高いんですよ。 ハードとソフト合わせると、定価ベースだと50万円オーバーします。 キャンペーンで30万円くらいで買えたけど、うちは個人企業ですからね、私一人の稼ぎで回収しなければいけない。 もうなんというか、笑っちゃいます。
- キャンペーンのお知らせ(pdf)
今のうちに勉強しておいて、食い付ける時がきたらガブっとね。 うまく行けばどんどん仕事請けて、がっちり儲けるのだあぁー。
しかしその前に、C言語でまともにアプリケーションを作ったことが無いという、未解決の問題が・・
買った物
- C言語コントローラCPUユニット
- Q24DHCCPU-V iQ Platform対応 リアルタイムOS(VxWorks標準搭載)
- C言語コントローラ用エンジニアリングツールCW Workbench Q24DHCCPU-V用
- SW1DND-CWWLQ24-E
- C言語コントローラ用設定・モニタツール Q24DHCCPU-V用
- SW4PVC-CCPU-J
本日、今年最後の仕事を引き渡してきました。
一年の締めくくりに相応しい、質の高いMotion仕事ができました!
既存制御装置の置き換え案件。
今年の5月頃から地道に準備してきて、10月末から本格的にソフト作成を行い、制御盤出荷前検査を経て現場へ。 ・・いつもなら可能な機械メーカー試運転は既存機械転用なのでありません。
そして現地短期間の集中工事・試運転立ち上げによって、製品の生産が可能となりました。
思えばここ1年、国内で設計して機械メーカー試運転・倉庫納入までで引き渡す仕事の数々、現地での立ち上げ仕事はありませんでした。 そのぶん楽でしたが、 やはり機械を動かして最後の製品を出すのが結果なので、久しぶりに充実した仕事ができました。
(追記)今回は一人ではなくて共同でソフトを作って組み合わせ、試運転も複数名で行い完成させた、ということも、楽しくできた要因だったです。
来年もまた、こういう仕事ができると良いなあ。
工場設備のソフト製作には様々な課題があるけれど、技術論や精神論を超えたところに「まず動くようにすること」の重要性がある。
久しぶりに、simulatorと向き合って仕事をすることになっているので、今日はこの話題にお付き合いください。
simulationを行うことは、実際の立ち上げ業務を速やかに行うために今や非常にウエイトが高いといえる。 5年前にシーケンサのシミュレータ という記事を書いたときにはまだまだ認識が低い人も多かったが、最近では「少なくともシーケンスとタッチパネル間のバグアウトくらいはsimulationかけておいてね」が常識になりつつある。
一昔前になるが、豊田スタジアム のソフト作成・現場仕様変更には、物を動かすまでテストができない状況もあり、simulatorが大変強力な武器であった。 ただ、この時の方式はsimulatorそのものをVisualBasicで作ったので、応用性とか 他のメンバーによる改造には不向きなシステムだった。。
現在携わっているのは、ブラックボックス化された古い制御装置のレトロフィット(置き換え)の案件。 この場合、「今まで動いていた装置」であり、置き換え後に許される立ち上げ時間は短く、そしてバグによって機械を壊すことは即生産阻害に繋がる。
まさにsimulatorに期待される場面なのだが、今回はできるだけ簡便に、且つ改造が容易な方法でやってみた。
画像のように、制御装置のシーケンサと通信するポスト通信アプリケーションをVB.netで作ってPC上で動かす。一方で同PC内で実体の無いsimulator側シーケンスをGX-simulator上で稼働させ、電磁弁・シリンダモデルや、サーボ位置モデルを動かして、結果をポスト通信アプリ経由で実シーケンサに返すもの。
このようにしておけばsimulator自身はシーケンスで書けるので誰でもメンテできるし、実ソフトとsimulatorは完全分離できるため転用性も向上する。
ということで、9月に制御盤出荷予定の案件で、これを十分に活用してソフト製作に取り組んでいる。 simulatorソフト製作は案外面倒で、バグアウトが目的なのかsimulator製作が目的なのか、わからなくなることもあるのだが、今回の方法が今後のsimulation環境へプラスになることを期待している。
# 自分の仕事の歩みは、simulatorとの付き合い方の変遷という部分も大いにある、と思うこの頃。
4日半の仕事の旅から帰ってきたのが、5日の朝。
その後関西方面出張でしたが、昨晩無事に帰宅して、1週間ぶりに自宅のベッドで寝ました。 やっぱり睡眠は自宅が一番です。
仕事は暑い現場で汗だらだらでした。 技術営業の成果は、まだ出ません。
12年ぶりにタイ英語と会話しましたけど、何とかコミュニケーションは取れました。 ホテルに電話でレイトチェックアウトを依頼する時がいちばん大変だった(汗)。。
宿泊地は、タイのリゾート、PATTAYA。 ホテルは、短期滞在のため優遇していただけまして、「AMARI ORCHID RESORT & TOWER」 でした。 オーシャンビューの部屋。
パタヤ市内の移動は、以前半年間滞在した先輩に連れられて、ソンテウを使いました。 荷台に乗って、降りたい時にブザーを押し、ひとり大体10バーツくらいで移動できます。
短い旅でしたが、タイ料理も沢山いただきました。 本場のトムヤムクンは、最高。
帰りに、お土産屋さんによって買い込みました。
子供たちには何が良いか悩みましたが、全然タイとは無関係っぽい民芸メカ人形があったので、それで。
一応、家内にも翡翠のネックレス。
次回も行けるかどうかは、今回の結果を持っての受注が成功するかどうかに拠ります。 微妙なところ。
先日以来、PHPで案件に取り組んでいます。
三菱のデータロガーユニットの「クセ」に悩まされつつ、だいぶ進んできました。 昨日と今日は、WEB画面でのグラフ表示にチャレンジ。
WEBブラウザ上でのグラフ表示には色々な方法がありますが、今回はできるだけ簡単に(書くコードが少ないという意味)時間をかけず、見栄えをあまり凝らずに行きたいので、 Javascriptでやってみました。
といっても、いつものように、オープンソースを使います。
Chart Widget Demo(WebFX)
自由度は相当低いですが、その分、敷居が低いですね。 今の私には丁度良い。(笑)
結果、こんな感じです。 20~1000レコードを60秒おきにリロードし、データロガーユニットからFTPでダウンロードしグラフ描画します。 意外に軽い。
今回はこんな感じで済ませましたが、もっと本格的なグラフ表示も試してみたいですね。
仕事にPHPを使って自身新分野に挑戦中!
概要
こちらのデータロガーユニット を使ってPLCから受信したEXCELレポートを、ユーザーがWEBサーバー経由で最新版をダウンロードする、というもの。 EXCELのファイル名が固定化していないので、WEBサーバーにFTPクライエントを立てて、ユニットのFTPサーバーへ接続してファイル名を得ることから。
ASPで?
サーバーはWindowsXPのIIS。 ならばASPだね、ってことでASPでFTPクライエントコードを探したのだが、見つからず。 結局、ASP.netなこのページか。
WebClientクラスでFTPによりファイル転送を行うには? [@IT .NET TIPS]
しかし、このためだけに.aspxに踏み込むのはいかにも時間の無駄。 やはり色々準備されているPHPかな。 XOOPSで馴染んできたPHPなのでハードルは低くなっているし、イントラ内のシステムなので、セキュリティーへの配慮も負担が少ない。
PHPで?
ということで、PHP5をインストール。 IIS+PHPはあまりメジャーではないのだが、下記ページを参考にSAPIでやってみたらOK。
PHP5 インストール・設定方法(IIS 編) [Windows で PHP を使おう]
(注意)
IISで仮想ディレクトリを使う場合、「No input file specified」というエラーが出たら
doc_root =
としておくと良さげ。
FTP関数?
そして、PHP5に準備されているFTP関数を使えば、OK?
FTP関数 [PHP マニュアル]
これ、間違いなく使えて他のPCのWEBサーバーともログイン・「ftp_nlist」によるファイル名取得、ともOKなのに、このデータロガーユニット内のFTPサーバーとは相性が悪いのか、「ftp_nlist」でも「ftp_rawlist」でも 空の配列が返るだけで取得できない。
半日悩んだ挙句、下記のページを参考に fputsとfgetsで返答文字列を確認しながらやってみると、どうやらうまくいきそうな予感。
FTPクライアント [PHPのちょっとしたTIPS]
最終的には、上のページで配布されている、このクラスを使うことにして、無事にファイル名を得ることができた。
まとめ
私にとっては新分野ではあったが、ひとつ心配なハードルがクリアできたので、このまま行くつもり。
設備制御分野では「電気屋」と「システム屋」のドメインが分かれているので、こういうコラボで小ぶりな仕事には、私のようなマルチ人間は便利で重宝されるため、今後も突っ込んでいきたいと思う。
やってしまいました
データの誤消去。
いつも仕事で使っているPCです。 取り急ぎ、重要な仕事のデータは、ほぼ復元できました。
発端は、「DISK残量も少なくなってきたし、古いデータは圧縮アーカイブにして一旦外付けHDDに退避させ、その間にデフラグでもやっておくかな。」 という軽い気持ち。 忙しい時にはできないから、こういう仕事の狭間は絶好のチャンス。
使った外付けHDDは、いつものUSB2.0外付けケースに、160GBのディスクを入れたもの。 そもそも、この判断が誤り。 大事なデータゆえ、Raidでミラーリングされたサーバーに退避すべきだったし、このディスクは、以前サーバーで酷使してきたものでありました。
データ消失までの成り行き
- まず、PC上でアーカイブ化した仕事のデータを、外付けHDDに転送。この時点ではきちんと退避されていたことを確認済み。
- 続いて、PC上の元データの消去を開始。
- 消去が終わる頃、欲を出して「あ、このデータも退避しておこう・・」 と思って外付けHDDにコピーを開始した時、悲劇が起こった。 「遅延書き込みに失敗しました。ディスクにエラーがある可能性・・」
- あっと思ったとき、丁度データ消去は完了していた。 ハイ、デフラグかけるのですから、shift+delでごみ箱スルーの一発消去してましたし。
- 外付けHDDを一旦離脱させ、改めて接続してみたけれども、「カチカチカチ、ジーッ・・」の繰り返し。やっちまったぁ
一瞬の判断ミスが命取りになりました。
その後の復旧トライ
- まずは駄目元で、「ドライブの復活」を試してみました。 これ、結構いけます。 何度か途中でエラーになるのを我慢して繰り返していたら、接続できるようになりました。
おかげで、いくつかのデータを救うことが可能に 。 しかし、壊れたディスクですから限界があります。 1MB以上クラスのファイルは救えませんでした。 - 続いて、消去したばかりのPCのディスク上で「復元」にトライ。 フリーソフトでいくつか試してみたうち、フォルダ構造で救える「データ復活/完全削除 【無料版】」が(XP限定ながら)一番使いやすかったです。
注意すべきは、元のフォルダ位置を認識できないような場合にも、Windowsフォルダの下の階層にくっついている場合があるので、見失わないように。 知らないとファイルひとつずつ救出するという恐ろしい作業が待っています。
それから、この手のソフトを使っても、すべてが救えるわけでは無いです。 今回のものでは、ざっと50%位だったかな。
以上により、OUTLOOKのオフラインデータや、最近の重要なデータは無事に救えました。 救えなかったのは、自社かお客様のサーバーにバックアップ済みデータのみ。
そして今、晴れてそのPCはドライブのバックアップ後に無事にデフラグ中。
教訓
- 作業ミスの可能性を考慮して、手順を踏むべし。
- たとえ一時的なものであっても、データ退避は信頼できる複数のディスクかメディアに取るべし。
- ディスクのパーティションは、適切に切っておくべし。 今回、データが起動ドライブにあったのがそもそもの要因。
- データ復旧ソフトの1本くらいは買ってたほうが幸せかも。