称重仪表与计算机数据隔离的硬件与软件的实现

类别:最新资讯 时间:2018-03-20 点击:69 次

许多衡器应用场所都需要称重仪表将数据上传给计算机,本文利用 光耦技术在二者串行口之间实现了电气隔离,简单实用,并且编制了相应的软件。仪表厂家也可将此作为仪表可选附件提供给用户。
一、概述
当前的称重仪表基本上都配置了与计算机通讯的RS232接口,用于将@重 数据传输给计算机,而且一般都提供了单向(从仪表到计算机)连续传输邊据 的功能,但是在实际使用中,由于在仪表与计算机中间并无隔离措施,所以计 算机的接入给整个称重系统带来了新的故障点,本人在实践中自制了一个简易 的单向隔离块,利用计算机串口内部的信号线做隔离电源,实现了仪表数据到 计算机的隔离。

在实现隔离之前,我们首先来认识一下RS232端口的各管脚定义和其他一 些知识。9芯的RS232接口各管脚定义如下:
pin2: RXD,数据接收端 pin3: TXD,数据发送端 pin4: DTR,数据终端就绪 pin5: Ground,信号地 pin6: DSR,数据传输设备就绪 pin7: RTS,请求发送 pin8: CTS,清除发送
对于25芯的RS232 口,以上管脚的定义为:TXD——pin2 RXD——pin3 RTS pin4 CTS pin5 DSR pin6 Ground pin7 DTR pin20
其中,RTS伯号与DTR信号是由数据终端设备(Data Terminal Equipment)发 给数据通讯设备(Data Communication Equipment)的信号,在计算机作终端设备 与称重仪表通讯过程中,这两个信号的电平是由计算机来控制的,它们是实现隔离必不可少的两个信号。RS232标准中数据信号和控制信号逻辑电平的定义如 下表:

二、硬件部分
有了以上的知识,我们就可以用以下电路来实现仪表到计算机的数据隔离 (单向):
上图中虚线框内为一光电隔离开关,图中的两个二极管和电容为光隔的输 出端提供正负电源,通过计算机将RS232 口的RTS端置成高电平,DTR端置成 低电平,根据表一中RS232控制逻辑电平的定义,RTS与DTR端可分别提供正 电压(+5V〜+15V)和负电压(-5V~ -15V),再经二极管、电容整流后,为 光隔中的NPN管提供正负电源,当仪表的信号发送端输出逻辑1时,根据表一 中RS232数据逻辑电平定义,其电压为-5V〜-15V,这时光隔导通,NPN管饱 和导通,RXD端电压为负电压,对应电平为逻辑I。同样道理,在仪表端输出逻 辑0时,光隔截止,输出至RXD端的电压为正电压,对应电平为逻辑0。这样 就利用光耦实现了仪表与计算机的彻底隔离。该单向隔离器的成本很低,仪表 厂家也可将此作为仪表的可选附件提供给用户。
三、软件部分
软件实现主要是在通讯中保证RTS端和DTR端的电平不改变,下面一段试 —148 — 验程序可供读者参考。此程序在VB5:0及VB6.0下通过。试验的仪表为3190-A2,通讯方式为连续发送方式2,波特率可根据硬件电路中光隔的速度来 调整。
首先在新建一个标准exe程序,在工程菜单的部件项上单击,在弹出的部件 选择器中找到Microsoft Comm Control 6.0项,在其左边的复选框中选中此项,按 确定回到编辑桌面,此时工具栏中多了一^个Mscomm的控件,在forml上放置一 个MScomm控件命名为comml,一个定时器Timerl,其定时间隔Timerl. interval = 200,再放置一个label控件作显7K,命名为viewwindow,一个退出按钮commandl, 其caption属性设为“退出”。其中子程序readdata从串口接收数据并从中此数据 中滤出称重显示数值。仪表传送数据格式见附表。
Dim leave As Boolean ’ 退出标志
Dim instring As String* 16 ’ 接收字符串
Private Function readdate () As Long
Dim i, j, k As Integer
Dim one,number (1 To 7) As String
Dim msg $
begin:
Do
If leave = True Then Exit Function End If
Loop Until comml. InBufferCount > =16 ’ 循环直到接收到 16 个字符 instring = comml. Input
 
 
ne:
one = Mid $ (instring, i,1)
If one = " = "Then For k = 1 To 7
number (k) = chr $ (Asc (Mid $ (instring, i + k, 1)))
Next k
For j = 1 To 7
If (Asc (number (j)) >57 Or Asc (number (j))) <48 And number (j) < >"- "And number (j) < > " = "Then GoTo begin
End If
next j Else
i = i+l If i > 9 Then GoTo begin End If GoTo ne End If
msg $ = number (7)
For i = 6 To 1 Step - I msg $ = msg & number (i)
Next i
readdata = Val ( nir>g $ )
End Function End Sub
Private Sub Commandl- Click () leave = True End Sub Private Sub Form-Load () comml. CommPort = 1 comml. Settings = 〃9600,n, comml. InputLen = 16 comml • PortOpen = True comml. RTSEnable = True comml • DTREnable = False leave = False End Sub
Private Sub Timerl-Timer ()
If leave < > True Then V! = readdata () viewwindow.Caption = Format $ (v!,〃# # # # #0")
Else
comml • PortOpen = False Unload Me
End If End Sub

仪表数据传送格式如下: 所传送的数据为仪表显示的当前称量(毛重或净重),每帧数据由9组数据 组成(包括小数点),其中有一组为分隔符

中国领先的称重软件技术提供商

The Leading Provider of Geomatic Solutions in China

展开收起网站地图