• 官方微信

    CA800二维码微平台 大视野

  • 工控头条

    CA800二维码工控头条App

当前位置:自动化网>自动化文库>应用案例>提高测控系统可靠性方法的综合应用

提高测控系统可靠性方法的综合应用

发布时间:2010-05-13 来源:中国自动化网 类型:应用案例 人浏览
分享到:
关键字:

控制系统

导读:

1.引言   目前,随着时代的发展,人们对工业控制可靠性和操作简易性的要求越来越高。但是以往使用的微机或单片机独立运行的系统不能很好协调用户的这些需求。   普通的微机用于控制或实验监测等一般是采取加插...

1.引言
  目前,随着时代的发展,人们对工业控制可靠性和操作简易性的要求越来越高。但是以往使用的微机或单片机独立运行的系统不能很好协调用户的这些需求。
  普通的微机用于控制或实验监测等一般是采取加插扩展卡,系统软件是在windows系统下编程实现。其优点是界面友好,可视性强,操作简便直观,有许多标准的软件可供选择,编程环境好。
  缺点是可靠性差,硬件的插接牢固性和系统抗干扰性都比较差,软件运行的win机制是一个多任务系统,不当的操作或程序问题可能导致死机。一旦死机,微机便失去了输出通道的数据更新,而输出通道一般都具有锁存功能,将长期保持原来的状态。如果不采取措施,容易出现危险。比如用D/A板多路加热或流量调节,故障后稍许延时就会导致系统环境过热或则超调,在无人看管的情况下就会导致事故发生。
  单片机嵌入式系统用于控制的可靠性很高,控制输出通道一般不会出现问题,而且它还具有低电压、低功耗和体积小等优点。但它的缺点在于软件功能简单和显示界面单调,人机交互功能较差,难以满足人们更高的要求。
  在嵌入式系统中为了提高系统的可靠性,采用了一种称为看门狗的装置。所谓的看门狗,实质上是一个定时器。它和CPU并行工作,基本不占用系统时间。在系统正常运行时,CPU在每隔一个预制的时间给该装置清零,使它重新计数,以表示正常工作。当出现故障时,CPU不能定时给它清零,看门狗超时并产生中断,强迫单片机进入复位状态,使CPU从硬件或软件的故障中解脱出来。借鉴嵌入式系统中硬件看门狗的思想在微机工作时可以与单片机进行通信,用单片机来控制输出通道,通信丧失一段时间以后单片机系统自动进入紧急处理程序,将输出通道的模拟量调至初始化时预置的安全值,将开关量关闭或接通,即便是无人发现故障,也不会发生事故。一旦通信恢复,单片机可接收微机指令,恢复输出,或按自身的程序恢复。整个系统设计的结构框图如图1:


 2.系统组成
  微机与单片机间采用串口通信。单片机直接控制全部输出通道,微机不扩接硬件,靠软件指令串行输出,单片机译码后控制输出通道,一旦重复出现联络码丢失,单片机启动安全模式。
  本设计的输出通道,共包括了上面图1中提到的三种主要通道,分别如下:
    2.1 D/A转换模拟量控制通道
  这种信号量可用于模拟量驱动的各种仪表及直流伺服机构。系统中使用的D/A转换器,是具有8位分辨率和两级数据缓冲器的DAC0832。它可以实现多通道D/A转换的同步输出,有双缓冲、单缓冲、直通三种工作模式。本系统采用双通道双缓冲同步输出工作方式。两路DAC0832的片选分别由P2.5和P2.6来选通,它们的 和 端由单片机的 引脚同时控制,用P3.3引脚控制两路DA转换器的 选择信号。这样输出数据时先根据片选信号和 信号分别选通两路转换的第一级缓冲,再用P3.3同时选通所有D/A的第二级缓冲,达到同时选通的效果。
    2.2 开关量控制通道
  在实际的嵌入式系统中使用最多的就是开关量的控制。例如各种接点的通断,信号灯的亮灭等。在单片机系统中,开关量都是通过单片机的I/O口或扩展I/O口输出的。标准的TTL门电路在0电平时的吸收电流约为16mA,对于一些小型功率开关,直接采用I/O接口或采用增加I/O接口的驱动能力即可。但对于那些大功率开关(如继电器、电机、电磁开关等)单片机通常不足以直接驱动,需要扩接大功率开关接口电路。本设计系统中采用最为简单的功率晶体管来驱动。
    2.3 数字量控制通道
  该通道用于给各种数字仪表或显示终端提供信息。


  系统原理图如图2所示,微机与单片机间采用RS232C通信标准。因为传输距离较近不需要通过调制解调器,只采用比较简单的3线连接,即TXD、RXD、GND。RS232与TTL电平转换的工作由MAX232来实现。在单片机部分,P0—P7作为D/A转换的数据线,P2.5、P2.6连接DAC0832的片选端,用P2.4控制开关量输出,P2.3引脚作为数字量信号输出。
    3.提高可靠性的方法
    3.1 X25045
  为了保证单片机控制部分本身的可靠性,系统中增加了X25045器件。X25045由美国Xicor公司生产,兼有看门狗定时器、复位定时器和EEPROM三种功能。看门狗定时器对微处理器提供了独立的保护系统,一旦出现故障,RESET做出响应;Vcc监测电路可使系统不会出现低电压工作状态,当电压下降到最小工作值以下时,系统复位,直到Vcc返回稳定值。另外X25045采用简单的SPI总线工作方式,具有256字节的串行EEPROM,可以作为单片机的外部扩展存储器。以下是X25045的各种功能子程序:
置X25045写使能子程序:
WREN_CMD: CLR SCK ;给出时钟下降沿
NOP ;降低X25045的工作频率V
CLR CS ;片选中X25045
MOV A,#WREN_INST ;将写使能指令给A(06H)
ACALL OUTBYT ;调输出字节给X25045子程序
CLR SCK ;再给出时钟下降沿
SETB CS ;片不选中X25045
RET
置X25045写不使能子程序 : 
WRDI_CMD: CLR SCK ;给出时钟下降沿
NOP ;降低X25045的工作频率V
CLR CS ;片选中X25045
MOV A,#WRDI_INST ;将写不使能指令给A(04H)
ACALL OUTBYT ;调输出字节给X25045子程序
CLR SCK ;再给出时钟下降沿
SETB CS ;片不选中X25045
RET
写进X25045中的状态寄存器,设定看门狗延时1.4S子程序
WRSR_CMD: CLR SCK ;给出时钟下降沿
NOP ;降低X25045的工作频率V
CLR CS ;片选中X25045
MOV A,#WRSR_INST ;将写状态寄存器指令给A(01H)
ACALL OUTBYT ;调输出字节给X25045子程序
MOV A,#STATUS_REG ;将写状态寄存器数据给A(00H,1.4S,无块保护) 
ACALL OUTBYT ;调输出字节给X25045子程序
CLR SCK ;再给出时钟下降沿
SETB CS ;片不选中X25045
ACALL WIP_POLL ;调数据未写好查询等待子程序
RET
读出X25045中的状态寄存器内容(查询写好标志位)子程序:
RDSR_CMD: CLR SCK ;给出时钟下降沿
CLR CS ;片选中X25045
MOV A,#RDSR_INST ;将读状态寄存器指令给A(05H)
ACALL OUTBYT ;调输出字节给X25045子程序
ACALL INBYT ;调读入X25045输出内容子程序
CLR SCK ;再给出时钟下降沿
SETB CS ;片不选中X25045
RET 
写进X25045中的EEPROM一个单个字节子程序:
BYTE_WRITE: CLR SCK ;给出时钟下降沿
CLR CS ;片选中X25045
MOV A,#WRITE_INST ;将写X25045 EEPROM的指令给A(02H)
ACALL OUTBYT ;调输出字节给X25045子程序
MOV A,R0 ;将要写进EEPROM 的单元地址号给A 
ACALL OUTBYT ;调输出字节给X25045子程序
MOV A,R2 ;将要写进EEPROM 该单元地址的数据给A 
ACALL OUTBYT ;调输出字节给X25045子程序
CLR SCK ;再给出时钟下降沿
SETB CS ;不选中X25045
ACALL WIP_POLL ;调数据未写好查询等待子程序
RET
从X25045的EEPROM中读出一个字节子程序:
BYTE_READ: CLR SCK ;给出时钟下降沿
CLR CS ;片选中X25045
MOV A,#READ_INST ;将读X25045 EEPROM的指令给A(03H)
ACALL OUTBYT ;调输出字节给X25045子程序
MOV A,R0 ;将需要读EEPROM 单元的地址号给A 
ACALL OUTBYT ;调输出字节给X25045子程序
ACALL INBYT ;调读入X25045输出内容子程序
CLR SCK ;再给出时钟下降沿
SETB CS ;片不选中X25045
RET
复位看门狗定时器子程序:
RST_WDOG: CLR EA ;关中断V
CLR CS ;片选中X25045
SETB CS ;片不选中X25045
SETB EA ;开中断V
RET
未写好循环查询等待子程序:
WIP_POLL: MOV B,#MAX_POLL ;将最大循环等待变量给B
WIP_POLL1: ACALL RDSR_CMD ;调读X25045中的SR内容(查询写好标志位)子程序
JNB ACC.0,WIP_POLL2 ;写好标志位有效(为0),转下
DJNZ B,WIP_POLL1 ;未到最大循环等待次数,转上继续
SJMP WIP_OUT ;已到最大等待次数,转出
WIP_POLL2: SETB 00H ;置位写好标志位(1)有效
WIP_OUT: NOP ;转出口
RET
从ACC移(输)出字节给X25045子程序:
OUTBYT: MOV R3,#08H ;共移出8位(D0——D7)循环变量
OUTBYT1: CLR SCK ;给出时钟下降沿
RLC A ;ACC最高位移到C
MOV SI,C ;C传给输出口线
NOP ;降低X25045的工作频率V
SETB SCK ;给出时钟上升沿存入
DJNZ R3,OUTBYT1 ;未移出8位,转上继续
CLR SI ;置输出口线为低
RET
从X25045的EEPROM中接收一个字节到ACC:
INBYT: MOV R3,#08H ;共移入8位(D0——D7)循环变量
INBYT1: SETB SCK ;给出时钟上升沿
CLR SCK ;给出时钟下降沿
MOV C,SO ;位数据从输入口线传给C
RLC A ;C移进ACC的最低位
DJNZ R3,INBYT1 ;未移入8位,转上继续
RET
    3.2 CRC校验
  信号在物理信道中传输时,线路本身电器特性造成的随机噪声、信号幅度的衰减、频率和相位的畸变、电器信号在线路上产生反射造成的回音效应、相邻线路间的串扰以及各种外界因素(如大气中的闪电、开关的跳火、外界强电流磁场的变化、电源的波动等)都会造成信号的失真。在数据通信中,将会使接受端收到的二进制数位和发送端实际发送的二进制数位不一致,从而造成由“0”变成“1”或由“1”变成“0”的差错。在一个使用的通信系统中要能够发现这种差错,并把差错限制在技术要求允许的技术范围内。CRC(Cyclic Redundancy Code循环冗余码),也称多项式编码。这种编码检错效率高,原理简单,易于实现,是目前在数字通信领域应用最为广泛的一种检验码。8位CRC码的标准有CDT约定,其检验式为 ;16位的标准有CCITT(国际电报电话委员会推荐)标准 ,和IBM提出的CRC-16标准 ;检验错误效率最高的是具有32位CRC检验码的CRC-32标准,它的检验多项式为 。本设计采用较为简单的8位CDT标准。实现CRC校验有多种方法,一种是靠硬件电路来实现的;另一种方法是对类似SIO的大规模集成电路编程;还有一种是在单片机上编程实现。最简单的编程思想是用查表的办法。对于89C51系列的单片机来说,一般都有4KB以上的ROM,建立8位CRC的检验码表共需要256个字节,在程序存储器的容量上是完全满足要求的。发送端根据需要发送的信息码查表求得校验冗余码,一起发送给接收端。接收端根据接收到的信息码查询校验码,查得的结果与接收的校验码比较,如果两者相等,代表传输正确。以下给出8位CDT约定的校验码查询程序。如果需要更高精度的校验,可以采用16位或则32位校验程序。
