PC机和多功能电表通信技术研究.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PC机和多功能电表通信技术研究

PC机和多功能电表通信技术研究   【摘 要】文章介绍了基于Visual Basic6.0的MSComm通信控件实现PC机与多功能电表之间利用RS-485通信接口进行串行通信的方法,并定时读取电表的计量数据。   【关键词】电表;PC机;MSComm控件;RS-485   使用PC机远程读取多功能电表数据的方式不但能够节省人力,还能实时查看用电设备的用电情况,极大地提高了工作效率,是目前楼宇电能管理的发展趋势。   1 硬件搭建   为了保证通信的顺利进行,必须先搭做好通信系统的硬件设备连接,系统的拓扑图如图1所示。本文采用的电表为浙江华邦DTS866型电子有功电能表,符合《多功能电能表通信规约》DL/T645-1997的要求。对于不自带RS-485接口的PC机,还需要在PC机和多功能电表之间安装RS-232(或USB)/RS-485转换器才能进行数据的通信。   2 软件搭建   PC机系统版本至少不低于Windows95或Windows NT3.51,并安装好了Visual Basic6 .0软件。   3 程序实现   目前通用的读取串口数据的方式有3种,第一种是利用MSComm控件,第二种是调用Win32 API函数,第三种是调用第三方函数库。由于本实例的工程结构简单,故采用MSComm控件来进行串口数据的读取。   3.1 MSComm控件引用   由于VB在默认情况下MSComm控件不会出现工具箱中,因此需要对其进行引用。   单击【工程】菜单,选中【部件】命令,在弹出的对话框中选中Microsoft Comm Control6.0复选框。此时MSComm控件 就出现在工具箱中了。   3.2 界面设置   在窗体内放入3个Label标签、2个Text文本框、1个Command按钮、2个Timer时钟控件、1个MSComm控件,如图2所示。   (1)Text1文本框:输入电表地址,当电表地址不足12位时,前面以0补足。本例中,华邦电表的通讯地址为“20111100415”,因此运行程序后应输入“020111100415”。   (2)Text2 文本框:显示读取到的电表数据。   (3)Command读取按钮:用于启动串口通信。   (4)Timer1时钟控件:用于读取输入的电表地址,并通过串口发送命令帧到电表。   (5)Timer2时钟控件:用于接收并处理接收到的串口数据。   (6)MSComm控件:提供标准通信命令的接口。   3.3 主要代码   本例中电表的(当前)正向??功总电能值为0.23度,依据《多功能电能表通信规约》DL/T645-1997,需要发送的数据为:68 15 04 10 11 01 02 68 01 02 43 c3 16 16,经过串口通信后接收到的数据为:FE FE 68 15 04 10 11 01 02 68 81 06 43 C3 56 33 33 33 89 16。具体代码如下:   (1)参数初始化   Private Sub Form_Load()   MSComm1.CommPort = 3 设置通信端口号为COM3   MSComm1.Settings = 1200,E,8,1 设置MSComm参数   MSComm1.InputMode = comInputModeBinary 接收二进制数据类型   Timer1.Enabled = False   Timer2.Enabled = False   Timer1.Interval = 2000每2秒发送一次数据   Timer2.Interval = 2000每2秒接收一次数据   Text1.Text =   Text2.Text =   End Sub   (2)启动通信   Private Sub Command1_Click()   Timer1.Enabled = True   End Sub   (3)发送命令帧   Private Sub Timer1_Timer()   Dim s, ss, stri As String   Dim ssByt(1 To 14) As Byte   Static i   Dim k, j As Integer   s = Text1.Text 传递电表地址   ss = Str$(s)   k = Len(s) 获得电表地址长度   j = 2   For i = 11 To 1 Step -2 每2位截取电表地址并转换为16进制   ssByt(j) = Mid$(ss, i, 2)   ssByt(j) = Val(H ssByt(j))   j

文档评论(0)

fangsheke66 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档