




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、电子皮带秤的防雷击及与MOXA 串口服务器的串口通讯自动化部计算机室 刘艳舒绪琪皮带秤仪表的通讯及其抗干扰行能差是长期以来屡遭雷击的主要原因,因此我们给仪表加装中继器,他又增强信号及防雷击的功能,并为计算机的串口通讯加装了转换器,它也具有防雷击的功能,这样就可以解决皮带秤仪表的防雷击,减少给生产带来的影响。1 2105系列称重控制仪表串口发送的指令: 焦化厂和烧结厂皮带秤采用的是徐州衡器的BL2105型电子皮带秤积算器,它采用的8051主从式多站通讯方式,主机主动查询从站,从站根据不同的指令响应。1.1通讯的命令格式:要实现仪表的通讯,主要分两步发送控制命令字。然后通过通讯中断处理仪表响应数据
2、。(1) 先把通讯协议设置为:Baud_Rate,m,8,1通过串口发送 地址到仪表延时0.01s(2) 接着把通讯协议设置为Baud_Rate,m,8,1通过串口发送以下数据到仪表:CommandCode FunCode Data0 Data1 Data2 Data3 Data4其中: Baud_Rate为通讯波特率,CommandCode为指令代码:01H 写指令02H 读指令03H 仪表键盘命令FunCode为功能代码Data0Data3:发送写指令时:为四字节浮点数发送读指令时:所有字节为零发送键盘指令时:所有字节为零Data4: 为前7个数据(含地址)的和取第字节1.2数据响应 发送
3、指令,仪表返回的是92字节数据Data0-Data3 为顺时流量 Data10- Data15 为主累计 Data80-Data83 为皮带速度数据计算:瞬时流量:当Data3的最高位为0时:瞬时流量(Data2×164+ Data1×162+ Data0×160)×2(Data3-256)-23当Data3的最高位为1时:瞬时流量1×(Data2-128)×164Data1×162+Data0×160 ×2(Data3-256)-23主累计:当Data15的最高位为0时:主累计=Data15×
4、166+ Data14×164+ Data13×162+ Data12×160+Data11×16(-2) +Data10×16(-4)当Data15的最高位为1时:主累计= -1(Data15-258)×166+ Data14×164+ Data13×162+ Data12×160+Data11×16(-2) +Data10×16(-4)2设计思路在自动化工业领域、有成千上万的感应器、检测器、 PLC、读卡器 或其他设备,互相连接形成一个控制网络,作为信息系统中管理数据的工具。而最常
5、用来连接这些设备的通讯界面就是 RS-232和RS-422/485总线. 近几年来,以太网/互联网等网络架构已逐渐在自动化产业内被广泛的采用,取代传统的串口通讯而成为自动化系统通讯的主流。为了防雷击我们使用的是MOXA公司的串口设备服务器Nport-5232I , 传统的SCADA系统和数据采集系统依赖串口(RS-232/422/485)来采集不同种类仪器的数据。有了NPort串口设备联网服务器,您的SCADA系统和数据采集系统能够存取任何与标准TCP/IP网络连接的设备,不论设备是位于近处或位于远程。 Nport-5232I可让工业串口设备立即连上网络,它里面有个Real COM/TTY 驱
6、动程序,用于COM/TTY口的软件现在可以随时用于TCP/IP网络。这项特点不但让您不需要更换软件,更可以让串口设备立即连网。2.1 PCom Functions(PCom 函数) 使用这套函数可以完成RS-485或RS-232到TCP-IP的转换。Port Control:sio_open 打开串口代码:Dim port As Longport = 2ret = sio_open ( port )If ret <> SIO_OK ThenOpen failEnd Ifsio_close 关闭串口代码:Dim port As Longport = 2ret = sio_close
7、( port )If ret <> SIO_OK ThenOpen failEnd IfInput Datasio_read 从设备的输入缓存区读取数据代码:Dim buf(0 To 9) As ByteDim len As Longlen = sio_read( 2, buf(0), 10)If len < 0 ThenfailEnd IfOutput Datasio_write 写入数据代码:Dim buf(0 To 9) As ByteDim len As Longlen = sio_write( 2, buf(0), 10)If len < 0 Thenfail
8、End If2.2 窗体设计左边的文本框显示从皮带秤仪表中读取的82个16进制数右边的第一个文本框显示累计值右边的第而个文本框显示瞬时值begin按钮用来循环采集数据stop按钮用开关闭串口2. 3程序设计打开串口PrivateFunction OpenPort() AsBooleanDim ret AsIntegerDim syserr AsIntegerTerm.Text = ""OpenPort = Falseret = sio_open(GCommData.port)If ret <> SIO_OK Thensio_close(GCommData.por
9、t)ExitFunctionEndIfIf PortSet() = FalseThensio_close(GCommData.port)ExitFunctionEndIfOpenPort = TrueGbOpen = TrueEndFunction关闭串口PrivateFunction ClosePort() AsObjectsio_close(GCommData.port)EndFunction发送读的指令PrivateFunction PortSet() AsBooleanDim port AsIntegerDim mode AsIntegerDim Hw, Sw AsIntegerDim
10、 ret AsIntegerDim tout AsIntegerport = GCommData.portPortSet = Falsemode = BIT_8 Or STOP_1 Or P_MRKret = sio_ioctl(port, B4800, mode)If ret <> SIO_OK ThenExitFunctionEndIfDim adress1(1) AsByteadress1(0) = 1Dim a AsIntegera = sio_write(port, adress1(0), 1)mode = BIT_8 Or STOP_1 Or P_SPCret = si
11、o_ioctl(port, B4800, mode)If ret <> SIO_OK ThenExitFunctionEndIfDim b(6) AsByteb(0) = &H2sb(1) = 0b(2) = 0b(3) = 0b(4) = 0b(5) = 0b(6) = &H3sa = sio_write(port, b(0), 7)Call sio_SetWriteTimeouts(GCommData.port, 3000)Sleep(1000)Dim rlen AsIntegerDim buf(511) AsByteTerm.Text = " beg
12、in read"rlen = sio_read(GCommData.port, buf(0), 512)If rlen > 0 ThenCall ShowData(buf, rlen)ElseIf rlen = 0 ThenEndIfEndIfEndFunction计算瞬时流量 和累计值Private Sub CalaLJZ(Dta() As Byte, rlen As Long) Dim t1, t2, t3, t4, t5, t As Double If Dta(15) < 128 Then t1 = CDbl(Dta(14) * 16 * 16 * 16 * 16
13、t2 = CDbl(Dta(13) * 16 * 16 t3 = CDbl(Dta(12) t4 = CDbl(Dta(11) / 256 t5 = CDbl(Dta(10) / 65536 t = t1 + t2 + t3 + t4 + t5 Text1.Text = t Else Text1.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)
14、 / (16 * 16 * 16 * 16) End If If Dta(3) < 128 Then t1 = (CDbl(Dta(2) - 128) * 16 * 16 * 16 * 16 t2 = CDbl(Dta(1) * 16 * 16 t3 = CDbl(Dta(0) t4 = (t1 + t2 + t3) * 2 * (Dta(3) - 256 - 23) Text2.Text = t4 End If3 网页实时数据刷新,历史查询,历史曲线3.1 网页实时数据刷新 网页实时数据刷新是为了满足生产单位可以实时的看数据,该数据每5秒刷新一次。这部分使用的是的web service
15、技术,Web Service就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API。这就是说,你能够用编程的方法通过Web调用来实现某个功能的应用程序。例如,笔者创建一个Web Service,它的作用是查询某公司某员工的基本信息。界面如下:代码如下:publicstring Neng_Shc()string strIn="server=;database=皮带秤;user id=sa;password=1228;"SqlConnection cn = new SqlConnection(strIn);string strSQL,strOu
16、t=strOut="<table border='1' id=tneng><tr><th width=60px size=3 >仪表名<th width=100px size=3 >瞬时值<th width=100px size=3 >累计值"strSQL=" select top 6 ssz,ljz,sj,tablename from 皮带秤表 order by sj desc"SqlCommand comm = new SqlCommand(strSQL, cn);comm.
17、CommandType = CommandType.Text;trycn.Open();SqlDataReader myReader = comm.ExecuteReader();if (myReader.HasRows)while (myReader.Read()strOut=strOut+"<tr>" strOut=strOut+"<td align=left><font size=2>"+ myReader3.ToString() +"</font>"strOut=strOut+&
18、quot;<td align=left><font size=2>"+ myReader0.ToString() +"</font>"strOut=strOut+"<td align=right><font size=2>"+ myReader1.ToString() +"</font>"myReader.Close();catch(Exception e)Console.WriteLine(e.Message);finallycn.Close(); r
19、eturn strOut;function Loopz()service.useService("/WebServiceForElect/Service1.asmx?wsdl","TimeService");service.TimeService.callService(callback1,"Neng_Shc"); setTimeout("Loopz()",100); function callback1(res) if(!res.error) a=res.value; label3.
20、innerHTML =a; /label4.innerHTML =a; /label5.innerHTML =a; function timer() Loopz();3. 2历史曲线这部分可以更直观的查询某一阶段的历史趋势图界面如下:代码如下:privatevoid Page_Load(object sender, System.EventArgs e)string path = "C:InetpubwwwrootWebApplication1tempgif"/目录存在,就删除目录if (Directory.Exists(path) Directory.Delete(pat
21、h, true);if (!Directory.Exists(path) Directory.CreateDirectory(path);if ( !IsPostBack )string CommandText = "SELECT port,tablename from 仪表的端口"string constr="Data Source=(local);user id=sa;password=1228;Initial Catalog=皮带秤" SqlConnection conn = new SqlConnection(constr); SqlComman
22、d cmd=new SqlCommand(CommandText ,conn); conn.Open(); SqlDataReader reader=cmd.ExecuteReader(); while (reader.Read()DropDownList1.Items.Add (reader"tablename".ToString() );reader.Close(); conn.Close(); #region Web 窗体设计器生成的代码overrideprotectedvoid OnInit(EventArgs e)InitializeComponent();bas
23、e.OnInit(e);privatevoid InitializeComponent() this.Button1.Click += new System.EventHandler(this.Button1_Click);this.Button2.Click += new System.EventHandler(this.Button2_Click);this.Load += new System.EventHandler(this.Page_Load);#endregionprivatevoid Button1_Click(object sender, System.EventArgs e
24、) string begin;string end;string sql;DateTime dt = DateTime.Now;begin=DropDownList2.SelectedValue + '-'+DropDownList6.SelectedValue + '-'+DropDownList5.SelectedValue; end =DropDownList8.SelectedValue + '-'+DropDownList9.SelectedValue + '-'+DropDownList11.SelectedValue
25、;string tablename = "a" + DropDownList2.SelectedValue + DropDownList6.SelectedValue;string constr="Data Source=(local);user id=sa;password=1228;Initial Catalog=皮带秤" if ( DropDownList6.SelectedValue = dt.Month.ToString() ) sql="SELECT ljz,sj FROM 皮带秤表 where sj> '"
26、 + begin + "' and sj< '" + end + "' and tablename='" + DropDownList1.SelectedValue +"' and timer % 60=0 order by sj " elsesql="SELECT ljz,sj FROM " + tablename +" where sj> '" + begin + "' and sj< '"
27、 + end + "' and tablename='" + DropDownList1.SelectedValue +"'and timer % 60=0 order by sj " SqlConnection conn = new SqlConnection(constr); SqlCommand cmd=new SqlCommand(sql,conn); conn.Open(); SqlDataReader reader=cmd.ExecuteReader(); string strValue="",st
28、rCategory="",strSeriesName="皮带秤瞬时值图" int i=0; while(reader.Read() strCategory+=reader"sj".ToString() +'t' strValue+=reader"ljz".ToString()+'t' i+; reader.Close(); conn.Close(); OWC10.ChChartSpace objCSpace = new OWC10.ChartSpaceClass(); OWC10.C
29、hChart objChart = objCSpace.Charts.Add (0); objChart.Type=OWC10.ChartChartTypeEnum.chChartTypeSmoothLine; objChart.ChartDepth=10; objChart.HasLegend = false; int result = Int32.Parse(TextBox3.Text.Trim() );objChart.Axes0.HasTickLabels=true; objChart.Axes0.TickLabelSpacing=result;/每隔5个标一个数值objChart.A
30、xes0.HasTitle=true; objChart.Axes0.Title.Caption="时间" objChart.Axes0.Title.Font.Size=9; objChart.Axes1.HasTitle=true; objChart.Axes1.Title.Caption="吨" objChart.Axes1.Title.Font.Size=9; objChart.HasTitle = true; objChart.Title.Font.Size=10; objChart.SeriesCollection.Add(0); objCha
31、rt.SeriesCollection0.SetData (OWC10.ChartDimensionsEnum.chDimSeriesNames, (int)OWC10.ChartSpecialDataSourcesEnum.chDataLiteral, strSeriesName); /给定分类objChart.SeriesCollection0.SetData(OWC10.ChartDimensionsEnum.chDimCategories, (int)OWC10.ChartSpecialDataSourcesEnum.chDataLiteral, strCategory); /给定值o
32、bjChart.SeriesCollection0.SetData(OWC10.ChartDimensionsEnum.chDimValues, (int)OWC10.ChartSpecialDataSourcesEnum.chDataLiteral, strValue); string strFullPathAndName=Server.MapPath(".")+"tempgif"+System.DateTime.Now.Ticks.ToString() +".gif" string RelativePath=".temp
33、gif"+System.DateTime.Now.Ticks.ToString() +".gif" objCSpace.ExportPicture( strFullPathAndName,"gif",1000,400); Image1.ImageUrl=RelativePath; Image1.Visible =true; Image1.Visible =true;privatevoid Button2_Click(object sender, System.EventArgs e) Response.Redirect("http:/
34、localhost/pd/皮带秤.htm"); 3.3历史查询可以在”历史查询”页面上查询某一天的累计值和瞬时值界面如下:代码如下:PrivateSub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.LoadDim i AsIntegerIfNot IsPostBack Then DropDownList1.Items.Add("2006") DropDownList1.Items.Add("2007") DropDownL
35、ist1.Items.Add("2008") DropDownList4.Items.Add("2006") DropDownList4.Items.Add("2007") DropDownList4.Items.Add("2008")For i = 1 To 12 DropDownList2.Items.Add(i) DropDownList5.Items.Add(i)NextFor i = 1 To 31 DropDownList3.Items.Add(i) DropDownList6.Items.Add(i)
36、NextFor i = 1 To 24 DropDownList7.Items.Add(i & ":00.00") DropDownList10.Items.Add(i & ":00.00")Next DropDownList1.SelectedValue = Now.Year DropDownList4.SelectedValue = Now.Year DropDownList2.SelectedValue = Now.Month DropDownList5.SelectedValue = Now.Month DropDownList3
37、.SelectedValue = Now.Day DropDownList6.SelectedValue = Now.DayEndIfEndSubPrivateSub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ConnectionString = "Data Source=(local);user id=sa;password=1228;Initial Catalog=皮带秤" begintime = DropDownList
38、1.SelectedValue & "-" & DropDownList2.SelectedValue & "-" & DropDownList3.SelectedValue & " " & DropDownList7.SelectedValue endtime = DropDownList4.SelectedValue & "-" & DropDownList5.SelectedValue & "-" & Drop
39、DownList6.SelectedValue & " " & DropDownList10.SelectedValue tablename = "a" & DropDownList1.SelectedValue & DropDownList2.SelectedValueIf DropDownList2.SelectedValue = Now.Month Then CommandText = "SELECT xh as 序号 ,tablename as 地点,ssz as 实时值 ,ljz as 累计值,sj a
40、s 时间 from 皮带秤表 where sj>='" & begintime & " ' and sj<'" & endtime & " '"Else CommandText = "SELECT xh as 序号 ,tablename as 地点,ssz as 实时值 ,ljz as 累计值,sj as 时间 from " & tablename & " where sj>='" & beg
41、intime & " ' and sj<'" & endtime & " '"EndIfDim myConnection AsNew SqlConnection(ConnectionString) myConnection.Open()Dim ds As DataSet = New DataSetDim foxda AsNew SqlDataAdapter(CommandText, myConnection)If DropDownList2.SelectedValue = Now.Month Then foxda.Fill(ds, "皮带秤表&quo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 售楼部个人年终总结(8篇)
- 童装代理中介合同
- 合同涉及的公摊责任
- 社会责任投资合同
- 线上培训会议协议范本
- 模芯钢材采购合同协议
- 商服出租房合同协议
- 商业锅炉维保合同协议
- 员工外出创业协议书范本
- 毕业生劳动就业合同协议
- 2025商业综合体委托经营管理合同书
- 2024-2025学年北师大版生物七年级下册期中模拟生物试卷(含答案)
- 林业理论考试试题及答案
- 超市店长价格管理制度
- 2025-2030中国脑芯片模型行业市场发展趋势与前景展望战略研究报告
- 2025年河南省洛阳市洛宁县中考一模道德与法治试题(含答案)
- 掘进爆破、爆破安全知识
- 绿色工厂员工培训
- 2025年吉林省长春市中考一模历史模拟试题(含答案)
- GB/T 17622-2008带电作业用绝缘手套
- ISO15189体系性能验证报告模版-EP15
评论
0/150
提交评论