发明内容
本发明提供一种用于电磁炉数据通信的编码系统及其应用方法,以解决现有技术的不足,以增强数据传输中的容错能力,提高通信的可靠性。
本发明的另一目的在于提供一种该编码系统的应用方法。
为了实现第一个目的,采用的技术方案如下:
本发明提供了一种用于电磁炉通信的编码系统,包括编码端和解码端,发送数据的位数为m位,一个或以上的发送数据组成一个数据帧,该系统还包括有用于在编码端和解码端进行编解码的第一m位特征码和第二m位特征码。
编码端对发送数据的每一个比特位,用第一m位特征码和第二m位特征码进行编码;
解码端把连续解码出的m位比特位组成解码后数据。
作为一种优选方案:
第一m位特征码采用如下方式生成:
(21)选择一个大于m/2的自然数n1;
(22)以n1个连续的第一比特和(m-n1)个连续的第二比特组合而成的一个第一m位特征码;
第二m位特征码采用如下方式生成:
(23)选择一个小于m/2的自然数n2;
(24)以n2个连续的第一比特和(m-n2)个连续的第二比特组合而成的一个第二m位特征码。
在编码端对发送数据采用如下规则编码:
(31)对于第一比特,采用第一m位特征码替换;
(32)对于第二比特,采用第二m位特征码替换;
(33)把编码后的数据组合成一个数据帧发送到解码端;
在解码端采用如下方式进行解码:
(34)对接收到的数据帧中两个相邻的第一比特之间的第二比特进行计数;
(35)假如所述计数小于或等于第一m位特征码中所述第二比特的个数,并且计数大于0,则解码为第一比特;
(36)假如所述计数大于或等于第二m位特征码中所述第二比特的个数,并且计数小于m,则解码为第二比特。
作为另外一种优选方案,第一m位特征码和第二m位特征码的选择采用与上述方式相反:
第一m位特征码采用如下方式生成:
(41)选择一个小于m/2的自然数n1;
(42)以n1个连续的第一比特和(m-n1)个连续的第二比特组合而成的一个第一m位特征码;
第二m位特征码采用如下方式生成:
(43)选择一个大于m/2的自然数n2;
(44)以n2个连续的第一比特和(m-n2)个连续的第二比特组合而成的一个第二m位特征码。
相应的,在编码端对发送数据采用如下规则编码:
(51)对于第一比特,采用第一m位特征码替换;
(52)对于第二比特,采用第二m位特征码替换;
(53)把编码后的数据组合成一个数据帧发送到解码端;
在解码端采用如下方式进行解码:
(54)对接收到的数据帧中两个相邻的第一比特之间的第二比特进行计数;
(55)假如所述计数小于或等于第一m位特征码中所述第二比特的个数,并且计数大于0,则解码为第二比特;
(56)假如所述计数大于或等于第二m位特征码中所述第二比特的个数,并且计数小于m,则解码为第一比特。
其中解码端也可以采用对第二比特之间的第一比特进行计数,根据编码端采用不同的m位特征码方案,解码端采用对应的解码方式。
作为更进一步的优选方案:第一比特为比特“0”,第二比特为比特“1”。
作为更进一步的优选方案,数据帧的起始端标识两个通信起始位,分别为第一通信起始位和第二通信起始位。
第一通信起始位是以小于(m/4+1)的n3位连续比特0和(m-n3)位连续比特1组合而成的m位数据,第二通信起始位是以m/2位连续比特0和m/2位连续比特1组合而成的m位数据。
作为更进一步的优选方案,发送数据为八位二进制数据。
为了实现第二个发明目的,采用的技术方案如下:
本发明提供了一种用于电磁炉数据通信的编码系统的应用方法,包括以下步骤:
第一m位特征码和第二m位特征码按照如下方式选择:
(1001)选择一个大于m/2的自然数n1;
(1002)以n1个连续的第一比特和(m-n1)个连续的第二比特组合而成的第一m位特征码;
(1003)选择一个小于m/2的自然数n2;
(1004)以n2个连续的第一比特和(m-n2)个连续的第二比特组合而成的一个第二m位特征码;
所述编码端对发送数据的每一个比特位,按照以下规则,用第一m位特征码或者第二m位特征码替换:
(1005)对于比特“0”,采用第一m位特征码替换;
(1006)对于比特“1”,采用第二m位特征码替换;
(1007)把编码后的数据组合成一个数据帧发生到解码端;
解码端对接收到的数据帧,按照以下规则进行解码:
(1008)统计两个比特“0”之间的比特“1”的个数;
(1009)假如所述计数小于或等于第一m位特征码中的比特“1”的个数,且大于0,则解码为比特“0”;
(1010)假如所述计数大于或等于第二m位特征码中的比特“1”的个数,且小于m,则解码为比特“1”。
解码端把连续解码出的m位比特位组成解码后数据。
本发明的技术方案主要是在发送数据的时候把要发送的数据进行编码,然后在数据接收阶段,对接收到的一串数据帧中两个相邻的相同比特(例如:0)之间的相反比特(例如:1)的计数来判断通信信息的通信编码方法,这相当于增强了数据传输中的容错能力,提高了通信的可靠性。
具体实施方式
下面结合附图和具体实施方式对本发明作进一步详细的说明。
如图1所示,本发明提供了一种用于电磁炉通信的编码系统,包括编码端和解码端,发送数据的位数为m位,一个或以上的发送数据组成一个数据帧,该系统还包括有用于在编码端和解码端进行编解码的第一m位特征码和第二m位特征码。本实施例中所要编码的数据位数为8位,即m=8。
编码端对发送数据的每一个比特位,用第一m位特征码和第二m位特征码进行编码;
解码端把连续解码出的m位比特位组成解码后数据。
第一m位特征码采用如下方式生成:
(21)选择一个大于m/2的自然数n1;
(22)以n1个连续的第一比特和(m-n1)个连续的第二比特组合而成的一个第一m位特征码;
在本实施例中,第一比特为0,第二比特为1,第一m位特征码采用03H,二进制表示为00000011,m=8,n1=6;
第二m位特征码采用如下方式生成:
(23)选择一个小于m/2的自然数n2;
(24)以n2个连续的第一比特和(m-n2)个连续的第二比特组合而成的一个第二m位特征码。
在本实施例中,第一比特为0,第二比特为1,第二m位特征码采用3FH,二进制表示为00111111,m=8,n2=2;
在编码端对发送数据采用如下规则编码:
(31)对于第一比特,采用第一m位特征码替换,在本实施例中,采用03H替换比特0;
(32)对于第二比特,采用第二m位特征码替换,在本实施例中,采用3FH替换比特1;
(33)把编码后的数据组合成一个数据帧发送到解码端。
在解码端采用如下方式进行解码:
(34)对接收到的数据帧中两个相邻的第一比特之间的第二比特进行计数,在本实施例中,对接受到的数据帧中相邻的0之间的1进行计数;
(35)假如计数小于或等于第一m位特征码中第二比特的个数,且大于0,则解码为第一比特,在本实施例中,第一m位特征码是03H,其中比特1的个数为2,所以假如计数为2,则解码为0;
(36)假如计数大于或等于第二m位特征码中第二比特的个数,且小于m,则解码为第二比特,在本实施例中,第二m位特征码是3FH,其中比特1的个数为6,所以假如计数为6,则解码为1。
以电磁炉的主板与显示板之间的通信为例:
一、假设显示板要发送一个火力档位的信息和一个显示板系统的信息给主板,此两信息代码依次为:POWER_MODE为十六进制09H,二进制表示为00001001B;DIS_SYSTEM为十六进制12H,二进制表示为00010010B。
第一步,将信息代码POWER_MODE=09H和DIS_SYSTEM=12H组成数据帧A。
第二步,将数据帧A进一步编码,组成数据帧B,即各位BIT上的0以字节byte=03H表示,1以字节byte=3FH表示,编码如图3所示,结果为:
byte1’=03H 03H 03H 03H 3FH 03H 03H 3FH;
byte2’=03H 03H 03H 3FH 03H 03H 3FH 03H。
第三步,以FFH和0FH作为数据帧B的起始位,byte2’和byte1’按从低位到高位的顺序组成要发送的数据帧。
该数据帧的十六进制格式为:
FFH F0H
3FH 03H 03H 3FH 03H 03H 03H 03H
03H 3FH 03H 03H 3FH 03H 03H 03H
该数据帧的二进制格式为:
11111111B 00001111B
00111111B 00000011B 00000011B 00111111B 00000011B 00000011B
00000011B 00000011B
00000011B 00111111B 00000011B 00000011B 00111111B 00000011B
00000011B 00000011B
第四步,由低位到高位进行读数并判断数据帧的每一位,若为0则对通信发送端口PORT_SEND清零,若为1则对通信发送端口PORT_SEND置位,其二进制表示为:
11111111B 11110000B
11111100B 11000000B 11000000B 11111100B 11000000B 11000000B
11000000B 11000000B
11000000B 11111100B 11000000B 11000000B 11111100B 11000000B
11000000B 11000000B
二、如图2和图3所示,主板接收显示板上发送过来的数据帧,再解码还原成火力代码和显示板系统信息代码。
第一步对接收到的数据帧的两个相邻的0之间的1进行计数,该计数BIT1_JS为12,此值大于8,表明已经接受到数据帧起始位信息,通信开始,并对BIT1_JS清零。
第二步对接收到的数据帧的两个相邻的两个0之间的1进行计数,该计数BIT1_JS为6,此值在4-8之间,表明接收到的第0位为1,将接收缓存RECV_BUF的第0位置位,RECV_BUF=00000001B,并对BIT1_JS清零;
第三步对接收到的数据帧的两个相邻的两个0之间的1进行计数,该计数BIT1_JS为2,此值在1-3之间,表明接收到的第1位为0,将接收缓存RECV_BUF的第1位清零,RECV_BUF=00000001B,并对BIT1_JS清零;
第四步对接收到的数据帧的两个相邻的两个0之间的1进行计数,该计数BIT1_JS为2,此值在1-3之间,表明接收到的第2位为0,将接收缓存RECV_BUF的第2位清零,RECV_BUF=00000001B,并对BIT1_JS清零;
第五步对接收到的数据帧的两个相邻的两个0之间的1进行计数,该计数BIT1_JS为6,此值在4-8之间,表明接收到的第3位为1,将接收缓存RECV_BUF的第3位置位,RECV_BUF=00001001B,并对BIT1_JS清零;
第六步对接收到的数据帧的两个相邻的两个0之间的1进行计数,该计数BIT1_JS为2,此值在1-3之间,表明接收到的第4位为0,将接收缓存RECV_BUF的第4位清零,RECV_BUF=00001001B,并对BIT1_JS清零;
第七步对接收到的数据帧的两个相邻的两个0之间的1进行计数,该计数BIT1_JS为2,此值在1-3之间,表明接收到的第5位为0,将接收缓存RECV_BUF的第5位清零,RECV_BUF=00001001B,并对BIT1_JS清零;
第八步对接收到的数据帧的两个相邻的两个0之间的1进行计数,该计数BIT1_JS为2,此值在1-3之间,表明接收到的第6位为0,将接收缓存RECV_BUF的第6位清零,RECV_BUF=00001001B,并对BIT1_JS清零;
第九步对接收到的数据帧的两个相邻的两个0之间的1进行计数,该计数BIT1_JS为2,此值在1-3之间,表明接收到的第7位为0,将接收缓存RECV_BUF的第7位清零,RECV_BUF=00001001B,并对BIT1_JS清零。此时完成对火力代码信息的接收,将接收缓存RECV_BUF中的数据转存如byte1’,并对RECV_BUF清零;
第十步对接收到的数据帧的两个相邻的两个0之间的1进行计数,该计数BIT1_JS为2,此值在1-3之间,表明接收到的第0位为0,将接收缓存RECV_BUF的第0位清零,RECV_BUF=00000000B,并对BIT1_JS清零;
第十一步对接收到的数据帧的两个相邻的两个0之间的1进行计数,该计数BIT1_JS为6,此值在4-8之间,表明接收到的第1位为1,将接收缓存RECV_BUF的第1位置位,RECV_BUF=00000010B,并对BIT1_JS清零;
第十二步对接收到的数据帧的两个相邻的两个0之间的1进行计数,该计数BIT1_JS为2,此值在1-3之间,表明接收到的第2位为1,将接收缓存RECV_BUF的第3位清零,RECV_BUF=00000010B,并对BIT1_JS清零;
第十三步对接收到的数据帧的两个相邻的两个0之间的1进行计数,该计数BIT1_JS为2,此值在4-8之间,表明接收到的第3位为0,将接收缓存RECV_BUF的第3位清零,RECV_BUF=00000010B,并对BIT1_JS清零;
第十四步对接收到的数据帧的两个相邻的两个0之间的1进行计数,该计数BIT1_JS为6,此值在4-8之间,表明接收到的第4位为1,将接收缓存RECV_BUF的第4位置位,RECV_BUF=00010010B,并对BIT1_JS清零;
第十五步对接收到的数据帧的两个相邻的两个0之间的1进行计数,该计数BIT1_JS为2,此值在1-3之间,表明接收到的第5位为0,将接收缓存RECV_BUF的第5位清零,RECV_BUF=00010010B,并对BIT1_JS清零;
第十六步对接收到的数据帧的两个相邻的两个0之间的1进行计数,该计数BIT1_JS为2,此值在1-3之间,表明接收到的第6位为0,将接收缓存RECV_BUF的第6位清零,RECV_BUF=00010010B,并对BIT1_JS清零;
第十七步对接收到的数据帧的两个相邻的两个0之间的1进行计数,该计数BIT1_JS为2,此值在1-3之间,表明接收到的第7位为0,将接收缓存RECV_BUF的第7位清零,RECV_BUF=00010010B,并对BIT1_JS清零,此时完成对显示板系统信息的接收,将接收缓存RECV_BUF中的数据转存入byte2’,并对RECV_BUF清零,完成数据帧的接收;