問題タブ [cnc]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
arrays - Convert.ChangeType() 間違った値を返します
CNC ファイルを解析するクラスがありますが、ファイルの各行の末尾の「単語」に問題があります。
私のコードは、最後の単語に到達するまで、すべての先頭の「単語」を解析します。これは、「Z」値またはその他の Double 型の値を解析するときに最も顕著です。「X」および「Y」値と同じように数値を正常に解析できることに気付くまで十分にデバッグしましたが、それを double に正常に変換していないようです。行方不明のキャラクターなどに問題はありますか?
これが私のコードです:
GCode の例を次に示します。
上記のサンプル CNC コードに関しては、X コマンドと Y コマンドの後に Z コマンドが正しく解析されていることがわかります。
編集
コメントごとに、ここに _commands()
_commands = SortedList(Of Integer, Command)
コマンドの内訳があります コマンドは、次のプロパティを持つクラスです。
- Enum ScopeTypeとしてのスコープ
- 文字列としての名前
- 文字列としてのキー
- タイプとしてのデータ型
- オブジェクトとしてのDataValue
編集:解決策!
何が間違っていたのかを理解しました。クラスの構築を構成する配列には、基本的に、クラスからオブジェクトの「登録済み」配列への参照が渡されていましたCommand
。したがって、各行の「単語」から値を解析するたびDataValue
に、Command
オブジェクトの を上書きしていました。
解決策は、すべての解析で新しい「コマンド」オブジェクトを宣言し、それを適切な配列に追加することでした。
ここに私の短い手があります:
python - 古いシステムから新しいシステムへの CNC ドリル加工の変換 (Python を使用)
私はこの種のファイル(一部)を持っています:
...
これを新しいプログラミング システムに変換したいと考えています。私がやりたいことは、最初にヘッダー (H) を読み取り、DX、DY、DZ の値をそれぞれ名前付きの変数に入れることです。私はこれを行うことができましたが、XBO行を処理するようになったとき(ドリル、そこからX、Y、Z、V、R、x、y、D、N、F、および;が必要です。別の変数でも)私のコードは非常に醜く見え始めました。
だから私は最初からやり直して、これを思いついた:
これは、別々のコマンド H と XBO を正しく識別しますが、私はちょっと立ち往生しています。同じ方法を使用して、H および XBO ループ内のループからすべての変数を抽出できますが、これは適切なコーディングとは思えません...
誰か私を右足に乗せてもらえますか? 私はコーディングが好きなので、完全な解決策は望んでいませんが (私の主な仕事は CNC マシンのコーディングです。これは Python に比べて今では簡単に思えます)、どのアプローチが最適かを知りたいです...
c - C FANUC G コードの数値出力を最適化 (末尾のゼロを切り捨て、小数点以下を残す)
数値に小数点を残して数値を出力するフォーマット指定子がCにありますが、小数点の後に末尾のゼロが切り捨てられますか?
計算される値は浮動小数点数であり、%.4g を使用すると目的の出力に近くなりますが、数値から小数点を外すと問題が発生します。
次の数値形式は、マシン コントロールが RS232 ポートを介して読み取るのに適しています。 ( 10.0001 , 0.111 , .22 , 0. たとえば、 "G00 X4" の場合、マシンは文字列 "G00 X00.0004" を保存します。マシンは、小数点のない入力文字を、適切に形成された入力の最下位桁として解釈します。
単純に %.4f 変換を使用することもできますが、目的の一部は末尾のゼロを削除することです。このマシンのメモリは非常に限られており、すべての文字が重要です。もう 1 つのオプションは、意図した出力数値を生成し、それらを文字に変換してから、各数値の末尾のゼロをテストし、必要に応じて切り捨てることです。もっとエレガントなものを期待していましたが、変換文字には何も見つかりません。
前もって感謝します。
geometry - 円弧上の点y位置を計算するには? 半径がある場合、円弧の始点と終点
CNCでプログラムを書こうとしています。基本的に、 x, y 、半径から始まる円弧があり、 x, y で終了します。また、円弧の方向を時計回りまたは cc も知っています。したがって、特定の x 位置での円弧の y の値を見つける必要があります。それを行う最善の方法は何ですか?このウェブサイトhere で同様の問題を見つけました。しかし、角度aを取得する方法がわかりません。
bash - 独自の再帰スクリプトのデバッグ
したがって、これらの質問をこことここで読んだ後、自分の状況を説明せずにこの質問をどのように行いたいかについて、他に考えがありません。
注: 私はフリー/オープン ソフトウェアのバックグラウンドを持っているため、プロプライエタリ プラットフォーム全般についてはまったくの初心者です。
基本的に、私は、マクロを含むスクリプトを使用して、UI 側のプログラムとモーション コントローラー側のファームウェアとの間で通信する、社内独自のモーション コントロール プラットフォーム用のプログラムを使用しています。関連するすべてのソフトウェアの文書化と開発は姉妹会社によって処理されますが、文書化が不足している/完全でない場合は、私たちが行っています彼らからサポートを受けていますが、彼らは細く引き伸ばされており、独自の製品を持っており、2,700マイル離れており、私たちのために社内でオンコールすることはできません.私はソースを持っていません/メインアプリケーションもファームウェアも、そして本当にそれを殺すために、私たちの最後の、唯一の本物のプログラマーが残りました。私たちは、このスクリプトと、ソフトウェアでうまく機能するこのスクリプトに依存する新製品の握りに一人です。スクリプトには、深刻で定期的なバグ チェック ソリューションが必要です。このモーションコントローラーシステムを使用する構成済みのマシンごとに。
そこで、このスクリプトのデバッグを開始します。それがここで起こっていることです。
モックアップの bash 実装を作成しようとしましたが、再帰の程度、.ini ファイルから取り込まれた配列、システム定義のコマンド セット、およびファームウェアでのスクリプトの解析。この bash デバッグの実装は困難であり、重要なものをハッキングせずに完全に実行できるかどうかはわかりません。
ANTLR などの他のオプションも検討しましたが、これも少し頭を悩ませていますが、うまくいく可能性があります。
現在、コントローラーはある種の静的 IPv4 クロスオーバー イーサネット セットアップ (Telnet?) を介して通信しますが、「sout」コマンドから解析されるフォーマットされた文字列を出力する RS-232 シリアルを備えています。事前定義されたシステム コマンドと変数を使用して書式設定された文字列から取得できる限り多くを出力するようにスクリプトを変更することが私の意図でしたが、全体像が得られないのではないかと心配しています。
スクリプト自体は、25 サブルーチンの深さでネストできるグローバル、システム、およびローカル変数と関数を定義します (ハードウェアの制限があるモーション コントローラー側にあるため)。本当の落とし穴は、UI やその他の関数から呼び出されるときに、スクリプトの再帰的な側がこれらの関数に出入りする場所にあるようです。飛び出すことは何もありませんが、詳細なドキュメントがなければ、私は多くのことしか見ることができず、姉妹会社に質問をする別のエンジニアと一緒にこれらすべてを学んでいます.
自分の努力をどのように進めるべきかについて、誰かアドバイスをもらえますか? 質問するのはおそらくたくさんあると思いますが、私はちょっとわだち掘れで立ち往生しており、自分のスキルとコーヒーが許すよりも多くの認知リソースが必要です.
お時間をいただきありがとうございます。
c# - クラスコンストラクターに引数を渡すc#twincat
最善の方法は何だろうと思います。
クラスをクラス コンストラクターに渡す必要がある場合、クラス内で変数を使用する必要があるのはなぜですか。
例:
できない理由:
接続されていない多くのクラスで使用したいのですが_adsServer
、どうすれば適切に行うことができますか?
手伝ってくれてありがとう。
cnc - このコード スニペットはどのプログラミング言語で書かれていますか?
このコードは 1999 年に作成され、CNC マシンを制御します。コード スニペットが言語を判断するのに十分でない場合は、ファイル全体をアップロードできます。これはコード セグメントです。