問題タブ [ethercat]
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.
c# - UDP パケットがネットワーク上にある場合、アプリケーション層で確実に取得できますか?
まず、UDP は信頼できるプロトコルではないことを認識しており、ネットワーク経由でパケットを受信できる保証はありません。
しかし、パケットが自分のマシンに到達した場合、アプリケーション レベルで受信することが保証されているのでしょうか?それとも、ネットワーク スタックが問題なく破棄できるのでしょうか?
私が尋ねる理由は、パケットがネットワーク上にあることを知っていても、パケットが時々失われているように見えるからです (単純な EtherCAT バスなので、パケットは常にループ バックします)。
ethercat - バックグラウンドなしで EtherCAT を勉強するにはどうすればよいですか?
私は EtherCAT の初心者です。そして、EtherCAT マスターを研究するための良い出発点を探しています。
SOEMと呼ばれる優れたオープン ソース実装があることがわかりました。
しかし、EtherCAT の背景知識がなければ、コードを理解するのは非常に困難です。
EtherCAT マスターを勉強する方法を見つけるのを手伝ってくれる人はいますか?
go - 自身の IP からマルチキャストを受信
Go で書かれた Ethercat マスターに取り組んでいます。基礎となるライブラリはhttp://github.com/distributed/ecatにあり、UDP とマルチキャストを使用する 1 つのリンク レベル ドライバが含まれています。このリンク レベル ドライバーを複数のプラットフォーム (OS X、Windows、Linux) および異なるネットワーク構成で一貫して動作させるのに問題があります。
Ethercat に慣れていない人のために、これがどのように機能するかを説明します。Ethercat は、イーサネットに基づく産業用バス システムです。1 つのバス マスターと、場合によっては多数のスレーブがあり、論理リングに接続されています。マスターは、市販のハードウェア、つまり通常のイーサネット インターフェイス カードを使用して構築できます。マスターはイーサネット インターフェイスでパケットを送信し、スレーブはオンザフライでパケットを変更し、すべてのスレーブを通過した後、マスターはそれを送信したのと同じネットワーク インターフェイスでパケットを受信します。スレーブの数によっては、ネットワーク インターフェイスがまったく同じパケットを送信している間に、パケットの受信を開始する場合があります。Ethercat フレームには 2 つの形式があります。1 つ目は、特殊な ethertype を持つイーサネット パケットです。2 つ目は、ポート 0x88a4 宛ての UDP パケットです。
イーサネット パケットに含まれるコマンドに応じて、スレーブはパケットの Ethercat データを変更する場合と変更しない場合があります。Ethercat データの変更とは別に、変更されるパケットに関する唯一のことは、イーサネット宛先アドレスのビット 1 が 1 に設定されることです。パケットの IP ヘッダーは、Ethercat スレーブによって変更されません。
私のコードは次のように動作します。私は、Ethercat スレーブを接続239.255.65.10
したインターフェイス上などで、マルチキャスト グループに参加します。バスとデータを交換するために、パケットを送信します。このインターフェイスxyz
で に呼び出しましょう。OS は送信元アドレス、たとえばinterface の IP アドレスを入力します。パケットがバスを通過し、変更された可能性があるため、現在は packet になっています。IP ヘッダーには、送信元と送信先がまだあります。ホストのネットワーク設定によっては、このパケットがアプリケーションに到達する場合と到達しない場合があります。私のアプリケーションに到達しない場合、たとえばLinux でパケットが設定されている場合pA
239.255.65.10
192.168.5.2
xyz
pB
192.168.5.2
239.255.65.10
rp_filter
pB
私のマシンから発信されたように見えるため拒否されましたが、ネットワーク経由で自分のパケットを受信するべきではありません。
処理されたパケットを確実に受信するには、どのような手順を実行すればよいpB
ですか? ループバックについて話しているのではないことに注意してください。ループバックはパケットの受信pA
に関するものであり、私の質問は受信に関するものpB
です。
ethercat - あいまいな EtherCAT 詳細
以下は、EtherCAT の紹介文です。
EtherCAT マスターは、各ノードを通過するテレグラムを送信します。各 EtherCAT スレーブ デバイスは、自分宛てのデータを「オンザフライ」で読み取り、フレームがダウンストリームに移動するときにそのデータをフレームに挿入します。
上記のテキストからの私の質問:
- 「オンザフライ」でデータを読み取るとはどういう意味ですか?
- 移動中にフレームにデータを挿入するにはどうすればよいですか? 最初にバッファにコピーしてから更新する必要はありませんか?
このテキストはhttp://www.ethercat.org/en/technology.htmlからの引用です。
ios - iPadでサーボドライブ・モーターを制御
私は自動化の分野に不慣れなので、「初心者」の質問:
目標は、iPad アプリを介して 2 つのサーボ モーターを制御することです。
Panasonic または Beckhoff ドライバのいずれかを使用することを考えました。Panasonic の方が少し安価ですが、Beckhoff の方がおそらく機能が多く、全体的に文書化されているようです。
プラグ アンド プレイ オプションがないため (少なくとも、完全にカスタム化された iOS アプリを使用できるものは聞いたことがありません)、ethercat ドライバーを入手して、リンクとして機能する Rasperry Pi をそれに接続することを考えました。
[MOTOR]---[DRIVER]---[PI]---wifi---[iPad]
誰かがこのようなことをしたことがあり、私にいくつかのヒントを与えることができますか?