日記一覧
当サイトに登録されている日記一覧


冬場も近いし、ノートの乗り心地の悪さとロードノイズの多さが気になっているので何とかしたく、色々考えてまずはスタッドレスタイヤとアルミホイールを注文した。
目的がドレスアップでは無いしコストも抑えたいので、標準の14インチサイズとした。トータル5万2千円ナリ。
- アルミホイール:
ホットスタッフ CROSS SPEED PREMIUM-10 メタルシルバー 14インチ x 5.5 P.C.D.100mm 4H INSET43mm
アルミは安いので良いと思い、タイヤ購入サイトで一番安い物を選んだ。
- スタッドレスタイヤ:
ピレリ WINTER ICE CONTROL 185/70R14 88Q
このスタッドレスは、一般的な国産ブランドに比べてゴムが固く、氷上性能はいま一つらしいけれども、その分ドライ性能は夏用タイヤとそんなに変わらず、乗り心地やロードノイズも良くて、何より安い。
中国製らしいのだが、2012年製を確認してポチッた。
納品されたら、ドライ性能や燃費の悪化度合いなどを検証してみようと思う。 なにより乗り心地とロードノイズの変化がどれほどなのか楽しみ。
もし気に行ったら、夏冬兼用で年間を通じて使うのもアリかもしれない。元々千葉県の北総圏エリアは冬場に雪が積もるのは2回程度だし、そのために夏用・冬用を履き変えるのは効率が悪く、乗り心地のために別途夏用に購入すると色々無駄が生じる。
夏冬兼用でいければ、ノート標準の鉄ホイールとエコピアは予備で保管して置き、次の車に乗り換えの時にノートに履いて出せる。
いずれにしても、1週間くらいで納品されるから、早めに履き変えてインプレします。。 油圧ジャッキもそろそろ買おうかな。
「蘇我ミクス(ソフトテニス)クラブ」 ホームページを作成中です。
ドメインを取って、いつものXOOPSで。
PCから
http://www.sogamics.com/
(PCのページにQRコードも表示あります。)
私の思い
1、ミクスの戦績などをアーカイブして掲載しておきたい。
公開ページとしておけば、活動を広く知ってもらえる。
→ (ブログ形式が適当)
2、戦術や練習方法などの話し合いの場も欲しい。
→ (ツリー表示ができる掲示板形式が適当)
3、メンバー限定ページ内で内緒の話もしたい。
→ (掲示板、ぶろぐ、Pukiwikiなどを使って色々できる)
4、携帯からも出来るだけ使いたい
5、けれども、やっぱり気軽で楽しくできるmixiのコミュがメイン。
今回はmixiの外部サイトという位置づけ。 どのような使い方が考えられるのか、楽しみなところです。
目新しいところでは、
- WhatsNewモジュール で、新着情報を一括表示
- Xmobileモジュール で、モバイル対応可能なモジュールを使った
というところ。
どちらも、「帯に短し」なところがあるのですが、それでも便利なことに変わりありません。 多数のモジュールに対応させ る独自モジュール・・ 調査/設計/コーディング/デバグにどれだけの時間がかかることか・・ これをオープンソースで作られている皆さんに、この場を借 りて感謝の気持ちを。 ありがとうございます。
今年はコンテスト応募を見送り、その分色々なことができており、先日注文した Fostexの限定8cmユニット、「FE83-Sol」が入荷したので、2014年stereo誌自作スピーカーコンテスト作品「クリアミント」のウーハーを外して取り付けてみました。
フレーム自体の穴径は大丈夫だったのですが、取り付けビスの位置が微妙に違っていて取りつかない・・ 仕方なく、45度回して付けました。 この向きだと内部の音抜けがイマイチなのですが仕方ありません。
早速視聴です。
公開されている周波数特性のとおり、FE103-Solのような高域の強い強調はありませんが、それでも中高域にエネルギーが厚めで、高域の伸びがあまり目立たないような。。 けれども耳障りではないので、長時間の視聴も耐えられます。
中域の良さは、ベースのFE83の延長線上にあり健在です。特にボーカルはいいですね。決して神経質ではなく、存在感があり大らかに聴けます。 ボーカルを聴くためだけにこのスピーカーに切り替えて聴きたくなります。
低域に関しても、決して量感豊かというわけにはいかないものの、Q0cが0.65と非常に使いやすい値であり、ボン付く感じがあればそれはエンクロージャの問題ということでしょう。 クリアミントは少しボン付き気味ですので、専用のエンクロージャを設計したいところです。
・エルガー 威風堂々 第五番
https://www.youtube.com/watch?v=ZzWS2YG4-BI
・Fourplay Gulliver
https://www.youtube.com/watch?v=v3HGlHIuxa0
・Norah Jones Don't Know Why
https://www.youtube.com/watch?v=LiQb-eigVnw
買いました。ハイエンドクラスのD級パワーアンプモジュール、Hypex NCore NC400 x2台とデュアル電源 SMPS1200A400、Dual connectionキット。 マレーシア製ですね。
数量 | 品名 | VAT | Total | |
2 | NC400 (H01U001376) | 0% | € 550,00 | |
1 | SMPS1200A400 (H02U004319) | 0% | € 180,00 | |
1 | SMPS1200A400 onto 2x NC400 Connection kit (H08U002750) | 0% | € 30,00 | |
. | ||||
Subtotal excl. | € 760,00 | |||
Shipping costs | € 60,35 | |||
. | ||||
Total excl. VAT | € 820,35 |
EURO/JPY換算レート:1 JPY=0.00795722 EURO→¥103,095円
送料込みで消費税は¥5,300円、総額¥108,395円でした。
- NC400到着したので開梱
- バラックで仮組し、システムに導入
実に細やかな音が出ます。UcD32MPも良かったですが、NCoreに比べると少し甘くゆったり目だったと気づきます。そしてバラックにも関わらず圧倒的なS/N比と空間表現のアップにより、ベールが2枚ほど取り去られた感じで、ソースの音の違いをしっかり鳴らし分けます。余計な色付けは全くありませんので、若干の味気無さも感じたりしますが。
この音が、スピーカー込みで20万円以内で出ているというのは我ながら超絶なコスパだと思います。
空気録音は後日トライして公開しますが、録音のS/NやYouTubeによる圧縮でマスクされて違いは出ないかもしれません。
(追記)空気録音してみました:杏里/砂浜[OPUS21](少し再生レベルが高すぎたかも?)
https://www.youtube.com/watch?v=vs92MGHcfA0
自作のJFETプリアンプは、UcDの時は音楽性のアップにかなり貢献していましたが、今回はそのメリットと空間表現の微妙な低下デメリットがあり悩みどころです。 早くも次のプリアンプ(というよりバッファアンプ)作ろうかと思いましたが、そもそもNC400には元からディスクリートのバッファアンプが内蔵されているようで、DACからXLRケーブルのバランス接続で直接プリアンプ無しで鳴らして音が良かったのにも納得ですね。比較の結果、プリ不使用でDACのES9038Proによる劣化の少ない電子ボリウムで絞って聞いています。
将来構成として、新日本無線から今年4月に発表された「MUSES72323」電子ボリウムICを使ったプリなど作りたいですね。 どなたか設計・公開してくれないかなあ。。
でもまずはこのNC400をきちんとアルミケースに収納することからですね。そしてこのレベルになると、RasPiの電源や構成も影響しそうなので、今後の改善のモチベーションになりそうです。
スピーカーは、次期作はユニット購入も含めなかなか意欲がわきません、アップデートの価値があるのはわかっているのですが。。
仕事で使う、カラープリンタを更新しました。
今まで使っていたのは、もう8年ほど前に購入した、EPSONのPM-800C。その当時は写真の印刷品質の良さに驚いたものでしたが、今となってはカスレが解消されなかったり、色がおかしかったり。
今日K'sデンキで買ってきたのは、同じくEPSONのEP-901F、ファックス機能付きのモデルです。
本当は、CANON製にしようかと思っていたのですが、リビングに置けば家内も簡単にデジカメダイレクトプリントができることから、現在使用中のFAXの更新をも狙っての選択です。
印刷品質は、まだ微調整していませんが、そこそこかな。 スキャナー機能がCCDセンサーではなくCISセンサーなので、撮像部にきっちり着けないとピントがボケますが、まあオマケ機能なので十分。 もちろんFAXもカラーFAXとして使えます。
そして、ADF(自動原稿送り)もついているし、写真のようにトレイが2段でA4用紙とL版写真用紙を常時トレイにセットしておけるのが、前面操作だけで済むしほこりをかぶったりもしないので吉。
左に見えるのが、現在使用中のBrother製のFAX。 3年間しか使用していませんが、コードレス機能がアナログなので音が悪い。
置き換え予定で検討中なのが、ユニデンのUCT002。 親機もコードレスで選ぶと、意外に機種が少なく、あっても安価なものが少ない。 このユニデンのものは、北米市場で育った製品のため操作性に若干の慣れが必要なようだが、安価でデザインもまあまあ。 文字が小さいのがちょっと気になるが。
まあ、電話のほうは慌てて買わずにプリンタのFAX機能を評価して十分使えると確認できてからにしておこう。
週末、それも月に1度か2度しか自宅に戻らない出張生活の中で、楽しみは音楽ですね。 今回も空気録音をしてみました。
中学・高校の頃の曲が無性に聞きたくなる今日この頃。リンダ・ロンシュタットのベストアルバムを2枚仕入れて、懐かしの名曲を3曲空気録音しました。
Linda Ronstadt Gratest Hits vol1 & 2
やっぱりフルレンジにはボーカルですねえ。今回は録音レベルを抑え気味にしました、ロック・ポピュラーはダイナミックレンジが狭いのでこれで余裕です。
いや良いですね。特に Heat Wave のコブシの効いた「Yeay,Yeay! Yeay,Yeay!」、ビートの効いた70年代ロック最高です!
https://www.youtube.com/watch?v=Ba15TtgRFmE
再生機材評価用録音
音源:
Linda Ronstadt Greatest Hits vol.1 & 2 (asylum 1976 / 1980)(2015 Remaster)
1. Just One Look 2. Tracks of my Tears 3. Heat Wave
オーディオシステム紹介
Player:Raspberry Pi 3 Model B (RS版) + Volumio2.599
DAC:(Mshow Hifi Store) ES9038PRO USB DAC
up sampling 88.2kHz/24bit + Amanero Combo384
https://ja.aliexpress.com/item/32869612489.html
+ OP AMP換装 OPA627AU/OPA827AID
PreAmp:自作不平衡/平衡JFET(元設計:ペるけ氏)改
http://www.naaon.com/modules/plactice/index.php/content0196.html
PowerAmp:(hypex) UcD32MP
スピーカー:(自作塩ビ管スピーカー) トルネードフライ + FE88-Sol
ユニット:Fostex FE88-Sol
録音:
・マイク:WM-61A 3端子改造+ファンタム電源対応
Shinさん改造版(fet2)コピー版、FETは、2SK2880Dで代替
・サウンドインターフェース:Steinberg UR22mkII
・フォーマット:48kbps、24bit
今日は、年に2回開催のソフトテニスの杉並大会(クラブ戦)に大学のOBとして参加してきた。
ここ2か月の減量も成功し、止まっていた足の動きが復活。 ボレーの成功率が下がってきたのが少々不安材料であったが、足でカバーできるさ、くらいの気持ちでいた。 髪も染めて(笑)若い気持ちで臨んだが。。
パートナーは現役で一番ストローク力のある後衛と組ませていただき、2試合に出場。1試合目は相手のレベルが高すぎて完敗。2試合目は勝てる相手・勝てる試合であったのだが、後衛の頑張りだけでは接戦を制せなかった。
ボレーの成功率は、2割程度であっただろう。 触ってもミスか、落とすだけしかできずに決まらずグシャグシャになって結局相手のポイントに。 触ったボールの半分でも決めていたら、すんなり勝てていたはずだ。
今回の自身のプレーを冷静に評価してみる。
- 足の動きに頼る気持ちが強すぎ、ここ数年減っていた余分な動きが復活。 自制できずに要らんところでサイドやミドルを抜かれ、後衛の守備範囲を広げてしまった。
- 減量のトレーニングで体が軽くなり、動きが早くなったぶん、相手がボールを打つ瞬間に眼がブレて軌道の認識が遅れ、ラケットにきちんと捉えられないことが多かった。
- 減量で足腰は強化された反面、上半身の筋力が下がってしまい、あれほど軽量なラケットなのに思い通りに扱えなくなってしまった。
- 成年・シニアの試合に慣れてしまって、速いボールに対応できない体になりつつある。。
- 入れるだけの1stサーブはやはり辛い。2試合でダブルフォルトが無かったのが唯一の救い。
まことに不甲斐ない出来で、パートナーにも応援している皆さんにも申し訳なかった。
今後は、上半身の筋力維持にも努めてみようと思う。動体視力の維持も重要。 べち君に今日も助言いただいたテニススタイルの変更は尤もではあるのだが、(今更ということもあって)なかなか難しい。 (身長の無い前衛ゆえ、ポジションを取るだけでは相手にプレッシャーを掛けられないという宿命も大きい。)
なお、自分も含め他の皆さんの試合、それぞれに楽しんでできのではないかと思う。 毎度この場を提供してくれる幹事さん、ありがとう。
まずは現物から
- LPC1114FN28とFT232RL USB/serialコンバーターで、シリアル通信+サーボモーターを回してみる。 以下、準備から実際のプログラムソースまでメモっておきます。
まず頭に入れてくべきこと
- mbedオフィシャルサイト 全てはここから始まる。
- mbedとは:Wikiedia
- mbed と Arduino の違い
準備したもの
- mbed対応のマイコン。今回は、LPC1114FN28 を、秋月電子で購入。 1個たったの120円!(税込)
- USB-シリアル変換モジュール FT232RL 秋月で購入。
- Arduinoスターターキット SGK-ARD-KIT 千石電商で購入 arduino uno 付きで4,940円。 arduino unoの他に付属のセット品が色々入っていて、初めてには良いですね。 arduinoからいじり始めてみたものの、mbedを教えていただいたら断然そちらが面白くなってます。
配線
- 参考
- mbed LPC1114でLチカしてみた(1):しなぷすのハード製作記
マイコンとFT232RLの接続が参考になります。 プログラムを書き込んだあとリセットしなくても済みます。 なお、書き込みソフトはこのページの要領ではなく、LPC1114限定で下記ページのものが使いやすいです。 - mbed LPC1114でLチカしてみた(2):しなぷすのハード製作記
LPC1114限定で「LPCISP」というソフトを公開しておられます。USB/serialコンバーター経由で一発書き込み、即座にリセットが働くので、楽ちんです。
- mbed LPC1114でLチカしてみた(1):しなぷすのハード製作記
- ハード図
ブレッドボードを使うとテストは楽にできるけど、一度バラしたら再現するのが面倒になっちゃいますんで、ちゃんと図面を書くクセをつけたいですね。今回は資料への使いまわしがしやすいようにEXCELでこんな感じで書いてみました。- LPC1114のLED回路はソース出力(PNP)でプラスコモン、FT232RLのLEDモニタ回路は、シンク出力(NPN)でマイナスコモンになっているみたいで、ちょっと混乱します。
工業用制御部品に関していえば、日本国内やアジア圏ではシンク(NPN)でマイナスコモン、欧州ではソース出力(PNP)でプラスコモン が多いですが、欧州への輸出時にはCEマーク表示の関係で本質安全の考え方から必ずPNPにしないといけなくなるため、国内でもPNPへの変更が徐々に進んでいる・・ のかなあ?
組み込み部品での状況は全くわからずです。
- LPC1114のLED回路はソース出力(PNP)でプラスコモン、FT232RLのLEDモニタ回路は、シンク出力(NPN)でマイナスコモンになっているみたいで、ちょっと混乱します。
プログラム
mbedはarduinoと違い、ほぼ素のC/C++で書けます。 オンラインコンパイラでビルドが通ったプロジェクトをエクスポートして、外部のIDEで編集・コンパイルできることからもそれを実感できます。
とはいえまずはオンラインコンパイラで。
![]() |
使用ライブラリ
- Servo
mbedのオンラインコンパイラ上の「Import」でキーワード「Servo」で検索し、sford cstyles さんの mbed R/C Servo Libraryを試しに使ってみました。 - MySerial
自作ライブラリ MySerial です。mbed標準のRawSerialクラスを継承し、受信文字列のchar配列格納を簡単にできるようにしてみました。 現時点でのソースを貼っておきます。- GetString メソッドは、テンプレート化でオーバーロードしてあり、引数にポインタ変数指定でも char配列指定の参照でも使えるようにしました。
- Wait時間の設定を追加してあります。
その他APIは、こちらを参照。
- MySerial.h
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
- | | | | | | | | | ! - | | | | | | | | | | | | | | | | | | | | | ! - | | - | | | ! | | - | | | ! | | - | | | | ! | | - | | | | ! | - | ! | | | | | !
/** mbed Serial Library extend RawSerial * Copyright (c) 2014 Naoki Okino * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ #ifndef MBED_MYSERIAL_H #define MBED_MYSERIAL_H #include "mbed.h" /** MySerial control class, based on a RawSerial * * Example: * @code * #include "mbed.h" * #include "MySerial.h" * * MySerial pc(USBTX,USBRX); //instance of MySerial Class * char cWord[16]; //receive chars or cWord[256], cWord[1024] etc.. * * void readbuf() * { * // int iRtn = pc.GetString(6,&cWord); //Serial received chars by pointer cWord * int iRtn = pc.GetString(6,cWord); //Serial received chars byref of cWord * } * int main() { * pc.baud(9600); //set baud rate * pc.format(8, MySerial::None, 1);//set bits for a byte, parity bit, stop bit * pc.SetRxWait(0.01, 0.001); //set wait getting chars after interrupted, each char * pc.attach( readbuf, MySerial::RxIrq ); //Set Interrupt by Serial receive * } * @endcode */ class MySerial : public RawSerial{ public: /** constructor to get chars received by serial * * @param PinName tx * @param PinName rx */ MySerial(PinName tx, PinName rx); /** set wait getting chars after interrupted * * @param float _fRxStartWait wait getting a 1st char after interrupted * @param float _fRxEachWait wait getting each char */ void SetRxWait(float _fRxStartWait, float _fRxEachWait); /** function to get chars after received chars by serial * * @param int size for get chars * @param *cWord returns got chars by pointer * @param returns success by 0 */ virtual int GetString(int size, char *cWord); /** overload function to get chars after received chars by serial * * @param int size for get chars * @param cWord returns got chars by ref * @param returns success by 0 */ template <class X> int GetString(int size, X cWord) { return GetString(size, &cWord); } protected: float fRxStartWait; float fRxEachWait; }; /* class MySerial */ #endif
- MySerial.h
- MySerial.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
- | | ! - | | ! - | | | | | | - - | ! | - | - ! | | ! !
#include "MySerial.h" MySerial::MySerial(PinName tx,PinName rx):RawSerial(tx,rx) //constructor { fRxStartWait = 0.01; //wait getting a 1st char after interrupted fRxEachWait = 0.001; //wait getting each char } void MySerial::SetRxWait(float _fRxStartWait, float _fRxEachWait) { fRxStartWait = _fRxStartWait; //wait getting a 1st char after interrupted fRxEachWait = _fRxEachWait; //wait getting each char } int MySerial::GetString(int size, char *cWord) //by pointer { int i=0; int ichar; memset(cWord, '\0', strlen(cWord)); //initialise chars wait(fRxStartWait); while(1) { if(!readable()) { break; } ichar = getc(); if(i<size) { cWord[i] =ichar; //putc(ichar); } i++; wait(fRxEachWait); } return 0; }
- MySerial.cpp
メイン
- シリアルコマンド
ただの実験なので、<STX><ETX>などの制御コマンドは一切無しです。(汗)- 「start」で開始
- 「pxxx」(xxxは角度)で位置決め
- 「stop」で停止
です。
- 受信の割り込みと、50ms定時タイマ割り込みを受けてメインで動作及びLチカさせてみました。
- 割り込みのIRQ変数名は、シリアルが「UART_IRQn」、定時タイマが「TIMER_16_0_IRQn」でしたので、割り込み優先度や割り込み禁止を個別に管理できます。 この辺の定義は、こちらに全部書いてありますね。
- まだ試していませんが、フロー制御を入れないと9600bps以外では取りこぼしが発生します。
- ソース
volatile のつけ方などわかっていないので、まだ適当です。- main.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
- | | ! - - ! ! - | | - ! | - | | - | | - | | | - | ! - | | ! ! - | | - | ! | | | | | | | | | | - | | | - | | | ! | | - | - | | ! | - ! ! !
#include "mbed.h" #include "Servo.h" #include "MySerial.h" Servo myservo(dp18); MySerial pc(USBTX,USBRX); //instance of MySerial Class Ticker timer; DigitalOut led2(LED2); //alive check LED volatile int cntRx=0; volatile int cntRx_old=0; volatile int timeUp=0; volatile int timeUp_old=0; char cWord[6]; //receive chars or cWord[256], cWord[1024] etc.. char *pCword = cWord; //pointer for cword const char ccStart[6] = "start"; const char ccStop[5] = "stop"; const char ccMove_[2] = "p"; int readSize = 5; int doStatus; int iDeg; void atRx() { NVIC_DisableIRQ(UART_IRQn); cntRx++; } void atTimer() { //NVIC_DisableIRQ(TIMER_16_0_IRQn); timeUp++; } void readbuf() { pCword = cWord; //pointer for cword //int iRtn = pc.GetString( readSize, &cWord[0] ); //Serial received chars by pointer of cWord int iRtn = pc.GetString( readSize, cWord ); //Serial received chars byref of cWord if(strcmp(cWord, ccStart)==0) { // start doStatus=1; printf("started\n"); } else if(strcmp(cWord, ccStop)==0) { // stop doStatus=0; printf("stopped\n"); } else if(cWord[0]==ccMove_[0]) { // 1st char matches pCword++; // increment pointer to get after 2nd chars iDeg = atoi( pCword ); printf("%d\n",iDeg); } else { //no action except for start/stop printf(" no match %s\n" , cWord); } if ((doStatus == 1) && (0 <= iDeg) && (iDeg <= 180)) { wait(0.01); // waits for the servo to get there myservo.position(iDeg - 83.0); } } int main() { pc.baud(9600); //set baud rate pc.format(8, MySerial::Odd, 1);//set bits for a byte, parity bit, stop bit //pc.format(8, MySerial::None, 1);//set bits for a byte, parity bit, stop bit //pc.set_flow_control(MySerial::RTSCTS,dp26,dp25); pc.SetRxWait(0.01, 0.001); //set wait getting chars after interrupted, each char wait(0.25); //startup wait pc.attach( &atRx, MySerial::RxIrq ); //Set Interrupt by Serial receive NVIC_SetPriority(UART_IRQn, 120); timer.attach( &atTimer, 0.05 ); NVIC_SetPriority(TIMER_16_0_IRQn, 10); myservo.calibrate(/* range */ 0.00099, /* angle +/- */ 90.0); while(1) { wait(0.01); if(cntRx != cntRx_old) { readbuf(); cntRx_old = cntRx; NVIC_EnableIRQ(UART_IRQn); } if(timeUp != timeUp_old) { if( 10 <= timeUp ) { led2 = !led2; timeUp=0; } timeUp_old = timeUp; //NVIC_EnableIRQ(TIMER_16_0_IRQn); } } }
- main.cpp
いつも自社の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で通信できます。(嬉)