基于MODBUS协议的DSP通讯程序设计.doc_第1页
基于MODBUS协议的DSP通讯程序设计.doc_第2页
基于MODBUS协议的DSP通讯程序设计.doc_第3页
基于MODBUS协议的DSP通讯程序设计.doc_第4页
基于MODBUS协议的DSP通讯程序设计.doc_第5页
免费预览已结束,剩余30页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

前言Modbus 协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了控制器请求访问其它设备的过程,如果回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。当在Modbus网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成反馈信息并用Modbus协议发出。在其它网络上,包含了Modbus协议的消息转换为在此网络上使用的帧或包结构。这种转换也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法。DSP(digital signal processor)是一种独特的微处理器,是以数字信号来处理大量信息的器件。其工作原理是接收模拟信号,转换为0或1的数字信号,再对数字信号进行修改、删除、强化,并在其他系统芯片中把数字数据解译回模拟数据或实际环境格式。它不仅具有可编程性,而且其实时运行速度可达每秒数以千万条复杂指令程序,源源超过通用微处理器,是数字化电子世界中日益重要的电脑芯片。它的强大数据处理能力和高运行速度,是最值得称道的两大特色。DSP既是Digital Signal Processing的缩写(数字信号处理的理论和方法)或者是Digital Signal Processor(用于数字信号处理的可编程微处理器)的缩写。我们所说的DSP技术,则一般指将通用的或专用的DSP处理器用于完成数字信号处理的方法和技术。数字信号处理器DSP(Digital Signal Processor)是在模拟信号变换成数字信号以后进行高速实时处理的专用处理器,其处理速度比最快的CPU还快1050倍。在当今的数字化时代背景下,DSP已成为通信、计算机、消费类电子产品等领域的基础器件,被誉为信息社会革命的旗手。业内人士预言,DSP将是未来集成电路中发展最快的电子产品,并成为电子产品更新换代的决定因素,它将彻底变革人们的工作、学习和生活方式。触摸屏作为一种最新的电脑输入设备,它是目前最简单、方便、自然的一种人机交互方式。它赋予了多媒体以崭新的面貌,是极富吸引力的全新多媒体交互设备。随着使用电脑作为信息来源的与日俱增,触摸屏以其易于使用、坚固耐用、反应速度快、节省空间等优点,使得系统设计师们越来越多的感到使用触摸屏的确具有相当大的优越性。而触摸屏控制器的主要作用是从触摸点检测装置上接收触摸信息,并将它转换成触点坐标,再送给CPU,它同时能接收CPU发来的命令并加以执行。 1.DSP及其介绍1.1 DSP的发展历程 、应用领域及技术展望随着现代电力电子技术计算机控制技术的发展尤其是电机控制专用数字信号处理器(DSP)的出现为提高伺服系统的性能提供有利的技术基础。具有强大运算和处理能力,集成度很高,具有数据传输速度快 可并行处理多条指令 集成了专用的处理单元和一些特殊指令以及快速的时钟周期等独特优点,因此,在现代高性能的伺服系统中,DSP已经取代了以微控制器,成为控制核心,在伺服驱动与控制系统中得到了广泛的应用1。1.1.1 DSP的发展历程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.2 DSP的应用领域 DSP应用广泛,其主要应用市场为3C(Communication、Computer、Consumer-通信、计算机、消费类)领域,合占整个市场需求的90%。 例如:数字蜂窝电话 、 Modem 、 PC机 、 消费类电子产品。 在电力控制方面,可用于各种频率变换器;不间断电源内部控制;可用于整流,可用于功率因数补偿等。1.1.3 DSP技术展望系统级集成DSP是潮流 缩小DSP芯片尺寸始终是DSP的技术发展方向。当前的DSP多数基于RISC( 精简指令集计算)结构,这种结构的优点是尺寸小、功耗低、性能高。各DSP厂商纷纷采用新工艺,改进DSP芯核,并将几个DSP芯核、MPU芯核、专用处理单元、外围电路单元、存储单元统统集成在一个芯片上,成为DSP系统级集成电路。可编程DSP是主导产品 可编程DSP给生产厂商提供了很大的灵活性。生产厂商可在同一个DSP平台上开发出各种不同型号的系列产品,以满足不同用户的需求。同时,可编程DSP也为广大用户提供了易于升级的良好途径。人们已经发现,许多微控制器能做的事情,使用可编程DSP将做得更好更便宜。例如冰箱、洗衣机,这些原来装有微控制器的家电如今已换成可编程DSP来进行大功率电机控制。 2.Motorola DSP 56807系列的特点DSP56F807系列DSP的简介:DSP56807内核的指令集面向DSP和控制领域的应用均进行了优化。DSP56807内核为双哈佛结构,共有3个并行的执行单元,分别为逻辑运算单元(ALU)、地址产生单元(AGU)和程序控制单元(PCU)。每个指令周期这3个执行单元共可完成6次操作。在一个指令周期内,DSP内核即可执行一次16位16位的乘法累加操作(MAC)。另外,DSP内核还提供了硬件循环操作。芯片内核最高可工作于80MHz,在此工作频率下,指令执行速度可达40MIPS。内核的这种高效结构和高速运算能力,为DSP56F80系列DSP在运算复杂、实时性较强的控制领域中的应用提供了保证1。2.1 DSP 56807 系列的内核结构2.1.1 算术逻辑单元ALU图2-1 DSP56800内核框图2Figure 2-1 DSP56800 kernel block diagram2ALU内部有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 地址产生单元AGUAGU中主要有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 程序控制器PCUPCU包括计数器PC、状态寄存器MR/CCR、运行模式寄存器OMR以及专门用于循环指令的循环地址寄存器LA、循环次数寄存器LC和硬件堆栈HWS。2.1.4 DSP56807存储空间的分配分为程序空间和数据空间,各有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信号即是用来控制功率器件的开启和关闭时间的。Motorola DSP56F800系列每个模块有6个输出引脚,称6通道,从PWM0PWM5。这6通道的输出可以被配置成1对、2对、3对互补通道对或6个独立的通道方式。在互补操作方式下,允许可编程的死时间插入,通过电流传感的输出波形扭曲矫正和独立的顶、底输出引脚极性控制,支持无级变频。边对齐和中心对齐的脉宽产生方式,支持占空比从0%到100%。PWM模块可以支持大多数电机类型:交流感应电机ACIM、无刷直流电机BLDC和有刷直流电机BDC、开关磁阻电机SRM和变磁阻电机VRM以及步进电机8。图2-2 PWM模块内部结构Figure 2-2 PWM module block diagram2.2.1 PWM脉宽调制模块的主要特性3对互补的PWM信号或6个独立的PWM信号在互补通道模式下:1、可编程死时间的插入2、可通过电流状态输出后软件独立的顶/底通道脉宽纠正;独立的顶部和底部通道极性控制;边对齐和中心对齐的脉宽产生方式;15位精度;半周期参数重载能力;从1到16的整数重载频率;单独的软件控制PWM输出;可编程的出错保护;极性控制;PWM引脚有20mA电流吸入能力;带有寄存器写保护功能。2.2.2 PWM脉冲调制模块的主要功能描述预分频为了得到较低频率的PWM输出,模块内带有预分频电路,它将IP bus时钟频率除以1、2、4、8后作为PWM的时钟频率。PWM控制寄存器中的PRSC0和PRSC1 PWM参数重载周期开始时,PWM发生器才能够使用新频率。除了COP看门狗定时器之外,所有的外围 设备都是以IP bus时钟频率运行。IPbus时钟频率是芯片工作频率除以2得到的。芯片最大的运行频率是80MHz,与此对应的最大IP bus时钟频率为40MHz。PWM发生器用一个15位的增量/减量计数器来产生输出信号,同时有几个选项可以选择。对齐方式:通过配置寄存器FMCFG中的EDGE位设置来决定是边沿对齐还是中心对齐图2-3 中心对齐方式下的PWM输出Figure2-3 outset of PWM图2-4 边沿对齐方式下的PWM输出 Figure2-4 outset of PWM周期:通过对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,HOME1A相输入引脚PHASEA输入引脚PHASEA可以接到一个两相转轴的积分编码输出中的任意一相在相位检测中它一般和PHASEB输入引脚一起使用,来检测相位增量和增量的方向。在轴正向旋转是,PHASEA是前相,而在轴负相转动时,PHASEA是后相。PHASEA可以作为一个单独的引脚使用。B相输入引脚PHASEB引脚输入引脚PHASEB可以接到一个两相转轴的积分编码输出中的任意一相在相位检测中它一般和PHASEA输入引脚一起使用,来检测相位增量和增量的方向。在轴正向旋转是,PHASEB是后相,而在轴负相转动时,PHASEB是前相。PHASEB可以作为一个单独的引脚使用。输入引脚INDEX该引脚通常接积分编码器的INDEX脉冲输出端。这个脉冲可以复位相位检测器的位置计数器和脉冲累加器。它还可以改变转角的计数状态,改变的方向,即计数增加还是减小,将根据PHASEA和PHASEB输入信号计算得到。转换输入引脚HOMEHOME输入引脚可以用于相位检测器和定时器模块。这个输入可以作为初始化位置计数器的触发信号。通常这个信号与电机或其它机械装置上的传感器相连接,来检测它是否达到了预定的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 串行通信接口SCIDSP56807系列串行通信接口SCI(Serial Communication Interface)是一个通用的异步接收器/发送器UART(Universal Asynchronous Receiver/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-5 SCI结构图Figure2-5 SCI block diagram2.4.1 SCI 功能标准不归零NRZ(Non Return to Zero)数据格式标准不归零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.2 SCI寄存器DSP56807系列DSP提供了4个16位的寄存器来控制和监视SCI的工作状态。每个寄存器的读写数据必须以字为单位。这些寄存器的地址为基地址加偏移地址之和。SCI波特率寄存器SCIBRSCIBR用于选择SCI系统的波特率。波特率的计算公式为:SCI波特率 = (2-1)SBR是分频因子,由第0位到第12位共13位二进制数的大小决定。SCI控制寄存器SCICRSCICR是可读/写寄存器。TE:发送器使能位(位3)。1=发送器使能;0=发送器禁止,TXD高阻抗状态。RE:发送器使能位(位2)。1=发送器使能:0=发送器禁止1。SCI状态寄存器SCISRSCISR是只读寄存器。TDRE:发送数据寄存器空标志(位15)。1=内容已发送给移位寄存器,发送数据寄存器空;0=内容未发送给移位寄存器1。 3.MODBUS协议3.1 MODBUS协议简介 MODBUS 协议是 MODICON公司于 1978年发明的一个用于PLC和编程器之间通讯的协议。MODBUS 协议将通信参与者规定为“主站”(MASTER)和“从站”(SLAVE),主站可向从站发送通信请求,每个从站都有自己的地址编号,数量最多可达247个。它通过多达24种的总线命令实现主站和从站之间的信息交换,具有简单、高效、可靠、和容易实现等优点。从功能上看,它可以认为是一种现场总线,不同厂商生产的控制设备通过 MODBUS 接口可以相互连成工业网络,进行整个系统的集中监控,因而得到了广泛的应用。1980 年,应众多设备制造商的要求,MODICON 公司将该协议完全公开,成为了“事实上的工业标准”。MODBUS 协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一个控制器请求访问其它设备的过程,如何回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。当在 MODBUS 网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成反馈信息并用 MODBUS协议发出。在其它网络上,包含了 MODBUS 协议的消息转换为在此网络上使用的帧或包结构。这种转换也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法 (如:MODBUS TCP/IP)。标准的ModBus使用RS-232C串行接口.因此ModBus通信以帧为单位.帧的数据结构与RS-232C帧相同。ModBus一次通信其发送和接收的数据包山若干帧组成.协议正是定义了这些帧的意义.控制器只要按照协议解释其接收和发送的帧数据。就能与在同一网络中采用同样协议的控制器实现通信。3.2 MODBUS协议中的两种传输方式的帧格式3.2.1 ASCII和RTU两种传输方式 ModBus协议有两种通信模式:ASC-II模式和RTU(远程终端单元)模式。ASC-II模式是将一个字节分为两个ASCII字符发送.而RTU模式以十六进制传送数据一个字节就是一帧.因而数据传送的效率高于ASC II模式.大多数工业控制器采用RTU模式。在同一个网络中.无论主机还是从机。都必须采用相同的通信模式及相同的传输速率。日前,ModBus协议常用的传输速率为1200 bit/s19200 bit/s。ASC II 和RTU 两种传输方式2MODBUS协议有 ASC II 和RTU(远程终端单元)两种传输方式,在 ASC II 方式中,消息中的每个8Bit字节需2个ASCII字符,其优点是允许字符的传输间隔达到1 秒而不产生错误;在RTU方式,每个8Bit字节包含两个4Bit 的十六进制字符,其优点是,在同样的波特率下,可比 ASC II 方式传送更多的数据,但每个消息必须以连续的流传输,约95%的MODBUS总线采用RTU方式。MODBUS 的 RTU方式采用 CRC-16的冗余校验方式,规定通信字符串的最后两个字节用于传递循环冗余校验数据,其方法是将整个字符串(不包括最后两个字节)的所有字节按规定的方式进行位移并进行XOB(异或)计算,接收方在收到该字符串时按同样的方式进行计算,并将结果同收到的循环冗余校验的两个字节进行比较,如果一致则认为通信正确,如果不一致,则认为通信有误,从站将发送CRC错误应答7。MODBUS的CRC 方式的帧格式:1个起始位8个数据位,最小的效位先发送1个奇数校验位,无校验则无1个停止位或2个停止位(无校验时)两种传输模式中(ASCII 或RTU),传输设备以将 MODBUS消息转为有起点和终点的帧,这就允许接收的设备在消息起始处开始工作,读地址分配信息,判断哪一个设备被选中(广播方式则传给所有设备),判知何时信息已完成。使用RTU模式,消息发送至少要以3.5个字符时间的停顿间隔开始(如下图的T1-T2-T3-T4所示)。在网络波特率多样的情况下,字符时间是最容易实现的。传输的第一个域是设备地址,可以使用的传输字符是十六进制的 09,AF。网络设备不断侦测网络总线,包括停顿间隔时间内。当第一个域(地址域)接收到,每个设备都行解码以判断是否发往自己的。在最后一个传输字符之后,一个至少3.5个字符时间的停顿标定了消息的结束。一个新的消息可在此停顿后开始。3.2.2 一个完整的消息帧格式所包含内容整个消息帧必须作为一连续的流传输。如果在帧完成之前有超过3.5个字符时间的停顿时间,接收设备将刷新不完整的消息并假定下一字节是一个新消息的地址域。同样地,如果一个新消息在小于3.5个字符时间内接着前个消息开始,接收的设备将认为它是前一消息的延续。这两种情形都将导致错误,因为在最后的CRC域的值不可能是正确的。起始位设备地址T1-T2-T3-T48Bit设备地址8Bit数据N个8BitCRC校验16Bit结束符T1-T2-T3-T4图3-1 消息帧格式图Figure3-1 News frame form chart消息帧的地址域包含两个字符(8Bits),可能的从设备地址是十进制的0.247。主设备通过将要联络的从设备的地址放入消息中的地址域来选通从设备。当从设备发送回应消息时,它把自己的地址放入回应的地址域中,以便主设备知道是哪一个设备做出回应。地址0是用作广播地址,以使所有的从设备都能认识。当MODBUS协议用于更高水准的网络,广播可能不允许或以其它方式代替。消息帧中的功能代码域包含了两个字符(8Bits),可能的代码范围是十进制的1.255。有些控制器适用所有的代码,有些控制器仪适用部分代码,取决于控制器采用的代码完整与否。当消息从主设备发往从设备时,功能代码域将告之从设备需要执行哪些行为。例如去读取输入的开关状态,读一组寄存器的数据内容,读从设备的诊断状态,允许调入、记录、校验在从设备中的程序等。当从设备回应时,它使用功能代码域来指示是正常回应(无误)还是有某种错误发生(称作异议回应)。对正常回应,从设备仪回应相应的功能代码。对异议回应,从设备返回一等同于正常代码的代码,但最高位为逻辑1(+80)。数据域是由两个十六进制数集合构成的,范围00. . . FF。根据网络传输模式,这可以是由一对ASCII字符组成或由RTU字符组成。主设备发给从设备消息的数据域包含了附加的信急:如寄存器地址,要处理项的数目,域中实际数据字节等。从设备必须执行由功能代码所定义的请求。如果没有错误发生,从设备返回的数据域包含请求的数据。如果有错误发生,此域包含一异议代码,主设备应用程序可以用来判断采取下一步行动。标准的MODBUS网络有两种错误检测方法。错误检测域的内容视所选的检测方法而定。当选用RTU模式作字符帧,错误检测域包含一16Bits值(用两个8位的字符来实现)。错误检测域的内容是通过对消息内容进行循环冗长检测方法得出的。CRC域附加在消息的最后,添加时先是低字节然后是高字节。故CRC的高位字节是发送消息的最后一个字节。当消息在标准的MODBUS系列网络传输时,每个字符或字节以如下方式发送(从左到右):最低有效位最高有效位。3.3 控制器与PLC之间的通信控制器与PLC之间通信的内容包括主站对从站的读取和写入,MODBUS规定,只有主站具有主动权,从站只能被动的响应,包括回答出错信息。3.3.1 查询查询消息中的功能代码告之被选中的从设备要执行何种功能。数据段包含了从设备要执行功能的任何附加信息。数据段必须包含要告之从设备的信息:从何寄存器开始读或者写及要读的寄存器数量或写的数值。错误检测域为从设备提供了一种验证消息内容是否正确的方法9。例如:功能代码03(十进制)是要求对从设备保持寄存器并返回它们的内容,功能代码16(十进制)是对从设备输出寄存器写值(允许采用广播方式)。3.3.2 回应如果从设备产生一个正常的回应,在回应消息中的功能代码是在查询消息中的功能代码的回应。数据段包括了从设备收集的数据:如寄存器值或状态。如果有错误发生,功能代码将被修改以用于指出回应消息是错误的(功能代码+80H),同时数据段包含了描述此错误信息的代码(1-从站不能识别主站的请求,2-请求帧中的从站地址不存在,3-主站的请求不允许,4-从站不能完成请求)。错误检测域允许主设备确认消息内容是否正确。 例如:主站读取从站N个寄存器(MODBUS功能03):主站命令:从站地址+命令字+欲读寄存器首地址+欲读字个数+CRC16 1 byte 1 byte 2 byte 2 byte 2 byte 01 03 00 04 00 02 85CA从站回送:从站地址+命令字+读到的字长度+寄存器内容+CRC1610 1 byte 1 byte 1 byte n byte 2 byte01 03 04 42 c8 00 00 6f b5 3.4 DSP机上实现MODBUS通信的方法标准的MODBUS物理层采用了RS-232窜行通信标准,远距离或多点通讯时可以考虑用RS-422或者RS-485来代替。MODBUS通信的网络机构为主从模式,因此在工业领域采用半双工的RS-485较多。在DSP机上可以通过使用RS-485插卡或者RS-232/RS-485转换模块,可实现多点通讯。采用带有120(特性阻抗的屏蔽双绞线,确认在通讯电缆的两边都有终端匹配电阻),并将屏蔽小心接触。从站数限制为32个以下。实现通信的过程中要对从站地址、寄存器地址、及数据量等进行判定。若是与DSP或者其他标准的通信设备进行连接时,需要考虑实际的结构,即寄存器地址围,如0X-表示输出线圈、1X-表示离散量输入、3X-表示出入寄存器、4X-表示保持寄存器。注意,寄存器地址是从1开始的,如40001代表0号保持寄存器地址11。MODBUS协议规定每个消息不超过256个字节。在WINDOWS下MODBUS通信可采用MSCOMM控件来实现。以从站为例,图3-2是实现通信的流程图。在DSP机上实现MODBUS协议的关键是CRC校验值的算法,有两种方法,根据CRC校验的定义公式进行计算,或在程序中建立CRC校验值表查找。因为对于固定字节CRC校验计算的多项式因子,其CRC值是固定的,因而,采用查表法可以简化了计算过程、节省应答时间、提高通信效率12。图3-2 实现通讯流程图Figure3-2 Realization communication flow chart4.RS-232C(串行通讯的介绍)4.1 串行通信简介所谓的“串行通信”是指设备间使用二根数据信号线(可能还需要控制线)一位一位地进行传输,每一位数据都占据一个固定的时间长度,这种通信方式使用的数据线少,成本低13。一般来说,逻辑1(MARK)=-3V-15V,逻辑0(SPACE)=+315V,每帧数据(7 位或8 位)都包含一个高电压的起始位,一个低电压的结束位和一个校验位,而数据的传输波特率一般分为9600Bit/S,19200Bit/S,38400Bit/S 或115200Bit/S。串行数据在传输过程中,由于干扰可能引起信息的出错,例如,传输字符E,其各位为:0100,0101=45H,由于干扰,可能使位变为1,这种情况,我们称为出现了“误码”。我们把如何发现传输中的错误,叫“检错”。发现错误后,如何消除错误,叫“纠错”。最简单的检错方法是“奇偶校验”,即在传送字符的各位之外,再传送1 位奇/偶校验位。可采用奇校验或偶校验。奇校验:所有传送的数位(含字符的各数位和校验位)中,“1”的个数为奇数。偶校验:所有传送的数位(含字符的各数位和校验位)中,“1”的个数为偶数。采用奇偶校验,1位误码能检出,2位及2位以上误码不能检出,同时,它不能纠错.在发现错误后,只能要求重发。但由于其实现简单,仍得到了广泛使用。双方通讯的前提就是必须首先必须对通讯串口设置相同的数据位,起始位,结束位,波特率和奇偶校验14。对eView MT500 及大部份PLC而言只支持非同步传输模式,我们所提到的也都是基于非同步传输模式。4.2 RS-232-C的介绍RS-232-C总线是一种串行外部总线,专门用于数据终端岌备DTE和数据通信设备DCE之间的串行通信,是1969年由美国电子工业协会(EIA)从CCITT远程通信标准中导出的一个标准。当初制定该标准的目的是为了使不同生产厂家生产的设备能够达到接插的“兼容性”。 RS-232-C总线分别定义了机械特性标准和电气特性标准。 4.2.1 RS-232-C总线的机械特性RS-232-c总线的接口连接器采用DB-25插头和插座其中阳性插头(DB-25-P)与DTE相连,阴性插座(DB-25-s)与DcE相连。DB-25连接器的25个插针(引线)及定义分别见图41和表41图4-1 DB-25引脚Figure4-1 DB-25 PinRS-232-c 25个引脚只定义了22个。通常使用的RS-232-c接口信号只有9根引脚,即为表中用“*” 标出的9根引线,即常用的9针串口引线其插头插座在RS-232-c的机械特性中都有规定。其中,最基本的三根线是发送数据线2、接收数据线3和信号地线7。一般近距离的CRT终端、计算机之间的通信使用这三条线就足够了。其余信号线通常在应用MODEM(调制解调器)或通信控制器进行远距离通信时才使用。常用的9根引脚分为两类:一类是基本的数据传送引脚,另一类是用于调制解调器(MODEM)的控制和反映其状态的引脚。基本数据传送引脚包括:TXD、RXD和GND(2、3、7引脚)。TXD为数据发送引脚,数据发送时,发送数据由该引脚发出,在不传送数据时异步串行通信接口维持该引脚为逻辑“1”。RXD为数据接收引脚,来自通信线的数据信息由该引脚进入接收设备。GND为信号地该引脚为所有电路提供参考电位。MODEM控制和状态引脚分为两组,一组为DTR和RTS负责从计算机通过RS-232C接口送给MODEM,其中DTR数据终端准备好引脚,用于通知MODEM计算机准备好了,可以通信了;RTS请求发送引脚,用于通知MODEM计算机请求发送数据。另一组为DSR、CTS、CD和R1,负责从MODEM通过RS-232c接口送给计算机的状态信息。其中,DSR为数据通信设备准备好引脚用于通知计算机,MODEM准各好了;CTS为允许发送引脚,用于通知计算机MODEM可以接收数据了;CD为数据载体检测引脚,用于通知计算机MODEM与电话线另一端的MODEM已经建立了联系;RI为振铃信号指示引脚,用于通知计算机,有来自电话网的信号。表4-1 RS-232C总线引脚分配Table 4-1 RS-232C Main line pin assignment引脚功能名称方向1保护地2*发送数据TXDDCE3*接受数据RXDDTE4*请求发送RTSDCE5*允许发送CTSDTE6*数据通讯设备准备好DSRDTE7*信号地(公共回线)GNDDTE8*数据载体检测CDDTE9保留10保留11保留12次信道载波检测13次信道清除发送14次信道发送数据15发送时钟TXCDCE16次信道接受数据17接受时钟RXCDTE18保留19次信道发送请求20*数据终端准备好DTRDCE21信号质量检测22*振铃指示RIDTE23信号速率检测24发送时钟TXCDCE25保留4.2.2 RS-232C总线的电气特性RS-232C标准的电气性能主要体现在电气连接方式、电气参数及通信速率等方面。电气连接方式TTL电平TTL电平接收器 EIA电平信号地 发送器图4-2 RS-232电气连接方式Figure4-2 RS-232 Main line pin assignmentEIA的RS-232C及CCITTI(国际电话电报咨询委员会)的V.28建议采用所示的电气连接方式。这种连接方式的主要特点是:非平衡的连接方式,即每条信号线只有一条连线,信道噪声会叠加在信号上并全部反映到接收器中,因而会加大通信误码率,但却最大限度降低了通信成本。 采用点对点通信只用一对收发设备完成通信工作,其驱动器负载为37K公用地线所有信号线共用一条信号地线,在短距离通信时有效地抑制了噪声干扰;但不同信号线间会通过公用地线产生干扰。电气参数电气连接方式决定了其电气参数。电气参数主要有:(1)引线信号状态RS-232C标准引线状态必须是以下三种之一,即sPAc/MARK(空号/传号)、或ON/OFF(通/断)、或逻辑Q/逻辑1。(2)引线逻辑电平在RS-232C标准中。规定用-3-15V袭示逻辑l;用+3+15V表示逻辑0。可以看出,从逻辑1到逻辑0之间有-3+3V(6V)的过渡区,这说明即使信号线受到干扰。其信号逻辑也很难发生变化。此外,RS-232C标准还规定发送端与接收端之间必须保证2v的噪声容限。噪声容限是指发送端必须达到的逻辑电平绝对值下限与接收端识别输入所需绝对值下限之差。由于RS-232C接收绝对值下限为|-3|v=3v,噪声容限为2v,则发送端下限绝对值必须为3V+2V=5V。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论