磁致伸缩位移传感器是利用磁场作用原理制造的位移传感器,由于其精度高(分辨率可达2μm), 具备多种可直接与计算机连接的接口,方便开发,性能稳定,重复性好,抗干扰能力强,价格便宜,适应于在各种恶劣的高温工业环境下进行应用,本文就磁致伸缩位移传感器的在不锈热轧厂液压微调系统中所进行的开发应用进行介绍。
SSI硬件接口的实现
磁致伸缩位移传感器本身有各种接口,如CANBUS、PROFIBUS、 SSI 等,它们能很方便的与PLC或工业控制计算机连接,这里仅介绍SSI数字接口的使用方法。所谓SSI接口,即SSI (Serial Synchronized Interface)数字输出提供即时的同步位置输出。传感器读出活动磁铁位置后,经内置电路转换成一个24位或25位格雷码数据格式。数据经常保留在内置记数器内,一收到控制器提供的时钟信号即时以串连方式输出,然后通过内置的ssI界面以RS485/RS422 标准输送至控制器,数据格式与绝对输出编码器类似。SSI 的主要功能为同步数据交换,因为同步,所以应用在闭路控制系统上十分方便。传感器的内在更新速率可快达每秒一万次(按量程变化)。此外,由于输出位置为一绝对数值,所以控制器可随时读取,就算是电源中断再接后也没有影响。在磁致伸缩传感器的开发中我们采用了德国埃玛公司生产的1276 板卡,1276 板卡是一款专门为SSI编码器设计的工控机ISA接口板,它有四个相互独立带光电隔离的24位SSI编码器输入接口,有6个光电隔离的数字输出接口,可直接插入工控机的ISA槽中,板卡地址可通过板卡上的拨码开关进行设定,当来自传感器的数据全部传送到计算机之后就会产生一个中断,因此可进行中断编程,通过跳线在板卡上可选中断地址为IRQ10~IRQ15.每一个SSI口可独立编程,其四条引脚分别为CLOCK+、CLOCK-、DATA+、DATA-,其中CLOCK+和CLOCK-为向磁致伸缩位移传感器发出的时钟端,时钟频率从100K 到1M通过编程可选,DATA+和DATA-为磁致伸缩传感器以SSI编码形式返回计算机, SSI的数据位可从16位到25位可选,另外还有四个调零端,通过与GND的短接可进行硬件置零,也可以通过编程把零点置到所需要的位置。
系统软件设计与实现
(一)编程原理
1276板卡占用8个基址,从BASE+O到BASE+7.在1276板卡中使用了三个计数器,1276 包括三个同样独立的计数器时钟,三个计数器分别为COUNTERI, CONUTER2. COUNTER3. 每一个计数 器的功能都相同,但编程与不同的模式是相互关联的。三个计数器址及控制字的地址分别为BASE+O, BASE+1.BASE+2和BASE+3通过对三个计数器写不同的控制字完成不同的控制模式,BASE+4、 BASE+5、 BASE+6、 BASE+7都为读数据口分别为SSI数据的0~7位、8~15位、16~23 位和24位。COUNTERO 用来对输出频率进行分频,在模式3下进行,在这种模式下2M的频率可以通过编程把控制字写入控制字地址进行分频。COUNTERI用来计算SSI编码器的位数,在模式0或模式1下进行。COUNTER2 在模式2下进行编程用来测速。几种控制模式如下,模式0:计数:模式1:外部触发;模式2:分频;模式3:分频;模式4:软件触发;模式5:硬件触发。
(二)初始化程序
我们在DOS环境下用TC++对1276 板卡进行编程,在编程中首先对1276板进行初始化,初始化函数
如下:
void init ()
{
outportb(ba+3.0×016); 控制方式为模式3.把控制字写入控制字地址,计数器COUNTERO为分频模式,分辨率为LSB。
outportb(ba+3.0x0B4);控制方式为模式2.计数器COUNTER2为分频模式,分辨率为LSB或MSB。
outportb(ba+3.0×052);控制方式为模式1.把控制字写入控制字地址,对计数1外部触发,分辨率为LSB。
outportb(ba+1.0×019);给计数器1写控制字,字长为24位。
Outportb (ba,0x002);}给计数器0写分频字,分频为2.即触发频率为1MH。
(三)数据采集程序
在1276板卡进行初始化,即调用上述函数后,就可以采集数据了,采集数据函数如下:
long lesen(int channel) channel 为通道号
{ int i;
long byte _0.
byte_1.
byte_2.
dual_wert;
outportb(ba+7. channel-1);ba为基址
init ( );
delay (1);延时1亳秒
for (i=0; i<100; i++);
byte_0 =inportb(ba+4);读0-7位数据
byte_1=inportb(ba+5);读8-15位数据
byte_2= inportb(ba+6);读16-23位数据
gray_ wert= (byte_ 2<< 16) + (byte_ 1<<8) + byte。 _0;
计算格雷码的长度
dual_wert=gray_dual(gray_wert);把格雷码转换为二进制码,其中gray_dual()为转换函数。
dual_wert=dual_ wert-dual _wert0;减去零点
retum dual_wert;}
从上述函数中可以看出调用lesen(int channel) 函数之后就可以使用采集到的数据了,我们可以使用下例语句。
float sensor;
sensor=(float)lesen();强制转换为浮点数
这样我们就可以用sensor在程序中进行各种运算或其它应用了。
(四)数据采集滤波程序
在上述函数中我们发现一个问题,就是通过口上采集读数据时,必须延时1毫秒,那么采集四个通道的数据至少4亳秒的时间,在用于显示或其它控制也许问题不大,但在液压微调实时控制系统中,这个时律,在函数中增加了滤波环节,我们在函数中连续三次采集数据,如果三次采集的数据完全一样,同时小于5位数,则返回,否则继续采集,修改后的部分函数如下:
long lesen(int channel)
{ int i;
long byte_0.bytel_1. byte2_0.
byte_1.byte1_1.byte2_1.
byte_2.byte1_2.byte2_2.
gray_wert,
dual_wert1.
dual_wert;
outportb(ba2+7.channel-1);
init();
for(i=0;<100;i++); 延时
loop; 循环
byte_ 0=inportb(ba2+4); 第一次采集数据
byte_1=inportb(ba2+5);
byte_2=inportb(ba2+6);
byte1_0=inportb(ba2+4); 第二次采集数据
byte1_ 1=inportb(ba2+5);
bytel_2= inportb(ba2+6);
byte2_0=inportb(ba2+4); 第三次采集数据
byte2_1=inportb(ba2+5);
byte2_2= inportb(ba2+6);
gray_wert=(byte_2<< 16)+(byte_1 << 8)+byte_0;
dual_wert1=gray_dual(gray_wert);
dual_wert1=dual_wert1-dual_wert0;
if(( ((byte_0!=byte1_0)||(byte_0!=byte2_0))||(byte_1!=byte1_1)||(byte_1!=byte2_1))
((byte_ 2!=byte1_2)||(byte_2!=byte2_2)) )||(dual_wer>199999)) 滤波
goto loop; 乱码返回继续采集
else
dual_wert=dual_wertl ;
retur dual_wert;
采集到的数据经这样处理后,四路数据的采集时间缩为0. 5毫秒左右,这在一般的液压微调实时控制系统中是完全可以胜任的。
实际应用
在不锈热轧厂四辊轧机液压微调控制设备中,辊缝测量系统一直采用差动变压器式位移传感器进行辊缝的测量,其测量精度不高,重复性不好,零点有漂移,其中的位移变换器与差动变压器需定期标定,每次标定时间至少四小时以上,同时位移变换器通道经常烧坏,为此拟在液压微调的辊缝测量t 系统中用磁致伸缩位移传感器来替代差动变压器,我们在四辊轧机的液压微调计算机控制系统中采用1276 板卡来测量传感器传来的数据,对传感器在液压微调控制系统中的各种应用,进行了多项测式,证明板卡及磁致伸缩位移传感器性能可靠、数据稳定,解决了液压压下辊缝测量系统中长期存在的精度不高,稳定性差,维护成本高的问题,提高了辊缝测量系统的可靠性和整体控制精度,精度提高到2μm,比原有精度提高了一个以上的数量级,对钢板的质量控制在测量方式和手段上达到了国际先进水平,为进一步提高钢板质量奠定基础。由于磁致伸缩位移传感器开发方便,开发成本低,具有丰富的二次开发性能,在普通工控机中均可使用,在开发中还可对辊缝测量系统进行综合测式,如压下速度,拾辊速度,故障检测,故障保护等,在自动化控制及相关领域有着非常广阔的应用前景。