打印

STM32 freemodbus TCP 通讯

[复制链接]
1358|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
这两天一直在调试STM32F4的 TCP,并且想应用到freemodbus TCP,这样我的设备就可以集成化联网控制。

因为现在大部分使用STM32的应该都使用ST专用的配置软件STM32 CubeMX进行程序的初期工程,这有一个好处,就是加快开发进度,我这里也是在此软件下进行开发,我只是为了记下自己的使用过程,方便以后查看,写的可能会比较乱。

相关帖子

沙发
carefull3357dc|  楼主 | 2017-11-28 12:25 | 只看该作者
1、STM32 CubeMX建立工程,内容包括 ETH,FreeRTOS,LWIP

1.jpg (206.44 KB )

1.jpg

使用特权

评论回复
板凳
carefull3357dc|  楼主 | 2017-11-28 12:25 | 只看该作者
2、只需要配置LWIP为静态地址,这是因为我的设备不方便用动态地址,你也可以不改用DHCP

2.jpg (147.96 KB )

2.jpg

使用特权

评论回复
地板
carefull3357dc|  楼主 | 2017-11-28 12:26 | 只看该作者
3、生成KEIL5工程,然后加入freemodbus文件,进行修改。

3.jpg (65.38 KB )

3.jpg

使用特权

评论回复
5
carefull3357dc|  楼主 | 2017-11-28 12:26 | 只看该作者
在这里主要是修改porttcp.c这个文件,并且在port.h 里面增加个宏定义
/* Critical section management. */
extern void vPortEnterCritical( void );
extern void vPortExitCritical( void );

使用特权

评论回复
6
carefull3357dc|  楼主 | 2017-11-28 12:26 | 只看该作者
#define ENTER_CRITICAL_SECTION(  )   vPortEnterCritical( )
#define EXIT_CRITICAL_SECTION(  )    vPortExitCritical( )

使用特权

评论回复
7
carefull3357dc|  楼主 | 2017-11-28 12:27 | 只看该作者
还有在mbconfig.h下面配置为TCP方式
/*! \brief If Modbus ASCII support is enabled. */
#define MB_ASCII_ENABLED                        (  0 )
/*! \brief If Modbus RTU support is enabled. */
#define MB_RTU_ENABLED                          (  0 )
/*! \brief If Modbus TCP support is enabled. */
#define MB_TCP_ENABLED                          (  1 )

使用特权

评论回复
8
carefull3357dc|  楼主 | 2017-11-28 12:29 | 只看该作者
4、主程序增加一个应答freemodbus TCP即可。
  osThreadDef(ModbusPollTask, eMBPollTask, osPriorityNormal, 0, 128);
  osThreadCreate(osThread(ModbusPollTask), NULL);  
当然在创建任务之前,先初始一下freemodbus tcp,我们直接在生成的 StartDefaultTask 任务里进行初始化也可以。MX_LWIP_Init();会生成一个收包和应答ARP和PING的任务。这是软件自动生成的,这样我们要做的工作就很少了。
/* StartDefaultTask function */
void StartDefaultTask(void const * argument)
{
MX_LWIP_Init();

  /* USER CODE BEGIN 5 */
eMBTCPInit(0);
eMBEnable();
  /* Infinite loop */
  for(;;)
  {
osDelay(1);
  }
  /* USER CODE END 5 */
}

使用特权

评论回复
9
carefull3357dc|  楼主 | 2017-11-28 12:29 | 只看该作者
到此我们的freemodbus tcp就可以了,通过ping 和 modbus poll连接测试都没有问题。

90.jpg (121.61 KB )

90.jpg

使用特权

评论回复
10
xujunyi3611| | 2017-11-28 17:06 | 只看该作者
freemodbus TCP,速度可以达到多少呢?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

384

帖子

3

粉丝