图4-5 初始位置与机器人相对动作数据的关系
在通信中,需要上位机和下位机进行数据通信,而异步串行通信是一种常用的通信手段。通信协议也叫通信规程,是指通信双方格式上的约定。数据通信中,在收/发信器之间传送的是一组二进制位串,但它们在不同的位置可能有不同的含义,有的只是用于同步,有的代表通信双方的地址,有的是一些控制信息,有的则是通信中真正要传输的数据,还有的是为了差错控制而附加上去的冗余位。这些都需要在通信协议中事先约定好,以形成一种收/发双方共同遵守的格式。在逐位传送的串行通信中,接收端必须能识别每个二进制位从什么时候开始,这就是位定时。通信中一般以若干位表示一个字符,除了位定时外,还需要在接收端能识别每个字符从哪里开始,这就是字符定时。
异步串行通信时,每个字符作为一个独立的信息,可以随机出现在数据流中,即每个字符出现在数据流中相对时间是任意的。然而,一个字符一旦开始出现,字符中各位便以预先固定的时钟进行传送。因此异步通信方式的“异步”主要体现在字符与字符之间,而同一字符内部的位与位间是同步的。为确保异步通信的正确性,必须找到一种方法,使收发方在随机传送的字符内部实现同步。这种方法就是在字符格式中设置起始位和停止位,即在一个字符正式发送之前先发一个起始位,该字符结束时再发一个停止位。接收器检测到起始位便知道字符到达并开始接收字符,检测到停止位则知道字符传输已结束。由于这种通信协议是靠起始位和停止位来实现字符内部同步的,所以有时也称为起止式协议。
下位机与上位机PC之间的通信,首先规定好彼此之间的通信协议,才可以实现上位机软件与下位机软件的握手。软件握手最大的弊端是传输速度慢,因为每发送一帧或一个字节的数据都必须实现一次握手过程,这就影响到了传输的速度。选择软件握手是基于:软件握手接收数据的灵活性提高了。采用软件握手,其协议完全是由软件给出,因此可以灵活地加以改变,以适应不同的场合。
在进行数据通信的软件设计时必须解决好两个方面的问题:一是可靠性,二是速度,而可靠性是主要的。速度只能是在可靠的基础上实现。可靠快速传输的实现需要上下位机软件以及通信协议等各个环节及其间相互配合。完成硬件层的串行通信设计较为简单,然而在实际中,干扰是不可避免的,因而仅仅依靠硬件层的通信必然会出现问题。为了实现可靠通信,就必须应用较为可靠的基于帧的通信协议进行各种数据的传输。
对于串行通信而言,程序的可靠性是由协议保证的。通信的可靠性主要体现在所使用的通信协议上,主要有以下几个方面:
(1)通信之前先握手 通过握手的方式可以判断硬件是否正常,计算机是否处于等待状态。每次握手之间等待一段时间,以确保计算机状态。
(2)数据传输使用帧的方式 这样整帧数据不可能全部丢失。校验字将整帧信号进行校验,使误收的可能性很小。
(3)帧方式通过判断帧头起始字符来决定一帧的开始 这样就避免了部分数据进入到内部数据处理之中,这使数据处理错误的可能性减少,并可防止其他串行数据和要求数据混淆。(www.daowen.com)
(4)丢包一次也不影响程序运行 即使在强干扰环境下,对于单片机接收而言,也只是数据传输错误。
在机器人的舞蹈动作表演中,上位机要向机器人发送很多指令和参数,如:机器人的运行模式、动作参数、处理出错重传和多个机器人之间的动作配合等。同样的,机器人也有很多重要反馈参数,如机器人初始位置、完成动作、动作数据/指令发送错误等信息。制定合理的通信协议,使机器人的表演更具灵活性和交互性,以达到机器人表演的流畅,并且使机器人之间协调配合。机器人端的工作流程如图4-6所示。
通信协议可分为两种模式:
(1)同步模式 在此模式下,控制端实时地向机器人发送数据,机器人可以实时地根据指令进行表演,具有很好的灵活性和交互性。但是由于控制端与机器人的实时通信过程中没有很好的可靠性,并且不能够全面地掌握机器人的状态,所以动作的安全和质量就不容易得到很好的保证。
(2)发送模式 在此模式下,控制端提前向机器人发送数据存储在机器人的存储器中。执行动作时,机器人按照预先设定好的指令进行表演,具有很好的可靠性,并且保证机器人的动作质量。但是由于控制端与机器人没有很好的实时通信过程,所以灵活性和交互性就不能得到很好的保证。
控制端的工作流程如图4-7所示。
图4-6 机器人端的工作流程及数据交互
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。