Professional Documents
Culture Documents
plc串口通讯调试Visual Basic串口通讯调试思路方法
plc串口通讯调试Visual Basic串口通讯调试思路方法
思路方法
疯狂代码 http://CrazyCoder.cn/ ĵ:http:/CrazyCoder.cn/VisualBasic/Article45394.html
现有电子秤台使用串口和计算机进行通讯编写VB来访问串口达到读取电子秤上显示数据该电子秤为
BE01型仪表输出为RS-232C标准接口波特率为300-9600、偶校验、7个数据位、2个停止位所有均发送11位
ASCII码个起始位在VB中和串口通讯需要引入Control控件MSComm串口通讯Control控件(在Microsoft
Comm Control 6.0中)具体如下:Control控件简称:MSC
****************************************************************************
.InBufferSize = 40 '设置缓冲区接收数据为40字节
.InputLen = 1 '设置Input次从接收缓冲读取字节数为1
.RThreshold = 1 '设置接收个字节就产生OnComm事件
End With
End Sub
****************************************************************************
End Sub
****************************************************************************
bDT = True
End Sub
(通信传输速率为9600bps则最快速度1.04ms发送个字节仪表每秒发送50帧数据每帧数据有4个字节即每秒发
送200个字节平均5.0ms 发送个字节连续读取串口数据时要在中添加循环等待)
DelayTime
var = Null
var = MSC.Input
Out(nNum) = var(0)
End Sub
End Sub
****************************************************************************
End Function
(仪表每秒发送50帧数据微机收到帧完整数据至少需要20 ms时间然后再进行数据处理如果微机在下帧数据
接收前即20ms内能将数据计算处理完毕则接收缓冲区内只会保存有帧数据不会存有两帧以上数据接收缓冲区大
小不会影响实时监测效果(接收缓冲区>4字节)这时完全可以实现实时监测或实时控制;如果微机在20ms内不能
将数据计算处理完毕接收缓冲区设置得又很大在数据计算处理完毕前接收缓冲区内就会保存有两帧以上数据而
且次工作时间越长缓冲区内滞留数据帧就越多数据采集和数据处理的间产生逐渐增大额外时间差当接收缓冲区
充满后时间差不再增大固定在某值部分数据因不能及时采集到接收缓冲区中数据产生丢失现象真实工作情况就
会和微机处理结果产生较大时间差对实时监测和实时控制很不利这种情况下接收缓冲区大小就会影响实时监测
效果所以接收缓冲区设置不能过大以保证数据处理实时性) 小结:本文所用仪表为梅特勒公司出产BE01型电子秤
其输出每个编码均为标准ASCII码其他仪表存在发射编码中含有BCD压缩码而且分为高低位需要接收后对其进行
解码换算的后还要将高位和低位数字进行相加即可以将其BCD码换算成实数另还存在误差可能:判断最大值仪表
在刚开始工作时有干扰会传导些乱码位移传感器有参数偏差最大值般都略大于50毫米所以取51为极限最大值取
-51为极限最小值暂时先写这些当然其他情况可以依此类推! 2008-12-26 17:17:29
疯狂代码 http://CrazyCoder.cn/