打印
[STM32F1]

W5500读写网络数据与MODBUS 读写控制命令冲突

[复制链接]
2229|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
电子过客|  楼主 | 2016-7-12 17:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
int main(void)
{



           systick_init(72);                                            /*初始化Systick工作时钟*/

           gpio_for_w5500_config();                         /*初始化MCU相关引脚*/

           reset_w5500();                                                    /*硬复位W5500*/

           set_w5500_mac();                    /*配置MAC地址*/

           set_w5500_ip();                     /*配置IP地址*/

           socket_buf_init(txsize, rxsize);    /*初始化8个Socket的发送接收缓存大小*/

           eMBInit(MB_RTU, 0x01, 0x01, 9600, MB_PAR_NONE); //初始化 RTU模式 从机地址为1 USART1 9600 无校验  
          eMBEnable(); //启动FreeModbus

      while(1)                            /*循环执行的函数*/

              {
                  do_tcp_client();                  /*读取网关的数据*/               
                   eMBPoll();                                                                                    
             }


}
以上是主程序,  STM32做客户端, 利用 W5500 读取网关的数据值,(传感器数据)函数do_tcp_client();
stm32 还移植了freemodbus , 用于接收 触摸屏(主机发送的数据)函数  eMBPoll();  主要是控制命令
仿真时候发现,如果w5500和 modbus 单独工作都正常, 在有 do_tcp_client();   函数时候modbus 不能实时响应, (发送多次命令才能响应一次)
个人认为,程序在执行 读取网络数据时候, 这是来了MODBUS命令 没有及时响应
但是 modbus 都是设置在中断发送和接收 按理不应该啊?
各位高手 指点下,怎么不冲突
在不移植操作系统的情况下?





沙发
neeringstu| | 2016-7-12 21:31 | 只看该作者
w5500是不是可以用ch395L替代?

使用特权

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

本版积分规则

54

主题

205

帖子

2

粉丝