一种并行数据通讯中间设备及并行数据通讯方法
【技术领域】
[0001]本发明涉及数据传输领域,尤其是一种并行数据通信的中间设备及方法。
【背景技术】
[0002]现如今,工控计算机的通讯接口主要以串行接口(如RS232)为主,一台计算机上可能存在I个或者多个串行接口。
[0003]但作为计算机上位机软件,如果遇到多个下位机的串行接口,那么只能依次与各个下位机通讯端口进行数据交换,这样严重影响上位机和下位机的通讯速度,甚至会出现掉包等情况。
[0004]如果能把数据同时发送到下位机,而且把下位机接收到的数据一次性发送到上位机,那么就能很好的解决问题。如今,芯片市场上,有很多一个串行接口扩展成为2个或者4个串行接口的芯片,但它们还是不能解决并行发送的问题。
【发明内容】
[0005]本发明所要解决的技术问题是:针对上述存在的问题,提供一种并行数据通讯中间设备及并行数据通讯方法。
[0006]本发明提供的并行数据通讯中间设备包括上位机接口电路、N+1个数据下行缓存器、N+1个数据上行缓存器、数据交换中心、N个下位机接口电路及逻辑控制电路;所述N为大于O的整数。
[0007]所述上位机接口电路分别与数据下行第N+1缓存器、数据上行第N+1缓存器具有信号连接;上位机接口电路用于在逻辑控制电路的控制下接收上位机传来的数据包并存入数据下行第N+1缓存器,以及用于在逻辑控制电路的控制下读取数据上行第N+1缓存器中的数据包并发送给上位机。
[0008]数据交换中心与所有的缓存器具有信号连接;所述数据交换中心用于在逻辑控制电路的控制下从第N+1缓存器中读取数据包并根据各个数据包中的地址将数据包存入数据下行第I缓存器到数据下行第N缓存器,以及用于在逻辑控制电路的控制下从数据上行第I缓存器到数据上行第N缓存器中读取数据包并发送给数据上行第N+1缓存器。
[0009]第I下位机接口电路分别与数据下行第I缓存器、数据上行第I缓存器具有信号连接;第2下位机接口电路分别与数据下行第2缓存器、数据上行第2缓存器具有信号连接;以此类推,第N下位机接口电路分别与数据下行第N缓存器、数据上行第N缓存器具有信号连接;各个下位机接口电路用于在逻辑控制电路的控制下接收与其连接的下位机传来的数据包并将数据包存入与其连接的数据上行缓存器,以及用于在逻辑控制电路的控制下从与其连接的数据下行缓存器读取数据包并传输给与其连接的下位机;所述数据包中至少包括数据内容及下位机地址。
[0010]进一步,还包括N+1个电平转换电路;上位机接口电路通过第N+1电平转换电路连接上位机;第I下位机接口电路、第2下位机接口电路、…、第N下位机接口电路分别通过第I电平转换电路、第2电平转换电路、…、第N电平转换电路与第I下位机、第2下位机、…、第N下位机连接。
[0011]进一步,所述数据交换中心用于在逻辑控制电路的控制下周期性的从第N+1缓存器中读取数据包并根据各个数据包中的地址将数据包存入数据下行第I缓存器到数据下行第N缓存器,以及用于在逻辑控制电路的控制下周期性的从数据上行第I缓存器到数据上行第N缓存器中读取数据包并将所述数据包按照一定格式再次打包然后发送给数据上行第N+1缓存器。
[0012]本发明还提供了一种并行数据通讯方法,包括数据下行过程及数据上行过程;
其中数据下行过程包括:
步骤Al:接收上位机传来的数据包;
步骤A2:将数据包存入数据下行第N+1缓存器中;
步骤A3:从数据下行第N+1缓存器中读取数据包并根据数据包中的地址将数据包存入数据下行第I缓存器到数据下行第N缓存器中;
步骤A4:将数据下行第I缓存器中的数据包输出给第I下位机,将数据下行第2缓存器中的数据包输出给第2下位机,以此类推,将数据下行第N缓存器中的数据包输出给第N下位机;
数据上行过程包括:
步骤B1:接收η个下位机传输的数据包;
步骤Β2:将第I下位机传输的数据包存入数据上行第I缓存器,将第2下位机传输的数据包存入数据上行第2缓存器,以此类推,将第N下位机传输的数据包存入数据上行第N缓存器;
步骤Β3:从数据上行第I缓存器到数据上行第N缓存器中读取数据包;将所述数据包存入数据上行第Ν+1缓存器;
步骤Β4:将数据上行第Ν+1缓存器中的数据包传输给上位机;
所述数据包中至少包括数据内容及下位机地址。
[0013]优选地,在步骤A3中,周期性的从第Ν+1缓存器中读取数据包并根据各个数据包中的地址将数据包存入数据下行第I缓存器到数据下行第N缓存器。
[0014]进一步,在步骤Β3中,周期性的从数据上行第I缓存器到数据上行第N缓存器中读取数据包并将所述数据包按照一定格式再次打包,然后发送给数据上行第Ν+1缓存器。
[0015]进一步,在步骤A3中,对从第Ν+1缓存器中读取数据包进行CRC校验后再将各个数据包存入数据下行第I缓存器到数据下行第N缓存器。
[0016]进一步,在步骤Β3中,对从数据上行第I缓存器到数据上行第N缓存器中读取的数据包进行CRC校验后再发送给数据上行第Ν+1缓存器。
[0017]综上所述,由于采用了上述技术方案,本发明的有益效果是:
1、扩展性强,本发明支持多种串行接口协议,可以同时使用多个数据端口分别与下位机进行数据通信;
2、本发明定期访问与下位机对应的数据上行缓存器,将各个下位机传来的数据汇总后传给上位机,还定期方位与上位机对应的数据下行缓存器,将上位机的数据按照地址分发给各个下位机,省去了上位机依次访问下位机数据接口的时间,提高了上位机的工作效率。
[0018]3、可在FPGA上实现本发明,FPGA内部时钟频率可达到100MHz,数据传输和处理上使用的时间,对于串行接口来说,已经可以忽略不计了,实现了数据的高速传输。另外在FPGA上实现本发明,可精简大量电路,使用者基本上可以做到一芯片解决方案。
[0019]4、本发明还引入了 CRC校验,保证了数据的接收正确性。
【附图说明】
[0020]本发明将通过例子并参照附图的方式说明,其中:
图1为本发明中装置与上位机、下位机连接的电路原理图。
[0021]图2为本发明中装置的第一实施例。
[0022]图3为本发明中装置的第二实施例。
[0023]图4为本发明中数据包的一个具体实施例。
【具体实施方式】
[0024]本说明书中公开的所有特征,或公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合。
[0025]本说明书中公开的任一特征,除非特别叙述,均可被其他等效或具有类似目的的替代特征加以替换。即,除非特别叙述,每个特征只是一系列等效或类似特征中的一个例子而已。
[0026]如图1,本发明中的装置具有至少N+1个接口,其中一个与上位机的通信端口,如RS232、RS485或SPI等串行接口,连接,其余N个接口与N个下位机的通信端口依次连接,下位机的通信端口也可以是RS232、RS485或SPI等串行接口。其中N为大于O的正整数,在本发明一个具体实施例中N为16,在其他实施例中N可以根据需要进行增减。
[0027]参见图2,本发明装置的第一实施例包括:上位机接口电路、17个数据下行FIFO、17个数据上行FIFO、数据交换中心、16个下位机接口电路及逻辑控制电路。
[0028]所述上位机接口电路分别与数据下行第17FIF0、数据上行第17FIF0具有信号连接。
[0029]数据交换中心与所有的FIFO具有信号连接。
[0030]第I下位机接口电路分别与数据下行第1FIF0、数据上行第IFIFO具有信号连接;第2下位机接口电路分别与数据下行第2FIF0、数据上行第2FIF0具有信号连接;以此类推,第16下位机接口电路分别与数据下行第16FIF0、数据上行第16FIF0具有信号连接。
[0031]逻辑控制电路分别与上位机接口电路、数据交换中心及16个下位机接口电路具有信号连接,控制各个部分按照一定的时序进行数据上行传输及数据下行传输。
[0032]其中数据下行过程:
逻辑控制电路控制上位机接口电路接收上位机传来的数据包并存入数据下行第17FIF0。在其他实施例中上位机接口电路除了接收数据外还用于传输协议转换。
[0033]接着,逻辑控制电路控制数据交换中心从第17 FIFO中读取数据包并根据各个数据包中的地址将数据包存入数据下行第IFIFO到数据下行第16FIF0。数据包中的地址表示该数据包将要传输给哪个下位机,如地址是指向第5下位机的,那么数据交换中心将该数据包发送到数据下行第5FIF0中。
[0034]在其他实施例中,逻辑控制电路控制数据交换中心周期性的从数据下行第17FIFO中读取数据包,这里所说的周期性的是指数据交换中心每隔一定时间便读取一次数据下行第17FIFO中的数据包。
[0035]最后逻辑控制电路控制各个下位机接口电路从与其连接的数据下行缓存器读取数据包并传输给与其连接的下位机。
[0036]数据上行