STM32 freemodbus TCP 通讯

[复制链接]
1652|9
 楼主| carefull3357dc 发表于 2017-11-28 12:24 | 显示全部楼层 |阅读模式
这两天一直在调试STM32F4的 TCP,并且想应用到freemodbus TCP,这样我的设备就可以集成化联网控制。

因为现在大部分使用STM32的应该都使用ST专用的配置软件STM32 CubeMX进行程序的初期工程,这有一个好处,就是加快开发进度,我这里也是在此软件下进行开发,我只是为了记下自己的使用过程,方便以后查看,写的可能会比较乱。
 楼主| carefull3357dc 发表于 2017-11-28 12:25 | 显示全部楼层
1、STM32 CubeMX建立工程,内容包括 ETH,FreeRTOS,LWIP

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| carefull3357dc 发表于 2017-11-28 12:25 | 显示全部楼层
2、只需要配置LWIP为静态地址,这是因为我的设备不方便用动态地址,你也可以不改用DHCP

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| carefull3357dc 发表于 2017-11-28 12:26 | 显示全部楼层
3、生成KEIL5工程,然后加入freemodbus文件,进行修改。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| carefull3357dc 发表于 2017-11-28 12:26 | 显示全部楼层
在这里主要是修改porttcp.c这个文件,并且在port.h 里面增加个宏定义
/* Critical section management. */
extern void vPortEnterCritical( void );
extern void vPortExitCritical( void );
 楼主| carefull3357dc 发表于 2017-11-28 12:26 | 显示全部楼层
#define ENTER_CRITICAL_SECTION(  )   vPortEnterCritical( )
#define EXIT_CRITICAL_SECTION(  )    vPortExitCritical( )
 楼主| 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 )
 楼主| 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 */
}
 楼主| carefull3357dc 发表于 2017-11-28 12:29 | 显示全部楼层
到此我们的freemodbus tcp就可以了,通过ping 和 modbus poll连接测试都没有问题。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
xujunyi3611 发表于 2017-11-28 17:06 | 显示全部楼层
freemodbus TCP,速度可以达到多少呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

384

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部