基于VB6.0的工控机与智能流量积算仪的串口通信

发布者:chaohuangmeitao最新更新时间:2014-11-12 来源: eefocus关键字:VB6.0  工控机与  流量积算仪  串口通信 手机看文章 扫描二维码
随时随地手机看文章

1、引言

  本文主要从应用的角度利用VB6.0的MSComm 控件和MODBUS协议,成功实现了某流量控制系统中工控机与带RS-232输出接口的智能数字流量积算仪之间的串口通信功能。D08-8CZM数字显示表应用于底吹氩流量控制系统中流量的显示,工控机通过读取其显示值作为反馈信号,从而实现流量的闭环控制。

2、D08-8CZM型智能数字流量显示积算仪与串口通信

  2.1 硬件构成

  D07-12A型质量流量传感器采用毛细管传热温差量热法原理测量气体的质量流量(无需温度压力补偿)。将传感器加热电桥测得的流量信号送入放 大器放大,放大后的流量检测电压与设定电压进行比较,再将差值信号放大后去控制调节阀门,闭环控制流过通道的流量使之与设定的流量相等。当本流量积算仪与 MFC(质量流量计)配套使用时,只需用电缆通过D型插头将流量积算仪与MFC连接起来即可。然后采用一台上位机与一台D08-8CZM流量积算仪进行通 信的方式,使用RS232通讯方式:将2引脚(TXD)与上位机串口的RXD(工控机串口的2引脚)相连;3引脚(RXD)与上位机串口的TXD(工控机串口的3引脚)相连;5引脚(SG)与上位机串口的SG(工控机串口的5引脚)相连。

  2.2 通讯原理

  工控机作 为上位机与从机(数字流量积算仪)采用主从应答方式进行通信,一个网络中只有一个主机(上位机,节点地址为0),主机通过站号(数字流量积算仪的唯一地 址)区分不同的从机。上位机始终处于主动状态,根据程序运行的需要向(通信端口)数字流量积算仪发出读写等命令;从机处于被动状态,接收并响应上位机的命 令。需要读采样数据时,上位机通过通信口向指定地址的数字流量积算仪发出读数据命令,数字流量积算仪响应并将数据准备好,按统一的数据通信帧格式编成响应 字符串,主机再次读通信口接收缓冲区即可读到所需的数据。向数字流量积算仪写数据时,上位机向指定数字流量积算仪发出写命令及参数数据,积算仪即可接受并 返回响应情况。上位机通过RS-232通信进行运行状态监控、参数设置、诊断等远程测控功能,实现这些功能采用了不同的通信格式。其中MODBUS协议通讯原理图如下:

图1 MODBUS协议的询问应答环路

  2.3 通讯协议

  本通信协议应用于D08-8CZM型流量积算仪与上位机的通信,数据以16进制格式传输,波特率:9600;数据位8位;停止位:1位;效验位:无。本协议与MODBUS协议兼容,可以通过上位机显示流量积算仪的瞬时流量、累积流量、满量程、单位和阀状态(包括阀控、关闭和清洗),而且可以通过上位机设定流量积算仪的瞬时流量、使流量积算仪的累积流量清零。因此在本协议用到了MODBUS协议的命令$03(Reading 1~9words)、命令$05(Force single coil)和命令$06(Writing 1 word)。

  使用命令$03可以通过上位机读流量积算仪的当前状态,其通信协议的具体格式为:

  上位机 积算仪:01 03 00 02 00 08 E5 CC

  各字节含义:

  01: MODBUS地址;
  03: 功能码03(Reading 1~9words);
   00 02:起始地址,00为高8位,02为低8位;
  00 08:读取的字数;
  E5 CC:CRC效验值,E5为CRC的低8位,CC为高8位。
  上位机 积算仪:01 03 10 (1)~(16) CRCL CRCH
 
  各字节含义:

  01:MODBUS地址;
  03:MODBUS命令号;
  10:上传的字节数;
  (1)~(4):瞬时流量值;“00~09”表示数字“0~9”,“10~19”表示“0.~9.”;
  (5)~(10):流量累积值;同上;
  (11)~(14):满量程;同上;
  (15):流量单位;00表示SCCM和SCC,01表示SCCM和SL,11表示SLM和SL;
  (16):阀状态;00表示关闭,80表示阀控,FF表示清洗;
  CRCL:CRC的低八位;CRCH:CRC的高8位。

