光纤通信在数控网络中的应用及其实现 |
摘 要: 数控网络系统是数控系统发展的趋势,在这类系统中,结点之间通信的最大要求是高实时性、高可靠性,最大特点是通信数据量较小,且具有周期性。本论文将根据数控网络的这些特点,详细介绍如何在物理层,用VHDL语言设计一个满足这些要求的模块,通过光纤实现点对点的通信。 关键词:光纤通信,数控网络,CNC, FPGA 1 引言: 数控技术是制造业实现现代化的战略性基础技术,同时也是提高国家综合国力和国防现代化的重要战略性基础技术。随着数字驱动技术及各种制造技术的发展,提高数控系统的灵活多变性,可扩展性,可移植性、互操作性、互交换性、可重用性已成为迫切的需要。为此,世界各先进工业国家纷纷将研制开放式数控系统体系结构列入重点发展计划,为适应这一发展态势,及进一步提高工厂生产的自动化,数控网络系统必将成为未来数控技术竞争的制高点。而解决在这类网络中数据的高实时,高可靠地传输,是构成数控网络的一个核心问题。本论文将根据这网络的特点集中介绍如何用光纤实现点对点的高速高可靠传输。 2 网络数控的特点: 目在数控网络系统中,应用的协议有SERCOS(Serial Real-time Communication System)和HSB (High speech Serial Bus)等。 图1 :SERCOS网络拓朴 SERCOS接口的控制器可以根据需要接上一个或几个环结构。图1的拓朴图只是一个例子,由其拓朴结构也可以看出,它糅合使用了主从结构和环状结构。 HSB的拓朴结构相对SERCOS要简单些。它主要是主从式结构。 由于数控系统的特点,它对底层设备间的数据通信要求比较高,必须保证高实时性和高可靠性的要求。例如CNC(Computer Numeric Controller)控制器主机单元和插补轴单元、驱动单元等的连接,这类控制器具有ms级的较短控制周期,同时要求较高的通信可靠性,通信错误将导致较严重的后果,如加工零件的报废等。为了在工厂那种比较恶劣的环境中确保这些要求的满足,构成的数控网络的通信介质得用光纤。 这类高实时性、高可靠性的底层设备间典型的通信周期是1~5ms之间,典型的有效通信数据量在500~2000bit之间。以上特点决定了CNC控制器通信存在短周期、短数据帧等特点, 所以在物理层用VHDL在FPGA上设计点对点通信模块时,必须考虑到这些基本的要求。 不管是构成SERCOS还是HSB网络,为了能够扩展更多的结点,点对点的有效位速度都应该不小于4M,虽然组网要求的有效位速率大于4Mbps,但是由于协议本身的开销,以及为了保证高可靠性而必须的通信冗余量,这类网络中实际通信位速率要远大于有效位速率。其通信效率保守估计只有15%~30%。 3 光纤通信在数控网络中的实现 不管是SERCOS还是HSB结构的数控网络系统,当经过仲裁从站获得总线控制权后,主站跟从站的通信就是点对点的通信。所以依据数控系统中传输的数据特点,实现点对点的高实时、高可靠光纤通信是基本环节。这一环节是在物理层来实现的。 在物理层点对点通信的外围接口模型如下: 图2 :外围接口模型 该模块是用VHDL语言在FPGA中实现的。它的功能是将在数据链路层打包好的数据帧编码后通过光纤传送到总线上去,以及从总线上接收串行的数据解码后交给数据链路层。物理层的主要工作几乎都由该模块来实现。 该模块的具体任务包括:与数据链路层接口、与光纤收发器的接口、数据的编解码、数据的并串转换、数据过采样或数据时钟恢复、数据字对齐等功能。 1):与链路层接口: Outport[15..0]:要发送到总线中的十六位数据,低八位是高八位数据的地址。 inport[15..0]:从总线中接受到的十六位数据, 低八位是高八位数据的地址。 senddata:发送数据信号,当给它一个跳变时,outport中数据将进行CRC、4b/5b编码,然后从data_out中串行发送。 Ack_y:当接收到一个对方发送过来的,表明对方已经正确接收到数据的握手信号时,它会发生一次跳变。 Ack_n:当接收到一个对方发送过来的,表明对方没有正确接收到数据的握手信号时,它会发生一次跳变。 Receive_ok:当接收到对方发来的数据并且crc校验正确后,它会有一个跳变,同时把数据从inport端口输出,给对方发送一个接收正确的握手信号帧。当接收的数据没有通过crc校验时,receive_ok不变,数据不输出,只给对方发送一个接收错误的握手信号帧。 2):与光纤的接口: data_in:发送的串行数据。 data_out:接收的串行数据。 3):数据编解码: 发送数据时,先用4b/5b编码,然后用CRC编码;接收数据时,则反过来,先用CRC解码,然后用4b/5b解码。本模块采用的循环码生成多项式是欧洲标准的CRC-16。 4):数据并串转换: 将outport中十六位数据编码后串行输出,从光纤总线中接收到的串行数据解码后在inport中并行输出。 5):数据过采样或数据时钟恢复: 在异步通信模式下,需要用采样办法将介质上传输的数据进行0、1判决,以生成接收端数据,由于异步模式下缺乏发送端的相位信息,难以保证采样点位于数据的中间位置,即通信“眼图”的中部,该处的数据有足够的保持时间,是最佳判决点,因此在接受端采用过采样的方法,每个bit的数据周期内,采样数据5次,且在数据发生0->1的变化时开始采样,取最中间的采样结果作为该次采样的结果。 发送的数据帧格式如下: 发送的帧的类型有:数据帧、握手帧(接收正确的握手帧和接收错误的握手帧),所以在该模块中必须要解决好它们的互斥和优先级的问题。 在本模块中是用状态机的机制来实现的:给数据帧、接收正确握手帧、接收错误握手帧分别给个标志位:sign_data、sign_ack_y、sign_ack_n。当有数据帧要发送时,sign_data置1。当发送完数据帧时,sign_data复位为0,握手帧也一样,模块的状态为:idle、SendingAck_y、SendingAck_n、SendingData,它们的状态跳转关系如下: 图3 :状态机跳转图 从跳转关系图也可以看出,当同时有握手帧和数据帧要发送时,是先发送握手帧的,这是因为握手帧比起数据帧来要短得多,所以先发送它能提高整体传输效率。 数据链路层对该模块的操作是:把要发的数据帧发给ouport端口,然后给senddata一个跳变沿,此信号为开始发送信号。如果收到ack_y握手信号,则发下一帧数据,如果接收到ack_n握手信号,表示发送失败,则重发,如果在合理的时间内没接收到握手信号,则定义为超时,也重发,如果重发了三次还是失败,则用中断方式通知系统,通信失败。这样就能保证数控系统中数据传输的准确可靠。不会出现因某帧数据传输失败而导致比较严重的后果,比如工件的报废。 4 仿真 该仿真用的采样时钟是100M(用quartusII综合出来后实际的采样时钟还可以更高),从结果可以看出:从senddata跳变把outport的数据锁存,并开始发送数据开始,到接收到握手信号的周期是1.15us,在这十六位数据中,低八位是地址,高八位才是有效数据,所以其有效位速率为6.95M,该有效速度完全能满足数控网络的要求。 虽然这是仿真结果,但在实际数控系统中运行时的效果跟它是一样的,该光纤通信模块在实际系统中的调试已经结束。 5 结束语 在工厂自动化越来越高的今天,用光纤构成的数控网络系统必将大大提高中国企业的核心竞争力。为中国企业全面参与国际竞争提供技术质量保证。 |