3964(R)协议参考 点击:2801 | 回复:7



如火

    
  • 精华:172帖
  • 求助:0帖
  • 帖子:803帖 | 5249回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2006-05-17 15:56:00
楼主
前几年做过一次3964(R)的开发,因为不知道协议,查了很多地方都没有,只好用设备一点一点测试,pojie协议,想起来,比较痛苦。这个协议现在用的不多了,不过还是有设备用到,典型的siemens 点对点通讯模块或和利时几款plc都是这个协议,在此帖出来,供大家参考,希望能减少您开发时间。 1.3964(R)协议使用的控制字符与报文帧格式
BCC 是所有正文中的字符(包括正文中连发的DLE)和报文帧结束标志(DLE 和ETX)的“异或”运算的结果。
3964(R)报文帧格式
正文中如果有字符10H,在发送时自动重发一次。接收方在收到两个连续的10H 时自动地剔除一个。
3964(R)报文帧传输过程
2.建立发送数据的连接 发送方首先应发送控制字符STX。在“应答延迟时间(ADT)”到来之前,接收到接收方发来的控制字符DLE,表示通信链路已成功地建立。 如果通信伙伴返回NAK 或返回除DLE 和STX 之外的其他控制代码,或应答延迟时间到时没有应答,程序将再次发送STX,重试连接。若约定的重试次数到后,都没有成功建立通信链路,程序将放弃建立连接,并发送NAK 给通信伙伴。 接收方在接收到DLE、ETX 和BCC 后,根据接收到的数据计算BCC,并与通信伙伴发送过来的BCC 进行比较。如果二者相等,并且没有其他接收错误发生,接收方的CPU 将发送DLE,断开通信连接。 如果二者不等,将发送NAK,在规定的块等待时间内(4s)等待重新发送。如果在设置的重试次数内没有接收到报文,或者在块等待时间内没有进一步的尝试,将取消接收操作。 如果两台设备都请求发送。具有较低优先级的设备将暂时放弃其发送请求,向对方发送控制字符DLE。具有较高优先级的设备将以上述方式发送其数据。等到高优先级的传输结束,连接被释放,具有较低优先级的设备就可以执行其发送请求。通信的双方必须设置优先级。



BANNER007

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 94回
  • 年度积分:0
  • 历史总积分:199
  • 注册:2004年1月11日
发表于:2006-05-20 20:57:00
1楼
楼主:3964通讯一般在那些领域用的多呢?

如火

  • 精华:172帖
  • 求助:0帖
  • 帖子:803帖 | 5249回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2006-05-21 11:28:00
2楼
适用于不太复杂的串口通讯。

郝海东

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 557回
  • 年度积分:0
  • 历史总积分:806
  • 注册:2006年3月26日
发表于:2006-05-21 11:30:00
3楼
好东西

GK927

  • 精华:1帖
  • 求助:0帖
  • 帖子:46帖 | 140回
  • 年度积分:1
  • 历史总积分:326
  • 注册:2006年11月16日
发表于:2006-12-02 16:33:00
4楼
斑竹,你好,我现在做一个西门子CP340的3964R通讯,一直没搞通,希望得到你的指点,谢谢!

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2007-12-01 20:38:00
5楼
把自己的经验无偿贡献给他人参考,中国人要想赶超国外,首先要有这样的精神。谢谢!

叫我小白

  • 精华:0帖
  • 求助:0帖
  • 帖子:20帖 | 1559回
  • 年度积分:3
  • 历史总积分:3122
  • 注册:2006年6月08日
发表于:2007-12-02 19:02:00
6楼
非常好啊。
目前我们在很多场合就是用3964R(RK512)这个协议。
收藏了。

叫我小白

  • 精华:0帖
  • 求助:0帖
  • 帖子:20帖 | 1559回
  • 年度积分:3
  • 历史总积分:3122
  • 注册:2006年6月08日
发表于:2007-12-02 19:03:00
7楼
不过这些东西现在倒是容易搜索到了。毕竟网络这么发达了。

热门招聘
相关主题

官方公众号

智造工程师