- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PC机与变频器的串行通信研究
导语:?本文就带有rs-485通信接口的日普变频器作为研究对象,设计了变频器网络监控的方案,实现了对变频器各项参数的在线监视和控制。以下就围绕如何在c++builder编程环境下,利用api函数编写计算机与日普变频器(rp3200)之间的串行通信程序进行阐述。 引言
计算机串行通信是计算机与控制设备(如变频器)进行数据传送的一种通信方式,也是实现工业自动控制经常用到的通信模式。每一种通信方式都严格约定了与其对应的通信协议。要确保计算机与变频器之间能正常通信,就必须遵照变频器通信协议编写通信程序。本文就带有rs-485通信接口的日普变频器作为研究对象,设计了变频器网络监控的方案,实现了对变频器各项参数的在线监视和控制。以下就围绕如何在c++builder编程环境下,利用api函数编写计算机与日普变频器(rp3200)之间的串行通信程序进行阐述。
串行通信
串行通信在工业系统控制的范畴中一直占据着极其重要的地位,串行端口(rs-232)是计算机上的标准配置,常用于连接调制解调器来传输数据,在计算机的硬件设备管理器中可以看到,定义为com1、com2等。常用的串行通信方式有两种,分别是rs-232和rs-485,本文以rs-485方式为例进行介绍。
使用c++builderapi函数编写通信程序
c++builder本身不提供单独的串行通信组件,这不是说它不能使用这项功能,而是必须使用一些windowsapi函数来达到这个目的。windowsapi是由操作系统提供的函数,这些函数可以为程序设计人员提供相当多的执行功能,就连操作系统本身也是由这些api函数所组成,由于已经将win32api均声明进去了,因此在中使用api时只要直接使用即可。使用时必须以api函数的定义使用,才可以得到正确的结果,尤其参数的定义更是重要,使用时必须注意和定义相符,否则执行结果将会出错,以下就先说明这些必备的函数。
c++builder中与串行通信相关的api函数
c++builder本身并不提供单独的串行通信组件,而是使用一些windowsapi的函数来达到此目的。这些函数是由操作系统所提供,可以为程序设计人员提供相当多的执行功能。api中与串行通信相关的函数约有20个,以下对经常使用的函数作以讨论。
打开串行端口
hcomm=createfile(comno,generic_read|generic_write,
0,null,open_existing,1,0)
函数参数定义如下:
hcomm:createfile()函数的返回值,程序使用此返回值进行相关的串行端口操作。
comno:定义串行端口号,为com1、com2等。
generic_read|generic_write:对串行端口的读/写操作。
0:是否共享串行端口,通常不会将串行端口与其它程序共享,因此设为0,否则为1。
null:函数的返回值hcomm是否可被子程序继承,此处设为不可继承。
open_existing:打开端口的方式,串行端口是一种设备,必须指定为open_existing方式。
1:使用同步或异步方式传输数据,变频器为异步方式,因此设为1。
0:由于使用串行端口编程,设为0。
得到串行端口状态
getcommstate(hcomm,dcb)
函数参数定义如下:
hcomm:createfile()函数的返回值。
dcb:串行端口控制块地址,负责对串行端口参数进行设置,具体参数如下:
dcb.baudrate:设置串行端口的波特率,有19200kb/s、9600kb/s、4800kb/s几种,一般为:9600kb/s。
dcb.bytesize:设置串行端口的数据位数,有5、6、7、8几种,变频器数据位数为8。
dcb.parity:设置串行端口的校验位检查,有none、even、odd几种,设为none。
dcb.stopbits:设置串行端口的停止位数,有1、1.5、2几种,变频器的停止位数为1。
设置串行端口状态
setcommstate(hcomm,dcb)
函数参数定义与getcommstate()函数相同。
向串行端口写数据
writefile(hcomm,senddata,bs,lrc,null)
函数参数定义如下:
hcomm:createfile()函数的返回值。
senddata:写数据的地址。
bs:写入数据的字节数。
lrc:被写入的数据地址。
null:写入数据的同步检查,串行端口采用同步通信时可以设为null。
清除串行端口的错误或将串行端口当前的数据状态送至输入缓冲区
clearcommerror(hcomm,dwerr
文档评论(0)