Skip to content

mkt-kuno/DigitShowBasic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

81 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DigitShowBasic (OpenSource Edition, for CONTEC)

Github License PRs Welcome

image

簡単な説明

東京大学の地盤研で使用されている、三軸試験機制御ソフトウェアのオープンソース版です。
ContecのAD/DAボードで動作させることを前提としています。
ModbusRTUのAD/DAはDigitShowBasicMまで。
このリポジトリのライセンスは GPLv3 となっているため、注意してください。

動作環境

  • Windows 11
    x64のみ
  • Visual Studio 2022 Community版でOK, MFCライブラリ必須
  • CONTEC API-AIO(WDM) Ver.9.20 適宜、CAIO.H, CAIO.LIBを置き換えて使用するDLLバージョン一致させれば最新版でも可。
  • CPU: x64 Intel/AMD問わず
    Passmark性能(マルチスレッド) 最低5000 推奨8000以上
  • RAM: 最低4GB 推奨8GB以上
    他に動かすアプリケーション次第。MS Officeは重い。
  • GPU: 依存なし、iGPU/dGPU/APU いずれも可
  • 液晶: 最低XGA 推奨FHD以上
    縦長画面だと表示が見切れると思います。
  • 記憶媒体: 最低HDD 推奨SSD
    容量はビルドPCと動作PCが同じなら最低128GB 推奨256GB

注意点

  • 本ソフトウェアの動作について、一切の保証を行いません。
  • 本ソフトウェアの使用により発生したいかなる損害についても、一切の責任を負いません。
  • 本ソフトウェアを使用する場合は、自己責任で行ってください。
  • 本ソフトウェアの動作または初期設定についてのサポートは行いません。
  • 本ソフトウェアの改変、再配布はGPLv3の条件に従って行ってください。

ライセンスについて

一部の大学・企業・研究所では秘伝のタレ状態のDigitShowBasicをお持ちだと思います。
当時(2010年頃)配布されたDigitShowBasicのソースコードは何もライセンスが決められていませんでした。
そのため、お持ちの古いDigitShowBasicは高確率でライセンスフリーのハズです。
ですが、このリポジトリはGPLv3です。このコードを安易に参考・参照・引用した場合GPLv3に感染するので、
GPLv3とは何か知ったうえで、覚悟して使い始めてください。
ざっくりといえば、改変部分がある場合、ソースコードを公開する必要があります。

バグ報告やプルリクエストについて

デバッガ、コーダ、メンテナ、などなどが複数人、現れた場合のみ、管理・サポートを行おうと思います。
「どう使うの?」「ボードが認識しない」「設定方法を教えてほしい」などの初歩的な質問は避けてください。無視します。
「うちのコードとかなり違う」「そもそも動作しないし落ちる」などの場合は、
AI協業でリファクタリングする前のlegacy版で試してみて下さい。
「初期設定や困った部分を文章化したので載せてほしい」「AIOボードの初期化を自動にしたコードをマージしてほしい」など、
貢献する意思のある、オープンソースの理念に沿った要求は大歓迎します。
「根幹設計から新しいの作りたい」というやる気とコーディング能力のある方は、
ぜひこちら、もしくは東大地盤研までご連絡を。

リポジトリの運用方針について

  • 基本的に新機能の追加は行いません。プルリクがあればコードレビューはします。
  • AIによるバイブコーディングを禁止しませんが、推奨もしません。
  • Pull Requestを送る場合は、簡単で良いので動作確認を行い、変更点を記載してください。
  • バグなどのIssueを送る場合は、必ず考えつく限り詳細な、問題を再現するのに必要な情報を提供してください。
  • main/developブランチが荒れない事が第一なので、差分が多くなければfeature/****などに独自のforkコードを置いてOKです。
  • Git Worktreeに必ずしも従う必要はありません。
  • commitは何となく変更点が分かればいいです。コメントの書き方も自由で良いです。日本語でもOKです。
  • 無茶な要求が続くようであれば公開をやめ、コードを放棄します。libxml2のように。

技術的特記事項

ADC 全16チャンネル直接取得

従来、クロストーク対策として奇数チャンネルをGNDに落とし、偶数チャンネル16本のみ取得する 32チャンネルモード(Channels/2 間引き)を採用していた。 前段の2段CRアナログフィルタ(100kΩ+0.1µF、10kΩ+1µF)撤去に伴い、本方式を廃止。 AD16-16ボードの16チャンネルすべてを直接取得する。

デジタルフィルタ(20Hz-B 設計)

アナログフィルタの代替として、カスケードMA(移動平均)フィルタを実装。

項目
構成 MA(5) × MA(6) カスケード接続(スライディング窓)
サンプリングレート 300 sps/ch(ScanClock = floor(208.33) = 208 µs/ch、16ch)
50Hz 減衰 完全零点(∞ dB) ※ MA(6) のノッチ周波数 = 300/6
60Hz 減衰 完全零点(∞ dB) ※ MA(5) のノッチ周波数 = 300/5
−3 dB 周波数 約 18 Hz
グループ遅延 (5−1 + 6−1) / (2 × 300) = 15 ms
演算量 O(1) / サンプル(乗算なし)
実装場所 DigitShowBasicDoc.cpp AD_INPUT()

特性の根拠: 矩形窓 MA(N) の周波数応答はsinc型であり、ノッチ(完全零点)は k × Fs/N [Hz] に現れる。 MA(5) では 60, 120, 180…Hz、MA(6) では 50, 100, 150…Hz にノッチが配置される。 カスケード接続により両ノッチが合成され、AC電源ノイズ(50/60 Hz)を完全に除去する。

毎スキャン取得後に即座にフィルタ値が更新されるため、上位アプリは任意のタイミングで ai_raw[] を参照することで最新のフィルタ済みデータを得られる。

ScanClock の丸め処理: ScanClock = 1,000,000 / (300 × 16) = 208.33… µs/ch を floorf()切り捨て(208 µs) する。 短い方向(高周波側)に丸めることで、ボードの内部クロックが目標周期を超えず初期化エラーを防ぐ。

Contecボードのデバイス名

ADボードのデバイス名とAIO000,DAボードのデバイス名AIO001に固定しています。
デバイスマネージャで確認して、もし異なっている場合は、デバイス名を変更してください。
変更できない場合は、非表示のデバイスを表示するの、該当デバイス名を占有したAIOボードが見つかるはずです。

About

オープンソース版三軸試験機制御ソフトウェア

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors