最近一段时间一直在制定和实现一个通信协议规范,在这之前也陆续制定过一些通信协议规范,但制定完成之后,没有去实现并且深入的思考协议的可靠性和可用性。通过这次的项目实践,对通信协议规范有了更深层次的理解,着实惊叹ISO分层协议的伟大之处,佩服协议制定人员的深厚专业功底。
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
目前,在很多仪器设备中都会采用串口、USB或者网口进行数据交互,在使用这些接口时,仪器设计人员通常不会设计很复杂的通信协议,都会采用一些自定义的数据格式进行数据交互。尤其对于串口之类的接口,只提供了物理层接口,所以没有上层通信协议的支持,这种接口使用起来非常的麻烦,并且严重影响了仪器系统通信的可靠性和编程开发人员的复杂度。这个问题已经困扰了企业较长时间,针对这个问题,我们为自行研制的仪器设计了完整的通信协议规范,这种协议规范一次制定,一劳永逸。一方面提高了通信的可靠性;另一方面简化了仪器设计人员的开发复杂度。
协议在制定的过程中需要充分考虑层次的划分,这一点非常重要,层次的划分也就是功能的切分,通信协议的一类功能在一个层次中实现,模块化程度高,便于成果的积淀和功能的扩展。在此,总结一下传输层协议规范制定的一些心得。
传输层在通信链路中的作用显而易见,其主要负责传输通道的逻辑控制,设计的传输层主要实现了链接的管理,传输故障处理,报文差错控制,传输流量控制。这些功能应该是传输层所必需具备的,由于仪器设备与计算机之间的通信模式是点对点的,因此,传输层无需考虑报文乱序问题。采用有状态的链接对数据传输进行管理,可以提高通信可靠性,相对于无链接的协议而言将低了一定的通信效率,但是这点效率的损失对非实时测控系统而言无关紧要。传输故障机制是协议制定时需要考虑的重点,如何最大可能的恢复通信,保证数据的正确传输,使协议设计的一大难点。由于通信双方的处理能力、缓存大小存在较大差异,所以流量控制模型也是需要考虑的重点。对于测控系统而言,命令执行存在一定的相关性,所以,制定的协议需要为应用层提供“确定命令执行”的服务接口。传输层位于接口层和应用层之间,仪器设备的接口可以多样化,不同的接口特性差异巨大(例如,串行接口与网络接口的特性存在差异),所以上层协议的制定不能影响到底层接口的性能发挥,这些都是传输层协议制定时需要考虑的问题。
目前,很多仪器设备都会存在与外界的通信接口,但是很多厂商在设计过程中,只考虑了接口的物理层和数据链路层,没有考虑上层协议的制定,直接导致了仪器设备开发过程的复杂化和不规范化。更重要的是厂商自定义的简单协议很可能存在巨大的安全和稳定性漏洞,使得系统在一定程度上不可用。所以,为通信接口制定协议规范是仪器研发过程中非常必要环节。
用户1232737 2009-10-26 12:36