




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- (黃)中外合公司合同7篇
- 樓頂鋪設維修合同協議
- 商場店鋪招租合同協議
- 吵架分手協議合同書
- 品牌電商授權合同協議
- 公司勞動合同簡約5篇
- 房地產勞動合同范例
- 二零二五版登報合同作廢聲明范例
- 房屋租賃合同書續約協議書
- 私家車出租合同書協議書范例二零二五年
- 2025商業綜合體委托經營管理合同書
- 2024-2025學年北師大版生物七年級下冊期中模擬生物試卷(含答案)
- 林業理論考試試題及答案
- 超市店長價格管理制度
- 2025-2030中國腦芯片模型行業市場發展趨勢與前景展望戰略研究報告
- 2025年河南省洛陽市洛寧縣中考一模道德與法治試題(含答案)
- 掘進爆破、爆破安全知識
- 綠色工廠員工培訓
- GB/T 17622-2008帶電作業用絕緣手套
- 煤礦班組安全文化建設(課堂PPT)
- ISO15189體系性能驗證報告模版-EP15
評論
0/150
提交評論