仕事とオーディオカテゴリの両インデックスに係る話題は、お初かな。
前の会社に居たとき、10年前くらいまで盛んに言われていました。
「感じニアになるな、エンジニアになれ!!」 と。
→ つまり、「こんな感じで考えているんですけどー。」 「こんな感じで設計していただければ」 「そんな感じじゃうまくいかねえな。」 てな抽象的ことでは、マトモな物はできるわけないでしょ、 数値で示しなさい! ってことでした。 ・・ 確かにそのとおり。
でも、ここ数年は、特に私の中では完全に逆転しています。
「理屈をこねる前に、目の前にあることを目玉に焼き付けて、耳で音を聞いて、触って温度を感じてみなさい。 そこで感じたことを、理屈で説明できればそれが正解だ。」 ってことです。
オーディオ的にいうと、「このスピーカーはF特がこんなにフラットですごいねー。 でも音にスピード感が無くて曇ってるんだよね。」 「こんなにいい音なのに、F特は凸凹で高音は15KHz止まりってどーいうこと?」 など、例を挙げればキリがありません。
一言で言ってしまえば「現場主義」ってことになってしまうのかもしれませんが、改善の宝庫を目前にしても何も感じないようでは仕事にならない、とい うことです。 もちろん改善の種を見つけてもその先で実を結ぶための英知(Engineering)がなければ結果は出ませんが。。 これも当たり前の ことですね。
結論づけるとすれば、「現実」と「理論」の両方にいつも意識して深く接する努力が大事なんだな、と思います。
1年に2回くらいしかやらない、PCのプログラムが必要な案件が来ました。
某スタジアムの開閉屋根の走行プログラムの改造。 本体制御はモーション制御なのですが、改造のシミュレーションをパソコン上のシミュレーターを使って行うものでして、そのシミュレーターのプログラムです。
以前は、VB6のタスク2つで、中間をC+の共有メモリで繋いでいました。 これをVisualBasic.netに移行して、ネイティブなマルチスレッドで1本化するものです。
ご存知のとおりVB6->.net 移行の際のネックは色々ありまして、単純にプロジェクトのアップグレードで動く物の方が少ないくらいです。 一番困るのは、「コントロール配列が使えない」ということでして。。
このように、14台ある物体の各ランプを種類毎にまとめたり、数値表示を出したりといった使い方ですから、まず間違いなく コントロール配列を使ったほうが簡単でコードも読みやすいです。
VB6なら、コントロールをコピー?ペーストすると、勝手にコントロール配列にしてくれました。 Label1でしたら、Label1(0)、Label1(1)・・ という具合です。
しかし、.netに変わってからは、Label1をコピーすると、Label1-1、Label1-2・・となってしまいます。 オンラインマニュアルを見ると、
「Visual Basic .NET では、コントロール配列はサポートされません。イベント モデルに加えられた変更により、コントロール配列が不要になりました。Visual Basic 6.0 では、イベントがコントロール配列によって共有されていましたが、Visual Basic .NET では、複数のコントロールからのイベントがイベント ハンドラによって処理されます。このことにより、同じイベントを共有する異なる型のコントロールグループを作成できるようになります。」
とあります。
一般的には、 こちらのサイトにあるような方法が簡単にコントロール配列を作れるでしょう。
ただ、クリックイベントなどの際にどのコントロールが対象なのかを判断する時の処理がわかり辛かったり、同じコントロールの配列群を多数set作る 場合などを考慮し 私の場合はコントロールの配列は 「System.Collections.CollectionBase」 クラスを継承したクラス で 「ControllArray」による方法を使用しています。
これは、予め汎用的なControllArrayクラスを作成しておけば、追加呼び出しなども自由ですし、よりオブジェクト指向の書き方になってきます。
**
まあこの程度のことは、プログラマの方からすれば「何を今更低次元な。」 なんでしょうが。。 これが本業でないプログラマにとっては、結構面倒なわけです。
さて、42setのコントロール配列群をやっと作り終えたので、本体コード移行に着手しなければ・・
今年も、豊田スタジアムのソフト改修に、昨日・本日の2日間、行ってきました。
まずは遠景から
そしていつもの角度から。
2001年の竣工後、丸7年を経過。 さすがに故障が出だして昨年の秋?今年にかけて機械的なトラブルが散発しまともに動かせなかった。(雨の中のトヨタカップは、2chのスレまで立つほどの苦情が?)
そこで故障時の復旧容易化などの要望が出てきて、今回はその対応。 ちなみに昨年の記事は、こちら。
この1年間のトラブルで、関係者により様々な改修が行われたが、ここにきて台車のエンコーダー位置の重要性を再認識いただたいたようで。 昨日・本日の試運転でトラス台車の位置誤差が相互協調動作のズムーズさに影響することを確認できた。
竣工時の私の脳内奮闘の内容と、絶妙な運転のための小技の数々。 ここにきてようやく皆さんにわかっていただけて、苦労が報われたような気がした。
2日目の今日は、2往復していずれもノンストップで自動開閉を完了。 こうして動くのが普通なのだが、それでも久しぶりの勇姿に皆見とれていた。 やっと竣工時の状態を取り戻せたのかもしれない。
そして来年も、大きな改修が行われる予感。。
**
その他の写真
いつも自社のITばかり紹介していてはブログの意味が無いので、たまには本業の話題を。
(右の写真の右側です)
三菱電機の AJ65BT-G4-S3 (通称:G4-S3) を買いました。 CCリンク経由でリンク内PLCのモニタ/書き込みを行うためです。
ずいぶん昔からG4ユニットはありましたが、Aシーケンサ限定のものでした。 2000年にQモードに対応した後継機種G4-S3が発売になりましたが、あまり使う機会はありませんでした。
今回は、古い機械でAnAシーケンサで制御している装置の一部をQモーションに置き換えるもので、全体制御は今までどおりAnAで行うものです。
当時のネットワークはMelsecnet2でしたから、Qシーケンサは割り込めません。 かといって、このためだけにNet10にするのも勿体無い。 → 必然的に、CCリンク(トランジェント通信を使用:下記注2参照)を採用となりました。
また、新規制御盤と既存制御盤が離れているため遠隔読み出しできないと不便なのですが、生憎AシリーズのCCリンクではCPU経由での読み書きは出来ません。 G4-S3ユニットをCCリンクに割り込ませておけば、AシーケンサもQシーケンサも読み書きできます。(注3)
下の画像はGX-Developerの接続先指定のスクリーンショット。
AnAシーケンサでは通信速度が通常のCPU接続では9.6Kbpsですが、G4-S3を経由すると38.4Kbpsになります。 今となっては38.4Kbpsでも遅いのですが、9.6Kbpsはめちゃくちゃ遅いので この速度アップはばかになりません。 Qシーケンサ相手なら、115Kbpsで通信できます。
現場の効率アップを考慮すると今回の案件だけでも十分ですが、1つ持っていれば今後も有益か(?) とも考えて購入に踏み切りました。
今月一杯はソフトデバグやら盤メーカー・機械メーカー立会いなどの出張で手一杯の予定。 現地が終わったら、このG4-S3は外して持って帰ります。(笑)
** 注意
注1: G4-S3を使用して、古い大型AシリーズのPLCを読み書きする場合は、CCリンクマスタ/ローカルユニット(AJ65BT11)の機能バージョンB以降、ソフトウエアバージョンJ以降が必要です。
資料: PDFファイル
注2: AnAシーケンサへのトランジェント通信は、デバイス直接指定はできません。 ランダムアクセスバッファメモリ経由となります。
注3: 実はまだ通信できていなかったりします。 構成に無理があるのか、三菱電機へ問い合わせをしてみます。
→ 061126追記: AnAのユニットが古かったようでして、00年の別のユニットに交換したら通信できました。 これで38.4Kbpsで通信できます。(嬉)
先日以来、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]
最終的には、上のページで配布されている、このクラスを使うことにして、無事にファイル名を得ることができた。
まとめ
私にとっては新分野ではあったが、ひとつ心配なハードルがクリアできたので、このまま行くつもり。
設備制御分野では「電気屋」と「システム屋」のドメインが分かれているので、こういうコラボで小ぶりな仕事には、私のようなマルチ人間は便利で重宝されるため、今後も突っ込んでいきたいと思う。
仕事で、シーケンサからRS485マルチドロップ通信にて、とある制御機器と通信することになった。
シーケンサの計算機リンクユニットは、元々はその名の通り計算機(コンピュータ)との通信を目的に開発されてきたものであって、シーケンサは割と我儘言ってもコンピュータ側でプロトコルなりを調整してくれるはずであった。
しかし、相手が制御機器だとそうはいかない。 伝文にチェックサムの有/無混在していたり、ACKのみ送信してきたり要求してきたり、色々な仕様に対応しないといけないから、きっとアウエイな仕事の進め方をせざるを得ないんだろう。。と思って三菱のコールセンタで相談したところ、今回は想定していた「無手順」方式ではなく「通信プロトコル」方式の通信を使うことで解決できるとわかった。
この機能、GXWorks2の「ツール」-「インテリジェント機能ユニット用ツール」-「シリアルコミニュケーションユニット」-「通信プロトコル支援機能」 で設定・デバグツールが開いて使える。
(以前のGX-Developer1には付属せず、別途Configulator-SCというソフトを購入する必要があったのだが、さすがに新しいほうのWorks2だと同梱されていたので助かった。)
シーケンサと通信シミュレーションを行うための、PC上のシミュレータはVB.netで作る。 VB.net2005以降にはSerealPortコントロールが使えるようになっているのでまあこれで十分。以下の参考サイトのサンプルコードをベースに、ASCIIコード通信→バイナリー通信に変更して、受信データに応じて返答を送信するように作り込む。
画像は、受信したバイナリデータをHEXデータにしてテキストBOXに表示してみたところ。
参考:VB.NETでシリアル通信を行う(金澤ソフト設計)
シーケンサとの通信に、USB-RS485コンバータ(UTS-485TB-V2)を購入。 このメーカーのは、USB-RS232Cコンバータでも実績があり間違いない。 4,500円程なのでお財布にも優しい。
通信とかパソコンのプログラムは本職ではないけど、色々勉強しながら作り上げてゆくのは大変だけど楽しいものだ。
(余談)
- Sharp Develop
こんなSDKがあったのを知らずにいた。 VisualBasic Express Editionも無償なので良いのだが、インストーラを作ることができい。 その点、Sharp Developは「Wix」という使い辛いけどインストーラを別途追加すればできるようになる。
(参考)セットアッププロジェクト-WiX(余暇でSharpDevelop)
- チェックサムでXOR方式
ググってもなかなかわからなかった、XOR方式のサムチェック。 1の補数とか2の補数とかは情報あるけどこれはなかなか出てこない。 結局、三菱のマニュアルに書いてあった「水平パリティ」がそれだと判明。(汗)
(参考)誤り制御について(ネットワークの基礎)
工場設備のソフト製作には様々な課題があるけれど、技術論や精神論を超えたところに「まず動くようにすること」の重要性がある。
久しぶりに、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バーツくらいで移動できます。
短い旅でしたが、タイ料理も沢山いただきました。 本場のトムヤムクンは、最高。
帰りに、お土産屋さんによって買い込みました。
子供たちには何が良いか悩みましたが、全然タイとは無関係っぽい民芸メカ人形があったので、それで。
一応、家内にも翡翠のネックレス。
次回も行けるかどうかは、今回の結果を持っての受注が成功するかどうかに拠ります。 微妙なところ。
3年前に納めた、シーケンサのデータロギングシステムの追加改造案件の見積書を提出した。
三菱のデータロガーユニットは、当時は出たばかりで使い辛いことこの上なかったのだが、声を大にして改善要望を出し続けた結果、少しは反映されて良くなったらしい。
今回、サーバー側のPHPによるWEBプログラムも追加が入るので、3年間でXOOPS Cube関連で蓄積してきた知識も活用して効率的にこなそうと思う。 それの当時はJavaScriptで苦労して使ったグラフツールもきっと進化しているだろうし。
毎度言うけど、シーケンサとPCソフト、サーバーソフトをある程度使えるマルチドメイン業務には、私のような人間は重宝されるらしい。
ということで、受注が楽しみ。