您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 电子皮带秤的防雷击解决方案
1电子皮带秤的防雷击及与MOXA串口服务器的串口通讯自动化部计算机室刘艳舒绪琪皮带秤仪表的通讯及其抗干扰行能差是长期以来屡遭雷击的主要原因,因此我们给仪表加装中继器,他又增强信号及防雷击的功能,并为计算机的串口通讯加装了转换器,它也具有防雷击的功能,这样就可以解决皮带秤仪表的防雷击,减少给生产带来的影响。1.2105系列称重控制仪表串口发送的指令:焦化厂和烧结厂皮带秤采用的是徐州衡器的BL2105型电子皮带秤积算器,它采用的8051主从式多站通讯方式,主机主动查询从站,从站根据不同的指令响应。1.1通讯的命令格式:要实现仪表的通讯,主要分两步发送控制命令字。然后通过通讯中断处理仪表响应数据。(1)先把通讯协议设置为:Baud_Rate,m,8,1通过串口发送地址到仪表延时0.01s(2)接着把通讯协议设置为Baud_Rate,m,8,1通过串口发送以下数据到仪表:CommandCodeFunCodeData0Data1Data2Data3Data4其中:Baud_Rate为通讯波特率,CommandCode为指令代码:01H–写指令02H–读指令03H–仪表键盘命令FunCode为功能代码Data0-Data3:发送写指令时:为四字节浮点数发送读指令时:所有字节为零发送键盘指令时:所有字节为零Data4:为前7个数据(含地址)的和取第字节1.2数据响应发送指令,仪表返回的是92字节数据Data0-Data3为顺时流量Data10-Data15为主累计Data80-Data83为皮带速度数据计算:瞬时流量:当Data3的最高位为0时:瞬时流量=(Data2×16^4+Data1×16^2+Data0×16^0)×2[(Data3-256)-23]当Data3的最高位为1时:瞬时流量=-1×[(Data2-128)×16^4+Data1×16^2+Data0×16^0]×2[(Data3-256)-23]主累计:当Data15的最高位为0时:主累计=Data15×16^6+Data14×16^4+Data13×16^2+Data12×16^0+Data11×16^(-2)+Data10×16^(-4)当Data15的最高位为1时:2主累计=-1[(Data15-258)×16^6+Data14×16^4+Data13×16^2+Data12×16^0+Data11×16^(-2)+Data10×16^(-4)]2设计思路在自动化工业领域、有成千上万的感应器、检测器、PLC、读卡器或其他设备,互相连接形成一个控制网络,作为信息系统中管理数据的工具。而最常用来连接这些设备的通讯界面就是RS-232和RS-422/485总线.近几年来,以太网/互联网等网络架构已逐渐在自动化产业内被广泛的采用,取代传统的串口通讯而成为自动化系统通讯的主流。为了防雷击我们使用的是MOXA公司的串口设备服务器Nport-5232I,传统的SCADA系统和数据采集系统依赖串口(RS-232/422/485)来采集不同种类仪器的数据。有了NPort串口设备联网服务器,您的SCADA系统和数据采集系统能够存取任何与标准TCP/IP网络连接的设备,不论设备是位于近处或位于远程。Nport-5232I可让工业串口设备立即连上网络,它里面有个RealCOM/TTY驱动程序,用于COM/TTY口的软件现在可以随时用于TCP/IP网络。这项特点不但让您不需要更换软件,更可以让串口设备立即连网。2.1PComFunctions(PCom函数)使用这套函数可以完成RS-485或RS-232到TCP-IP的转换。PortControl:sio_open打开串口代码:DimportAsLongport=2ret=sio_open(port)IfretSIO_OKThen‘OpenfailEndIfsio_close关闭串口代码:DimportAsLongport=2ret=sio_close(port)IfretSIO_OKThen‘OpenfailEndIfInputDatasio_read从设备的输入缓存区读取数据代码:Dimbuf(0To9)AsByteDimlenAsLonglen=sio_read(2,buf(0),10)Iflen0Then‘failEndIfOutputData3sio_write写入数据代码:Dimbuf(0To9)AsByteDimlenAsLonglen=sio_write(2,buf(0),10)Iflen0Then‘failEndIf2.2窗体设计左边的文本框显示从皮带秤仪表中读取的82个16进制数右边的第一个文本框显示累计值右边的第而个文本框显示瞬时值begin按钮用来循环采集数据stop按钮用开关闭串口2.3程序设计打开串口PrivateFunctionOpenPort()AsBooleanDimretAsIntegerDimsyserrAsIntegerTerm.Text=OpenPort=Falseret=sio_open(GCommData.port)IfretSIO_OKThensio_close(GCommData.port)ExitFunctionEndIf4IfPortSet()=FalseThensio_close(GCommData.port)ExitFunctionEndIfOpenPort=TrueGbOpen=TrueEndFunction关闭串口PrivateFunctionClosePort()AsObjectsio_close(GCommData.port)EndFunction发送读的指令PrivateFunctionPortSet()AsBooleanDimportAsIntegerDimmodeAsIntegerDimHw,SwAsIntegerDimretAsIntegerDimtoutAsIntegerport=GCommData.portPortSet=Falsemode=BIT_8OrSTOP_1OrP_MRKret=sio_ioctl(port,B4800,mode)IfretSIO_OKThenExitFunctionEndIfDimadress1(1)AsByteadress1(0)=1DimaAsIntegera=sio_write(port,adress1(0),1)mode=BIT_8OrSTOP_1OrP_SPCret=sio_ioctl(port,B4800,mode)IfretSIO_OKThenExitFunctionEndIfDimb(6)AsByteb(0)=&H2sb(1)=0b(2)=0b(3)=0b(4)=0b(5)=05b(6)=&H3sa=sio_write(port,b(0),7)Callsio_SetWriteTimeouts(GCommData.port,3000)Sleep(1000)DimrlenAsIntegerDimbuf(511)AsByteTerm.Text=beginreadrlen=sio_read(GCommData.port,buf(0),512)Ifrlen0ThenCallShowData(buf,rlen)ElseIfrlen=0ThenEndIfEndIfEndFunction计算瞬时流量和累计值PrivateSubCalaLJZ(Dta()AsByte,rlenAsLong)Dimt1,t2,t3,t4,t5,tAsDoubleIfDta(15)128Thent1=CDbl(Dta(14))*16*16*16*16t2=CDbl(Dta(13))*16*16t3=CDbl(Dta(12))t4=CDbl(Dta(11))/256t5=CDbl(Dta(10))/65536t=t1+t2+t3+t4+t5Text1.Text=tElseText1.Text=(-1)*(Dta(15)-128)*16*16*16*16*16*16+Dta(14)*16*16*16*16+Dta(13)*16*16+Dta(12)+Dta(11)/(16*16)+Dta(10)/(16*16*16*16)EndIfIfDta(3)128Thent1=(CDbl(Dta(2))-128)*16*16*16*16t2=CDbl(Dta(1))*16*16t3=CDbl(Dta(0))t4=(t1+t2+t3)*2*(Dta(3)-256-23)Text2.Text=t4EndIf3网页实时数据刷新,历史查询,历史曲线3.1网页实时数据刷新网页实时数据刷新是为了满足生产单位可以实时的看数据,该数据每5秒刷新一次。这部分使用的是vb.net的webservice技术,WebService就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API。这就是说,你能够用编程的方法通过Web调用来实现某个功能的应用程序。例如,笔者创建一个WebService,它的作用是查询某公司某员工的基本信息。6界面如下:代码如下:publicstringNeng_Shc(){stringstrIn=server=190.168.0.9;database=皮带秤;userid=sa;password=1228;;SqlConnectioncn=newSqlConnection(strIn);stringstrSQL,strOut=strOut=tableborder='1'id=tnengtrthwidth=60pxsize=3仪表名thwidth=100pxsize=3瞬时值thwidth=100pxsize=3累计值;strSQL=selecttop6ssz,ljz,sj,tablenamefrom皮带秤表orderbysjdesc;SqlCommandcomm=newSqlCommand(strSQL,cn);comm.CommandType=CommandType.Text;try{cn.Open();SqlDataReadermyReader=comm.ExecuteReader();if(myReader.HasRows)while(myReader.Read()){7strOut=strOut+tr;strOut=strOut+tdalign=leftfontsize=2+myReader[3].ToString()+/font;strOut=strOut+tdalign=leftfontsize=2+myReader[0].ToString()+/font;strOut=strOut+tdalign=rightfontsize=2+myReader[1].ToString()+/font;myReader.Close();}catch(Exceptione){Console.WriteLine(e.Message);}finally{cn.Close();}returnstrOut;}functionLoopz(){service.useService();service.TimeService.callService(callback1,Neng_Shc);setTimeout(Loopz(),100);}functioncallback1(res){if(!res.error){a=res.value;label3.innerHTML=a;//label4.innerHTML=a;//label5.innerHTML=a;}}functiontimer(){Loopz();}3.2历史曲线这部分可以更直观的查询某一阶段的历史趋势图界面如下:8代码如下:privatevoidPage_Load(objectsende
本文标题:电子皮带秤的防雷击解决方案
链接地址:https://www.777doc.com/doc-2253962 .html