3、用VB实现串行通讯

  3.1 MSComm控件

  VB的通信控件MSComm能够提供串行通信的全部功能,程序编写、调试简单方便,开发速度快,该控件封装了通信过程中的底层操作程序,用户只需设置和监控控件的属性和事件,就可以方便地实现异步串行通信。[page]

  采用MSComm控 件接收数据,按照接收方式分两种形式:事件驱动方式,定时查询方式。本例为适应流量的实时控制采用定时驱动方式,若定时器计时到,通过串行通信口向指定地 址流量积算仪发出读写等操作命令,等待时间到则检查InBufferCount属性值来判断输入缓冲区中是否接受到了相应数目的字符,从而进行读取、判断 数据合法性和数据存储、处理等操作。

        3.2 通信功能的编程实现

  程序框图如下:

图2 串口通信程序框图

串口初始化:MSComm1.CommPort = 1
MSComm1.SThreshold = 1
MSComm1.Settings = 9600,N,8,1
MSComm1.InBufferSize = 1024
MSComm1.OutBufferSize = 1024
MSComm1.InputMode = comInputModeBinary
打开串口并定时发送数据命令:Private Sub Timer1_Timer()
Dim bytearray(0 To 7) As Byte
bytearray(0) = &H1
bytearray(1) = &H3
bytearray(2) = &H0
bytearray(3) = &H2
bytearray(4) = &H0
bytearray(5) = &H8
bytearray(6) = &HE5
bytearray(7) = &HCC
MSComm1.InputLen = 21
MSComm1.InBufferCount = 0
MSComm1.OutBufferCount = 0
MSComm1.RThreshold = 1
MSComm1.PortOpen = True
If MSComm1.PortOpen = True Then
MSComm1.Output = bytearray
End If
End Sub
接受数据:Private Sub MSComm1_OnComm()
Do
DoEvents
Loop Until MSComm1.InBufferCount = 21
Dim dataread() As Byte
Dim tempdata As Variant
Dim str As String
If MSComm1.CommEvent = comEvReceive Then
tempdata = MSComm1.Input
ReDim dataread(UBound(tempdata)) As Byte
For i = 0 To UBound(tempdata)
dataread(i) = tempdata(i)
End Sub
同理利用以上程序框图和通信协议可以完成下图的所有功能:

图3 基于VB的D08-8CZM型流量积算仪

4、结束语

  利用VB6.0的MSComm 控件和MODBUS协议,实现了工控机与带RS-232输出接口的智能数字流量积算仪之间的串口通信功能,使其能够实时的采集瞬时流量,并成功的应用于底吹氩流量闭环控制系统。这种通信方式灵活方便,结构简单,可靠性高,完全达到了预期的要求,具有较好的实际价值和使用性。

关键字:VB6.0  工控机与  流量积算仪  串口通信 引用地址:基于VB6.0的工控机与智能流量积算仪的串口通信

上一篇:凌华科技凭借工业级智能型相机NEON-1040荣获最佳产品奖
下一篇:大尺寸激光数控加工系统

推荐阅读最新更新时间:2024-05-02 23:17

