基于单片机的调制解调器及其实现HART协议信号传输的方法
技术领域
本发明涉及工业控制现场的数据通讯,特别是涉及基于单片机的调制解调器及其实现HART协议信号传输的方法,它适用于工业控制中现场总线(Fieldbus)领域的嵌入式系统。
背景技术
HART通讯协议(Highway Addressable Remote Transducer)是Rosemount公司于1986年提出的一项过渡性标准。它是在4~20mA模拟信号上叠加了幅值为0.5mA的FSK(Frequency Shift Keying,频移键控)数字信号,1200Hz代表逻辑“1”,2200Hz代表逻辑“0”,如图1所示,其数据传送速率为1200bps。这样,既可进行4~20mA模拟信号的传输,又可进行数字通讯。作为一个开放性协议,经过十多年的发展,HART协议已成为智能仪表事实上的工业标准。
迄今为止,HART协议调制解调器通常一直是以专用电路(ASIC)或可编程数字信号处理器(DSP)来实现。在典型的应用中,一个微处理器和一个ASIC芯片或一个DSP会以主从方式有效地合作。在这种合作工作中,ASIC芯片或DSP芯片实现的硬件HART调制解调器会将环路的HART信号解调成为微处理器认识的“0”或“1”逻辑信号;同时,这种硬件MODEM又会将微处理器所发送的“0”或“1”逻辑信号转换成HART协议信号。因此,微处理器仅仅起到“控制器”的作用,承担控制的功能;而ASIC芯片或DSP芯片则基本起到一个专用计算和调制解调引擎的作用去实现HART协议信号和“0”、“1”逻辑信号之间的转换。图2是硬件MODEM的典型应用框图。
上述典型安排要在“实时”前后关系(context)中运行。就是说:微处理器和ASIC调制解调芯片(或DSP)两者都要是专用的,以分别实现控制器和调制解调引擎功能。实时前后关系提供了确定性行为,而这确定性行为又是调制解调前后关系中所希望的,因为调制解调器数据流是以连续的并以固定速率到达的。由于这种确定性,决定了在该种调制解调方式下,作为调制解调引擎的ASIC调制解调芯片(或DSP)必须具有强大的运算能力。
虽然上述结构安排已成为了主流,被市场广泛接受,但ASIC芯片(或DSP)和其他的专用硬件涉及的部件费用比较昂贵。再者,它们增加了相关联的制造,供给和维护方面的费用,并影响整个系统的可靠性;同时,由于市场的不确定性,会导致硬件调制解调器的应用受市场供应的制约,给产品开发造成负面影响。
发明内容
本发明是为了解决现有HART信号调制解调器的缺陷而提出的一种基于通用低功耗单片微控制器的软件程序来实现专用ASIC芯片(或DSP)的HART信号调制解调功能的现场总线嵌入式系统的基于单片机的调制解调器及其实现HART协议信号传输的方法,该调制解调器运算能力强,操作可靠,应用范围广。
本发明采取的技术措施是:
基于单片机的HART协议信号调制解调器,其特征在于,包括一单片机,以及设置在该单片机内的HART信号解调单元、HART信号调制单元、以及一I/O输出端口寄存器、异步串行接收模块、HART协议信号链路解析和命令处理器;所述的HART信号解调单元接收来自HART信号传媒介质传输来的信号,经解调后送到I/O输出端口寄存器,通过该I/O输出端口寄存器传送到异步串行接收模块,该异步串行接收模块接收经过解调的HART通讯帧,再送到HART协议信号链路解析和命令处理器进行处理,获得逻辑“0”、“1”信号送到信号调制单元进行信号调制,经信号调制后的信号再通过HART信号传媒介质传输出去。
上述基于单片机的HART协议信号调制解调器,其中,所述的HART信号解调单元包括边沿检测器、保持寄存器输入选择开关、脉宽保持寄存器、脉宽保持寄存器值移入移位寄存器选择开关、滤波移位寄存器、加减法器、累加值比较器、累加值最大限幅器、滤波累加器;
所述的边沿检测器用于检测CPU管脚上的方波的脉宽,并将该脉宽送入保持寄存器输入选择开关;
所述的保持寄存器输入选择开关用于判断边沿检测器送入的脉宽是否小于最小脉宽,然后将一个适当的脉宽值送入脉宽保持寄存器;
所述的脉宽保持寄存器将该值送入16位的滤波累加器和脉宽保持值移入移位寄存器选择开关;
所述的脉宽保持寄存值移入移位寄存器选择开关用于移入与不移入的选择;
所述的滤波移位寄存器用于脉宽值的移入移出与寄存;
所述的滤波累加器用于脉宽值的累加,并将该累加值送到累加值比较器;
所述的累加值比较器用于对滤波累加值大小的比较,从而决定是输“1”还是“0”;
所述的累加值最大限幅器用于对当前的滤波累加值进行最大限幅,并控制和决定滤波累加器的值是否被更新,以及控制脉宽保持寄存器值移入移位寄存器选择开关决定脉宽保持寄存器的采样值是否移入滤波移位寄存器。
上述基于单片机的HART协议信号调制解调器,其中,所述的HART信号调制单元包括相位累加值选择器、加法器、相位累加器、相位累加值判断器、单片机管脚取反输出器;所述的相位累加值选择器以1200的波特率接收单片机内HART协议信号链路解析和命令处理器输出的0、1逻辑信号从而决定相位累加值的大小。选定的相位累加值每隔很短的时间经加法器后累加到相位累加器,相位累加器的值输出到相位累加值判断器,经相位累加值判断器判断后输出到单片机管脚取反输出器:当相位累加器累加到π整数倍时,CPU管脚电平取反一次,表示一次过零。从单片机管脚取反输出器输出的频移键控方波经HART信号传媒介质传输。
基于单片机的HART协议信号调制解调方法,其特点是,包括以下步骤:
a、先将HART正弦波信号经过带通滤波后变成平移键控方波后从单片机的管脚输入到HART信号解调单元;
b、经HART信号解调单元解调后输出逻辑“0”、“1”信号到I/O输出端口寄存器;
c、通过单片机管脚将逻辑“0”、“1”信号输入到异步串行接收模块;
d、异步串行接收模块接收经过解调的HART通讯帧,再送到HART协议信号链路解析和命令处理器对通讯帧进行链路解析和命令处理,获得逻辑“0”、“1”信号送到信号调制单元进行信号调制;
e、经解调后产生平移键控方波从单片机的管脚输出,通过波形整形后输出HART正弦波信号传输出去。
上述基于单片机的HART协议信号调制解调方法,其中,步骤b所述的经HART信号解调单元解调的方法包括以下步骤:
b1、边沿检测器接收传输介质传来的方波信号,经检测脉宽后送到保持寄存器通过选择开关,再送到脉宽保持寄存器,如果这个脉宽小于设定的最小脉宽,则把最小脉宽放到脉宽保持寄存器,实现最小限幅;
b2、以一定的频率对脉宽保持寄存器进行采样,每次采样后在加减法器里将滤波累加器的值加上这个采样值并减去滤波移位寄存器的待移出值,得出一个新的累加值;
b3、将步骤b2得出的新的累加值分成两路:
一路送入累加值最大限幅器和最大限幅值进行比较;比较的结果将控制和决定滤波累加器的值是否被更新,以及控制脉宽保持寄存器值移入移位寄存器选择开关来决定脉宽保持寄存器的采样值是否移入滤波移位寄存器:如果累加值大于最大限幅值,则滤波累加器将不被这个累加值更新,滤波移位寄存器也不进行数据的移入移出;如果累加值小于最大限幅值,则滤波累加器更新为这个累加值,采样到的脉宽保持寄存器值移入滤波移位寄存器;
另一路送入累加值比较器进行比较,如果大于设定值,就解调输出1,反之就解调输出0;
b4、解调后的0、1逻辑信号经过单片机的I/O输出端口输出。
上述基于单片机的HART协议信号调制解调方法,其中,步骤d所述的经HART信号调制单元调制的方法包括以下步骤:
d1、相位累加值选择器以1200的波特率接收单片机内HART协议信号链路解析和命令处理器输出的0、1逻辑信号从而决定相位累加值的大小;
d2、选定的相位累加值每隔很短的时间经加法器后累加到相位累加器;
d3、相位累加器的值输出到相位累加值判断器,经相位累加值判断器判断后输出到单片机管脚取反输出器,从单片机管脚取反输出器输出的调制后的频移键控方波经HART信号传媒介质传输。
上述基于单片机的HART协议信号调制解调方法,其中,步骤d3所述的相位累加值判断器判断是指:当相位累加器累加到π整数倍时单片机管脚电平取反一次,表示一次过零;反之,表示还未过零,电平保持。
上述基于单片机的HART协议信号调制解调方法,其中,所述的相位累加器累加到π整数倍是指累加器溢出表示到达一次π相位。
由于本发明采用了以上的技术方案,将调制解调器专门设计在一低功耗通用嵌入式单片微控制器平台上,由单片微控制器的主程序进行控制,实现对HART协议信号的调制解调。因该调制解调器的硬件平台和控制程序是可伸缩和可移植的,因此,该调制解调器可以很容易地被修改,以适应不同类型的微控制器。
附图说明
本发明的具体特征、性能由以下的实施例及其附图进一步描述。
图1是一般HART信号示意图。
图2是现有技术调制解调器典型应用框图。
图3是本发明基于单片机的HART协议信号调制解调器的结构框图。
图4是本发明解调单元的电方框图。
图5是本发明调制单元的电方框图。
图6是本发明应用时的结构框图。
图7是本发明应用时的实施例示意图。
图8是图7中接收信号的调理电路原理图。
图9是图7中发送信号调理电路原理图。
图10由11位组成的HART通讯字符结构图。
图11是本发明脉宽检测的噪声抑制和强制最小限幅流程图。
图12是本发明几何平均软件滤波和强制最大限幅技术流程图。
图13是本发明发送程序流程框图。
具体实施方式
请参阅图3,这是本发明的结构框图。基于单片机的HART协议信号调制解调器,其包括一单片机1,以及设置在该单片机内的HART信号解调单元11、HART信号调制单元12、一I/O输出端口寄存器13、异步串行接收模块14、HART协议信号链路解析和命令处理器15;HART信号解调单元11接收来自HART信号传媒介质传输来的信号,经解调后送到I/O输出端口寄存器13,通过该I/O输出端口寄存器传送到异步串行接收模块14,该异步串行接收模块接收经过解调的HART通讯帧,再送到HART协议信号链路解析和命令处理器15进行处理,获得逻辑“0”、“1”信号送到信号调制单元12进行信号调制,经信号调制后的信号再通过HART信号传媒介质传输出去。
请参阅图4,这是本发明的解调单元的电方框图。本发明的HART信号解调单元11包括边沿检测器111、保持寄存器输入选择开关112、脉宽保持寄存器113、脉宽保持寄存器值移入移位寄存器选择开关114、滤波移位寄存器115、加减法器116、累加值比较器117、累加值最大限幅器118、滤波累加器119;边沿检测器接收传输介质传来的方波信号,经检测脉宽后送到保持寄存器通过选择开关,再送到脉宽保持寄存器,如果这个脉宽小于设定的最小脉宽,则把最小脉宽放到脉宽保持寄存器,实现最小限幅;以一定的频率对脉宽保持寄存器进行采样,每次采样后在加减法器里将滤波累加器的值加上这个采样值并减去滤波移位寄存器的待移出值,得出一个新的累加值。这个新的累加值分成两路:一路送入累加值最大限幅器和最大限幅值进行比较。比较的结果将控制和决定滤波累加器的值是否被更新,以及控制脉宽保持寄存器值移入移位寄存器选择开关来决定脉宽保持寄存器的采样值是否移入滤波移位寄存器:如果累加值大于最大限幅值,则滤波累加器将不被这个累加值更新,滤波移位寄存器也不进行数据的移入移出;如果累加值小于最大限幅值,则滤波累加器更新为这个累加值,采样到的脉宽保持寄存器值移入滤波移位寄存器;另一路送入累加值比较器进行比较,如果大于设定值,就解调输出1,反之就解调输出0。解调后的0、1逻辑信号经过单片机的I/O输出端口输出。
请参阅图5,这是本发明的调制单元的电方框图。本发明的HART信号调制单元12包括相位累加值选择器121、加法器122、相位累加器123、相位累加值判断器124、单片机管脚取反输出器125;所述的相位累加值选择器以1200的波特率接收单片机内HART协议信号链路解析和命令处理器输出的0、1逻辑信号从而决定相位累加值的大小。选定的相位累加值每隔很短的时间经加法器后累加到相位累加器,相位累加器的值输出到相位累加值判断器,经相位累加值判断器判断后输出到单片机管脚取反输出器:当相位累加器累加到π整数倍时,CPU管脚电平取反一次,表示一次过零。从单片机管脚取反输出器输出的频移键控方波经HART信号传媒介质传输。
请参见图6,图6是本发明应用时的结构示意框图。单片微控制器1直接在I/O上产生1200Hz或2200Hz的FSK方波,经过波形整形电路7转换成HART协议信号耦合到传输介质9上;来自传输介质的HART协议信号经过带通滤波整形电路8转换成1200Hz或2200Hz的FSK方波,单片微控制器的I/O口直接对该方波进行采样鉴频,解调出0、1逻辑信号,并由I/O送出。这个由I/O口送出的0、1逻辑信号即可直接被这个单片微控制器自己的串口接收。当然,在一些特殊的应用场合,这个由I/O口送出的0、1逻辑信号也可以被另外一片单片机的串口接受。本发明省去昂贵的专用芯片,使开发成本大大降低。同时由于本发明具有可伸缩和可移植性,使得本HART调制解调器可以在不同的单片微控制器之间很容易的被移植。因此,使用本HART调制解调器的开发项目不会受到市场供应的制约。
请参阅图7,这是本发明具体应用的实施例示意图。
本发明基于单片机的HART协议信号调制解调方法,包括以下步骤:
a、先将HART正弦波信号经过带通滤波后变成平移键控方波后从单片机的管脚输入到HART信号调制单元;
b、经HART信号调制单元解调后输出逻辑“0”、“1”信号到I/O输出端口寄存器;
c、通过单片机管脚将逻辑“0”、“1”信号输入到异步串行接收模块;
d、异步串行接收模块接收经过解调的HART通讯帧,再送到HART协议信号链路解析和命令处理器对通讯帧进行链路解析和命令处理,获得逻辑“0”、“1”信号送到信号调制单元进行信号调制;
e、经解调后产生平移键控方波从单片机的管脚输出,通过波形整形后输出HART正弦波信号传输出去。
请参阅图8,这是本发明接收信号的调理电路原理图,由带通滤波器构成。该带通滤波电路包括HART正弦波FSK信号经由带通滤波、SMIT触发,整形为相应频率的与CPU工作电平一致的方波FSK信号。信号调理电路如图4所示,由以IC201B为核心的带通滤波电路和以IC201A为核心的SMIT触发电路组成。至此,HART协议信号接收工作就变为对方波信号脉宽的测量及相应的逻辑识别。如何对方波FSK信号进行采样,将1200Hz和2200Hz分别解调为逻辑1、0是本软件调制解调器的接收解调的实现的关键。本发明的接收程序中采用了一个边沿检测的外部中断,来检测脉宽。这个脉宽就是当前接收到的频率。但由于链路噪声干扰和HART信号过渡波形的存在,接收到的当前频率不一定是准确的1200Hz或2200Hz,也就无法直接进行逻辑1、0的解调。本发明的接收算法采用强制限幅技术(包括最小限幅和最大限幅)和几何平均的软件滤波技术。
请参阅图9,本发明发送信号的调理电路由波形整形电路构成。本发明调制解调器的发送调制的实现基于下面的这样一个事实,即一个1200Hz或2200Hz的FSK方波经过形整形电路整形诚正弦波后就是HART信号。本发明中,这样一个FSK方波由微控制器用软件程序直接产生。HART通讯帧由若干个字符组成,每个字符是一个11位的字节:一个起始位,八位数据位,一个奇校验位和停止位。字符编码如图10所示。字节按最低有效位在前的顺序发送的。在发送一个通讯帧时,每两个字符之间的发送间隔(GAP)不能大于一个字符时间9.167ms(一个字符时间即为以1200bps发送一个字符所需的时间=11bits/1200bps=9.167ms)。HART协议的传输速率为1200Hz,这样在一个位时间内,‘1’信号(频率为1200Hz)将走过一个周期,‘0’信号(频率为2200Hz)将走过1+5/6个周期,即发送一个‘0’位后将产生一个60度的相位差。由于FSK频移键控信号在传输时保持相位连续,即在1200Hz与2200Hz之间转换时相位连续,导致1200Hz和2200Hz之间转换波形宽度不定。
相位连续FSK方波产生机理如下:对于一个周期为T的周波,经过一个周期时间T,其相位变化2π。对于某个等份时间t,则其相位变化为2π*t/T,如果等份时间固定,则该相位变化为一定值,设为W,而该定值对应于某个频率的周波。因此,每一个π相位由若干个这样的W组成,设置一个16位的相位累加器,在每个等份时间t内相位累加器累加一次W,软件对相位累加器进行检测,当相位累加器累加到π整数倍时,(即相位累加器累加到π整数倍是指累加器溢出表示到达一次π相位,)解码输出脚翻转一次,表示一次过零。对于1200Hz的方波,W小一点,所需的个数就多一点,也就是t的个数多一点;对于2200Hz的方波,W大一点,所需的个数就少一点,t的个数也少一点。当发送频率变更时,则需对W进行变更。本发明利用一个1200bps的定时器来对每一个HART位定时,确定下一位是0还是1,从而确定累加器的累加值。实现时用65536来表示相位π,对于1200Hz和2200Hz其累加定值分别为:
W1200=t*2*65536/T1200
W2200=t*2*65536/T2200
这样检测相位π只需检测累加器(用一int型数据表示)的溢出即可。
FSK方波产生的相位误差分析:上面所述的相位变化值W的倒数乘上π后可以理解成相位输出的分辨率,该分辨率随着频率的增大而减小。过零相位误差:该误差大小由2200Hz时相位输出的分辨率决定。虽然存在过零相位误差,但是由于过零时,存在的相位差继续用于下一轮的累加,因此不会产生由于相位差的丢弃而产生累积误差。采用相位变化累加的方式可以保证HART信号的相位连续特性。
请参阅图11、图12,其中,图11是脉宽检测中的噪声抑制和强制最小限幅技术的方法;图12是脉宽检测中的几何平均软件滤波和强制最大限幅技术的方法。把每次采样到的脉宽放到一个采样保持寄存器。设立一个移位寄存器和一个滤波采样定时器。滤波采样定时器每隔一定时间对保持寄存器采样一次,并把采样到的值一个一个移入移位寄存器。把移位寄存器各个值累加到滤波累加器。如果滤波累加器的值大于设定值,就解调输出1,反之就解调输出0。同时对滤波累加器的值进行最大限幅;如果滤波累加器的值大于最大限幅值,则当前的保持寄存器值不移入移位寄存器。经过解调后的逻辑1、0信号进微控制器的输出脚输出后可以直接被微控制器的串行口接收。本发明采用最高优先级中断驱动技术,保证对HART信号解调的实时性和准确度。
请参阅图13,这是本发明发送程序的流程框图。本发明在发送程序中,将每个HART字符生成11位的发送字符,由1200bps的定时器进行定时发送,11位发送完后马上发送下一个字符,直至一帧数据发完。
其过程是:进入发送程序后,首先开启载波,然后将HART发送字节生成11位的发送字符并开始发送11位字符,每发送完一位就就准备发送下一位,直至11位全部发送完毕;然后判断一帧数据的所有字节是否发完,如果不是,则程序返回“载入HART发送字节,生成11位发送字符”处,继续进行HART字节的发送。如果一帧数据已经发完,那么等待最后一个字节的最后一位发完后关闭载波,发送结束。1200bps中断程序用于确定下一字节是0还是1,从而确定累加值的大小。基本时间中断程序用于累加器的累加、溢出判断和管脚取反输出。