衣卓老师,吴志杨老师,请教 点击:1024 | 回复:1



langrenf

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 4回
  • 年度积分:0
  • 历史总积分:13
  • 注册:2001年9月12日
发表于:2002-10-29 17:21:00
楼主
我现在编写一个双绞线模块和51单片机之间的串口通信程序。双绞线收发模块里的Neuron 芯片使用10MHz晶振,单片机用11.0592得晶振。波特率是4800bps。采用Neuron芯片向单片机发送命令,然后等待应答的方式。按照协议,单片机返回的最大的数据包有126个字节。   Neuron C程序语句如下:    {    io_out(s_out,t_mcu_buf,t_mcu_len);    watchdog_update();       // 发送完后,等着接收数据    r_num=io_in(s_in,r_mcu_buf,126);       watchdog_update();    }      另外定义了三个网络变量,nv_in是输入网络变量,可以在lonmaker browser里输入下发给单片机的命令;nv_out是输出网络变量,是双绞线模块返回给计算机的数据;nv_r_mcu_buf是输出网络变量,用以显示收到的单片机返回的数据包里的前31个字节。   程序编译下载到控制模块里运行,通过lonmaker browser来输入命令,监测网络变量。当单片机返回的数据包在30个字节时,没有什么异常。但是如果单片机返回的数据包是128个字节,nv_in输入命令后,browser上各个网络变量的值在一瞬间显示为“?”,过一下又显示为正常的值,查看nv_r_mcu_buf可以看出接收到的数据包正确,通讯成功。为什么在那一时间网络变量会显示为问号“?”,如果这时用上位软件通过LNS来访问这些网络变量,就会返回“network error”的错误。   请教这是什么原因,有什么改进的方法。谢谢!



gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2002-10-29 17:21:00
1楼
关于瞬间显示问号,然后正常的现象的分析,仅供参考。 -nv_r_mcu_buf 作为网络变量,需要小于31字节,应用程序处理上将128字节数据转换到31过程中,算法上是否可以改进? -改为显示报文方式,进行比较。 -使用LonWorks协议分析仪,测试一下网络,尤其是?出现的时刻,看看 究竟是什么问题。 ------------------------------------------------------------ 备注:如需现场服务,请参见:http://www.gongkong.com/customer/lonworks/qt.htm

热门招聘
相关主题

官方公众号

智造工程师