基于MODBUS协议的DSP通讯程序设计.docx
- 文档编号:5157915
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:29
- 大小:1.65MB
基于MODBUS协议的DSP通讯程序设计.docx
《基于MODBUS协议的DSP通讯程序设计.docx》由会员分享,可在线阅读,更多相关《基于MODBUS协议的DSP通讯程序设计.docx(29页珍藏版)》请在冰豆网上搜索。
基于MODBUS协议的DSP通讯程序设计
前言
Modbus协议是应用于电子控制器上的一种通用语言。
通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。
它已经成为一通用工业标准。
有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。
此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。
它描述了控制器请求访问其它设备的过程,如果回应来自其它设备的请求,以及怎样侦测错误并记录。
它制定了消息域格局和内容的公共格式。
当在Modbus网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。
如果需要回应,控制器将生成反馈信息并用Modbus协议发出。
在其它网络上,包含了Modbus协议的消息转换为在此网络上使用的帧或包结构。
这种转换也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法。
DSP(digitalsignalprocessor)是一种独特的微处理器,是以数字信号来处理大量信息的器件。
其工作原理是接收模拟信号,转换为0或1的数字信号,再对数字信号进行修改、删除、强化,并在其他系统芯片中把数字数据解译回模拟数据或实际环境格式。
它不仅具有可编程性,而且其实时运行速度可达每秒数以千万条复杂指令程序,源源超过通用微处理器,是数字化电子世界中日益重要的电脑芯片。
它的强大数据处理能力和高运行速度,是最值得称道的两大特色。
DSP既是DigitalSignalProcessing的缩写(数字信号处理的理论和方法)或者是DigitalSignalProcessor(用于数字信号处理的可编程微处理器)的缩写。
我们所说的DSP技术,则一般指将通用的或专用的DSP处理器用于完成数字信号处理的方法和技术。
数字信号处理器DSP (DigitalSignalProcessor)是在模拟信号变换成数字信号以后进行高速实时处理的专用处理器,其处理速度比最快的CPU还快10-50倍。
在当今的数字化时代背景下,DSP已成为通信、计算机、消费类电子产品等领域的基础器件,被誉为信息社会革命的旗手。
业内人士预言,DSP将是未来集成电路中发展最快的电子产品,并成为电子产品更新换代的决定因素,它将彻底变革人们的工作、学习和生活方式。
触摸屏作为一种最新的电脑输入设备,它是目前最简单、方便、自然的一种人机交互方式。
它赋予了多媒体以崭新的面貌,是极富吸引力的全新多媒体交互设备。
随着使用电脑作为信息来源的与日俱增,触摸屏以其易于使用、坚固耐用、反应速度快、节省
空间等优点,使得系统设计师们越来越多的感到使用触摸屏的确具有相当大的优越性。
而触摸屏控制器的主要作用是从触摸点检测装置上接收触摸信息,并将它转换成触点坐标,再送给CPU,它同时能接收CPU发来的命令并加以执行。
1.DSP及其介绍
1.1DSP的发展历程、应用领域及技术展望
随着现代电力电子技术计算机控制技术的发展尤其是电机控制专用数字信号处理器(DSP)的出现为提高伺服系统的性能提供有利的技术基础。
具有强大运算和处理能力,集成度很高,具有数据传输速度快可并行处理多条指令集成了专用的处理单元和一些特殊指令以及快速的时钟周期等独特优点,因此,在现代高性能的伺服系统中,DSP已经取代了以微控制器,成为控制核心,在伺服驱动与控制系统中得到了广泛的应用[1]。
1.1.1DSP的发展历程
DSP发展历程大致分为三个阶段:
70年代理论先行,80年代产品普及,90年代突飞猛进。
随着大规模集成电路技术的发展,1982年世界上诞生了首枚DSP芯片。
这种DSP器件采用微米工艺NMOS技术制作,虽功耗和尺寸稍大,但运算速度却比MPU快了几十倍,尤其在语音合成和编码解码器中得到了广泛应用。
DSP芯片的问世是个里程碑,它标志着DSP应用系统由大型系统向小型化迈进了一大步。
至80年代中期,随着CMOS技术的进步与发展,第二代基于CMOS工艺的DSP芯片应运而生,其存储容量和运算速度都到成倍提高,成为语音处理、图像硬件处理技术的基础。
80年代后期,第三代DSP芯片问世,运算速度进一步提高,其应用于范围逐步扩大到通信、计算机领域。
90年代DSP发展最快,相继出现了第四代和第五代DSP器件。
现在的DSP属于第五代产品,它与第四代相比,系统集成度更高,将DSP芯核及外围元件综合集成在单一芯片上。
这种集成度极高的DSP芯片不仅在通信、计算机领域大显身手,而且逐渐渗透到人们日常消费领域。
经过20多年的发展,DSP产品的应用已扩大到人们的学习、工作和生活的各个方面,并逐渐成为电子产品更新换代的决定因素。
目前,对DSP爆炸性需求的时代已经来临,前景十分可观。
1.1.2DSP的应用领域
DSP应用广泛,其主要应用市场为3C(Communication、Computer、Consumer-通信、计算机、消费类)领域,合占整个市场需求的90%。
例如:
数字蜂窝电话、Modem、PC机、消费类电子产品。
在电力控制方面,可用于各种频率变换器;不间断电源内部控制;可用于整流,可用于功率因数补偿等。
1.1.3DSP技术展望
系统级集成DSP是潮流
缩小DSP芯片尺寸始终是DSP的技术发展方向。
当前的DSP多数基于RISC(精简指令集计算)结构,这种结构的优点是尺寸小、功耗低、性能高。
各DSP厂商纷纷采用新工艺,改进DSP芯核,并将几个DSP芯核、MPU芯核、专用处理单元、外围电路单元、存储单元统统集成在一个芯片上,成为DSP系统级集成电路。
可编程DSP是主导产品
可编程DSP给生产厂商提供了很大的灵活性。
生产厂商可在同一个DSP平台上开发出各种不同型号的系列产品,以满足不同用户的需求。
同时,可编程DSP也为广大用户提供了易于升级的良好途径。
人们已经发现,许多微控制器能做的事情,使用可编程DSP将做得更好更便宜。
例如冰箱、洗衣机,这些原来装有微控制器的家电如今已换成可编程DSP来进行大功率电机控制。
2.MotorolaDSP56807系列的特点
DSP56F807系列DSP的简介:
DSP56807内核的指令集面向DSP和控制领域的应用均进行了优化。
DSP56807内核为双哈佛结构,共有3个并行的执行单元,分别为逻辑运算单元(ALU)、地址产生单元(AGU)和程序控制单元(PCU)。
每个指令周期这3个执行单元共可完成6次操作。
在一个指令周期内,DSP内核即可执行一次16位×16位的乘法累加操作(MAC)。
另外,DSP内核还提供了硬件循环操作。
芯片内核最高可工作于80MHz,在此工作频率下,指令执行速度可达40MIPS。
内核的这种高效结构和高速运算能力,为DSP56F80系列DSP在运算复杂、实时性较强的控制领域中的应用提供了保证[1]。
2.1DSP56807系列的内核结构
2.1.1算术逻辑单元ALU
图2-1DSP56800内核框图[2]
Figure2-1DSP56800kernelblockdiagram[2]
ALU内部有3个16位的数据输入寄存器X0、Y0、Y1,其中Y0和Y1可以看成1个32位的寄存器,2个32位的累加器A和B。
A和B又可看成是2个16位的寄存器A0,A1,B0,B1。
A2和B2是2个4位寄存器可以将A,B两个寄存器扩展成36位。
A、B寄存器是当作36位还是32位来使用,由用户在应用程序中设定,即对程序控制器中的运行模式寄存器OMR中的CC位编程。
算术逻辑单元中的乘/加器MAC在1个周期内可以以并行方式完成乘、加运算。
ALU中的累加移位器与循环移位器用于算术和逻辑左移、右移。
1个极值限制器用于处理包含扩展寄存器的36位或32位操作,使在执行从36位到32位或从20位到16位的传输、运算指令时不至于出现错误。
乘/加器MAC可完成又符号或无符号16位乘以16位的分数运算或16位乘以16位的有符号整数运算,32位的乘积可以加到36位的A或B寄存器中去,或者加到16位的X0、Y1、Y0寄存器中去[4]。
算术逻辑单元中还有1个极值限制器。
使用极限制器做饱和处理是DSP中处理数据溢出的一种手段。
2.1.2地址产生单元AGU
AGU中主要有4个通用地址寄存器R0,R1,R2,R3,一个堆栈指针SP,一个地址偏移量寄存器M01。
AGU中的运算器包括两部分,一部分完成简单的加1减1运算;另一部分实现复杂的、存储块大小可以由用户定义的存储空间的运算,目的是使AGU能在1个指令周期内同时刷新2个地址,或者是在1个周期内完成存储器和寄存器之间的地址信息传输。
AGU的主要功能:
1、给数据空间地址总线XAB1提供地址,并能在指令执行前或指令执行后实现自动加减1的地址操作。
2、同时给XAB1和XAB2提供2个不同的地址,并能在指令执行后自动完成刷新。
AGU中的R0、R1、R2、R3和SP都可以当作通用寄存器用,不同的是只有R0和R1可以与M01合作完成循环存储域的运算;而R3是在存储器的并行处理时,用作读/写片内存储器的。
复位后要首先对堆栈指针SP做初始化。
由于DSP并行处理和流水线结构的特点,当使用MOVE指令和位操作指令改变上述积存器,包括改变M01积存器的值,紧接着执行下一条指令时,上述积存器的新值还不能起作用,要到再下面一条指令时才能使用该新值。
2.1.3程序控制器PCU
PCU包括计数器PC、状态寄存器MR/CCR、运行模式寄存器OMR以及专门用于循环指令的循环地址寄存器LA、循环次数寄存器LC和硬件堆栈HWS。
2.1.4DSP56807存储空间的分配
分为程序空间和数据空间,各有64K字,字长16位,128个中断向量占据程序空间低端,从$0到$7F。
外设的I/O短寻址空间占据数据空间的高端,从$FFC0到$FFFF共64个。
数据空间的实际字节数为(64K-64)*2B。
DSP56800的程序空间加数据空间的总和为128K字。
这128K又分为片内存储器和可扩展的片外存储器。
各种型号的56800系列DSP都可以工作在单片方式下,不需要外部扩展ROM和RAM;而外部扩展的RAM对程序的调试是有用的。
在调试。
程序时,将程序下载到外部RAM中比下载到内部Flash中要快的多。
程序空间又分为程序ROM(Flash)和程序RAM。
各种型号的56800系列DSP片内还有2KB启动(boot)Flash,可以用于加电复位时的系统初始化与系统启动;DSP的启动有多种方式,可从片内Flash启动,也可以从片外Flash启动,也可以从I/O口下载一段程序到片内程序RAM中启动。
综上所述,56800系列DSP片内有:
程序Flash、程序RAM、数据Flash、数据RAM、启动Flash几种。
2.1.5并行处理的实现
DSP56800内核的内部地址总线有7条:
1、程序空间地址总线PAB,用于读取程序
2、程序空间数据总线PDB,用于读写程序空间的数据
3、数据地址总线XAB1,用于读/写数据空间的存储器
4、数据地址总线XAB2,只与片内存储器相连,对外部存储器不起作用,可以与XAB1同时工作,实现对存储器的并行操作
5、内部全局数据总线CGDB,用于读写内部寄存器
6、外设全局数据总线PGDB,用于以I/O短寻址方式读写外设
7、外部数据总线XDB2
这7条总线可以分别在程序空间和数据空间并行的工作。
虽然每一条指令都要经过读取指令、指令译码、执行指令的过程、但由于采用了流水线结构,读指令、译码、执行看起来好像在一个时钟周期内就完成了。
大大提高了DSP内核的运行效率。
2.2脉宽调制模块
PWM模块主要用于电机控制。
为了控制直流电动机,需要半导体功率器件进行驱动。
大多数直流电动机驱动采用了开关型驱动方式,其中又以定频脉宽调制(PWM)为常见。
其优越性在于驱动电子设备的简单性和计算机接口的容易性。
PWM信号是一个周期固定而脉冲宽度可变的脉冲序列。
在每个固定长度的周期中有一个脉冲出现,该固定长度的周期称为PWM周期,它的倒数称为PWM频率。
通常,在一个电机控制中,通过功率器件将所需的电流和能量传送到电机线圈绕组中来控制电机的速度和转矩,而PWM信号即是用来控制功率器件的开启和关闭时间的。
MotorolaDSP56F800系列每个模块有6个输出引脚,称6通道,从PWM0——PWM5。
这6通道的输出可以被配置成1对、2对、3对互补通道对或6个独立的通道方式。
在互补操作方式下,允许可编程的死时间插入,通过电流传感的输出波形扭曲矫正和独立的顶、底输出引脚极性控制,支持无级变频。
边对齐和中心对齐的脉宽产生方式,支持占空比从0%到100%。
PWM模块可以支持大多数电机类型:
交流感应电机ACIM、无刷直流电机BLDC和有刷直流电机BDC、开关磁阻电机SRM和变磁阻电机VRM以及步进电机[8]。
图2-2PWM模块内部结构
Figure2-2PWMmoduleblockdiagram
2.2.1PWM脉宽调制模块的主要特性
3对互补的PWM信号或6个独立的PWM信号在互补通道模式下:
1、可编程死时间的插入2、可通过电流状态输出后软件独立的顶/底通道脉宽纠正;独立的顶部和底部通道极性控制;边对齐和中心对齐的脉宽产生方式;15位精度;半周期参数重载能力;从1到16的整数重载频率;单独的软件控制PWM输出;可编程的出错保护;极性控制;PWM引脚有20mA电流吸入能力;带有寄存器写保护功能。
2.2.2PWM脉冲调制模块的主要功能描述
预分频
为了得到较低频率的PWM输出,模块内带有预分频电路,它将IPbus时钟频率除以1、2、4、8后作为PWM的时钟频率。
PWM控制寄存器中的PRSC0和PRSC1PWM参数重载周期开始时,PWM发生器才能够使用新频率。
除了COP看门狗定时器之外,所有的外围设备都是以IPbus时钟频率运行。
IPbus时钟频率是芯片工作频率除以2得到的。
芯片最大的运行频率是80MHz,与此对应的最大IPbus时钟频率为40MHz。
PWM发生器用一个15位的增量/减量计数器来产生输出信号,同时有几个选项可以选择。
对齐方式:
通过配置寄存器FMCFG中的EDGE位设置来决定是边沿对齐还是中心对齐
图2-3中心对齐方式下的PWM输出
Figure2-3outsetofPWM
图2-4边沿对齐方式下的PWM输出
Figure2-4outsetofPWM
周期:
通过对PWM计数模寄存器PWMCM设置来决定。
实际上还受预分频因子和对齐方式的影响。
在中心对齐方式下:
PWM周期=(PWMCM)
(PWM时钟周期)
2。
在边沿对齐方式下:
PWM周期=(PWMCM)
(PWM时钟周期)。
脉宽:
由PWM模块的计数值寄存器PWMVAL决定。
占空比:
PWM模块的计数值寄存器PWMVAL/PWM计数模寄存器PWMCM。
2.2.3独立通道模式和互补通道模式
在PWM配置寄存器PMCFG中,向INDEP××位写入逻辑1就将相应两路PWM输出配置为独立的PWM通道。
每一路PWM输出都有它自己的PWM计数值寄存器PWMVAL,对它的操作独立于对其他独立通道相应寄存器的操作。
在PWM配置寄存器PMCFG中,向INDEP××位写入逻辑0就将相应两路PWM输出配置为互补PWM通道。
2.2.4死时间产生器
在互补通道模式下,每一对互补的PWM通道可以用来驱动顶/底三极管,理想的情况是一对互补通道对的两路信号应该是完全相反的。
,当顶部PWM通道为有效电平是,底部PWM通道应该是无效电平,反过来也是。
但是为了防止电机驱动电路的DC电源线瞬间短路,击穿三极管,所以必须保证顶三极管和底三极管的导通在时间上没有重叠。
然而由于三极管的特性,它的关断时间大于导通时间,所以如果两个三极管的触发信号同时收到,那么就会存在一个短时间的2个三极管同时导通过程,从而击穿三极管。
所以要在向三极管送出信号前插入死时间是非常有必要的,用来保护三极管不被击穿。
2.3相位检测器
相对于Motorola的单片机来说DSP5680系列中的相位检测器是一个新增的模块,可用来进行相位检测。
这在电机控制中非常有用;特别时在直流无刷电机的控制中相位检测器用的较多。
在直流无刷电机的控制中相位检测器应用很多,DSP56F807中有两个相位检测器模块。
一般来说相位检测器0和相位检测器1一般和四定时器A和B共享引脚。
每个相位检测器有4个输入引脚,分别为PHASEB,PHASEB,INDEX和HOME。
2.3.1相位检测器的引脚
对于DSP56F807有2个相位检测器输入引脚为PHASEA0,PHASEB0,INDEX0,HOME0,PHASEA1PHASEB1INDEX1,HOME1
A相输入引脚PHASEA
输入引脚PHASEA可以接到一个两相转轴的积分编码输出中的任意一相在相位检测中它一般和PHASEB输入引脚一起使用,来检测相位增量和增量的方向。
在轴正向旋转是,PHASEA是前相,而在轴负相转动时,PHASEA是后相。
PHASEA可以作为一个单独的引脚使用。
B相输入引脚PHASEB引脚
输入引脚PHASEB可以接到一个两相转轴的积分编码输出中的任意一相在相位检测中它一般和PHASEA输入引脚一起使用,来检测相位增量和增量的方向。
在轴正向旋转是,PHASEB是后相,而在轴负相转动时,PHASEB是前相。
PHASEB可以作为一个单独的引脚使用。
输入引脚INDEX
该引脚通常接积分编码器的INDEX脉冲输出端。
这个脉冲可以复位相位检测器的位置计数器和脉冲累加器。
它还可以改变转角的计数状态,改变的方向,即计数增加还是减小,将根据PHASEA和PHASEB输入信号计算得到。
转换输入引脚HOME
HOME输入引脚可以用于相位检测器和定时器模块。
这个输入可以作为初始化位置计数器的触发信号。
通常这个信号与电机或其它机械装置上的传感器相连接,来检测它是否达到了预定的HOME位置。
一个典型的积分编码器有3个输出:
PHASEA信号;PHASEB信号;INDEX脉冲信号。
如果PHASEA信号领先于PHASEB信号,那么运动方向为正向;如果PHASEA信号落后于PHASEB信号,那么运动方向为负向。
可以通过对相位变化做积分来处理得到的位置信息,也可以通过对他们做微分来得到速度信息。
DSP56F807的相位检测器通过硬件上的设计来实现这些功能。
位置计数器
32位的位置计数器用来对每个计数脉冲进行加/减计数,而这些计数脉冲是由PHASEA和PHASEB信号的差值产生的。
这个计数器作为积分器使用,其计数值与位置成正比,计数值的正负由加计数(Count-up)和减计数(Count-down)信号决定。
计数器可以通过软件触发事件、INDEX信号变化、HOME信号变化三种方法被初始化为某一预定值。
INDEX和HOME信号可以通过软件编程向处理器请求中断。
当读取位置计数器值时,不管是UPOS还是LPOS,位置计数器、位置差计数器和转角计数器的快照将被放入各自的锁存寄存器,计数值的方向将由Count-up和Count-down信号决定。
位置差计数器
16位的位置差计数器用于保存两次读取位置计数器的数值。
并对计数脉冲进行加/减计数。
这个计数器作为一个微分器使用,其数值正比于从上次读取位置计数器开始的位置差。
当读取位置计数器时,计数器的差值将保存到位置差锁存器POSDH中,然后清除位置差计数器。
位置差锁存寄存器
这个寄存器存放的是读取位置计数器的位置差计数器的数值。
当读取位置计数器时,位置差的数值将保存到位置差锁存器POSDH中,然后清除位置差计数器。
2.3.2锁存寄存器和初始化寄存器
锁存寄存器和位置计数器、位置差计数器、转角计数器有关。
当读取计数寄存器时,其中的内容将会写到相应的锁存寄存器里面,通过这种快照可以保持系统位置和速度信息的一致性。
计数器和锁存寄存器是可读写的,但是,当向某个锁存寄存器写入一个值,然后读取另一个计数器时,要注意这时的结果:
锁存寄存器中的内容将会被计数器中的内容覆盖。
位置计数器是32位的,它可以通过两次16位的访问来初始化。
系统也提供两个寄存器:
高16位初始化寄存器UIR和低16位的初始化寄存器LIR。
想这两个寄存器写入相应的值,然后,再将相位检测器控制寄存器DECCR的SWIP位写入1,这时,位置计数器就可以初始化为对应值了。
另外,对相位检测器控制寄存器的XIP或HIP位进行相应的设置,可以允许通过HOME和INDEX信号初始化相位检测器。
2.4串行通信接口SCI
DSP56807系列串行通信接口SCI(SerialCommunicationInterface)是一个通用的异步接收器/发送器UART(UniversalAsynchronousReceiver/Transmitter)类型的异步通信接口,通过RS-232、RS-485等串行通信协议与主机系统(如PC、终端)通信
[3]。
SCI的特性如下:
1.全双工和单线工作模式。
2.标准不归零NRA格式。
3.13位的波特率选择。
4.可编程选择8位或9位数据格式。
5.独立功能的SCI发送器和接收器。
6.可编程选择发送器和接收器的极性。
7.两种接收器唤醒方法空闲线和地址线标志。
8.带有8个标志的中断驱动操作:
发送器空、发送器空闲、接收器满、接收器空闲、噪声错误、帧错误、极性错误。
9.接收器帧错误检测。
10.硬件极性检测。
图2-5SCI结构图
Figure2-5SCIblockdiagram
2.4.1SCI功能
标准不归零NRZ(NonReturntoZero)数据格式
标准不归零NRZ格式(1个起始位,8个或9个数据位和1个停止位),最常用的数据格式是8位。
NRZ数据格式的基本特点如下:
1.高电平为逻辑1,低电平为逻辑0;
2.发送/接收空闲数据时TXD、RXD线为高电平;
3.发送/接收数据串的第一位是起始位(逻辑0);
4.数据的LSB被首先发送/接收;
5.数据串的最后一位(第10位或第11位)是停止位(逻辑1);
6.当第10位或第11位为低则中断(如果允许中断)。
SCI系统完成发送数据的所有细节工作包括附加起始位和停止位以符合串行通信格式,发送器有一个2B的起始位,并通过采样接收数据。
接收串行数据并变换成并行数据的所有工作均由SCI完成,不需要CPU的干预接收到数据后,CPU简单地从数据接收寄存器读取数据即可。
数据格式通过对SCR控制寄存器该寄存器的M位的设置来选择,即,当M=1,1个起始位,9个数据位,1个停止位;当M=0,1个起始位,8个数据位,1个停止位。
此外,M位也可控制空闲码和中止码的长度。
2.4.2SCI寄存器
DSP56807系列DSP提供了4个16位的寄存器来控制和监视SCI的工作状态。
每个寄存器的读写数据必须以字为单位。
这些寄存器的地址为基地址加偏移地址之和。
SCI波特率寄存器SCIBR
SCIBR用于选择SCI系统的波特率。
波特率的计算公式为:
SCI波特率=
(2-1)
SBR是分频因子,由第0位到第12位共13位二进制数的大小决定。
SCI控制寄存器SCICR
SCICR是可读/写寄存器。
TE:
发送器使能位(位3)。
1=发送器使能;0=发送器禁止,TXD高阻抗状态。
RE:
发送器使能位(位2)。
1=发送器使能:
0=发送器禁止[1]。
SCI状态寄存器SCISR
SCISR是只读寄存器。
TDRE:
发送数据寄存器空标志(位15)。
1=内容已发送给移位寄存器,发送数据寄存器空;0=内容未发送给移位
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 MODBUS 协议 DSP 通讯 程序设计