Modbus POE ETH Relay HTTP
来自Waveshare Wiki
硬件连接
- 将Modbus POE ETH Relay通过网线连接到局域网,通过电源端口供电或者通过POE供电。
注意:上图是使用PoE网口供电。如果是使用的普通网线,须外接电源适配器供电,可外接7~36V范围的电源供电。
软件准备
下载配置与网页文件并解压。文件中包含配置文件以及测试的网页文件。
HTTP GET 演示示例
示例将模块配置为GET服务器端,网页通过HTTP GET请求将数据发送到模块从而实现控制继电器。
设备设置
- 打开Vircom软件选择对应的设备设置,设置对应IP地址和网关,工作模块为TCP服务器即可,同时也支持TCP服务器功能。
- 这里端口设置为8000,注意不要和网页访问端口80冲突。
- 点击“更多高级选项”,选择上“TCP建立是不清空串口”功能。避免出现数据丢失。
- 点击“确定”返回上一级界面,点击“修改设置”生效。
固件与配置
- 在web网页目录下新建一个httpd.txt文档。如果用户没有web目录,随便创建一个空白文件夹即可,只有一个httpd.txt文件夹也没有关系。
- httpd.txt 的添加如下内容,建议直接下载配置文件,将HTTP->get->httpd.txt文件复制过去,手动添加容易出错。
- 第一行是网络数据包过滤,其中NFL表示not filter,这行的意思是将两个回车换行后的数据转为十六进制通过串口输出到主控芯片。“#”表示转化为十六进制输出的数据。
- 第二行是HTTP返回响应的状态行。第三行~第四行表示HTTP返回响应的消息报头。第五行为空行。第六行“$”表示串口返回的数据,即为响应正文。
- 点击“固件与配置”,选择配置网页根目录,点击“下载”将配置文件下载到设备内部。
- 至此,模块全部配置已完成。
GET示例
- 在浏览器中输入如下网址打开发送HTTP GET请求。注意将IP地址和端口替换成实际设置值。
- 正常情况下,1号继电器翻转。可以将十六紧张数据替换成其他继电器操作指令测试。
http://192.168.8.205:8000/?data=010500005500F29A
- 用记事本打开下载的配置文件中HTTP->get->get.html文件。找到下面一行代码,将IP地址和端口改为实际参数并保存。
const url = `http://192.168.8.205:8000/?data=${cmd[buttonNumber]}`;
- 双击get.html文件打开网页。建议使用谷歌浏览器,其他浏览器可能会出现错误。
- 点击对应继电器按钮即可发送GET请求数据控制对应的继电器翻转了。同时Respone窗口显示返回数据。
原理介绍
- 下面图片显示一个完整GET请求的抓包数据。配置文件第一行即为过滤设置,过滤器之间有用的数据通过串口发送给主控芯片。
- 过滤器设置为只有data=”和“HTTP/1.1”之间的数据转为十六进制通过串口输出到主控芯片,即modbus指令。
- 下面图片显示一个完整GET响应的抓包数据。前面五行即为配置文件的第二行至第六行。
- 第七行为串口返回的数据,为原始modbus响应,十六进制数据。
- 通过上面分析可知。HTTP GET原理为,通过httpd.txt配置文件,将GET请求过滤,之间有用的数据通过串口发送。
- 同时将串口返回的数据通过配置文件添加响应状态,信息包头打包成一个完整的HTTP响应在返回去。
HTTP POST 演示示例
示例将模块配置为POST服务器端,网页通过HTTP POST请求将数据发送到模块从而实现控制继电器。
设备设置
- 打开Vircom软件选择对应的设备设置,设置对应IP地址和网关,工作模块为TCP服务器即可,同时也支持TCP服务器功能。
- 这里端口设置为8000,注意不要和网页访问端口80冲突。
- 点击“更多高级选项”,选择上“TCP建立是不清空串口”功能。避免出现数据丢失。
- 点击“确定”返回上一级界面,点击“修改设置”生效。
固件与配置
- 在web网页目录下新建一个httpd.txt文档。如果用户没有web目录,随便创建一个空白文件夹即可,只有一个httpd.txt文件夹也没有关系。
- httpd.txt 的添加如下内容,建议直接下载配置文件,将HTTP->post->httpd.txt文件复制过去,手动添加容易出错。
- 第一行是网络数据包过滤,其中NFL表示not filter,这行的意思是将GET请求中“data=”和“HTTP/1.1”之间的数据转为十六进制通过串口输出到主控芯片。“#”表示转化为十六进制输出的数据。
- 第二行是HTTP返回响应的状态行。第三行~第四行表示HTTP返回响应的消息报头。第五行为空行。第六行“$”表示串口返回的数据,即为响应正文。
- 点击“固件与配置”,选择配置网页根目录,点击“下载”将配置文件下载到设备内部。
- 至此,模块全部配置已完成。
POST示例
- 用记事本打开下载的配置文件中HTTP->get->get.html文件。找到下面一行代码,将IP地址和端口改为实际参数并保存。
const url = `http://192.168.8.205:8000/`;
- 双击post.html文件打开网页。建议使用谷歌浏览器,其他浏览器可能会出现错误。
- 点击对应继电器按钮即可发送POST请求数据控制对应的继电器翻转了。同时Respone窗口显示返回数据。
原理介绍
- 下面图片显示一个完整POST请求的抓包数据。配置文件第一行即为过滤设置,过滤器之间有用的数据通过串口发送给主控芯片。
- 过滤器设置为两个回车换行后的数据转为十六进制通过串口输出到主控芯片,即空白行后的modbus指令。
- 下面图片显示一个完整POST响应的抓包数据。前面五行即为配置文件的第二行至第六行。
- 第七行为串口返回的数据,为原始modbus响应,十六进制数据。
- 通过上面分析可知。HTTP POST原理为,通过httpd.txt配置文件,将POST请求过滤,之间有用的数据通过串口发送。
- 同时将串口返回的数据通过配置文件添加响应状态,信息包头打包成一个完整的HTTP响应在返回去。
FAQ
配置下载其它固件覆盖了配置界面网页文件,需要重新下载 配置界面Web文件。
可以将httpd.txt添加上,即同时支持网页配置和HTTP功能。
httpd.txt必须为Windows(CR LF)文档格式,即每行以CR LF结尾。Unix(LF)格式文件将出错没有输出。
建议下载配置文件并复制过去后再修改。
POST完全请求必须在一个数据包中,如果分开多个数据包可能会导致出错没有输出。