🗐 電装工芸日記 - 舞台照明機器の製作とか -

今年は開発案件を進めたい

or 管理画面へ

2025年の投稿[140件](6ページ目)

2025年6月 この範囲を時系列順で読む この範囲をファイルに出力する

Icon of admin
 オレメモです。
 「Ether over COAX」には「MoCA」と呼ばれる規格もあります。最大ケーブル長は短いですが、n対n接続(同一経路上に複数を設置)が可能です。EoCは1対1に限ります。
 大きな違いはEoCが75Ω同軸ケーブルを用いるの対し、MoCAは50Ω同軸ケーブルを用います。どちらも既設の同軸ケーブルを活用してLANを構成することが目的ですが、片や映像ケーブル、片やアンテナケーブルです。
 EoCはビルや大規模施設の監視カメラを更新するために作られたようです。今となってはwebカメラが便利で安価ですが、ケーブルを換える費用の方が高くつくので、なんなら既にある同軸ケーブルにEthernetを通してしまえって発想みたいです。
 MoCAは、特にアメリカらしいですが、部屋ごとにテレビを置くことが当たり前ですとどの部屋にもアンテナ線が来ています。もちろんテレビ信号と同居出来ることが条件とはなりますが、これも既にある同軸ケーブルを利用してしまえってことみたいです。
 そもそも、Ethernetは無線通信でコンピュータ同士を繋げることから始まっているので10Base2といった同軸ケーブルを使う規格もあったワケです。これをアップグレードしたと思えば自然です。変調帯域が違えば混合使用も普通のことです。

 EoCは100Mbps、MoCAは400Mbpsと違いますが、数ユニバースの Art-Net を通すなら100Mbpsあれば十分なので転送速度の最大値は関係ないかなと。grandMA2/3 の能力を最大限利用するなら黙って光Etherを使って10Gbpsくらいの帯域確保でしょうけどね。
 ひょっとするとMoCAの方がいいのかな?って感じもするのですが、EoCの方が製品単価が控えめで動作が安定している感じがあります。

#[Art-Net]
Icon of admin
 PoE の Hub で「LINOVISION 同軸LANコンバーター」が動きました。
 これなら「コンソール・パック」や「ステージ・パック」を作って良さそうです。
 仕様を決めていきましょう。

#[Art-Net]
Icon of admin
 EoC を通しても動く Art-Net-node が安価に手に入るなら「コンソール・パック」を作ろうかな。UPS(無停電電源装置)、Art-Net-node(レガシーDMXの入力のため)、EoCコンバーター、Ethernet-Hub(PoE)、インターカム・パワーサプライなど卓周りで使いそうなモノを一つにまとめるのです。2Uか3Uのラックケースに入るかな。
 同じ要領で「ステージ・パック」もあるといいですね。これにはインターカム・パワーサプライではなくDMXスプリッターを入れましょう。
 箱作りに手間はかかりますが、既製品を固定するだけですので比較的簡単です。

#器具の製作
Icon of admin
 中華電機の Art-Net node を EoC で接続してみました。
 EoC とは「Ethernet over COAX」の略で、Ethernet を同軸ケーブルに通す手法です。75Ωの映像ケーブルに通せます。
 卓 → <EtherCable> → EoC → <75Ω同軸ケーブル> → EoC → <EtherCable> → node です。
 EoC の機器は「LINOVISION 同軸LANコンバーター」を使っています。
20250611133626-admin.jpg
 電源供給は PoEです。Receiver に PoE で電源を供給すると Transmitter 側の電源は同軸ケーブルで供給されます。
 Receiver と Transmitter の違いはどちらが電源の入力かってだけで Ethernet はごく普通に双方向です。
 今のところは PoEインジェクターを使っていますが、PoE の Ethernet-Hub も試してみるつもりです。

#[Art-Net]
Icon of admin
 研究用に中華電機から Art-Net の node を買ってみました。
20250611102337-admin.jpg
 タイムラグとかは実機を繋げて CUE として動かさないとわかりませんが、倉庫でのテストでは IN も OUT も極々当たり前に動きます。設定はPCからになりますが、設定アプリも素直で使いやすい。残念ながら5P仕様はありませんが、こんなんが15,000円くらいで買えてしまうのですから驚きです。同じメーカーと思わしき2ユニバースの物もあります。これは6,000円程度です。node を自作することも考えていますが、価格からすると買った方がいいですね。

 ただ、中華製のこの手にはアイソレーターが入っていません。自作のスプリッター基板と共にパッケージすればいいのかな?

