2022年12月28日水曜日

小ネタ



 工具メーカーのHORN。仕上げツールが相変わらずすごい。製品をアクセントに使っているのも高ポイント。



 おいおい、MCマシナリーどうしちゃったんだよ。


 今年はDMGはクリスマスコンテンツは無かったな。ヨーロッパでクリスマスコンサートをやっていたらしいけど。高付加価値化に方針を定めて、名前を広く売るような広報は絞ってる感じなのかな。

***

 ミツトヨのマイクロメーターの生産ライン


 様々なメーカーの工作機械があって、垂直多関節ロボットもたくさんのメーカーのものが設置してある。オムロン、ファナック、ナチ、三菱、等々。

***

***


 あちこちに黄色いロボットがたくさん置いてある。巨大なロボットの先端に乗った小さいロボットが可愛い。

 RadaRangeちゃんとおいてあるんだなぁ。

***

 ロボコンの解説に呼ばれた大学の先生が「ロボットが紙飛行機を飛ばすなんて見たことない」という旨の発言していたので、軽くYouTubeで検索。



 このあたりがいかにもなやつかな。双腕ロボットが紙飛行機を折って飛ばす。紙飛行機の性能は良くないけど、ティーチング次第だろう。2015年の動画。



 手術用のロボット。さすがに小さすぎるきらいはあるが。人間が操作しているので「ロボットが自動で紙飛行機を折る」というものではないけれど。2011年の動画。



 レゴで紙飛行機を折って飛ばす装置。小学生が作ったものだそうだ。2018年の動画。



 同様の装置。人の助けが必要な部分はあるけど、調整次第だろう。2013年の動画。



 レゴでなく、しっかりと作られた装置。2014年の動画。


「ロボット」と「紙飛行機」のベン図を書いて重なった部分の解説が求められていることが明確な仕事だろうに、チャチャっと検索して簡単に出てくるようなコンテンツを「見たことがない」と放言するのは、解説の仕事としては職務怠慢としか言いようがない。

*

 紙飛行機は特性が安定しづらくて、確率的な戦術を取ると数を稼ぐ作戦になるから、機構面はともかくとしても、引きで見ると全部同じような絵面になってしまう。ロボコンの題材としてはちょっと微妙な気がする。

 ルールは調べてないんだけど、紙飛行機ってどの程度の範囲まで許されているんだろう? 高いロールレートで直進性を確保していたチームがあるけど、これは明らかに揚力飛行ではないから、「揚力飛行すること」というレギュレーションはないはず。バイスやアイロンで成形しているチームもあるから、「手で折れる範囲」みたいなレギュレーションもないはず。とすると、空力を考えれば両端が先細りになった円柱状にプレス加工するのが最適なのでは?というような気がする。あとはライフリングとかを使って。線状痕をごまかしたい? 安心しろ、ペーパーパッチだ。

***

***

 鉄筋を組むロボット


 3Dデータを突っ込んだら自動で組んでくれて、ティーチングは不要だとか。鉄筋の曲げや切断もそういう機械があるだろうし、データから全自動で構造物を作れそう。材料の供給や部材の搬送みたいな雑用を人間がやる必要はあるにしても。

 3Dプリンタで建てる家とかも、エクストルーダーで繊維強化コンクリートを絞り出すだけじゃなく、鉄筋を組んだりとかそういう作業もできるようになるんだろう。鉄筋を組むのもコンクリを塗るのもCADデータから自動で処理できるし、CADデータを突っ込んだら数値シミュレーションで強度計算やって、作業の成立性を確認して、建設可能だったらそのまま建てて、みたいな作業フローが作れるかも。

 さすがに完成物を配達するような感じにはならないだろうけど、「DMM.make Home」みたいなサービスで、配線や配管も含めたデータをZIPで投げたらデータチェックして、注文すれば材料とレンタルの機材が届くから、それを組み立てて起動したら家が1件建てられる、とか。数値計算は計算量が多いから分散コンピューティングを使うんだろうな。「3D Printed Home@home」とか。

