发明内容
本发明的目的是克服了上述现有技术中的缺点,提供一种适合数控***的工作环境,并能有效保证数控***通讯实时、高效、安全、稳定,且应用范围较为广泛的数控***中实现数据传输的通信方法。
为了实现上述的目的,本发明的数控***中实现数据传输的通信方法包括以下步骤:
(1)主机接收触发命令,并封装命令帧;
(2)主机向从机发送所述的命令帧;
(3)从机接收到所述的命令帧并存储;
(4)从机检验并执行所接收到的命令帧;
(5)从机根据检验结果向主机发送回应帧;
(6)主机根据接收到的回应帧判断通信是否成功,若是,则结束本次通信,若否,则返回步骤(2)。
该数控***中实现数据传输的通信方法中,所述的命令帧和回应帧的结构均顺序包括帧头、长度码、内容码和校验码。
该数控***中实现数据传输的通信方法中,所述的帧头、长度码、内容码和校验码的长度均为一个字节。
该数控***中实现数据传输的通信方法中,所述的校验码为循环冗余校验码。
该数控***中实现数据传输的通信方法中,所述的命令帧和回应帧还包括位于内容码和校验码之间的数据码。
该数控***中实现数据传输的通信方法中,所述的命令帧的数据码的长度为零到十个字节。
该数控***中实现数据传输的通信方法中,所述的回应帧的数据码包括I/O状态信息、坐标信息、参数信息或通讯结果信息。
该数控***中实现数据传输的通信方法中,所述的命令帧的内容码为命令码,所述的回应帧的内容码为回应码。
该数控***中实现数据传输的通信方法中,所述的命令帧还包括位于命令码之后的子命令码。
该数控***中实现数据传输的通信方法中,所述的回应帧还包括位于回应码之后的子回应码。
该数控***中实现数据传输的通信方法中,所述的步骤(1)具体包括以下步骤:
(11)主机接收到触发命令;
(12)主机将所接收到的触发命令封装为所述的命令帧;
(13)主机设置为禁止接收触发命令状态。
该数控***中实现数据传输的通信方法中,所述的步骤(2)具体包括以下步骤:
(21)主机向从机发送所述的命令帧;
(22)主机将命令帧发送次数n设置为n+1。
该数控***中实现数据传输的通信方法中,所述的步骤(22)之后还包括以下步骤:
(23)主机启动计时;
(24)在经过预设的时间前,若主机收到从机发送的回应帧,则进入步骤(6),若未收到,则返回步骤(21)。
该数控***中实现数据传输的通信方法中,所述的步骤(3)具体包括以下步骤:
(31)从机接收主机发送的命令帧;
(32)从机将命令帧接收次数m设置为m+1;
(33)从机将接收到的命令帧存储于接收缓冲区;
(34)从机设置为禁止接收命令帧状态。
该数控***中实现数据传输的通信方法中,所述的步骤(4)具体包括以下步骤:
(41)从机检验所接收到的命令帧的帧头是否正确,若是,则进入步骤(42),若否,则进入步骤(44);
(42)从机检验所接收到的命令帧的长度码是否正确,若是,则进入步骤(43),若否,则进入步骤(44);
(43)从机根据所述的命令帧的校验码检验所接收到的命令帧是否正确,若是,则进入步骤(47),若否,则进入步骤(44);
(44)从机判断命令帧接收次数m是否为3,若是,则进入步骤(45),若否,则进入步骤(46);
(45)从机发出通信错误信息,将命令帧接收次数m设置为0,并进入步骤(46);
(46)生成通信错误回应码,并进入步骤(5);
(47)从机执行所述的命令帧的命令;
(48)从机将命令帧接收次数m设置为0;
(49)从机生成通信正确回应码,并进入步骤(5)。
该数控***中实现数据传输的通信方法中,所述的步骤(47)具体包括以下步骤:
(47a)从机执行所述的命令帧中命令码的相关命令;
(47b)从机执行所述的命令帧中子命令码的相关命令。
该数控***中实现数据传输的通信方法中,所述的步骤(5)具体包括以下步骤:
(51)从机向主机发送所生成的回应码;
(52)从机设置为允许接收命令帧状态。
该数控***中实现数据传输的通信方法中,所述的步骤(6)具体包括以下步骤:
(61)主机判断所接收到的回应码,若为通信正确回应码,则进入步骤(64),若为通信错误回应码,则进入步骤(62);
(62)主机判断命令帧发送次数n是否为3,若是,则进入步骤(63),若否,则返回步骤(2);
(63)主机发出通信错误信息,并将命令帧发送次数n设置为0;
(64)主机设置为允许接收触发命令状态,并清零命令帧发送次数n,结束本次通信。
采用了该发明的数控***中实现数据传输的通信方法,其由主机发起通信,在主机接收触发命令,并封装命令帧,并向从机发送所述的命令帧后,从机接收命令帧并检验,然后向主机发送回应帧,该方法可灵活应用于现有的数控***中的各种通讯接口上,且该方法中数据通过帧编码结构传输,能够有效保证数控***通讯的实时性、高效性、安全性和稳定性,且本发明的数控***中实现数据传输的通信方法应用方式简便,应用范围较为广泛。
具体实施方式
为了能够更清楚地理解本发明的技术内容,特举以下实施例详细说明。
请参阅图1所示,为本发明的数控***中实现数据传输的通信方法的步骤流程图。
在一种实施方式中,所述的数控***中实现数据传输的通信方法包括以下步骤:
(1)主机接收触发命令,并封装命令帧;
(2)主机向从机发送所述的命令帧;
(3)从机接收到所述的命令帧并存储;
(4)从机检验并执行所接收到的命令帧;
(5)从机根据检验结果向主机发送回应帧;
(6)主机根据接收到的回应帧判断通信是否成功,若是,则结束本次通信,若否,则返回步骤(2)。
在该实施方式中,所述的命令帧和回应帧的结构均顺序包括帧头、长度码、内容码和校验码。
在一种较优选的实施方式中,所述的帧头、长度码、内容码和校验码的长度均为一个字节。所述的校验码为循环冗余校验码。
在另一种较优选的实施方式中,所述的命令帧和回应帧还包括位于内容码和校验码之间的数据码。所述的命令帧的数据码的长度为零到十个字节。所述的回应帧的数据码包括I/O状态信息、坐标信息、参数信息或通讯结果信息。
在又一种较优选的实施方式中,所述的命令帧的内容码为命令码,所述的回应帧的内容码为回应码。
在一种进一步优选的实施方式中,所述的命令帧还包括位于命令码之后的子命令码。所述的回应帧还包括位于回应码之后的子回应码。
在一种优选的实施方式中,本发明的数控***中实现数据传输的通信方法的步骤(1)具体包括以下步骤:
(11)主机接收到触发命令;
(12)主机将所接收到的触发命令封装为所述的命令帧;
(13)主机设置为禁止接收触发命令状态,
所述的步骤(2)具体包括以下步骤:
(21)主机向从机发送所述的命令帧;
(22)主机将命令帧发送次数n设置为n+1,
所述的步骤(3)具体包括以下步骤:
(31)从机接收主机发送的命令帧;
(32)从机将命令帧接收次数m设置为m+1;
(33)从机将接收到的命令帧存储于接收缓冲区;
(34)从机设置为禁止接收命令帧状态,
所述的步骤(4)具体包括以下步骤:
(41)从机检验所接收到的命令帧的帧头是否正确,若是,则进入步骤(42),若否,则进入步骤(44);
(42)从机检验所接收到的命令帧的长度码是否正确,若是,则进入步骤(43),若否,则进入步骤(44);
(43)从机根据所述的命令帧的校验码检验所接收到的命令帧是否正确,若是,则进入步骤(47),若否,则进入步骤(44);
(44)从机判断命令帧接收次数m是否为3,若是,则进入步骤(45),若否,则进入步骤(46);
(45)从机发出通信错误信息,将命令帧接收次数m设置为0,并进入步骤(46);
(46)生成通信错误回应码,并进入步骤(5);
(47)从机执行所述的命令帧的命令;
(48)从机将命令帧接收次数m设置为0;
(49)从机生成通信正确回应码,并进入步骤(5),
所述的步骤(5)具体包括以下步骤:
(51)从机向主机发送所生成的回应码;
(52)从机设置为允许接收命令帧状态,
所述的步骤(6)具体包括以下步骤:
(61)主机判断所接收到的回应码,若为通信正确回应码,则进入步骤(64),若为通信错误回应码,则进入步骤(62);
(62)主机判断命令帧发送次数n是否为3,若是,则进入步骤(63),若否,则返回步骤(2);
(63)主机发出通信错误信息,并将命令帧发送次数n设置为0;
(64)主机设置为允许接收触发命令状态,并清零命令帧发送次数n,结束本次通信。
在一种更优选的实施方式中,在所述的步骤(2)中,于步骤(22)之后还包括以下步骤:
(23)主机启动计时;
(24)在经过预设的时间前,若主机收到从机发送的回应帧,则进入步骤(6),若未收到,则返回步骤(21)。
在另一种更优选的实施方式中,所述的步骤(4)中的步骤(47)具体包括以下步骤:
(47a)从机执行所述的命令帧中命令码的相关命令;
(47b)从机执行所述的命令帧中子命令码的相关命令。
在实际应用中,本发明的数控***中实现数据传输的通信方法的主要设计目的在于提供一种工业数控设备间可靠的通信方法,其分为主机发送命令帧和从机发送回应帧。
如图2所示,主机与从机间的每一次通信会话均由主机发起,主机先发出命令给从机,触发从机中断,在从机中断处理任务中对命令帧解析,然后反馈给主机相应数据信息。
主机组装并发送命令帧的步骤,如图3所示,主要包括以下内容:主机命令触发使能清零;发送当前命令;等待发送完毕信号(包括超时处理);处理从机回应;主机命令触发使能置1;命令处理完毕。主机接收指令使能清零时,主机不允许去接收其他命令。直到主机接收指令使能置1,主机才能接收新的命令。在批量文件的传输过程中,从机对传输的每一帧数据进行CRC校验(循环冗余校验),并将校验结果发回主机。
若主机接收到的回应是校验正确,进行下一帧数据的传输;若主机接收到的回应是校验错误,主机将上次发出的帧重新传输一次。
一帧数据主机最多可以重复传输3次,若重复传输次数小于3次时收到了校验正确的回应,则进行下一帧数据的传输;若该帧数据重复传输了3次,仍然收到的是校验错误的回应,则立即停止当前文件的传输,并给出提示。
对于一帧数据从机最多进行3次接收。若3次以内正确接收到当前帧,重复接收计数清零,准备接收下一帧数据。若3次都接收错误,从机将第三次校验结果发送给主机以后,立即停止对当前文件的接收。
如图4所示,在收到一帧命令数据后,从机将做以下处理:
1、保存接收数据到接收缓冲区中;
2、禁止接收使能。
3、判断命令头是否正确,如果不是则给主机发送命令接收错误的回应帧,然后进入步骤8,如果是则进入步骤4。
4、判断接收数据长度是否等于命令帧中第二字节的长度,如果不等则给主机发送命令接收错误的回应帧,然后进入步骤8,如果相等就进入步骤5。
5、对命令帧中有效的数据进行CRC校验,如果没有通过则给主机发送命令接收错误的回应帧,然后进入步骤8,如果通过校验,需要给主机发出回应帧,然后进入步骤6。
6、根据命令不同种类去设置相应***参数然后进入步骤7。
7、根据子命令的不同种类去设置相应***参数然后进入步骤8。
8、使能接收。
本发明中主机发送的命令帧和回应帧的基本格式如下:
帧头 |
长度 |
内容码 |
子码 |
数据(可无) |
校验(CRC8) |
其中,帧头:标志每一帧的开始,长度为一个字节,根据需要可定义个有意义的数据,长度为一个字节。
长度:标志该命令帧总体有效信息长度,长度为一个字节。
内容码:用户自己定义的帧命令,和子码一起使用。长度为一个字节。
子码:用户自己定义的帧子命令,配合内容码来扩展内容码的种类。长度为一个字节。
数据:帧命令所附的参数数据或大批量传输中的文件数据。由于一帧信息长度影响传输时间,因此数据长度要根据实际应用而自由设定。
校验:对校验位以前的所有字节进行CRC8校验,取值为校验和的低8位。校验占据命令帧中的最后一字节。
在实际应用中,主机发给从机的命令帧格式如下:
0xFA |
Lenth |
命令 |
子命令 |
数据(可无) |
校验(CRC8) |
其中,0xFA:帧头,代表有正常数据传输,为一帧的开始,占据命令帧第一字节,长度为一个字节。
Lenth:Lenth代表当前帧的长度,占据命令帧第二字节,长度为1个字节。
命令:主机发送给从机的命令,占据命令帧第三字节,长度为1个字节。
子命令:配合“命令”一起来表征所传输的命令种类信息。
校验(CRC8):采用CRC8校验,对校验之前的所有字节进行CRC8校验,取校验和的低8位,其长度为一个字节。
数据:主机一条命令所附加的参数数据和批量文件传输中的有效数据,由于数据过长会影响每一次帧传输的持续时间,因次每帧信息能携带的信息量应根据实际器件而定,这里长度N为:0字节≤N≤10字节。
从机发送给主机的回应帧的基本格式如下:
0xFA |
Lenth |
回应码 |
子码 |
回应数据(可无) |
校验(CRC8) |
其中,0xFA:回应帧头,长度为一个字节。
Lenth:从机回应主机帧的长度,Lenth占命令帧一个字节。
回应码:从机给主机的回应结果,如正确,错误,回应内容种类等,可根据需要定义,占命令帧一个字节。
子码:配合回应码使用,表示回应给主机详细信息,占命令帧一个字节。
校验(CRC8):采用CRC8校验,对校验(CRC8)之前的所有字节进行CRC校验。
回应数据:主机要求从机回馈的状态数据等,例如I/O状态、坐标、参数,通讯结果等参数信息。
以下举例表示多种情况下,命令帧与回应帧的具体格式。
在加工文件数据开始传输,时主机发送的命令帧的格式如下:
当加工文件数据处于传输帧格式时的命令帧格式如下:
当加工文件数据传输结束时的命令帧格式如下:
0xFA |
Lenth<=12 |
0xAE |
数据 |
校验(CRC8) |
按上述帧格式传输数据,其中帧头(0xFA)、Lenth、命令、校验(CRC)是每帧必有的信息,而在多数的命令传输格式中并不包含数据信息,其格式如下:
例如对刀命令格式如下:
其中,0xFA为帧头,0xAD为对力命令,0xB2为CRC校验和。
在从机接收的命令校验出错时,从机向主机发送的回应校验出错的回应帧的格式如下:
在上述帧格式中,0xFA为帧头,0x00为回应内容长度,此处为0,0x80为从机回应给主机校验出错回应码,校验(CRC)=0x70。
如果从机接收的命令通过检验校验,且回应内容为空,则从机发送给主机的回应帧的具体格式如下:
如果从机接收的命令通过检验校验,且回应内容长度为20,回应内容为从机的X,Y,Z,A1,A2坐标,则回应格式为:
0xFA |
20 |
0x82 |
X,Y,Z,A1,A2坐标 |
校验(CRC) |
因此,在本发明的通信方法中,每一帧的帧头(0xFA)、Lenth、内容、校验(CRC8)是必须有的,帧中的数据则根据用户需要自行设计。由于在传输中为有效数据增加了必要纠错信息,包括帧头判断、长度判断和CRC校验,加之主机所发的每条命令帧,从机都会反馈回应帧来表征此次的传输的结果,从而有效增加了数控***通讯的可靠性。
采用了该发明的数控***中实现数据传输的通信方法,其由主机发起通信,在主机接收触发命令,并封装命令帧,并向从机发送所述的命令帧后,从机接收命令帧并检验,然后向主机发送回应帧,该方法可灵活应用于现有的数控***中的各种通讯接口上,且该方法中数据通过帧编码结构传输,能够有效保证数控***通讯的实时性、高效性、安全性和稳定性,且本发明的数控***中实现数据传输的通信方法应用方式简便,应用范围较为广泛。
在此说明书中,本发明已参照其特定的实施例作了描述。但是,很显然仍可以作出各种修改和变换而不背离本发明的精神和范围。因此,说明书和附图应被认为是说明性的而非限制性的。