MSComm控件(精选4篇)
MSComm控件 篇1
摘要:在工业控制中经常用到看门狗定时器, 对其进行通信则是实现工控的首要问题。该文主要介绍利用VC++6.0中的MSComm控件实现ADAM-4050的串口通信。文中详细讲解了ADAM通信需要注意的问题, 并给出了实现的关键技术。
关键词:VC++,ADAM-4050,串口通信
ADAM-4050为研华的数字量I/O模块。ADAM-4050作为工控器带有7路数字量输入和8路数字量输出。它的数字量输出为集电极开路的晶体管开关,可由主机进行控制。还可以使用它来控制固态继电器,利用固态继电器的闭合来控制热电器、泵或其他电力设备。主机可以利用模块的数字量输入来检测行程开关、安全开关或远程数字量信号。因此常作为看门狗定时器。
1 ADAM-4050命令语法及其含义
对ADAM-4050通信的实质是通过命令来读取,修改或是存储他的数字量输入与输出的状态。只有使用正确的命令才能与其通信。以下为ADAM-4050的命令语法及其含义:
对ADAM-4050通信要使用正确的命令, 如果模块检查到发送的命令有语法错误或是通信错误或者指定的地址不存在, 则无响应。
2 设备的连接
通用的PC机的串口为RS-232接口,而ADAM-4050为RS-485接口。因此设备连接时需要RS-232/RS-485转换器。在测试通信时,不需要连接DI(数字量的输入),DO(数字量输出)端口,只需连接DATA+(数据输入)和DATA-(数据输出)端口。连接如图1所示。其中DATA+,DATA-,+Vs, GDN分别连接模块上的“ (Y) DATA+”“ (G) DATA-”“ (R) +Vs”“ (B) GND 10”端口。
3 编程实现
利用VC++6.0中的MSComm控件很容易实现串口编程。添加MSComm控件方法为“Project->Add To Project->Components and Controls->Registered Activex Controls”,然后选择控件:Microsoft Communication Control, version 6.0 (Microsoft Comm Control 6.0)插入到当前的工程中。这样就将类CMSComm的相关文件mscomm.cpp和mscomm.h一并加入到了工程中。编程时只需将控件对话中的MSComm控件拖至工程的应用对话框中就可以使用。
利用MSComm的对象m_Com我们很容易实现一些初始化工作。例如:
发送命令和接收响应时需要调用SetOutput和GetInput函数。但是在发送命令的同时, 需要注意正确语法格式。因为每个命令 (“#**”命令除外) 后面都要加上“cr” (回车符) , 而我们在手工输入命令的字符串时是无法在字符串的最后添加上回车符的。因此, 在发送命令之前, 我们需要通过添加代码来为命令字符串的末尾添加上回车符。在这里假设代发的命令字符串用command表示, 我们只需添加代码“command+=13” (因为回车符的ASCII码为13) , 就可以使其成为正确的命令。
测试用例:命令$016 (cr) , 返回值为!112200 (cr)
该命令要求指定的地址01的模块返回数字输入通道的状态和输出通道的回读值
由返回值可以知道该命令有效, 并且返回了相应的值, 其中11h (00010001) 表示输出通道0, 4处于高电平, 1.2.3.5.6.7处于低电平, 22h (00100010) 表示输入通道1, 5为高电平, 0.2.3.4.6.7低电平
4 总结
使用VC++6.0中的MSComm控件可以很方便的实现对ADAM-4050的串口通信。在实现过程中最关键的是要发送语法格式正确的命令,否则模块就无响应,即没有任何返回值。因此可以在发送命令前检验要发送的命令格式是否正确,若检查到错误的命令格式则显示错误信息以便修改。
参考文献
[1]张宏霖.精通Visual C++串口通信技术与工程实践[M].3版.北京:人民邮电出版社, 2002.
[2]周韧研, 商斌.Visual C++串口通信开发入门与编程实践[M].北京:电子工业出版社, 2009.
[3]杨坤明.现代高速串行通信接口技术与应用[M].北京:电子工业出版社, 2010.
MSComm控件 篇2
1.1 RS-232串行通讯简介[1]
RS-232串行通讯接口是很多数字测量和控制仪器仪表、计算机的一个标准内置接口。硬件上可以采用3线制Rx D、Tx D、GND软握手方式,仅需要3根线就可在两个数字设备之间完成全双工数据传送(将数据传送线的Rx D和Tx D两端交错连接,GND线直接相连,采用软件握手形式实现预定任务)。
1.2 MScomm控件描述
实现串口通讯的编程方法主要有两种:调用API函数编写通讯程序和利用MScomm(Microsoft Communication Control)控件。MScomm控件是微软基于组件对象模型(COM)开发的全双工通讯接口,在VC++或VB中调用有良好的运行效率和稳定性,串口编程时非常方便。
1.2.1 MScomm控件通讯方式
查询通讯方式和事件驱动方式。查询方式是指通过用户程序中定时或不定时的查询MSComm控件的内部成员Comm Event属性是否发生变化,来进行相应的处理。事件驱动方式是处理串行端口交互作用的一种非常有效的方法,许多情况下,事件发生时需要得到通知(比如在Car-rier Detect(CD)或Request To Send(RTS)线上有一个字符到达或一个变化发生),此时,可以利用MSComm控件的On Comm事件捕获并处理这些通信事件;On Comm事件还可以检查和处理通信错误。在编程过程中,通过在OnComm事件处理函数中加入相应处理代码,实现应有的功能。这种方式的优点是实时性强,可靠性高。
1.2.2 MSComm控件的主要属性
Comm Port属性:设置或返回通讯连接端口的号码。
Settings属性:设置初始化参数。
Port Open属性:设置或返回通信连接端口的状态。
Input属性:从输入缓存区返回并删除字符。
Output属性:将一个字符串写入输出缓存区。
Hand Shaking属性:指定通信两方的交握协议。
Comm Event属性:在通信错误或事件发生时都会产生On Comm事件(这也是此控件惟一的事件),Comm Event属性存有该错误或事件的数值码。
1.2.3 MSComm控件的事件On Comm
MSComm控件的惟一事件。此事件可用来处理所有与通信相关的事件,不管是何种事件发生,MSComm控件只用一个Comm Event的属性予以代表。使用事件程序的好处是不需要一直让程序处于检查的状态,只要事先将程序代码写好,如事件发生,就会直接执行相应的程序指令。
1.2.4 MSComm控件的引用
与其它控件的引用类似,在工程设计之前,通过“project”菜单下选择“Add to Project”选项,出现部件选项对话框,在对话框中选“Microsoft Comm Control”选项,然后单击“确定”,则MSComm控件出现在工具框中,用户可以像使用内部控件那样把它添加到窗体。
1.3 SCPI简介
SCPI(standard commands for programmable instruments)语言是为了解决智能仪器仪表在编程代码、数据格式、内部定时和状态响应上的不一致性,SCPI独立于仪器的操作机理之外(即SCPI与仪器无关性)。使用SCPI编出的程序可移植性强,只要仪器仪表支持SCPI语言即可。SCPI基于ASCII字符串,对于测控仪器的每一个功能,用与该功能相关的英文单词缩写表达,便于理解记忆使用。
2 应用实例
2.1 工程概述
测控过程由计算机控制Keithley数字电源、多用表,测量电路元件R两端的电压及内部流过的电流特性,然后将数据取回进行数据处理。结构框架见图1。工程使用计算机的COM1口;在VC++环境下完成。
2.2 利用MScomm控件控制和接受数据
2.2.1 打开通讯端口,设置通信参数
2.2.2 发送Keithley 2400数字电源多用表初始化及测量参数信息
2.2.3 数据接收
2.2.4 通信完毕后关闭串口,释放串口资源
通过以上四步完成了一次输出电压,并将待测元件R上该电压下电流特性回读到计算机。程序中设计循环不断改变输出电源电压,执行便可得到系列的特性数据。
3 结束语
在自动测控系统中使用MScomm控件实现串口通讯,不需要较深的软硬件知识,程序编制比较简单,容易掌握;费用低廉,开发周期短,比较适合于相对简单的小型测控系统。
参考文献
[1]吴秀清,周荷琴.微型计算机原理与接口技术[M].合肥:中国科学技术大学出版社,2002.
[2]李现勇.Visual C++串口通讯技术与工程实践[M].北京:人民邮电出版社,2002.
MSComm控件 篇3
1 控制装置构成
在CVD控制装置中下位机采用FX2N-16MR PLC, 其任务CVD设备的各路进气进行控制, 发生故障时按上位机的命令执行。上位机采用PC, 利用VB开发的界面与PLC实时通信, 对CVD设备进行实时监控。我们采用价格低廉的SC-09接口电缆, 将FX2N PLC自带一个RS422的编程口和PC的串行通信口RS-232C通信, 避免了该编程口在下载或上传完程序之后就处在闲置状态。
2 通信协议
PC与FX2N PLC编程口的通信, 采用主从应答方式, PC为主机, PLC为从机。PC根据需要向PLC发出读写指令, PLC响应PC的命令。在PC中, 必须根据PLC的编程口的协议编写通信程序。
2.1 数据格式
FX2N PLC的编程口的通信数据采用异步格式, 由1位起始位, 7位数据位、1位偶校验位和1位停止位组成, 波特率为9600bit/s。因此PC的串行通信端口的设置应该和PLC的编程口相同。
2.2 通信命令与通信控制符
FX2N PLC有4种通信命令, 如表1所示。
FX2N PLC采用面向字符的传输规程, 用到5个通信控制字符, 如表2所示。
PC与PLC进行编程口通信时, PC首先发出命令帧, 准备读入、写出、置位或复位PLC的软继电器;PLC在收到命令后首先识别并校验命令是否出错, 若命令不可识别或校验错误, 发出错误响应帧NAK, 而当校验无误, 则自动按照指定的格式生成响应帧。
3 PC的程序设计
3.1 通信控件MSComm的配置
MSComm控件可以容易地完成对串口的读写工作。在编写通信程序之前, 应先对MSComm控件属性进行设置, 实现通信口的初始化, 通信口初始化程序放在窗口装入事件Form_Load () 中。
3.2 通信口发送及接收程序的编制
以控制气体通断的1号电磁阀的选择为例, 点击监控界面的复选框, 触发Check1_Click () 事件, 将强制通命令帧发送给PLC, 使PLC的软继电器M0为ON, 则为选
PC将PLC的M0强制为ON或OFF的函数如下:
程序中的mdata数据中的7或8是命令代码, 表示强制通或断;mdata中的0008可以这样解释:M0在强制命令下的地址为0800, 但在发送的命令帧中的地址不是按16进制从高位到低位, 而是低两位到高两位, 因此必须写成0008。
4 结语
通过控制气体通断的1号电磁阀的选择的具体程序, 系统地阐述了VB编程的通信程序的设计方法。该通信软件在CVD控制装置上得到了成功的应用。实践证明, 该通信设计具有稳定可靠、经济实用和使用方便等特点, 完全满足CVD实验与生产的实际需要。
摘要:结合CVD控制装置, 介绍了利用VB的MSComm通信控件实现三菱FX2NPLC与PC通信的方法, 并给出了通信协议和部分通信程序。
关键词:PLC,MSComm,串口通信
参考文献
[1]张崇智.PC与三菱FX2N型PLC串口通信的实现[J].机床电器, 2005 (3) .
[2]Mitsubishi Electric.FX Communication (RS232C, RS485) user's manual[Z].2000.
MSComm控件 篇4
一、MSComm控件
串行通信控件Microsoft Comm Control (简称MSComm) , 只要正确设置和监视控件的属性和事件, 就可以实现通信。
1、控件属性
(1) Comm Port:设置并返回通信端口号。
(2) Settings:以字符串设置并返回波特率, 奇偶校验位, 数据位和停止位。
(3) Port Open:设置并返回通信端口的状态。
(4) Input:从接收缓冲区中读数据, 类型为Variant。
(5) Output:向发送缓冲区写数据, 类型为字符串或字节数组。
(6) InputMode:设置从缓冲区读数据的格式。
(7) In Buffer Count:设置和返回接收缓冲区的字节数, 0表示清空缓冲区。
(8) Out Buffer Count:设置和返回发送缓冲区的字节数, 0表示清空缓冲区。
(9) InputLen:设置和返回每次读出的字节数, 0表示读出接收缓冲区中的内容。
(10) Rthreshold:在OnComm发生之前, 接收缓冲区接收的最少字节数。0表示禁止发生串口事件。1表示当接收缓冲区中的字节数≥1时, 产生接收事件。
(11) CommEvent:返回相应的串口事件常数。
2、控件处理接收信息的方式
(1) 事件驱动方式
每当有新字符到达或端口状态改变或发生错误时, M S C o m m控件将产生On Comm事件, 而应用程序在捕获该事件后, 通过检查CommEvent属性可以获知所发生的事件或错误, 从而采用相应的操作。
(2) 查询方式
通过查询InputBufferCount属性值, 处理接收到的信息。执行完某一串口操作后, 将不断检查某一事件是否发生, 所以该方式占用CPU的时间较多。
二、串口通信程序
我们采用事件驱动方式, 计算机作为主机, P L C作为从机, 单击“发送”按钮, 计算机发送数组Array中的数据, 计算机接收到PLC返回的数据后存在数组rcv内, 并在文本框中显示出来。
1、串口及通信参数初始化
2、发送程序
要发送的报文格式, 如表1。
3、接收数据
PLC只有在接收到上位机发送的信息后, 才发送数据, 所以将发送完成后收到的第一个字节作为接收报文的开始, 直到串口无接收事件时认为报文结束。
三、P L C程序
报文格式如表2所示。
CPU模块在接收时检测起始字符和结束字符。校验码为报文中“数据字节数”字节与数据区各字节的异或和, VB90存放CPU计算出的异或校验结果, VB91和VB99分别存放计算机发送来的检验码和数据区字节数。
1、主程序
2、初始化子程序
3、接收完成中断程序INT_0
计算机与PLC组建的实时监控系统开发成本低、实时性好、操作简便、通用性强, 利用计算机易组网功能, 既可做到内部网络互联、信息共享, 又可网络, 使异地信息共享、远程监控变为现实。
参考文献
[1]李淑华.VB程序设计及应用.高等教育出版社
[2]范逸之.VB与RS232串行通信控制.中国青年出版社
[3]廖常初.PLC编程及应用.机械工业出版社