Arduino本地网络DHCP失败

时间:2017-10-10 13:37:41

标签: networking arduino-uno ethernet windows-server-2012-r2 dhcp

你好,

我会为我们的问题搜索并尝试很多解决方案,但没有任何工作。这将是一个很长的帖子,所以准备好了。

我们的系统:

我们有一个 arduino uno r3 clone 以太网盾wiznet w5100 , 此Arduino向 Windows网络服务发出 http发布请求 根据回应,arduino会做一些不值得怀疑的事情。

因此,在我们的测试环境中,我们将在Windows机器上安装一个Windows Web服务,并将此机器插入我们的本地网络。然后将arduino插入我们的本地网络。与我们的服务器ip相比,arduino从我们的调制解调器路由器发出dhcp请求获取ip,并且可以从我们的服务器调用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服务使用本地连接,因为我们还将使用将在本地网络内部的Windows服务器。

这是他们的网络系统架构的图片: Normal Network Configuration 在这张图片中,缺少开关,但你可以简单地猜测它们使用了大量的开关。因为公司非常宽并且有很多设备。

因此,如果我将任何设备连接到本地网络,此设备首先从 Windows DHCP服务器调用dhcp protocals get ip,然后可以在本地网络中与其他设备通信。但由于路由器中的防火墙,无法通过互联网调制解调器。

然后我们将设置我们的系统:

our needed setup arduino

在此设置中,开关型号为:“AVAYA”。

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

防火墙是:Watchguard Firebox M300

当我们设置系统时,会发生一些奇怪的事情。首先,当我将我的PC(我的设备)连接到本地网络时,我可以在Windows服务器中调用webservices。但是Arduino无法从DHCP服务器获取IP,并且自然无法连接到Web服务。所以我们认为“好吧我们可以给IP静态”。我们将手动为我们的Arduino提供IP。在那之后奇怪的事情开始了。当Arduino尝试连接我们的Windows Web服务时,它只会得到一些响应。大约有20个人从服务器得到了响应,其他任何事情都得到了超时连接。并且响应时间也过长了。

如果我们从另一个设备(例如Device_1)ping我们的静态arduino IP,它有时会再次得到响应。 (相同金额)

然后我们尝试缩小我们的问题范围。

首先我们改变这样的设置一次以确保本地网络中的问题。

changed version

Normaly所有系统都运行良好。所以我们的调制解调器的DHCP服务器使它完美运行。(同样在这个设置中如果我给Ip静态它也工作)。

因此存在连接错误的可能性。

1-防火墙 2开关问题 3-Arduino Clon问题。

1-防火墙

当我们谈到系统管理员的问题时,他告诉我,每个本地网络连接和端口都在防火墙中打开。他可能是对的,因为任何连接到本地网络的电脑都可以调用网络服务。

2-Switch问题

This Question,谈到它作为一种解决方案,它说使用静态IP,在我们的情况下,它没有解决问题。

In this Question jdr5ca回答有意义,但我不知道如何测试问题或解决问题

In this Question answer tried but not working.

最后this post,但它太笼统了。还有什么应该用于替换Windows中的“arping”。

3-Arduino Clon问题。

下周我们尝试使用原版arduino,

我会告诉所有人。

那么,对于这个问题的任何建议,工具或一些诊断工具我都打开了所有的建议。

1 个答案:

答案 0 :(得分:1)

显然我们的问题是一个特定的开关模型!

以下是模型:https://www.zyxel.com/tr/tr/products_services/es_108a.shtml?t=p(zyxel ES-108E)

当我们直接将arduino连接到zyxel交换机,并从网络中的另一台设备ping arduino时,只有一些ping成功。(大约%15成功)。

但是如果我们使用其他交换机型号或者不直接连接到zyxel交换机,它可以正常工作。

我不知道为什么它不能与zyxel合作,但问题是切换!