心急如焚啊! 目前我在开发一个串口通信程序,目标是实现PC机向数控机床传输G代码程序(实际上就是传输文件,有的文件能达几M),开发完测试时发现,在三菱控制系统上,一切运行正常,但在fanuc 0i系统上,一传输就会得到控制系统缓存溢出的警报信息, 连续翻阅了几天的资料,也没找到原因, 心急如焚啊,恳请高手们给指点指点吧.通信参数设置均正确无误, 握手协议为:Xon/Xoff ,从通信过程来看,好象Xon/Xoff根本就没起作用, 而在三菱上就起作用. 很想知道究竟Xon/Xoff是如何工作的, 在传输文件过程中,开发的程序需要对Xon/Xoff进行捕获并进行相应处理吗? 

解决方案 »

  1.   

    fanuc 0i系统那边的问题.
    那边是你付责的吗?说说那边的情况.如果那么确定没问题,就检查下连接的硬件,有没有什么问题.线是不是太长了或者太短了.反正我觉得,PC那边的程序应该不会有问题的.
      

  2.   

    当接收端的输入缓冲区内数据量超过设定的高位时,就向数据发送端发出XOFF字符,发送端收到XOFF字符后就立即停止发送数据;当接收端的输入缓冲区内数据量低于设定的低位时,就向数据发送端发出XON字符,发送端收到XON字符后就立即开始发送数据。XOFF和XON具体是什么字符,设备通讯协议上应该会有说明。 如果传输的是二进制数据,标志字符也有可能在数据流中出现而引起误操作。
    你的情况,肯定是发送速度超过了接收的处理速度。如果不清楚XOFF和XON字符,可以在发送端分段发送,中间Sleep()一段时间。
      

  3.   

    非常感谢各位热心的朋友,fanuc 0i控制系统的串口协议对应的Xon为asc17,Xoff 为asc19,但在通信过程中看上去没起作用,我目前也是采用分段发送的,中间也采用了Sleep ,但Sleep的时间不好确定,每次发送的段大小也不好确定,如果设置不好的话,因为控制系统消耗寄存器内的数据是不定速的,有时快有时慢,所以采用Sleep和发送段大小的方法,有时候比较难达到优化的速度.不知道是不是底层上还有什么说法,我一直没搞明白.恳请高手继续支持.
      

  4.   

    另外目前DNC的软件采用的是mastercam中自带的一个通信软件,速率匹配的都很好,这也说明目前的硬件口及连线均可以正常工作,但换成我写的程序,就是不行,我尝试了Sleep的时间长一些,但速度太慢,供不上数控机床的正常吞吐量,着急啊.
      

  5.   

    xon/xoff在dcb中设置就可以了
    请楼主把DCB设置贴出来