***

 STM32F303K8(Cortex-M4@64MHz)でMIL-STD-1553の受信

 ロバストな実装をしようとすると処理リソースが全く足りないので、かなり手抜きで作っている。一応それなりに動いてはいるけど、ノイズを含んだ波形とか鈍った波形だと正常に動かなさそう。まぁ、実用目的で作ってるわけじゃないし。


 ビットの75%付近を狙ってSPIでサンプリングしている。ソフトウェアでタイミングを作っているのでジッター多め。

 25%付近でサンプリングできれば正論理で受信できるんだけど、処理速度が足りない。1回XORすれば済むので、負論理でサンプリングしている。

 SPIは9bitモードに設定し、2バイトを受信して18bitをサンプリング。Syncの1bit、データの16bit、パリティの1bitを記録できる。Syncを見ればCommand/StatusとDataを切り分けられるし、17bitのpopcountの最下位ビットを見ればパリティチェックができる。

 2バイトを受け取ったら直ちにエッジ検出を開始して、エッジがあれば次のワードを受信する。エッジ検出がタイムアウトしたら転送終了と判断してUARTにダンプ。


 Arduinoからランダムにコマンドをばら撒いて、受信したコマンドに応じてレスポンス。とりあえずBC to RTとRT to BCだけ。アドレスとカウントを乱数で、カウントに応じてデータワードも。

 Arduinoから出した1553とSTM32から出した1553は、ダイオードでORして適当な抵抗でプルダウン。それをSTM32のサンプリングに戻す。

 BC toを受信したらステータスを返して、RT toを受信したらステータスとデータを返す。SSが下がっているのが受信処理中。調整をしていないので、パリティビットの後ろからタイムアウトまで2.6usくらいある(正常時には1.5usでエッジだから、あと0.5usくらい短くていい)。そこから分岐をかけて、レスポンスを生成して、最速で14usくらいでステータスを返せる。仕様としては4-12usの範囲だから、仕様範囲外。RT to BCだと追加の変調があるのでさらに遅れる。レスポンスを返してからUARTにデバッグ用の出力を行って、次のコマンド待ちに戻る。


 ダイオードORの部分でプロービング。Arduinoからは5Vで出て、STMからは3.3Vで出ている。STMは5Vトレラントなピンでサンプリング。BC to RTのデータワードの末端からステータスの立ち上がりまでは14.6usくらい。

 オシロのパルス幅トリガ、例えば1.45us以上1.55us以下のパルスにトリガできるけど、パルス後端でトリガがかかるのでカーソル位置がパルス幅分ズレる。1553はSyncのエッジでタイミングを規定しているはずなので、結果的にはそれが正しい数値になるはずなんだけど。1.5usパルスはデータワードでも出てくるので、うまくコマンドにトリガがかからないこともある。


 Arduinoからトリガ信号出せばいいんじゃね?ということに思い至り、しかしグランドスプリングがないので、BNCジャックにスズメッキ線をはんだ付けして、BNCアダプタ経由でプロービング。たかだか1.5usのデジタルパルスのトリガ入力にそこまでしなくても……

 手前の青いやつが秋月のArduino Pro Mini互換ボード、奥の緑(マステ貼ってある)がSTM32F303K8。リンギングとか気にするならそもそもブレッドボードなんか使うなよ。。。


 データに対するクロックみたいにジッタを含む信号を見る場合、オシロの残像は統計的に傾向が見えてくるので便利だけど、いかんせんチャンネルの少なさはどうにもならない。ロジアナは電圧を含めた情報は得られないし、統計的な情報も(少なくともLAP-Cでは)簡単には見えないけど、デバッグ用の出力を含めた多チャンネルを一気に見れるので便利。まぁ、ロジアナが入ったオシロ使えば解決する問題ではあるんだけど。


 1553のデコーダを作っていると、コマンドとステータスの見分けがつかないのが地味に不便。そりゃ確かにサブアドレスを1bit削ってCmd/Statusの識別に使いたくなるよね、という納得が得られる。


 色々書き換えつつ、とりあえずレスポンスを割り込みの中で返すように変更。メインループの中でポーリングしなくていいので重い処理も気兼ねなく行える。が、BC to RTのレスポンスで15us弱くらいまでしか短くできない。もう少し削れるところはあるけど、かなり厳しい。パリティチェックは行っていないけど、これはワード毎に受信の合間に行えるので、あまり大きな負荷にはならないはず。レスポンスも受信できるようにしたので、ループバックのセルフテストができる。


 RT to BCは追加でメモリアクセスがあるのでさらに遅く、30us弱くらい。データハンドリングを変えれば20us前後くらいまでは落とせると思うけど、仕様範囲外であることに違いはない。


 70年代の半導体でレスポンス数マイクロ秒とかどうやって実現してたんだろう。汎用ロジックICとかを組み合わせて専用回路を作っていたんだろうか?

*

 STM32、というかCortex-M、チューニングが難しい。ビット操作が予想以上に重い。ビットバンドを使おうとしても、今度はアドレスの計算が増えるので結局早くならない。

 微妙なタイミング(0.1usオーダー)の調整も、Cortex-MではNOP命令は実行時に削除される場合があるから、1クロックだけ遅延させたいとか3クロックだけ遅延させたいとか、そういう調整ができない。アライメント周りの都合だと思うんだけど、機械語レベルの話なので、少し離れた場所を書き換えても後々まで影響が続いたりとか。インラインアセンブラでadd r0, #0を並べれば消されることはないだろうけど、それでもやっぱり安定しない。プリフェッチとか色々ついてるのでそのあたりとの相性もあるのかも。16MHzとか20MHzの8bitマイコンじゃないんだから、そもそもNOPでタイミングを調整するみたいな使い方は想定してないだろうし。

 ST曰く「NOPは挙動が不安定だからHAL_Delay()使ってね」だそうだけど、そんなもの使ってどうやって調整しろと。。。

 PIC使ってた時もループの中にNOP入れてた記憶があるけど、そもそもデクリメントでクロック数消費するんだからカウンタを使った遅延には本来NOPって不要なんじゃね?という気が。なんでNOP入れるんだろう?

*

 http://www.mil-std-1553.jp/download/Holt/AN-6138(JP).pdf

 1553コントローラチップの評価ボードの日本語訳。最後に回路図とかも。

 48QFPでプロセッサとはSPI(max40MHz)で接続。このボードはCortex-M3で中継してPCと接続。3.3V単電源で使えるのかな? トランスの中間をGNDに落としてあるから両電源が必要そうだけど、うまいこと処理してるのかも。せいぜい2Mbaudくらいの信号しか通さないのにトランス周りが等長配線みたいになっててすごい。アプリケーションノートの図だと不等長でも問題なさそうだけど。

 1チップでA/B両系統が接続できるけど、冗長系の切り替えはチップ内で行われるんだろうか? 同時にA/B両系統に同じ信号を出して、A/Bから同じ信号が来れば片方だけ使う、片方からしか来なければ反対側を故障として通知する、とか。宇宙用だとこの手のチップでは冗長系としては認識できず、単一故障点として扱われるはずなので、宇宙用の1553だともう少し面倒な処理になりそう。そのあたりが1553が嫌われる所以かも? SpWならLVDSだからFPGAに直結できる。このチップもFPGAに接続できるとは言ってるけど、宇宙用の冗長構成をFPGAで組むのは手間が大きそう。


 Holt HI-6138/37/36/35 概要 | MIL-STD-1553.jp

 チップの説明とか。レジスタの設定例とかいろいろ。


 MBX1553 Multiplex Bus Switch | Curtiss-Wright Defense Solutions

 1553のバススイッチ。ラックマウント型で、前面に16ポート、背面に16ポートがあって、前面のポートを背面の任意のポートに接続できる。接続状況は前面のLCDに表示されるけど、この図間違ってる気がする(89じゃなくて9Aのような気がする)。

 RS232でコマンド打って設定できるので、いろいろな機器を組み合わせてテストするときに自動化できるから楽だよ、と。


 MIL-STD-1553 bus switches - 1553 switches

 もっとシンプルなやつ。リレーに電気突っ込んで、切断したり、切り替えたり。切り替え型は片方にターミネータをつければそこでバスを終端できる。ターミネータ無しで切断すれば開放端にすることもできる。例えば兵装類をリリースしたときは開放端となるから、それを再現できる。

*

***

 Teledyneレクロイの低価格帯のオシロ、Siglentのオシロとデザインが全く同じなんだけど、どういう関係性なんだろう?



 これにいたってはスクリーンショットすら同じ。


 ウチのヤツもLeCroyと互換性があるなら、予備のプローブはLeCのやつ買えばいいんか?と思って探してみたら、プローブ1本2.6万円だって。プローブ2本買ったらSigのオシロ1台買えんぞ。。。「予備のプローブが欲しい? Amazonでプローブを2本買ったら無料でオシロ本体をひとつプレゼント!!」

***

 小ネタ中の小ネタ


 ロケット鉛筆、「とんがりコーンみたいなやつ」。


 NHKの「まなぶんかい!」という番組、初回放送は2月で、洗濯機や自動販売機を分解して中身を見せるような内容。ジェームズ・メイがディスカバリーチャンネルでやってた「組立再生!リアセンブラー」とほとんど真逆のベクトルの番組だけど、かなり面白い。こういう方向性の番組好き。週1で5年くらい放送してほしい。


 摩擦攪拌接合、個人YouTuberとかならともかく、大企業が「革新的な技術」みたいな紹介するのは違和感がある。30年も前の技術だぞ。


 なんか、当ブログで話題に出した最近の宇宙機、尽く失敗するジンクスがあるな。。。OMOTENASHIとか、RAISE3とか、Vega-C#2とか。


 レーザーシートを使ったハイスピード撮影、フルカラーのハイスピードカメラと3色のレーザーを使って奥行方向の情報を残して撮影することってできないのかな? あるいはシート3枚を直交して斜めから撮影するとか。たいてい赤とか緑の1色で撮影されている気がする。


 「自然分解プラ」根拠なし 販売10社に措置命令―消費者庁:時事ドットコム

 劣化は早いのに分解はしないとは……

 加速試験は適切な条件設定をやりなさいねという好例。特に生物みたいな非線形で環境依存が大きいものを扱う場合。


 ジャック・ライアンのシーズン3

 https://www.amazon.co.jp/dp/B0B8KQ6Y9X/

 過去シーズンに比べて名前のあるキャラクターの死亡率が極めて低くなっているので精神的に見るのが楽。最終盤に若干The Last Shipっぽさがあるけど、アレまではひどくない。まぁ、ツッコミどころは多いけど。防空システムの再装填に4分だって? 一体いつの時代設定だ! 米海軍のイージス艦がそんなに弱いわけ無いだろ!!

 システムが好きな人間としては、イージス艦とかが普通に活躍するようなアクション作品が見たいけど、あんまり見かけない気がする。たいていイージス艦とかF-22みたいに強めの装備品はやられ役で出てくることが多い。映画『バトルシップ』はあまり変な描写はされていないけど、そもそもミサイル類をほとんど使ってないからなぁ。


 ForgeFPGAは趣味の世界でも使えそうになったのか?(2/2) : 散歩好きエンジニア

 マイコンの前段に置く小さいFPGAみたいなデバイスとしてちょっと期待してたんだけど。

 GreenPAKも面白そうだけど、マルツあたりで買えるのかな?

「時代はナノメートルだ! 単価の低いグルーロジックなんて作ってられるか!!」とか言って投げ出さなきゃいいけど。TMSCで製造しているらしいし、とりあえず採算が取れている間は発注続けるだろうけども。……取れてるよね? 物としては面白いし、電子工作とかの部分にも売り込めばいいのに。ルネサスって電子工作向けのプラットフォームとか持ってなかったっけ?


 ArduinoのFPGAボード、結構な値段するんだな。純正UNOの定価からするとそう割高でもないのかもしれないけど。技適が通ってないせいか、日本語記事があんまり出てこない。値段の問題かもしれないけど。

 MiniPCIeのエッジコネクタが付いてるとか、そりゃ値段も高そうだ。今どきならM.2のほうが使いやすそうだけど、時代かなぁ。当時もM.2はだいぶ普及していそうだけど。PCI ExprsesとMini PCI Expressの変換ボードを使えばPC用の小さいアクセラレータとしてArduino MKR Vidor 4000を使えたりするんだろうか?


 元々別のやつを作ろうと思ってSTMの開発環境を作ったので、そっちをやりたいんだけど、1553が意外とちゃんと動いてしまっているので、こっちももう少しやりたい。さすがに1553専用のトランスとかコネクタを手に入れるのは大変としても、例えばイーサネット用のパルストランスを流用すればトランス結合で遊ぶ程度のことはできるだろうから、機会があったらイーサ用のトランスやコネクタも買ってみようかな、と思ったり。とはいえ、最近は秋月で買い物することも無いからなぁ。

 1553用のパルストランスとかコネクタ類、DigiKeyに在庫があるけど、各々1個5千円程度からという感じ。ノーブランドのBNCコネクタとかイーサ用のパルストランスに比べれば非常に高価だけど、とはいえSpaceWireのコネクタが1個2万円とかの値札がついているところを見ると、1553もあながち高コストとは言えないんじゃないか、という気がしてくる。/* SpWで使ってるコネクタってもう少し安かった印象があるんだけど、2倍近く値上がりしてる? */


0 件のコメント:

コメントを投稿