CRC: MOV A,R2;
ANL A,#80H;
CJNE A,#00H,TT1;
TT0: MOV A,R2;
MOV DPTR,#TABLE0;
MOVC A,@A+DPTR;
MOV R3,A;
AJMP STOP;
TT1: MOV A,R2;
ANL A,#3FH;
MOV DPTR,#TABLE1;
MOVC A,@A+DPTR;
MOV R3,A;
STOP: RET
TABLE0: DB 00H,03H,06H,05H,0cH,0fH,0aH,09H,18H,1bH,1eH,1dH,14H,17H,12H,11H
DB 30H,33H,36H,35H,3cH,3fH,3aH,39H,28H,2bH,2eH,2dH,24H,27H,22H,21H
DB 60H,63H,66H,65H,6cH,6fH,6aH,69H,78H,7bH,7eH,7dH,74H,77H,72H,71H
DB 50H,53H,56H,55H,5cH,5fH,5aH,59H,48H,4bH,4eH,4dH,44H,47H,42H,41H
DB c0H,c3H,c6H,c5H,ccH,cfH,caH,c9H,d8H,dbH,deH,ddH,d4H,d7H,d2H,d1H
DB f0H,f3H,f6H,f5H,fcH,ffH,faH,f9H,e8H,ebH,eeH,edH,e4H,e7H,e2H,e1H
DB a0H,a3H,a6H,a5H,acH,afH,aaH,a9H,b8H,bbH,beH,bdH,b4H,b7H,b2H,b1H
DB 90H,93H,96H,95H,9cH,9fH,9aH,99H,88H,8bH,8eH,8dH,84H,87H,82H,81H
TABLE1: DB 83H,80H,85H,86H,8fH,8cH,89H,8aH,9bH,98H,9dH,9eH,97H,94H,91H,92H
DB b3H,b0H,b5H,b6H,bfH,bcH,b9H,baH,abH,a8H,adH,aeH,a7H,a4H,a1H,a2H
DB e3H,e0H,e5H,e6H,efH,ecH,e9H,eaH,fbH,f8H,fdH,feH,f7H,f4H,f1H,f2H
DB d3H,d0H,d5H,d6H,dfH,dcH,d9H,daH,cbH,c8H,cdH,ceH,c7H,c4H,c1H,c2H
DB 43H,40H,45H,46H,4fH,4cH,49H,4aH,5bH,58H,5dH,5eH,57H,54H,51H,52H
DB 73H,70H,75H,76H,7fH,7cH,79H,7aH,6bH,68H,6dH,6eH,67H,64H,61H,62H
DB 23H,20H,25H,26H,2fH,2cH,29H,2aH,3bH,38H,3dH,3eH,37H,34H,31H,32H
DB 13H,10H,15H,16H,1fH,1cH,19H,1aH,0bH,08H,0dH,0eH,07H,04H,01H,02H
    3.3 组态软件
  为了监测上位机部分的可靠性,在系统中可以应用组态软件来实现。由于组态软件具有完善的图形编辑功能,可以提供多种数据类型和命令语言,支持控件和控件函数,还配置了大量的各种I/O和工控板卡驱动程序,支持网络通信。使用组态软件可以用清晰准确的画面描述工业控制现场,及时的反映现场的操作状态和数据信息;设定监控和报警信号;显示实时趋势曲线和历史趋势曲线。因为具有这些优点,组态软件在当今的工控领域大量被使用。
  各种组态软件都提供了多种板卡、DDE设备、PLC、变频器、智能仪表及模块的驱动,可以方便的与这些外部设备连接。本次设计系统中,我们采用了中泰公司的PC6000系列的PC6313板卡。这种板卡带有12位32路AD通道(单端)和2路DA通道,以及24路的I/O口。设计中定时让单片机通过它的I/O口发送一个数字量给板卡,微机系统接收到信号以后通过组态软件进行处理,再返回给信号给单片机,单片机中检查收到的数据是不是和设想的结果一致,如果结果正确,表明上位机和下位机整个系统运行正常,这就达到了监控微机的效果。这种方法适合带有输入输出的各种板卡。如不是组态软件中提供的通用器件,可自行编写驱动程序。
    3.4 多线程技术
  多任务是Microsoft Windows和Microsoft NT操作系统的一大特色,即可以同时执行多个应用程序。对于应用程序的开发者而言,多任务的实质是能建立有多个进程的应用程序和建立使用不止一个执行线程的进程。
  将联络码作为一个线程插入到主程序的过程中,联络码可由任何口线输出给单片机系统,单片机在微机出现故障的时候选择安全输出模式,以设定好的方式接管外部的控制。此种方法,通用性很强,不需外接硬件。



























































































































































本文地址:本文地址: http://www.ca800.com/apply/d_1nrutga2l1itn_1.html

拷贝地址

上一篇:2.45G远距离有源射频识别系统——在机关大院、住宅小区、停车场、厂区门口的应用

下一篇:高精度超声波测距系统的设计与实现

免责声明:本文仅代表作者个人观点,与中国自动化网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容!