请教:msg_in.code 点击:977 | 回复:5



dongyeye

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:8帖 | 7回
  • 年度积分:0
  • 历史总积分:31
  • 注册:2004年10月20日
发表于:2004-12-28 19:39:00
楼主
我做实验,设计了两个节点,一个是每隔一秒钟广播一个lon包,其中的msg_out.code=1 另一个节点程序如下: //头文件等省略 when(msg_arrives(1)) { msg_out.tag=tag1; msg_out.code=1; msg_out.service=UNACKD; msg_out.data[0]=2; msg_out.dest_addr.no_address=BROADCAST; msg_send(); } 可是我为什么用LPA收不到第二个节点发出来的数据2呢? 谢谢指教!



gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2004-12-28 21:02:00
1楼
1.第一个节点每隔1秒的LON包,是否可用LPA观察到? 2.第二个节点接收到信息后,可做本地数据处理,如再继续向网络上广播,同第一个节点的消息广播可能会造成冲突,广播-是一种非确认性服务,会出现丢包现象。 3.可用LPA-USB进一步分析原因。 ------------------------------------------------

dongyeye

  • 精华:0帖
  • 求助:0帖
  • 帖子:8帖 | 7回
  • 年度积分:0
  • 历史总积分:31
  • 注册:2004年10月20日
发表于:2004-12-30 10:23:00
2楼
第一个节点每隔1秒的LON包,可以用LPA观察到 请问广播冲突的情况能否用LPA-USB观察到? 在网络上只有两个节点的情况下,广播跟单播对信道的占用情况是否相同? 多谢斑竹回复!

zw76812

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 567回
  • 年度积分:0
  • 历史总积分:654
  • 注册:2001年7月18日
发表于:2004-12-31 10:05:00
3楼
when(msg_arrives(1)) //接收第一个节点的广播报文 code=1   {   msg_out.tag=tag1;   msg_out.code=1; //不要重复使用1换成 0,2-62   msg_out.service=UNACKD;   msg_out.data[0]=2;   msg_out.dest_addr.no_address=BROADCAST;   msg_send(); //发送   } 说实在的 我不知道您的实验目的是什么? 报文通讯方式实用中不可取。 1、如果数据包比较大的情况不但注意节点的各个缓冲区的设置参数,还有路由器的限制。 2、如果数据包比较小的话,网络变量的优势不言而喻。 3、建议实用网络变量来实现通讯,由于lonworks本身的问题,使用显示报文通讯会在工程应用中带来无穷无尽的痛苦。

Tim

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 21回
  • 年度积分:0
  • 历史总积分:88
  • 注册:2002年8月08日
发表于:2005-01-04 07:53:00
4楼
冲突是在MAC层解决的。LPA可能还不支持监测冲突。两个节点的情况下,广播跟单播对信道的占用情况是相同的。 请问按照风云会集的建议改变msg_out.code后是否解决问题?

dongyeye

  • 精华:0帖
  • 求助:0帖
  • 帖子:8帖 | 7回
  • 年度积分:0
  • 历史总积分:31
  • 注册:2004年10月20日
发表于:2005-01-04 09:46:00
5楼
用LPA收不到第二个节点发出来的数据2,是因为我没有在上电的时候强制update节点的domain-struct 我将msg_out.code更改了,改缓冲区为app_in_buf_size为210,app_out_buf_size为210, net_buf_out_size 210,net_buf_out_size210 仍然是广播方式,但还是出现escapecode

热门招聘
相关主题

官方公众号

智造工程师