VB+串口通讯与开关量的检测与输出

VB+串口通讯与开关量的检测与输出
摘要:本文介绍了以VB和计算机串口在一个小型配料工程中的应用为例。详尽的阐述了串口在配料系统中的应用方法。特别在串口通讯中的开关量的检测和输出要点。极大限度的降低了系统硬件所占工程中的成本。
关键词:VB 串口通讯 开关量 配料控制管理 低成本
引言:在一般的配料工程中,要一台上位机对配料过程中所产生的一系列数据进行保存和统计,往往需要检测来自现场的一些开关信号。在应用工程中,在一般的上位机与称量仪表的通讯过程中,一般只用了3个引脚(TXD ,RXD ,GND),而还有6个脚(CD,DSR,CTS,RI,DTR,RTS)没有用到,而这些没有用到的引脚就正好可用于检测和输出开关量。
下面我将介绍基于VB6.0的平台做的一个小项目。
工程概况:该项目是广州科密集团公司用于一种新型耗材的配方研制所用的一个的自动配方管理软件。由于实验场所环境所限制,要求计算机不放在现场(不要求设立专人去操作计算机),只要求操作工人每称量按一下秤台旁边的一个按钮就可以存储当前每物料种类和其相应的重量,使管理系统以这个实验数据为依据,进行整理和加工。最后得出一些综合分析结果,为以后的正式生产提出配方工艺上的要求。因此系统本身就要求负责实时采集仪表的数据;实时采集开关量(按钮和转换开关的状态);实时的提醒操作员当些次配料是否有效果(根据配方来看是否报警也就是开关量的输出);还有存储当前当种物料的配料量,配方的管理,用户日后的数据查询和分析工作等。
根据这种要求,我们可以选择一种RAD工具来作为开发平台。
  

 

硬件配置:两套计量设备(包含两台定点输出仪表)一台计算机(工控机)
软件:本实例采用Microsoft公司的Visual Basic 6.0作为开发平台。Visual Basic是一种具有可视图形界面的、快速开发工具,同时它也较流行的开发工具。它可以利用Mscomm控件来完成对串口的控制和开关量的采用以及开关量的输出。

先介绍一下这九个引脚所代表的意义:
RXD表示接收数据
TXD表示发送数据
GND表示接地
注:(连接计算机和通讯仪表的接地端,开关量的输入的公共端就用仪表的电源)
CD表示调制解调器通知通计算机有载波被检测到 
DTR表示计算机通知调制解调器可以进行传输
DSR表示调制解调器通知计算机准备就序
RI表示调制解调器通知计算机有电话打来
CTS表示调制解调器通知计算机可送出数据
RTS表示计算机要求调制解调器将数据发出
根据这些引脚的意义,我们将调制解调器当成其它的外部设备, CD、DSR、RTS、RI可以用于开关量的输入引脚。RTS和DTR可用于开关量的输出。
具体方法如下:
   在工程中,添加部件Microsoft Comm Control 6.0控件。

1. 控件属性设置介绍:
 Commport:设置或返回端口号。就是指 通讯的端口号, 用COMM1就设为1, 用COMM2就设为2, 但MSComm控件的最大值是16, 在本项目中同 时用了两个口, 因为需要和两台仪表进行通讯(常用计算机有两个串口, 如果串口不 够用的话, 可以买串口卡)。
 Settings:设置并返回波特率、奇偶校验、数据位、停止位 。参数格式为:"BBBB,P,D,S"。例如“9600, E, 7, 2”;在RS232中双方必须完全一样, 彼此才能顺利的通信。否则的话将不 能正确的接收到来自对方的信号。
 Handshaking:设置并返回硬件握手协议;(设为无)
 InBufferSize:设置并返回接收缓冲区的字节数;
 OutBufferCount:返回在传输缓冲区中等待的字符数。也可以用它来清除传输缓冲区;
 DTREnable:确定在通讯时是否使 Data Terminal Ready (DTR) 线有效(设为有效)。
 RTSEnable:确定在通讯时是否使 Request To Send (RTS) 线有效(设为有效)。
 CommEvent:返回最近的通讯事件或错误。当发生错误或事件会产生OnComm事件。
 InputMode:设置或返回Input 属性取回的数据的类型。它有两个参数, 0 表示以文字形式取回, 1表示以二进制形式取回。(设为0)
 Rthreshold:设置并返回的要接收的字符数。
 Sthreshold:设置并返回传输缓冲区中允许的最小字符数
 InputLen:设置并返回 Input 属性从接收缓冲区读取的字符数。
2. 采集仪表当前数据
提醒:要和仪表通讯,在参数(Comports、Settings)设置上必须相互吻合。

先要打开对象
MSComm1.PortOpen = True
MSComm2.PortOpen = True

