电子技术论文范文工控机高速采集SSI接口数据的方法
所属栏目:电子技术论文
发布时间:2013-11-30 16:57:00 更新时间:2013-11-30 16:00:00
SSI(SynchronousSerialInterface)即同步串行接口,具有传输速度快、连线简单、抗干扰能力强等优点,在光电编码器等各种传感器上得到了广泛的应用[1,2]。工控机即工业控制计算机,具有计算机CPU、硬盘、内存、外设及接口,并有操作系统、控制网络和协议、计算能力、友好的人机界面,工控机以低成本、高性能、高可靠性等优势成为工业控制等领域的主流计算机。
摘要:同步串行接口(SSI)具有速度快、连线简单、抗干扰能力强等优点,在工业控制等领域得到了越来越广泛的应用。一般的工控机上不提供SSI接口,市场上的SSI接口扩展卡很少且价格昂贵。介绍了SSI并行接口模块SSI208P,基于数字量输入/输出扩展卡和SSI208P,给出了一种工控机高速采集多通道SSI光电编码器数据的低成本实现方案,详细阐述了硬件和软件设计方法。
关键词:SSI,光电编码器,工控机,数据采集
工控机一般不提供SSI接口,很难直接采集SSI接口的编码器等传感器数据。SSI接口转换器多将SSI数据转换成异步串行总线等低速现场总线,这大大限制了数据采集的实时性;市场上也有国外提供PCI或ISA接口的SSI接口卡,但价格昂贵且驱动程序较为复杂。工控机上多配备数字量输入/输出卡。本文采用数字量输入/输出卡控制SSI并行接口模块SSI208P,实现了一种SSI接口的低成本、高速数据采集方法。
1SSI208P模块介绍
SSI208P模块可将SSI数据高速转换成并行数据,采用DIP28封装,内部集成了SSI同步时钟发生模块、数据串并转换模块、接口控制逻辑模块、输出控制模块以及收发驱动(TTL-RS422电平转换)模块等功能模块,其功能框图如图1所示。
采用SSI208P模块对SSI接口数据的读取操作就变得类似于对A/D、D/A或存储器读取数据的操作,非常简单。SSI208P模块还能将格雷码转换成二进制码。通信速率可配置,当通信速率配置为2MHz时,对于16位精度的编码器,系统数据更新率不低于100kHz,可以满足高速伺服控制系统的需求。
SSI208P控制时序如图2所示。CONVST上升沿启动一次SSI编码器数据收发过程。CONVST电平升高后,125ns内SSI208P模块开始向编码器发送一帧同步时钟脉冲信号,脉冲的个数由编码器的精度决定,同时转换结束管脚EOC变高。发送脉冲期间管脚EOC保持高电平状态,转换结束EOC管脚电平变低后,即可从D0~D7并行读取编码器数据,每次读取八位,由A1、A0控制输出数据高低位,0表示读取最低八位、1表示读取最高八位,例如对于16位编码器只需读取两次(A1、A0分别为00、01),最多可以读取32位数据。编码器并行数据读取结束后将CONVST管脚置低,准备启动下一次转换。
2硬件设计
数字量输入/输出卡与SSI并行接口模块SSI208P及SSI光电编码器之间的硬件连接原理图如图3所示。图中数字量输入/输出卡扩展了四路SSI编码器。数字量输入/输出接口由研华公司的多功能PCI数据采集卡PCI-1716提供,该采集卡除了提供16路模数转换通道和2路数模转换通道外,还提供了16路数字量输入和16路数字量输出通道[3]。四通道光电编码器为16位格雷码输出格式。接口板上采用了四片SSI208P芯片,SSI时钟速率和编码器数据格式的设置都由接口板完成。PCI-1716的数字量输入端口的信号电气特性为:输入逻辑高电平:2.0~5.25V;输入逻辑低电平:0.0~0.80V;输出逻辑高电平:2.4V(最小);输出逻辑低电平:0.4V(最大)。参考SSI208P管脚的电气特性可知,PCI-1716和SSI208P的管脚可以直接连接。
采用PCI-1716的输入端口DI0~DI7连接四片SSI208P的数据线D0-D7,由于SSI208P在没有片选信号的情况下数据线是高阻态的,因此数据线可以共用。PCI-1716的输出端口DO1连接四片SSI208P的启动转换管脚START,可以同时控制四路SSI编码器。PCI-1716的输出端口DO0连接四片SSI208P的地址选择管脚A0,因编码器为16位,A1接地。PCI-1716的四个输出DO2-DO5分别连接四片SSI208P的片选管脚CS。IO卡的四个输入DI9-DI11分别连接四片SSI208P的转换结束指示管脚/END。使用PCI-1716的18个IO口就可以实现四路光电编码器的时序控制和数据采集。
3软件设计
编程采用BorlandC++Builder,调用PCI-1716的驱动程序操作各输入输出端口,在各输入输出端口上产生满足SSI208P的控制逻辑即可启动转换,采集数据。由图2可以看出SSI208P模块的启动转换控制和数据读取操作比较简单,软件流程如图4所示。
相应的软件代码如下:
staticPT_DioReadPortByteptSsiSta,ptSsiVal;
//编码器状态和编码器数据结构声明
USHORTSSI_STA,SSI_VAL;
//编码器的状态和数据变量声明
intSSI_VAL1,SSI_VALL,SSI_VALH;
//编码器1各数据变量
PT_DioWriteBitBit_Start,Bit_A0,Bit_CS1,Bit_CS2,Bit_CS3,Bit_CS4;
//各控制端口变量声明
……
ptSsiVal.port=0;//端口0用于读取编码器数据
ptSsiVal.value=&SSI_VAL;
ptSsiSta.port=1;//端口1用于读取编码器状态
ptSsiSta.value=&SSI_STA;Bit_START.port=0;//输出端口0.1位启动转换
Bit_START.bit=1;
Bit_A0.port=0;//输出端口0.0位地址线A0
Bit_A0.bit=0;
……
Bit_START.state=0;//START上升沿启动转换
Bit_START.state=1;
DRV_DioWriteBit(DriverHandle,&Bit_Start);
For(inti=0;i<1;i++);//延时至少125ns
DRV_DioReadPortByte(DriverHandle,
(LPT_DioReadPortByte)&ptSsiSta);
while((ptSsiSta&0x01)!=0)//等待转换结束
DRV_DioReadPortByte(DriverHandle,
(LPT_DioReadPortByte)&ptSsiSta);
Bit_CS2.state=1;//片选2-4置高
DRV_DioWriteBit(DriverHandle,&Bit_CS2);
……
DRV_DioWriteBit(DriverHandle,&Bit_CS4);
Bit_CS1.state=0;//片选1置低
DRV_DioWriteBit(DriverHandle,&Bit_CS1);
Bit_A0.state=0;//读取编码器低8位
DRV_DioWriteBit(DriverHandle,&Bit_A0);
DRV_DioReadPortByte(DriverHandle,
(LPT_DioReadPortByte)&ptSsiVal);
SSI_VALL=SSI_VAL&0xFF;
Bit_A0.state=1;//读取编码器次低8位
DRV_DioWriteBit(DriverHandle,&Bit_A0);
DRV_DioReadPortByte(DriverHandle,
(LPT_DioReadPortByte)&ptSsiVal);
SSI_VALH=SSI_VAL&0xFF;
SSI_VAL1=(SSI_VALH<<8)|SSI_VALL;
//数据拼接
……
4结束语
本文基于SSI并行接口模块SSI208P和数字量输入/输出接口扩展卡,给出了一种工控机高速采集多通道SSI光电编码器数据的低成本实现方案。试验证明,在同步时钟设置为500kHz的情况下,转换读取四路16位SSI光电编码器的时间小于100μs,可用于实时性要求很高的应用场合。该方案已经成功运用于某车载武器系统的火控分系统中,运行稳定可靠。
参考文献
[1]靳红涛,赵勇进,陈朝基.一种SSI接口光电编码器数据并行采集设计方法[J].电子技术,2008,(5).
[2]张子蓬,王淑青,刘辉.SSI接口的绝对值角度编码器值的读出方法研究[J].工业控制计算机,2005,(12).
[3]PCI-1716/1716L安装使用手册[M].
月期刊平台服务过的文章录用时间为1-3个月,依据20年经验,经月期刊专家预审通过后的文章,投稿通过率100%以上!