您好,欢迎光临!   请登录 免费注册    
  您的位置:电子变压器资讯网 > 资讯中心 >  技术文章 > 正文
VisualC++5.0下对变频器进行串行通信控制
[发布时间]:2012年8月15日 [来源]:中国变压器网 [点击率]:2870
【导读】: 1系统的总体设计重点突出PC机与变频器RS485的接口部分。RS485的驱动器可带32个接收器,在波特率为100kbps时,通信距离可达到10Mbps.在工业现场,RS485是应用较多的一种通信方...

1系统的总体设计

重点突出PC机与变频器RS485的接口部分。RS485的驱动器可带32个接收器,在波特率为100kbps时,通信距离可达到10Mbps.在工业现场,RS485是应用较多的一种通信方式。图中PC机通过RS485通信接口卡与多个变频器相连接,最多达到32台。每个变频器(变频器应用)被赋予各自的地址码用以识别身份,这样上位机便能通过RS485通信线,对挂在上面的所有变频器进行控制操作。

2变频器的串行通信协议

对于西门子MicroMaster变频器。其通信方式为RS485,波特率最高可达到19200bit/s;1位起始位,8位数据位,1位奇偶效验位,1位停止位。

3Windows98下串行通信API函数

3.1Windows下串行通信编程特征

在Windows环境下,系统完全接管了各种硬件资源,不允许用户象在MSDOS下一样直接对控制串行口的硬件端口进行编程管理,而是由设备驱动程序统一管理。16位的Windows3.1操作系统提供了专门的串行通信的API函数:OpenComm(),CloseComm(),ReadComm(),WriteComm()等,通过这些专用的API(ApplicationProgrammingInterf ace)函数来设置和读,写串行口;而Windows98将串行口和其它通信设备统一视作文件,对串行口的打开,关闭,读写等操作与操作普通文件的API函数相同,正是由于这些函数的多态性,同时还由于需要结合Windows98的线程编程,事件驱动等新技术,因而使得Windows98下的串行口通信编程比较复杂。

在Windows98中将串行口与文件统一起来了,对它们的打开,读,写,关闭等操作都使用相同的API函数,但是串行口不能象文件一样可被删除,这些差别体现在API函数中参数的设置上。因此,串行通信API函数的用法是串行通信编程的关键。

下面介绍几个与串行通信编程密切相关的API函数。

3.2打开串行口API函数

Windows98通信会话以调用CreateFile()函数打开串行口开始。打开串行口成功,返回一个操作句柄。该句柄供随后对串行口的设置,读写等操作用。

调用此函数要注意几个参数的设置:dwShareM ode指定该端口的共享属性,串行口不能作为共享设备,故参数值必须为零,这是文件与通信设备之间的主要差别之一;dwCreate必须为OPENEXIST ING,因为CreateFile()只能打开存在的端口,而不能象创建新文件一样创建物理上不存在的新串口;端口的属性设置参数dwFlagsAndAttributes应设置为FILE#FLAG#OVERLAPPED;参数hTemplateF ile必须为NULL.返回值:若成功,返回创建的句柄;否则返回,INVALID_HANEDLE#VALUE.

3.3配置串行口API函数

配置串行口通信参数时要和设备控制块DCB(DeviceControlBlock)打交道,DCB有近30个数据成员,是一个很复杂的数据结构,全部搞清楚它们的含义相当费时。这里介绍一种简捷的方法可以做到不了解DCB的详细内容就可以设置好串行通信参数。通过下面的程序来说明串行通信参数的设置方法。

DCBdcb;定义设备控制块GetCommState;取出系统缺省设备控制块BuildCommDCB;设置DCB主要参数SetCommState;

3.4超时设置API函数

编写通信应用程序的一个很关键的问题是如何处理通信中的不可预测的事件。这些事件可能会引起I/O线程挂起或者线程被无限阻塞。Windows98对于这类问题提供了安全措施,可通过超时设置来决定通信是否异常并作相应处理。因此,超时设置在串行通信中尤为重要。

超时设置过程分为两步,首先设置COMMT IMEOUTS结构中的五个变量,然后调用SetC ommTimeouts()函数设置超时值。

3.5读串口API函数

串行口打开后,可以对它进行读写操作。

3.6写串口API函数

3.7关闭串口API函数

串行口是非共享资源,某应用程序打开串行口后,即独占该资源,只有该应用程序释放串口,其它应用程序才能访问。所以打开串行口后,一定要关闭串口。关闭串口函数较简单。函数原型:BOOL CloseHandle(HANDLEhObject);其中hObject参数为CreateFile()返回的端口句柄。返回值非零,则调用成功。

[上一页] [1] [2] [下一页]

投稿箱:
   电子变压器、电感器、磁性材料等磁电元件相关的行业、企业新闻稿件需要发表,或进行资讯合作,欢迎联系本网编辑部QQ: , 邮箱:info%ett-cn.com (%替换成@)。
第一时间获取电子变压器行业资讯,请在微信公众账号中搜索“电子变压器资讯”或者“dzbyqzx”,或用手机扫描左方二维码,即可获得电子变压器资讯网每日精华内容推送和最优搜索体验,并参与活动!
温馨提示:回复“1”获取最新资讯。