- 1、本文档共96页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MODBUS_UDP_AVR实现主从n对1
/*
以前MODBUS协议只允许主机与从机1:n方式通信,后来要求多台主机与从机n:1方式通信,想用CANBUS,最近试了下W5100,想用一下以太网,这样可以利用网络资源,发现是可行的,原理如下:
每台主机通过UDP方式发MODBUS命令给从机,从机通过解读数据帧的前六个字节,访问者IP在前4个字节,port在第5、第6个字节,分别回应访问者。就实现了主机与从机n:1方式通信。
特别声明:modbus来自微控电子
微控电子
编译器:winavr2005
单片机ATMEGA16
接口:UDP
上位机:参考了雅猫搜腥的程序,不过由VB改成了C++BUILDER6,
串口组件MSCOMM改成了串口类cnCOMM由Iibird提供,SOCKET由API实现。
上位机暂时不公布。各位可以用TCPUDP测试工具调试;
在这里详细的注解了MODBUS。
锤子
2012-12-17
系统功能图:
WINAVR2005工程:
上位机调试图
用TCPIP测试工具:
自编工具:C++BUILDER6
*/
******************************************************************************
* @file W5100.c
* 本文件包括5个部分:
* 1. W5100初始化
* 2. W5100的Socket初始化
* 3. Socket连接
* 如果Socket设置为TCP服务器模式,则调用Socket_Listen()函数,W5100处于侦听状态,直到远程客户端与它连接。
* 如果Socket设置为TCP客户端模式,则调用Socket_Connect()函数,
* 每调用一次Socket_Connect(s)函数,产生一次连接,
* 如果连接不成功,则产生超时中断,然后可以再调用该函数进行连接。
* 如果Socket设置为UDP模式,则调用Socket_UDP函数
* 4. Socket数据接收和发送
* 5. W5100中断处理
*
* 置W5100为服务器模式的调用过程:W5100_Init()--Socket_Init(s)--Socket_Listen(s),设置过程即完成,等待客户端的连接。
* 置W5100为客户端模式的调用过程:W5100_Init()--Socket_Init(s)--Socket_Connect(s),设置过程即完成,并与远程服务器连接。
* 置W5100为UDP模式的调用过程: W5100_Init()--Socket_Init(s)--Socket_UDP(s),设置过程即完成,可以与远程主机UDP通信。
*
* W5100产生的连接成功、终止连接、接收数据、发送数据、超时等事件,都可以从中断状态中获得。
******************************************************************************
*/
/*
000042-Tx:01 03 00 30 00 10 44 09
000043-Rx:01 03 20 00 00 40 88 00 00 40 88 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 B2 0A
000044-Tx:01 03 00 30 00 10 44 09
000045-Rx:01 03 20 99 9A 40 D9 99 9A 40 D9 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 87 95
*/
//#includeW5100.h /* 定义W5100的寄存器地址、状态 */
//#includeREG51.h
#include avr/io.h
#include avr/interrupt.h
#include avr/signal.h
#include MODBUS\in
文档评论(0)