摘要:介绍了用西门子s7—200 plc可编程控制器通过rs一485串口连接两个传感器测量转速与角度,从中获取转速和角度数据,并进行数据处理。
关键词:plc;s7—200;rs一485;串口通信
0引言
s7—200是西门子公司研制的一种新型可编程控制器,它工作可靠,功能强,存储容量大,编程方便,抗干扰能力强,并且有较强的通信功能。因此可以通过它的串口与计算机或其他智能装置进行联网及通信,现代工业设备大都具有智能化、模块化的特点,往往只需要上位机发出一条指令就可以独自完成工作,并将结果通过总线返回给上位机,在其工作期间不需要任何其它设备的干预,这就给上位机留有时间来完成其它工作,对于保障系统的稳定性起到了重要作用。本文介绍的系统由s7—200通过rs一485总线连接速度和角度传感器,角度和速度传感器分布于工业现场的不同位置,plc向它们发送测量指令,传感器收到指令后向plc回传含有速度和角度值的数据,并由plc完成数据处理任务。
1系统硬件构成
本系统主要由电源模块、plc、两个分布在不同场地的旋转变压器、fb900c及fb900v变送器构成,如图1所示。电源模块向plc提供24 v直流电,市电向fb900c、fb900v提供220 v交流电,plc上rs一485口的3、8是数据a、b端,而fb900c/v的8、9是rs一485的数据a、b端,因此fb900c/v串口的8、9分别与plc串口的3、8相连。fb900c/v上的端子号从左至右依次为1—7.其中l、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的定时器t32和t96完成,t32定时则 t96复位,如果196定时,则132复位,依次循环。
它们的周期都为40 ms,t32等于40 ms时,plc发送读取速度指令,并打开中断事件25,fb900v传送速度数据后,plc响应字符中断接收完数据后就将其处理完毕,接着将132复位。再打开i"96直到1"96等于40 ms,plc发送读取角度指令,并打开中断事件25,fb900c传送角度数据后,plc响应字符中断接收完数据后就将其处理完毕,接着将196复位并打开132,如此不断循环。流程图如图2所示。
在流程图中两个定时器依次打开和复位,当每个定时器计时到40 ms,就触发程序发送相应的读数指令,响应字符接收中断接收传感器发送过来的数据,处理接收到的数据。定时器132、196起到了作为采集速度、角度数据标志信号的作用,此外还可以通过更改定时器的延时值来控制采集传感器信号的周期。发送指令、接收数据及数据处理在文章的后续部分作详细介绍,主程序流程中就不作叙述了。
3 plc及fb900c/v串口参数的设定
smb30和smbl30是s7—200的通信控制字,用来设置通信的波特率,奇偶校验位、停止位和字符长度。smb30对应端口0,smbl30对应端口l。smb30和smbl30的各位及含义如表l所示。
其中,校验方式:00和11均为无校验、01为偶校验、10为奇校验;字符长度:0为传送字符有效数据是8位、1为有效数据是7位;波特率:000为38 400、001为19 200、010为9 600、011为4 800、100为2 400、101为l 200、110为600、111为300;通信协议:00为ppl协议从站模式、01为自由口协议、lo为ppi协议主站模式、11为保留,缺省设置为ppi协议从站模式。
fb900v/c变送器的信号采用波特率为9 600,数据位为7位,校验方式为偶校验,它们的设定通过购买时自带的软件来设定。plc的通讯协议采用自由口协议。为了实现plc与fb900v/c之间能够传送数据,寄存器smbl30的各位的值的设定如表2所示,从表2中可得出smbl30对应的16进制数为69。
4数据的发送与接收
fb900c/v的读数指令格式如表3所示。
fb900c/v读取速度和角度数据指令的字符位都是52h,结束位都是0dh(厂家规定值),模块编号可以根据需要自行设定。fb900v的模块编号设为30h、32h负责传送速度数据,fb00c的模块编号设为30h、31h负责传送角度数据。fb900v速度变送器的数据输入指令格式如表4所示。
fb900c角度变送器的数据输人指令格式如表5所示。
plc发送指令(xmt)激活发送数据缓冲区(tbl)。数据缓冲区第一个数据指明了要发送的字节数,最大数为255个。port指定了用于发送的端口。发送读取速度数据指令,就将04、52、30、32、od(都为16进制)填入发送缓冲区,发送读取角度数据指令,就将04、52、30、31、0d(都为16进制)填人发送缓冲区。发送完后打开字符接收中断,本系统中用的是端口1,对应的中断号是25。每接收一个字符产生一次中断,中断链接到中断处理程序,中断处理程序将接收到存储在smb2中的字符,再转存到plc里的存储区。
传感器发送数据格式如表6所示,1是开始位,2、3是变送器编号,4是状态位(指输出数据的状态其中d=角度数据,v=速度数据,e=变送器出错)5为数据的符号,6位以后为数据(角度数据最多为8位数据+l位小数点,速度数据最多为4位数据+l位小数点),最后一位为结束位cr(0dh)。
表中都是16进制的角度数据,并且变送器编号为01,输出角度为268。。对应字符(asc ii码)如表7所示。
速度数据格式如表8所示。
表中都是16进制的速度数据,并且变送器编号为02,输出速度数据为12.0时,对应字符(asc ii码)如表9所示。
plc接收传感器发送来的数据以是否收到02h为开始,如果没有收到02h则中断返回,收到02h则将后续字符转移到plc所指定的存储单元并检验是否接受到0dh,接收到结束位0dh就开始对所收到的数据进行处理。数据的接收流程如图3所示,在数据接收流程中,每接收一个字符就会产生一次字符接收中断,inld和intl都是中断服务程序。在没有收到起始字符时int0为产生的字符中断服务,into中先判断收到的字符是否是02h,若是,就将字符缓冲区的第一个字节vbl00清零,调用子程序2将02h存入vbl00之后的存储单元中,接着就将intl连接到字符中断,这时intl为产生的字符中断服务(into不起作用)。在收到起始字符后产生的每次字符中断,中断服务程序intl都调用子程序2,将收到的字符存人起始字符的后续单元中。本文来自 plc网www.plcs.cn
intl在存储收到的字符后还判断收到的是否为结束字符,若收到,就调用子程序3进行数据处理并将into再次连接到字符中断(此时intl不起作用),准备进行下一组数据的接收。
子程序2代码如下:
ld smo.0//装载指令
incb vbl00//字符计数器加1
incd vd86//指针vd86加1
movb smb2,}vd86//字符存入指针所指单元子程序3为数据处理程序,在后面的文字中将作详细介绍并配有流程图。
5数据处理
从传感器接收过来的数据只是从02h一0dh之间的一组16进制字符,还无法直接将其中所包含的角度和速度值以一个数的形式来使用。本文所讲的数据处理,只是从接收过来的一组字符中取出所包含的速度和角度值。数据处理的关键在于找出02h一0dh之间的数据位和符号位,并将其按照:y=±(xl一30h)×l+(x2—30h)×10+(x3—30h)×100+(x4—30h)×1000+(x5—30h)×10000??,计算出对应的十进制值。x1为0dh前的第一个字符,)【2为0dh前的第二个字符,】【3为0dh前的第三个字符,依次类推直至符号位后面的第一个字符,本文中对数据精度的要求不需要精确到小数位,所以若0dh前的第二个字符为2e,则令xl为0dh前的第三个字符,)【2为0dh前的第四个字符,)【3为0dh前的第五个字符依次类推直至符号位后面的第一个字符。软件实现时指针vd96、vd86都指向odh,vd76指向02h,vd86一vd76—6为含有数据位的个数,若个数大于6则继续执行后续指令,否则收到的字符组中不含有数据(这种情况下起始字符、模块编号、状态位、符号位加结束字符不会超过6位),返回即可。vw520存放了数据结果,符号位为“一”时只需用o减去vw520结果再存入vw520即可,符号位为“+”时不需要作任何变化。软件处理流程如图4所示。流程图中,指针vd86和vd96都指向结束字符,vd76在数据接收流程中已指向起始字符,vd86一vd76可求出接收缓冲区字符的个数,移动指针vd96可依次找出个位、十位、百位等对应的字符。vw60里是传感器所测数据有效数据的个数,用来判断乘累加是否结束,vw600里是传感器所测数据有效位对应的十进制数乘以权值后所得的结果,vw500存放乘累加的结果,vw510存放的是有效数据位个位、十位、百位等对应的权值,在乘累加过程中vw510的值会依次为l、10、100、1000等,vw400、vw420里都存放了由指针vd96所取出的字符,vw410里存放了由ascii码转换的十进制数,vw520保存了上一次十进制所测的数据。
6结语
综上所述,本系统在80 ms的周期内分别对角度和速度值各采集一次,并将它们转换成十进制,为plc后续工作提供了数据来源。经实践证明,可靠性、稳定性比较好,能够满足实时性要求不是较高的工业应用场合。
参考文献
[1]刘万忠,刘明芹.电器于plc控制技术[m].北京:化学工业出版社,2003.
[2 ]廖常初.plc编程及应用[m].北京:机械工业出版社,2003.
[3] 北京飞博尔电子有限公司.fbgoov角位速度变送使用说明[m].北京飞博尔电子有限公司,2005.