论文部分内容阅读
摘 要:在现在的机电自动化产品中,控制系统大多是单片机。对于一些简单的机电传动系统或是机电一体化设备,往往采用的是一个单片机作为主控板,配合动力元件,如:舵机、直流电机、步进电机、伺服电机等。带动机械元件,如:连杆,丝杠,光轴、齿轮、凸轮等运动,通过这些机械元件运动的相互配合完成所期望的运动。而对于一些复杂的机电传动系统或是机电一体化设备,单一的单片机已经不能满足我们的需求,因为一个单片机上的资源,如I\O口,定时器,中断源的数目有限。那么就要采用两个或是多个单片机组成控制系统进行控制机械进行运动。采用两个以上的单片机不等不考虑的问题就是单片机之间的通信。在常规的方法中往往采用的是双机通信协议或是多机通讯协议。但是这些协议有些复杂,通过我们组的学习与实践种提出了一中简易双机通讯的思想,并且在试验和实践中得到了验证。
关键词:简易的,双机通讯
在单片机之间的通讯方式中的双机通讯,他门要遵循一些固定的思维方式。而我门组对于双机通讯方式都提出了一种简单的算法思想。
对于单片机双机通讯,它实际上是串口通讯,但是其中的关键就是单片机之间要共地。因为在单片机之间在传递复杂信息时,实际上是机器码之间的传递,而机器码值有0和1。0和1在单片机之间进行通讯时,实际上是通过电压等电信号的高低电平来表示,共地实质是让两个单片机之间共低电平。这样穿点的高低电平也就是机器码中的0和1才会相互识别否则就会出现以通信失败或是其他的一些问题。这在工程或是项目中是不允许的。对于串口通讯实际上用的是串口中断,通常的做法是通过标志位来引发串口中断。在中断中进行通讯,也就是单片机之间的交互信息。而单片机的串口通讯还要保证两个单片机的波特率保持一致。这样做的目的是为了保证单片机接收的数据和另一个单片机发送的数据一致。否则就会出现现接收的数据和发送的数据不一致,从而导致通信失败。对于波特率又要牵涉到定时器中断。所以单片机之间的双机通讯牵涉到的内容还是很多的。使用时需要设置很多的寄存器和特殊功能位的值。
对于单片机双机通讯我们组提出了一个简易的思想,不用设置那么多的寄存器和特殊功能位就可以进行单片机之间的双机通讯。当然我们的这个算法思想也是针对一些简单的工程或是项目。我们的想法是再进行单片机双机通讯时,多半是主机发送命令,从机接收命令去执行,在执行完毕时向主机传递相关信息表示该命令已经执行完毕。(这是简单工程常用的)。那么只要讓主机给从机一个信号,让从机检测到,并且知道要去执行怎洋的动作,当从机执行完相关动作,向主机发送一个信号,告诉主机命令已经执行完毕就可以了。这个信号在电控当中一般想到的是电信号。我们组选用的是电压信号。通过实验得知,当给单片机I/O口接高电平(5V,且电源与单片机共地)时,单片机可以检测到该值,并且这个值是1;当给单片机I/O口低电平是(0V,电源与单片机共地)时,单片机可以检测到该值,并检测到的结果是0。有了以上的基础,我们的算法思想就诞生了。
我们的简易双机通讯思想是:让两个单片机共地,两个单片机得所有普通的I/O口初始化的值全部为1,及为高电平。对于命令少或是要求的功能少的项目,我们可通过I/O口的高电平来进行信传递,主从机的单个I/O引脚之间用杜邦线连接。一个I/O引脚用来传递一种命令,一个I/O引脚用来表示从机的动作已经执行完毕。具体的执行方式是主机将其一个I/O的一位置低电平,与该I/O连接的从机I/O的相应位检测到低电平,说明从机已经检测到主机已经向我传递了一个命令,至于这是一个什么样的命令可以根据从机该位的名称来识别或是认知,并去执行相应的命令,在动作执行完毕的时候,从机将其一个I/O的一位置低电平,与之先连接的主机的I/O的相应位检测到,表示从机已经执行完一个命令,之后主机可以通过相同的方式向从机继续发送命令。当需要执行的命令很多的时候,由于单片机的位的数目是有限的,有可能不满足我们的需求,我们可以通过使用一个完整的I/O来进行单片机之间的信息交互。一个完整的I/O一共有八位,其值可以从00000000到11111111之间进行变化,共有256种可能,及可以传递256中信息。如果这个I/O是用来发送指令的,那么理论上可以传递256种命令。若是该I/O是用来向主机传递信息时,理论上可以向主机主机传递256种信息。对于一般的工程已经足够使用。倘若还是不能满足我们的需求,那么我们可以采用多个I/O来进行信息交流。例如采用两个I/O来传递信息时,理论上可以传递256*256种信息,及65536种信息。
当然我们这种简易的双机通讯只是适用于一些简单的要求,对于要求非常严谨的通信,简易适用常规的方法。
参考文献:
[1].曾增烽, 刘浩, 李雪. 基于51单片机的串行通信协议的实现[J]. 硅谷, 2009(13):26.
[2].梅小华. 提高51单片机TCP通信效率的软件方法[J]. 华侨大学学报(自然版), 2011, 32(2):235-237.
[3].杨永, 杜文龙. 51单片机接收GPS数据的算法与实现[J]. 现代电子技术, 2008, 31(22):50-52.
关键词:简易的,双机通讯
在单片机之间的通讯方式中的双机通讯,他门要遵循一些固定的思维方式。而我门组对于双机通讯方式都提出了一种简单的算法思想。
对于单片机双机通讯,它实际上是串口通讯,但是其中的关键就是单片机之间要共地。因为在单片机之间在传递复杂信息时,实际上是机器码之间的传递,而机器码值有0和1。0和1在单片机之间进行通讯时,实际上是通过电压等电信号的高低电平来表示,共地实质是让两个单片机之间共低电平。这样穿点的高低电平也就是机器码中的0和1才会相互识别否则就会出现以通信失败或是其他的一些问题。这在工程或是项目中是不允许的。对于串口通讯实际上用的是串口中断,通常的做法是通过标志位来引发串口中断。在中断中进行通讯,也就是单片机之间的交互信息。而单片机的串口通讯还要保证两个单片机的波特率保持一致。这样做的目的是为了保证单片机接收的数据和另一个单片机发送的数据一致。否则就会出现现接收的数据和发送的数据不一致,从而导致通信失败。对于波特率又要牵涉到定时器中断。所以单片机之间的双机通讯牵涉到的内容还是很多的。使用时需要设置很多的寄存器和特殊功能位的值。
对于单片机双机通讯我们组提出了一个简易的思想,不用设置那么多的寄存器和特殊功能位就可以进行单片机之间的双机通讯。当然我们的这个算法思想也是针对一些简单的工程或是项目。我们的想法是再进行单片机双机通讯时,多半是主机发送命令,从机接收命令去执行,在执行完毕时向主机传递相关信息表示该命令已经执行完毕。(这是简单工程常用的)。那么只要讓主机给从机一个信号,让从机检测到,并且知道要去执行怎洋的动作,当从机执行完相关动作,向主机发送一个信号,告诉主机命令已经执行完毕就可以了。这个信号在电控当中一般想到的是电信号。我们组选用的是电压信号。通过实验得知,当给单片机I/O口接高电平(5V,且电源与单片机共地)时,单片机可以检测到该值,并且这个值是1;当给单片机I/O口低电平是(0V,电源与单片机共地)时,单片机可以检测到该值,并检测到的结果是0。有了以上的基础,我们的算法思想就诞生了。
我们的简易双机通讯思想是:让两个单片机共地,两个单片机得所有普通的I/O口初始化的值全部为1,及为高电平。对于命令少或是要求的功能少的项目,我们可通过I/O口的高电平来进行信传递,主从机的单个I/O引脚之间用杜邦线连接。一个I/O引脚用来传递一种命令,一个I/O引脚用来表示从机的动作已经执行完毕。具体的执行方式是主机将其一个I/O的一位置低电平,与该I/O连接的从机I/O的相应位检测到低电平,说明从机已经检测到主机已经向我传递了一个命令,至于这是一个什么样的命令可以根据从机该位的名称来识别或是认知,并去执行相应的命令,在动作执行完毕的时候,从机将其一个I/O的一位置低电平,与之先连接的主机的I/O的相应位检测到,表示从机已经执行完一个命令,之后主机可以通过相同的方式向从机继续发送命令。当需要执行的命令很多的时候,由于单片机的位的数目是有限的,有可能不满足我们的需求,我们可以通过使用一个完整的I/O来进行单片机之间的信息交互。一个完整的I/O一共有八位,其值可以从00000000到11111111之间进行变化,共有256种可能,及可以传递256中信息。如果这个I/O是用来发送指令的,那么理论上可以传递256种命令。若是该I/O是用来向主机传递信息时,理论上可以向主机主机传递256种信息。对于一般的工程已经足够使用。倘若还是不能满足我们的需求,那么我们可以采用多个I/O来进行信息交流。例如采用两个I/O来传递信息时,理论上可以传递256*256种信息,及65536种信息。
当然我们这种简易的双机通讯只是适用于一些简单的要求,对于要求非常严谨的通信,简易适用常规的方法。
参考文献:
[1].曾增烽, 刘浩, 李雪. 基于51单片机的串行通信协议的实现[J]. 硅谷, 2009(13):26.
[2].梅小华. 提高51单片机TCP通信效率的软件方法[J]. 华侨大学学报(自然版), 2011, 32(2):235-237.
[3].杨永, 杜文龙. 51单片机接收GPS数据的算法与实现[J]. 现代电子技术, 2008, 31(22):50-52.