stm32串口通信程序之UART2(TTL)
一、硬件连接 二、串口助手设置: 三、keil下编程 1.要添加的工程文件 二要编写的user文件 1.main.c #include printf.h int main() { printf_init(); printf( luoyiran is a nice boyn ); printf( xixin ); printf( serial communications is so mystical and interesting!n ); printf( keep striving!n ); } 2.printf.c #include p
[单片机]
stm32<font color='red'>串口通信</font>程序之UART2(TTL)
TI MSP430系列单片机串口通信波特率计算方法
TI MSP430系列单片机,usart模块的波特率值设定是通过以下三个寄存器决定的:UxBR0,UxBR1,UxMCTL 波特率=BRCLK/N ,主要是计算出N。 BRCLK:时钟源,可以通过寄存器设定何为时钟源; 通过寄存器UCAxCTL1的SSEL两位选择,01:ACLK,02:SMCLK N:波特率产生的分频因子。N=UxBR1+UxBR0+UxMCTL,其中UxBR1+UxBR0为整数部分,UxMCTL为设定小数部分,其中 UxBR1为高位,UxBR0为低位,两者结合起来为一个16位的字。 举例说明:波特率=115200,时钟源=8MHz ,为外部晶体振荡器 N=8000000/115200=69.44
[单片机]
嵌入式stm32学习:USART串口通信
bsp_debug_usart.h #ifndef __DEBUG_USART_H #define __DEBUG_USART_H #include stm32f4xx.h #include stdio.h //引脚定义 /*******************************************************/ #define DEBUG_USART USART1 #define DEBUG_USART_CLK RCC_APB2Periph_USART1 #define DEBUG_USART_BAUDRATE 1152
[单片机]
用51单片机实现串口通信
#include void ckInt()//串口初始化 { TMOD=0x20;//定时计数器1,方式2 TH1=0xF3; //计算出来的初值 TL1=0xF3; //计算出来的初值 PCON=0X80;//波特率加倍 TR1=1;//启动定时计数器1 SCON=0x50;//串口工作方式1 ES=1;//打开串口中断 EA=1;//打开总中断 } void main()//主函数 { ckInt();//调用函数 while(1); } void ckzd()interrupt 4//中断函数,串口中断编号4 { unsigned int DATA; DATA=SBUF;//发送数据 RI=0;//
[单片机]
嵌入式学习⑦——Ardunio下的STM32串口通信
一、使用Ardunio完成STM32的串口通信 1. 安装Ardunio 安装链接见百度云:百度云盘 提取码:q251 下载之后点击安装程序进行安装 安装完成 进行Ardunio IDE的配置 进入解压后的文件夹,将文件夹中的Arduino_STM32复制到Ardunio的安装目录下的hardware文件夹下 打开Ardunio,点击菜单栏工具开发板“Ardunio ” 开发板管理器 输入ARM关键字搜索,选中Cortex-M3系列的编译支持文件并安装,安装过程可能需要几分钟。 打开系统示例程序 若可以成功编译则证明ARM配置成功 2. 使用USB连接开发板 1).烧录程序 编写以下代码: St
[单片机]
嵌入式学习⑦——Ardunio下的STM32<font color='red'>串口通信</font>
51单片机 串口通信 中断
从一段程序开始 实现电脑向单片机发送一些数据,单片机返回Iget +数据 #include #define uchar unsigned char #define uint unsigned int unsigned char flag,a,i;//声明标志位 flag uchar code table = I get void init() { TMOD=0x20;//设置T1定时器工作方式为2 8位初值自动重装的8位定时器 这里设置了两个计数器的工作方式 TH1=0xfd; / /T1定时器装初值(高八位) 控制串口通信的波特率(由定时器1的溢出率控制) TL1=0xfd; //T1定时器装入初值(低八位)
[单片机]
STM32系列第7篇--串口通信基本原理
两种通信方式: 1、串行通信 传输原理:数据按位顺序传输。 优点:占用引脚资源少 缺点:速度相对较慢 2、并行通信 传输原理:数据各个位同时传输。 优点:速度快 缺点:占用引脚资源多 串口通信按数据传输方向可以分为单工、半双工、全双工。 串行通信的通信方式 同步通信:带时钟同步信号传输。 SPI,IIC通信接口,一个时钟周期只传1bit信号 异步通信:不带时钟同步信号。 UART(通用异步收发器),单总线,要求波特率匹配 常见的串行通信接口 通信接口 引脚说明 通信方式 通信方向 UART通用异步收发器 TXD、RXD、GND 异步 全双工 单总线 DQ 异步 半双工 SPI SCK、MISO、
[单片机]
STM32系列第7篇--<font color='red'>串口通信</font>基本原理
[C51代码]串口通信
/********************************************** * File: Serial_Comm_1.C * Description: Serial Communication Example 1 * Created Date: 2007-10-01 * Last Modified: 2007-10-01 * Author: Jeffrey - Schicksal@126.com * Notes: None **********************************************/ #include Atmel/AT89X51.h unsigned c
[单片机]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved