PLc串口在获取传感器数据中的应用
张坤
(解放军电子工程学院,安徽合肥230037)
摘要:介绍了用西门子s7—200可编程控制器通过Rs-485串口连接两个传感器测量转速与角度,从中获取转速和角度数据,并进行数据处理。
关键词:PLc;s7—200;Rs-485;串口通信
中图分类号:T3/1383.2 文献标识码:A 文章编号:1004-7018(2008)06—0013—03
0引 言
S7—200是西门子公司研制的一种薪型可编程控制器,它工作可靠,功能强,存储容量大,编程方便,抗干扰能力强,并且有较强的通信功能。因此可以通过它的串口与计算机或其他智能装置进行联网及通信,现代工业设备大都具有智能化、模块化的特点,往往只需要上位机发出一条指令就可以独自完成工作,并将结果通过总线返回给上位机,在其工作期间不需要任何其它设备的干预,这就给上位机留有时间来完成其它工作,对于保障系统的稳定性起到了重要作用。本文介绍的系统由s7—200通过Rs-485总线连接速度和角度传感器,角度和速度传感器分布于工业现场的不同位置,PLc向它们发送测量指令,传感器收到指令后向PLc回传含有速度和角度值的数据,并由PLc完成数据处理任务。
l系统硬件构成
本系统主要由电源模块、PLc、两个分布在不同场地的旋转变压器、FB900c及FB900v变送器构成,如图1所示。电源模块向PLc提供24 V直流电,市电向FB900c、FB900V提供220 V交流电,PLc上Rs-485口的3、8是数据4、B端,而FB900c/V的8、9是Rs一485的数据A、B端,因此FB900c/V串口的8、9分别与PLc串口的3、8相连。FB900c/V上的端子号从左至右依次为1~7,其中1、2为供电端口,3、4为FB900c/V向旋转变压器提供的8 V交流电,5、6、7为旋转变压器向FB900C/V提供的信号。
2软件设计总体思路
FB900c/V将旋转变压器传来的信号分别转换成角度和速度数据,通过Rs-485总线传向PLc再由PLc对其进行处理。为了避免数据传输过程中发生数据冲突,将FB900C/V设置成指令传送模式,FB900C/V收到相应的指令就会向Rs 485总线上传含有角度和速度的数据,没有收到相应的指令就不会发送数据。为了避免数据冲突,采用分时读取FB900C和FB900V数据方式,即PLc先发送读取速度数据指令,FB900V收到后就立即向总线上传送速度数据,PLc收到总线上的数据后将其存储下来并对其进行处理,完成数据处理后PLc再发送读取角度数据指令,FB900C收到指令后立即向总线上传送角度数据,PLc收到总线上的数据后将其存储下来并对其进行处理,完成数据处理后PLc再发送读取角度速度数据指令,依次不断循环下去。分时工作由PLc的定时器B2和T196完成,T32定时则T96复位,如果T96定时,则T32复位,依次循环。它们的周期都为40 ms,T32等于40 ms时,PLc发送读取速度指令,并打开中断事件25,FB900V传送速度数据后,PLc响应字符中断接收完数据后就将其处理完毕,接着将T32复位。再打开T96直到T96等于40 ms,PLc发送读取角度指令,并打开中断事件25,FB900C传送角度数据后,PLc响应字符中断接收完数据后就将其处理完毕,接着将T96复位并打开T32,如此不断循环。流程图如图2所示。在流程图中两个定时器依次打开和复位,当每个定器计时到40 ms,就触发程序发送相应的读数指令,响应字符接收中断接收传感器发送过来的数据,处理接收到的数据。定时器T32、T96起到了作为采集速度、角度数据标志信号的作用,此外还可以通过更改定时器的延时值来控制采集传感器信号的周期。发送指令、接收数据及数据处理在文章的后续部分作详细介绍,主程序流程中就不作叙述了。
3 PLc及FB900C/V串口参数的设定
SMB30和SMBl30是s7—200的通信控制字,用来设置通信的波特率,奇偶校验位、停止位和字符长度。SMB30对应端口0,SMBl30对应端口1。SMB30和SMBl30的各位及含义如表1所示。
其中,校验方式:00和11均为无校验、Ol为偶校验、10为奇校验;字符长度:O为传送字符有效数据是8位、l为有效数据是7位;波特率:000为38 400、001为19 200、010为9 600、叫l为4 800、100为2 400、101为1 200、110为600、111为300;通信协议:00
为PPI协议从站模式、01为自由口协议、10为PPI协议主站模式、1l为保留,缺省设置为PH协议从站模式。
FB900V/c变送器的信号采用波特率为9 600,数据位为7位,校验方式为偶校验,它们的设定通过购买时自带的软件来设定。PLc的通讯协议采用自由口协议。为了实现PLc与FB900V/c之间能够传送数据,寄存器SMBl30的各位的值的设定如表2所示,从表2中可得出SMBl30对应的16进制数为69。
4数据的发送与接收
FB900C/V的读数指令格式如表3所示。
FB900C/V读取速度和角度数据指令的字符位都是52H,结束位都是ODH(厂家规定值),模块编号可以根据需要自行设定。FB900V的模块编号设为30H、32H负责传送速度数据,FBOOD的模块编号设为:30H、31H负责传送角度数据。FB900V速度变送器的数据输入指令格式如表4所示。
FB900C角度变送器的数据输入指令格式如表
5所示。
PLc发送指令(XMT)激活发送数据缓冲区(TBL)。数据缓冲区第一个数据指明了要发送的字节数,****数为255个。PORT指定了用于发送的端口。发送读取速度数据指令,就将04、52、30、32、OD(都为16进制)填人发送缓冲区,发送读取角度数据指令,就将04、52、30、3l、0D(都为16进制)填人发送缓冲区。发送完后打开字符接收中断,本系统中用的是端口1,对应的中断号是25。每接收一个字符产生一次中断,中断链接到中断处理程序,中断处理程序将接收到存储在SMB2中的字符,再转存到PLc里的存储区。
传感器发送数据格式如表6所示,l是开始位,2、3是变送器编号,4是状态位(指输出数据的状态其中D=角度数据,y=速度数据,E=变送器出错)5为数据的符号,6位以后为数据(角度数据最多为8位数据+l位小数点,速度数据最多为4位数据+1位小数点),最后一位为结束位cR(0DH)。
表中都是16进制的角度数据,并且变送器编号为01,输出角度为268。。对应字符(ASCⅡ码)如表7所示。
速度数据格式如表8所示。
表中都是16进制的速度数据,并且变送器编号为02,输出速度数据为12.O时,对应字符(ASCⅡ码)如表9所示。
PLc接收传感器发送来的数据以是否收到02H为开始,如果没有收到02H则中断返回,收到02H则将后续字符转移到PLc所指定的存储单元并检验是否接受到0DH,接收到结束位0DH就开始对所收到的数据进行处理。数据的接收流程如图3所示,在数据接收流程中,每接收一个字符就会产生一次字符接收中断,IN皿和INTl都是中断服务程序。在没有收到起始字符时INTO为产生的字符中断服务,INTD中先判断收到的字符是否是02H,若是,就将字符缓冲区的第一个字节VBl00清零,调用子程序2将02H存入vBl00之后的存储单元中,接着就将INTl连接到字符中断,这时INTl为产生的字符中断服务(INT0不起作用)。在收到起始字符后产生的每次字符中断,中断服务程序INTl都调用子程序2,将收到的字符存人起始字符的后续单元中。INTl在存储收到的字符后还判断收到的是否为结束字符,若收到,就调用子程序3进行数据处理并将IN阳再次连接到字符中断(此时INTl不起作用),准备进行下一组数据的接收。
子程序2代码如下:
LD SM0.0//装载指令
INCB VB100//字符计数器加1
INCD VD86//指针VD86加1
MOVB SMB2,VD86//字符存入指针所指单元子程序3为数据处理程序,在后面的文字中将作详细介绍并配有流程图. 5数据处理
从传感器接收过来的数据只是从02H~0D11之间的一组16进制字符,还无法直接将其中所包含的角度和速度值以一个数的形式来使用。本文所讲的数据处理,只是从接收过来的一组字符中取出所包含的速度和角度值。数据处理的关键在于找出02H~0DH之间的数据位和符号位,并将其按照:Y=±(x1-30H)×1+(x2—30H)×lO+(x3-30H)×100+(x4—30H)×1000+(x5—30H)×10000……,计算出对应的十进制值。x1为0DH前的第一个字符,x2为0DH前的第二个字符,x3为0DH前的第三个字符,依次类推直至符号位后面的第一个字符,本文中对数据精度的要求不需要精确到小数位,所以若0DH前的第二个字符为2E,则令x1为ODH前的第三个字符,x2为0DH前的第四个字符,x3为0D}I前的第五个字符依次类推直至符号位后面的第一个字符。软件实现时指针V1396、vD86都指向0DH,V1376指向02H,VD86-VD76—6为含有数据位的个数,若个数大于6则继续执行后续指令,否则收到的字符组中不含有数据(这种情况下起始字符、模块编号、状态位、符号位加结束字符不会超过6位),返回即可。VW520存放了数据结果,符号位为“-”时只需用O减去Vw520结果再存入VW520即可,符号位为“+”时不需要作任何变化。软件处理流程如图4所示。流程图中,指针VD86和VD96都指向结束字符,VI)76在数据接收流程中已指向起始字符,VD86-VD76可求出 
接收缓冲区字符的个数,移动指针VD96可依次找出个位、十位、百位等对应的字符。VW60里是传感器所测数据有效数据的个数,用来判断乘累加是否结束,VW600里是传感器所测数据有效位对应的十进制数乘以权值后所得的结果,VW500存放乘累加的结果,VW510存放的是有效数据位个位、十位、百位等对应的权值,在乘累加过程中Vw510的值会依次为1、10、100、1000等,VW400、Vw420里都存放了由指针VD96所取出的字符,VW410里存放了由ASCII码转换的十进制数,VW520保存了上一次十进制所测的数据。
6结语
综上所述,本系统在80 ms的周期内分别对角度和速度值各采集一次,并将它们转换成十进制,为PLc后续工作提供了数据来源。经实践证明,可靠性、稳定性比较好,能够满足实时性要求不是较高的工业应用场合。
|