追記
 5pin 仕様もありました。
 DoctorMX で見ますと綺麗なデータが出ています。

#[Art-Net]
Icon of admin
 C言語のポインタには面白い機能(使い方?)がありました。
 関数の呼び出しをポインタ化するのです。なんのこっちゃ?って話ですねぇ~。
 ソースコードの大半はそのままに、条件分岐で関数を差し替えるイメージです。オブジェクト指向の一歩手前?
 もちろん、構造体を含む変数もポインタを介して差し替えられます。
 DMXの場合、受信中のスタックから読み出すことは避けなければなりません。パケットの中身に不整合が起こるからです。例えばアドレス100までは最新の受信内容、101以降は1フレーム前の受信内容や全てゼロになるのです。2スロット構成のアトリビュートがアドレス100と101にまたがったらよろしくないことが起こります。リトルエンディアンだったら目も当てられません。
 この対策は2つのスタックを交代しながら使います。片方は受信に、1フレーム前のデータを持ったもう片方を出力処理に使い、条件が整えば役割を交代するのです。この場合どちらをどちらに使うかをポインタで指定出来れば全体の処理はスマートになります。ピンと来る方が少ないのはわかっていますが、ソースコードを書く上ではとても合理的な方法です。今の常識からしたら万分の一の処理能力のハードウェアしかなかった時代にC言語をデザインした人は本当の天才だと思います。勉強すればするほど「天才」って言葉が身に沁みます。自分はその成果に甘えるだけで感謝々々です。

 C言語を学ぶ上でポインタは難解な要素の筆頭ですが、自分の様にアタマの半分がPICマイコンのアセンブラで占められている者には案外すんなりと理解出来ました。メモリのアドレスを直接扱う方法だからです。当初は高級言語でメモリのアドレスを直接扱うなんてイメージはありませんでしたので躓きましたが、C言語が値渡ししか出来ない(参照渡しが出来ない)ことも含めるとポインタは合理的であり、C言語は高級言語ではなく汎用化を目指したアセンブラ言語と思えばイイらしいと思った次第。正しくはなくても私にはこの理解が自然でした。

 自分は PC8001(PC6001)-BASIC → Z80アセンブラ(当時小学生、挫折しました) → (20年空いて) → PICアセンブラ → Python → C言語(今) と進んできました。小学生の時分に論理演算、16進数、2進数を本能に焼き付け、成果は出せずともZ80アセンブラに挑んだことが今に活きているようです。小学生当時、戦前産まれの父母は数百円の漫画本は買ってくれませんでしたが高価な技術書やその筋の雑誌(月刊マイコンやBASICマガジンなど)は買ってくれました。100歳まであと数年のカウントダウンなのに林業を生業とし登山やスキーを楽しむ父と米寿間近で父の3倍は元気な母に絶大な感謝をする今日この頃。
 自分の今の最大の不安は三途の川の向こう岸で父母をお迎えすることです。あと100年くらいは部下や後輩に迷惑をかけずに現役をやってやろうと思っていますけど(笑

#C言語 #雑記
Icon of admin
 現場ですが、簡単なひな壇を組むだけの現地道具なので終演までヒマです。
 ArtNetPatch の ap_transmitter の構造を構造体配列を元に整理したのですが、割り切って構成したら案外軽い処理になりました。メモリの節約など考えず、条件分岐や計算を出来るだけ減らし繰り返しをヒトまとめにする方針だからでしょうか。
 実際に組んで実行時間を計測しなければなりませんが、パッチ処理の後にもディレイやプロファイルカーブの処理を入れられそうな予感がします。

 receive(受信)、bind(入力ユニバースを内部Bus(ユニバース)にパッチ、ここで数値をマージしてHTPミキサーとします)、pre-delay、pre-profile-curve、patch、post-delay、post-profile-curve、transmit といった流れで考えています。

 ついてはモジュール構成を少し変えます。
 ap_transmitter の中の数値操作と Art-net の出力を分割します。
 fps はともかく、すべてのユニバースを連続して送るのは避けた方がいいかなと思うので、ユニバース毎にインターバルを持たせるためです。

1)アプリの起動部とし、共有物を設定して以下のモジュールを呼ぶ「ap_main」
2)画面表示やユーザー操作を司る「ap_console」
3)Art-Netを受信する「ap_receiver」
4)受信値や設定値から出力値をまとめる「ap_effect」
5)Art-Net を出力する「ap_transmitter」
6)データのタイムアウト管理をする「ap_timeout」

 今後はタイムラグを減らす工夫を考えてみましょう。
 出力の目標は 30fps 以上、出来れば 36fps ですが、1/36秒以内に処理を一巡出来るなら遅れても1フレームとなります。無理ならスレッド的なアプローチで考えて出来るだけ遅れを少なくしましょう。
 何にしても、試作をして処理時間と処理負荷の計測が必要です。
 こんな複雑なシステムは10回くらい書き直すつもりで試すしかありません。素人の私が結果を完全に予測するなんで無理ですもん。