Private Sub MSComm1_OnComm ()
 If MSComm1.CommEvent = comEvReceive Then  // 收到Rthreshold # of
      TxtReceive.Text = MSComm1.Input     //将采集到的信息赋予到文本框
 found1 = InStr(TxtReceive.Text, "+")     //以下数行是对所采集到的数据进行处理加工,最终得到我们想要的格式的数据。
 …  …… 
If found1 > 0 Then
     For i = 1 To leng Step 1
            Strin1 = Mid(TxtReceive.Text, found1 + 1, 3)
            Strin2 = Mid(TxtReceive.Text, found1 + 4, 3)
            Format(Val(strin2), "000")
        Next i
display1.Caption = Format(Val(strin1), "###0") + "." + Format(Val(strin2), "00")
 End If
End If
//本项目中,也就是需要两个计量仪表的的当前数据)
3. 开关状态的采集 //检测四个引脚的工作状态(就是判断现场的开关状态和按钮状态)
在具体的应用过程中,要添加一个TIMER控件用于循环的检测这几个输入引脚的电位的高低。
 
Private Sub Timer1_Timer()
 If MSComm1.CDHolding Then msgbox "CD is switch in! " //检测CD脚的电位
… … … …       //消息处理过程
 If MSComm1.CTSHolding Then msgbox "CTS is switch in! "//检测CTS脚的电位
… … … …       //消息处理过程

  If MSComm1.DSRHolding Then msgbox "DSR is switch in! "//检测CTS脚的电位
… … … …       //消息处理过程

  If MSComm1.CommEvent=comEvRing Then msgbox "RI is switch in!"//检测CTS脚的电位
 … … … …       //消息处理过程

End Sub

4. 两个开关量的输出       //就是控制两个引脚的电位,5. 驱动的微型继电器工作
如果操作员在具体的配料过程中,出现错误(超出了配方所要求物料品种的误差范围),软件会将DTR或者是RTS引脚上的电位抬高,驱动微型继电器来控制现场的报警装置。用报警来提示操作人员,本次配料不符合要求,需要添加或是减少份量。这样可以实时的纠正不必要了操作失误。

MSComm1.RTSEnable = True //抬高电位 使微型继电器动作接通报警器
MSComm1.DTREnable = True

总结:在本应用工程已在现场运行快一年时间,实践证明采用这种用串口来作开关量的检测和输出方式作有限开关量输入输出是可行的,也是可靠。因此在类似这种小型应用项目中,采用这种串口来作开关量的检测和输出做法,即满足了用户要求,又为用户提供了更多的选择,同时控制了工程的成本。

作者简介:
向工 男,1981年8月出生,成都荣德机电设备有限公司 工程师,  从事仪表自动化和上微机编程工作。
联系方式:
电话:13408014097
电子邮箱:xiangxurong@163.com <mailto:xiangxurong@163.com>

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
书名:《C/C++串口通信典型应用实例编程实践》(电子工业出版社.曹卫杉) PDF扫描版,全书共分10章,共316页。 内容介绍 本书从工程应用的角度出发,对目前流行的三种不同类型的C/C++语言(包括C++ Builder、Visual C++和LabWindows/CVI)开发串口通信(也称为串行通信)程序进行了阐述。 基础篇简单介绍了C/C++语言实现串口通信需要的基本知识;应用篇通过PC与PC、PC与单片机、PC与智能仪器、PC与PLC、PC与GSM短信模块、PC与远程I/O模块等典型应用实例,详细介绍了C/C++语言利用MSComm控件、API函数实现串口通信的程序设计方法。每个实例的设计任务同时采用C++ Builder、Visual C++和Labgrmdows/CVI实现。 本书内容丰富,结构清晰,文字叙述深入浅出,通俗易懂,以实践应用为主,突出程序设计,重在功能实现,有较强的实用性和可操作性。 本书可作为高等院校计算机应用、测控技术、机电一体化、自动化等专业的研究生、本科生以及计算机测控系统研发的工程技术人员等学习C/C++串口通信编程技术的参考书。 目录 基础篇   第1章 串口通信基础   1.1 串口通信的基本概念   1.2 串口通信及其标准   1.3 串口通信调试   第2章 C/C++编程语言与串口通信   2.1 串行通信控件MSComm   2.2 API函数   2.3 线程   2.4 LabWindows/CVI串口通信函数 应用篇   第3章 PC与PC串口通信程序设计   3.1 设计说明   3.2 任务实现   第4章 PC与单片机串口通信程序设计   4.1 设计说明   4.2 任务实现   第5章 PC与智能仪器串口通信程序设计   5.1 设计说明   5.2 任务实现   第6章 PC与PLC串口通信程序设计   6.1 设计说明   6.2 任务实现   第7章 PC与GSM短信模块串口通信程序设计   7.1 设计说明   7.2 任务实现   第8章 PC与读卡器串口通信程序设计   8.1 设计说明   8.2 任务实现   第9章 PC与智能仪器构成的DCS程序设计   9.1 设计说明   9.2 任务实现   第10章 PC与远程I/O模块构成的DCS程序设计   参考文献
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值