OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 25401|回复: 26

stm32F4 lwip+TCP Modbus 移植

[复制链接]

5

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
95
金钱
95
注册时间
2016-5-15
在线时间
36 小时
发表于 2016-6-29 11:52:43 | 显示全部楼层 |阅读模式
本帖最后由 qwdx2011 于 2016-6-29 11:52 编辑

  昨天刚移植完Freemodbus的 RTU协议,今天想着移植一下 TCP modbus ,借着前辈们的经验不到两小时成功移植,有兴趣的朋友可以参照我的方法移植一下,TCP modbus的具体实现方法和协议等在此不再赘述,如果不了解可以参看这两个帖子                       http://blog.csdn.net/xukai871105/article/details/21652287
  http://blog.csdn.net/daniellee_ustb/article/details/8743276

好了不啰嗦现在开始:
  1、硬件+TCP协议栈: LAN8720+LWIP   例程可以参看原子的例程 UCOS+lwip例程
  2、开发环境:MDK511


第一步:需要编写一个文件porttcp.c  我下面附录会给,直接加入工程中
图片10.png
编译出现如下错误:
图片1.png
修改如下:
     在port.c文件中加入:
void
EnterCriticalSection(  )
{
        __ASM volatile("cpsid i");
}

void
ExitCriticalSection(  )
{
    __ASM volatile("cpsie i");
}
   port.h文件中加入:
#define  vPortEnterCritical(  ) EnterCriticalSection( )
#define  vPortExitCritical(  ) ExitCriticalSection( )

   在porteven.c中添加:
static eMBEventType eTCPQueuedEvent ;
static BOOL     xTCPEventInQueue= FALSE;


BOOL
xMBTCPPortEventInit( void )
{
    xTCPEventInQueue = FALSE;
    return TRUE;
}

void
vMBTCPPortEventClose( void )
{
    xTCPEventInQueue = FALSE;
}

BOOL
xMBTCPPortEventPost( eMBEventType eEvent )
{
    xTCPEventInQueue = TRUE;
    eTCPQueuedEvent = eEvent;
                return TRUE;
}

BOOL
xMBTCPPortEventGet( eMBEventType * eEvent )
{

        if( xTCPEventInQueue )
        {
                        *eEvent = eTCPQueuedEvent;
                        xTCPEventInQueue = FALSE;
                        return TRUE;
        }
        else
        {
                        return FALSE;
        }
}

编译无错误。
第二步:将mb.c文件中的内容替换:(附录会给出)
编译还有4个错误:
图片2.png
mbconfig.h中将#define MB_TCP_ENABLED                          (  0 )
改为:         #define MB_TCP_ENABLED                          (  1 )
编译无错误。

第三步:修改main函数
初始化加入: eMBTCPInit( TCP_SERVER_PORT );  
             eMBEnable( MB_TCP );

图片3.png

图片11.png

在while循环中加入:   eMBPoll();

编译下载......

先ping一下:
图片4.png

打开Modbus Poll设置如下:
图片5.png
图片6.png
以下是我定义的保持寄存器的值
u16 usRegHoldingBuf[REG_HOLDING_NREGS]={0x0102,0x0304,0x0506,0x0708,0x1122,0x3344,0x5566,0x7799};



连接成功!返回如下:
图片7.png
图片8.png
此时,FreeModbus TCP移植成功!  TCP ModbusSerial Modbus可独立工作,以下是Modbus RTU返回的数据:
图片9.png


文件.zip

10.3 KB, 下载次数: 2289

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9130009816 该用户已被删除
发表于 2016-12-29 09:51:41 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 1 反对 0

使用道具 举报

88

主题

7381

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14979
金钱
14979
注册时间
2013-11-13
在线时间
1823 小时
发表于 2016-6-29 12:53:19 | 显示全部楼层
不错不错,多谢分享
回复 支持 反对

使用道具 举报

2

主题

171

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3792
金钱
3792
注册时间
2016-6-26
在线时间
276 小时
发表于 2016-7-1 07:33:45 | 显示全部楼层
学习学习。
回复 支持 反对

使用道具 举报

5

主题

62

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
425
金钱
425
注册时间
2016-3-9
在线时间
74 小时
发表于 2016-8-13 21:13:29 | 显示全部楼层
Mark一下
回复 支持 反对

使用道具 举报

2

主题

396

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2052
金钱
2052
注册时间
2012-5-8
在线时间
308 小时
发表于 2016-8-17 23:41:58 | 显示全部楼层
学习,赞一个
回复 支持 反对

使用道具 举报

0

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2016-9-25
在线时间
8 小时
发表于 2016-9-26 21:19:07 | 显示全部楼层
有用,谢谢分享。
回复 支持 反对

使用道具 举报

0

主题

0

帖子

0

精华

新手入门

积分
1
金钱
1
注册时间
2022-1-6
在线时间
0 小时
发表于 2016-10-25 14:56:26 | 显示全部楼层
请问楼主调试的时候有没有出现断开连接然后再重新连接,会出现连接不上的现象,需要等待几分钟或复位才能连接。
回复 支持 反对

使用道具 举报

5

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
95
金钱
95
注册时间
2016-5-15
在线时间
36 小时
 楼主| 发表于 2016-11-1 14:19:19 | 显示全部楼层
houlei1022 发表于 2016-10-25 14:56
请问楼主调试的时候有没有出现断开连接然后再重新连接,会出现连接不上的现象,需要等待几分钟或复位才能连 ...

没有啊
回复 支持 反对

使用道具 举报

8

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2016-8-3
在线时间
29 小时
发表于 2016-11-1 14:33:50 | 显示全部楼层
mark一下
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2016-6-9
在线时间
6 小时
发表于 2016-11-21 09:25:09 | 显示全部楼层
mark一下
回复 支持 反对

使用道具 举报

5

主题

20

帖子

0

精华

高级会员

Rank: 4

积分
670
金钱
670
注册时间
2016-11-7
在线时间
121 小时
发表于 2016-11-29 15:14:10 来自手机 | 显示全部楼层
楼主好人,利用你提供的内容,用原子的程序调了一段时间了,总是出现数据片段丢失的情况,能不能借鉴一下你调好的程序?如果方便的话,发我一份1101943536@qq.com。感激不尽
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2017-8-8
在线时间
6 小时
发表于 2017-8-8 09:46:13 | 显示全部楼层
楼主您好,感谢分享。我想请问您port.h中包含的sys.h是啥啊
回复 支持 反对

使用道具 举报

0

主题

9

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2017-7-9
在线时间
7 小时
发表于 2017-10-1 11:20:34 | 显示全部楼层
多谢分享
回复 支持 反对

使用道具 举报

27

主题

427

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
4335
金钱
4335
注册时间
2017-5-30
在线时间
575 小时
发表于 2018-2-1 17:07:18 | 显示全部楼层
03可以使用 02 04不能用,楼主有测试过吗
回复 支持 反对

使用道具 举报

21

主题

63

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2469
金钱
2469
注册时间
2014-4-26
在线时间
172 小时
发表于 2018-2-1 18:44:58 | 显示全部楼层
;P;P
回复 支持 反对

使用道具 举报

21

主题

127

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
322
金钱
322
注册时间
2015-6-23
在线时间
66 小时
发表于 2019-2-8 08:46:34 | 显示全部楼层
请问楼主:tcp_server_init()实现哪些功能?还有main()函数里怎么把freemodbus的MBPOLL和lwip接受和发送函数连接起来的?
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

限制会员

积分
-2
金钱
-2
注册时间
2019-5-3
在线时间
2 小时
发表于 2019-5-21 15:50:47 | 显示全部楼层
非常实用,能不能把移植好的工程发一下??谢谢
回复 支持 反对

使用道具 举报

2

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2018-5-4
在线时间
15 小时
发表于 2019-5-23 13:28:55 | 显示全部楼层
楼主或者你们谁有不带操作系统的吗???我现在你把SPI通讯一直上去SPI无法中断接收,其他正常
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2019-9-29
在线时间
15 小时
发表于 2019-12-17 09:04:06 | 显示全部楼层
下载的文件不完整,只有10K,根本用不了。
回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2017-8-26
在线时间
3 小时
发表于 2020-6-14 19:18:49 | 显示全部楼层
研究研究,多谢分享
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2020-7-1
在线时间
0 小时
发表于 2020-7-1 17:36:24 | 显示全部楼层
顶一个
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2021-3-13
在线时间
4 小时
发表于 2021-6-8 20:13:12 | 显示全部楼层
你好  能发一下源码  到我的QQ1425327749
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2021-3-13
在线时间
4 小时
发表于 2021-6-8 20:17:58 | 显示全部楼层
谢谢了
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2016-11-9
在线时间
9 小时
发表于 2022-1-17 15:01:33 | 显示全部楼层
谢谢
回复 支持 反对

使用道具 举报

0

主题

8

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2018-5-24
在线时间
7 小时
发表于 2022-4-19 11:28:32 | 显示全部楼层
谢谢分享,来学习一下
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2022-11-24
在线时间
9 小时
发表于 2022-11-24 13:42:01 | 显示全部楼层
楼主可以发一下工程代码吗?可以有偿
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-5-29 03:31

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表