#[Art-Net] #器具の製作 #C言語
Icon of admin
 子プロセスを使う場合は親プロセスが落ちたらこれらも落とさないといけません。ゾンビとして残ってしまうからです。
 一般的にはメインから「終わりにしなさい」って指示を受けて落としますが、開発途中ではそうもいかないことがあります。
 ならば、「続けなさい」って指令が無ければタイムアウトすることにしましょう。親の存在確認をする方法もありますが、この方法なら管理が楽かも。

#C言語
Icon of admin
 ArtNetPatch の構成イメージが見えてきました。
 この後は「ap_transmitter」の具体化でしょうか。これが ArtNetPatch の核であり一番重い処理です。
 モジュール間を繋ぐ構造体配列が見えればその他のモジュールを作ることは可能ですし、画面表示とか作って手ごたえを感じたいってのはありますが、最終的にデータを取りまとめる「ap_transmitter」が見えませんと構造体配列を決めることが出来ません。

#[Art-Net] #器具の製作
Icon of admin
 と、なると、って書き出しは私のアタマの中の言葉のままですが、プロセスかスレッドかはともかく、処理のスジを次の様に分けようかと。

1)アプリの起動部で、共有物を設定して以下のモジュールを呼ぶ「ap_main」
2)画面表示やユーザー操作を司る「ap_console」
3)Art-Netを受信する「ap_receiver」
4)受信値や設定値から出力値まとめ、Art-Net を出力する「ap_transmitter」
5)データのタイムアウト管理をする「ap_timeout」

 大きなデータは共有メモリ「mmap」と「semaphore」でやりとりし、指示や返答は「queue」で繋げます。自分ナリに得手不得手を検討した結果です。

 タイムアウトを別枠で勝手にやらせる発想が出たら役割分担が楽になりました。
 これが出来るのも共有メモリとセマフォのオカゲです。

 まだまだ決定ではありませんが、タイミングがラフなところはOS に任せてしまえ!って思えたら気が楽になったかも。
 メモリ管理も処理タイミングの管理も OS に頼った方が間違いないのです。
 この役割分担をしたら RaspberryPi でも処理しきれそうな気になってきたかも。

追記
 成り行き任せで後回しにしても構わない処理はプロセスやスレッドを別にして区切りのいいところに短い「sleep」を入れればいい。こうすると OS のジャッジで急ぎと思われるプロセスやスレッドを優先的に処理をしてくれるようです。
 厳密なタイミング管理が必要なら「RTOS」ベースのカーネルを使ってガチガチに管理するのが良いと思いますが、そこまででない処理のため導入の敷居が高い RTOS を使うのはどうかと。

#[Art-Net] #器具の製作

■思ってみた

まだまだ夏だなと思っていたのに、所属会社を囲む田んぼは稲刈りが始まりました。
季節は秋なんですかねぇ~。

編集

■全文検索:

複合検索窓に切り替える

■複合検索:

  • 投稿者名:
  • 投稿年月:
  • #タグ:
  • カテゴリ:
  • 出力順序:

■日付検索:

■カレンダー:

2025年6月
1234567
891011121314
15161718192021
22232425262728
2930

■カテゴリ:

■最近の投稿:

最終更新日時:
2025年9月5日(金) 19時27分13秒