2017-10-10 12 views
-1

こんにちは、ArduinoローカルネットワークDHCPが失敗しました

私は私たちの問題のために多くの解決策を探していましたが、何もしませんでした。これは準備が整った長いポストになります。

当社のシステム:我々は、ArduinoのUNO R3クローンイーサネットシールドwiznet W5100、 このArduinoのは、WindowsのWebサービスにHTTP POSTリクエストを行い

持っています。 レスポンスによれば、arduinoは疑問の余地のないものを作るでしょう。

私たちのテスト環境では、WindowsマシンにWindows Webサービスをインストールし、このマシンをローカルネットワークに接続します。その後、ローカルネットワークにarduinoを接続します。私たちのサーバーのIPよりも、arduinoはdhcp要求を私たちのモデムルータから取得し、私たちのサーバーからwebservicesを呼び出すことができます。

今からすべて正常に動作します。ここで

は私たちのArduinoからいくつかのサンプルコードです(私はArduinoのために、この余分なライブラリを使用します。。"RestClient.h"

#include <Ethernet.h> 
#include <SPI.h> 
#include "RestClient.h" 
RestClient client = RestClient("192.168.100.17",51200); 
String response; 
String PostData; 
void setup() 
{ 
    Serial.begin(9600); 
    byte mac[] = { 0x04, 0xD6, 0x2E, 0x81, 0x01, 0xB0 }; 

    if (Ethernet.begin(mac) == 0) { 
    Serial.println("Failed to configure Ethernet using DHCP"); 
    } 
    delay(1000); 
    Serial.println(Ethernet.localIP()); 
} 

void postDataToServer(long rfidnumber,int rfidsource){ 
    String postedRFIDNumber=String(rfidnumber); 
    postedRFIDNumber="000"+postedRFIDNumber; 
    response = ""; 
    PostData="RFID="+postedRFIDNumber+"&SOURCE="+rfidsource; 
    const char * myPost = PostData.c_str(); 
    int statusCode = 
client.post("/sqlpublish/TTSWebService.asmx/INSERT_INDEXRFID",myPost,&response); 
} 

私たちは、会社に我々のシステムをインストールする必要があります。この会社は、独自のローカルネットワークを持っている彼らが。非常に限られたローカルネットワークを持っていますが、ネットワークに接続することはできますが、アクセス権なしでは「www」に行くことはできませんが問題ありません.Webサービスにはローカル接続のみを使用します。ローカルネットワーク内

これは、ネットワークシステムのスキーマを示しています。 Normal Network Configuration この写真ではスイッチが見当たりませんが、会社は非常に幅があり、多くのデバイスを持っているので、彼らはたくさんのswtichesを使用すると推測することができます。

ローカルネットワークにデバイスを接続すると、このデバイスは最初にdhcp protocals get ipをWindows DHCPサーバーから呼び出し、ローカルネットワーク内で他のデバイスと通信できます。しかし、ルータのファイアウォールのためにインターネットモデムを経由することはできません。

は、その後私たちは、このようなセットアップ我々のシステムをします。このセットアップスイッチモデルでour needed setup arduino

は以下のとおりです。「AVAYA」。

VSP7000のXLS ERS4826 GTS-PWR + ERS3549 GTS-PWR +

ファイアウォールは、次のとおりです。私たちは、セットアップ奇妙なシステムに何かが起こっているウォッチガードのFirebox M300

。まず、自分のPC(マイデバイス)をローカルネットワークに接続すると、WindowsサーバーのWebサービスを呼び出すことができます。しかしArduinoはDHCPサーバーからIPを得ることができず、自然界はWebサービスに接続できません。だから私たちは "ok IPを静的に与えることができる"と考えています。 ArduinoにIPを手動で渡すよりも手間がかかります。その後、奇妙なことが始まりました。 ArduinoがWindowsのWebサービスに参加しようとすると、何度か応答しか得られません。 20人中1人がサーバーからの応答を得ています。また、応答時間も長くなりました。

静的arduino IPに対して別のデバイス(たとえばDevice_1)からpingを実行すると、応答が返されることがあります。 (同じ金額)

それでは、私たちは問題を絞り込みます。

まず最初に、ローカルネットワークで問題がないか確認するために、このような設定を1回変更します。

changed version

そしてNormalyすべてのシステム完璧に動作します。だから私たちのモデムのDHCPサーバーは完全に動作するようにします(この設定でもIp staticにそれを働かせました)。

接続エラーの可能性があります。

1ファイアウォール 2スイッチの問題 3-Arduinoクローン問題。

1-ファイアウォール

我々は、システム管理者に問題について話したとき、彼はすべてのローカルネットワーク接続とポートがファイアウォールで開かれているUSTに語りました。ローカルネットワークに接続しているPCなら、Webサービスを呼び出すことができるので、彼はおそらく正しいでしょう。

2スイッチ問題

This Question、それはそれで問題が解決しなかった我々の場合には、静的IP、BUを使用すると言う解決策として、それについて話しています。

In this Question jdr5ca答え意味をなさないが、私はthis post最後

In this Question answer tried but not working.

で問題をテストしたり、問題を解決できる方法は考えてHVEないが、それはとても一般的です。また、ıがWindowsの "arping"の代わりに使うべきもの。

3-Arduino Clon Problem。

来週私たちは、私は皆に知らせる

、オリジナルのArduinoとでそれを試してみてください。

そんなに、提案、ツール、または問題の診断ツールを私はすべての提案を開きます。

答えて

1

明らかに私たちの問題は特定のスイッチモデルです!我々は直接だけでいくつかのpingの成功ネットワーク内の他のデバイスからZYXELスイッチにアルドゥイーノを接続、およびping Arduinoのときhttps://www.zyxel.com/tr/tr/products_services/es_108a.shtml?t=p(ZYXEL ES-108E)

(およそ15%が成功した):ここでは

がモデルです。 。

しかし、別のスイッチモデルを使用したり、zyxelスイッチに直接接続しないと正常に動作します。

なぜ私はzyxelで動作していないのですか?問題はスイッチです!

関連する問題