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” s

文档评论(0)

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

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

版权声明书
用户编号:7042123103000003

1亿VIP精品文档

相关文档