基于VB的霍尼韦尔温控表控制程序的实现

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:sxhh122
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:Modbus协议在电子控制器通讯上有广泛的应用,对其必要的掌握和应用是广大相关工程技术人员必备的能力,使用VB6.0进行程序开发有简单易学,开发周期短的特点,利用其MSComm控件通过串口通讯可以轻松实现与智能仪表等电子控制器的通讯。主要介绍了温控表通过Modbus-RTU协议模式进行通讯的方法,并以一款霍尼韦尔温控表为具体控制对象,VB6.0为程序开发平台,通过实例编程,介绍了串口与MSComm控件实现可变参数通讯和对温控表编程温控的过程。
  关键词:Modbus协议;VB6.0; RS-485;MSComm控件
  中图分类号:TP302 文献标识码:A 文章编号:1009-3044(2017)31-0095-06
  Control Program Realization of Honeywell Temperature Control Meter Based on VB
  GAO Zhi-Yang,YU Xin-Gang
  (Jiamusi University, Teaching Experiment Equipment Management Center, Jiamusi 154007,China)
  Abstract: The Modbus protocol has a wide range applications in the communication of electronic controllers, the mastering and application are the necessary capabilities of the relevant engineering and technical personnel. The feauture of VB6.0 is easy to learn and develop the programg, its MSComm control through the serial communication can easily achieve communication with intelligent instruments and other electronic controller. This paper mainly introduces the method of communication between the temperature control meter and the Modbus-RTU protocol mode, and takes a Honeywell temperature control meter as the concrete control object. VB6.0 is the program development platform, through the example programming, introducing variable parameter communication and temperature control process between the serial port and the MSComm Control.
  Key words: Modbus protocol; VB6.0; RS-485; MSComm control
  本文从实际应用角度介绍了利用VB6.0的串口通信控件和RS485总线通过Modbus-RTU协议,实现与霍尼韦尔温控表通讯,读取、显示现场温度与程序设定值,并对温控表目标温度进行设定的过程,编程实现了温度控制的目的。
  1 Modbus-RTU协议模式简介
  Modbus-RTU是Modbus协议下的一个协议传输模式。Modbus是一个工业上常用的通讯协议,通过Modbus协议,控制器相互之间、控制器经由网络和其他设备之间可以实现通信。Modbus协议已经成为一种 通用工业标准。用于控制器时,通常选择设置其中的ASCII传输模式或RTU传输模式中一种。通过Modbus协议控制器组成的网络通信通常使用主-从技术,即一设备(主设备)能初始化查询传输(查询),从设备返回消息作为回应,主从设备发送的消息报文格式都要符合Modbus协议的要求。
  控制程序设计中采用了常用的Modbus-RTU协议模式,表1是协议规定其报文结构:
  表1 Modbus-RTU报文结构
  [地址码 功能码 数据地址码 数据区 CRC校验码 一个字节 一个字节 2字节 N个字節 2个字节 ]
  其中报文中的每个字节都是2个十六进制字符组成。地址码表明标明从机的地址,每个从机都必须有唯一的地址码,并且只有符合地址码的从机才能响应主机回送信息;功能码告诉从机应执行什么动作;数据地址码标明动作执行的起始寄存器或线圈地址;数据区包括需要由从机返回何种信息或执行什么动作;CRC校验码用于信息的正确性检验。
  2 霍尼韦尔温控表的参数设置
  温度控制程序控制对象是型号为DC1040CT的霍尼韦尔温控表,温控表内部已经固化了Modbus协议,根据温控表说明书的技术参数说明可知:表内集成有Modbus-RTU和Modbus-ASCII两种协议模式,在本温控程序设计中,设置表的参数PSL为RTU,即采用Modbus-RTU模式;设置参数BITS为E_81,即偶校验、8位数据位、1位停止位;设置表的地址参数ID.NO为1,即仪表的协议地址为1;设置波特率参数BAUD为48,即波特率为4800kps;小数点设置参数DP设为1,即1位小数点。
  3 温控程序软件的设计与实现
  温度控程序使用的编程软件是微软的Visual Basic 6.0,利用其中的Mscomm串口通信控件实现与温控表的通讯与温度控制。Visual Basic 6.0中的Mscomm控件主要是为RS-232通用串口设计的。现在的计算机上普遍已经不再配置RS-232串口,可以在USB串口上接一个USB转RS-232的转接口,再配置一个RS-232串口到RS-485总线的转换器,即可实现Mscomm与RS-485总线上的设备通讯。   温度控制程序通过USB串口转换到RS-232串口,再转换到RS-485总线与温控表相连接,通过温控表被配置唯一的地址码和Modbus-RTU协议完成数据通讯连接,实现控制程序对温控表的相关数据写入与读取。
  3.1 温度控制软件的界面设计
  运行VB6.0,新建一个命名为Honeywell控制的工程,主窗体名为:控制窗口,然后在工具箱中添加Microsoft Comm Control 6.0控件和Microsoft Windows Common Controls 6.0控件,在窗体设计界面中分别加入Frame、Label、MScomm、ComboBox、CommandButton、Timer、Slider、TextBox等控件,分别命名,并将TextBox控件Text属性都设置为空,设计界面如图1:
  3.2 界面的窗体Form_load()事件程序设计
  利用窗体事件Form_load(),对窗体上的各控件进行参数设置。用各ComboBox控件的AddItem属性设置各个ComboBox控件的待选参数,用各ComboBox控件的ListIndex属性设置各默认初始参数,Form_Load()过程中如下代码:
  Private Sub Form_Load()
  ’仪表地址选择设置
  AddressNo.AddItem "1", 0
  AddressNo.AddItem "2", 1
  AddressNo.AddItem "3", 2
  AddressNo.AddItem "4", 3
  AddressNo.AddItem "5", 4
  AddressNo.AddItem "6", 5
  ’串口号设置
  ComNo.AddItem "COM1", 0
  ComNo.AddItem "COM2", 1
  ComNo.AddItem "COM3", 2
  ComNo.AddItem "COM4", 3
  ComNo.AddItem "COM5", 4
  ’波特率设置
  BaudeRate.AddItem "4800", 0
  BaudeRate.AddItem "9600", 1
  BaudeRate.AddItem "19200", 2
  BaudeRate.AddItem "115200", 3
  ’校验位设置
  Parity.AddItem "N", 0
  Parity.AddItem "E", 1
  Parity.AddItem "O", 2
  ’数据位设置
  DataBit.AddItem "7", 0
  DataBit.AddItem "8", 1
  ’停止位设置
  StopBit.AddItem "1", 0
  StopBit.AddItem "2", 1
  ’预置串口参数默认值
  AddressNo.ListIndex = 0
  ComNo.ListIndex = 0
  BaudeRate.ListIndex = 1
  Parity.ListIndex = 1
  DataBit.ListIndex = 1
  StopBit.ListIndex = 0
  ’初始串口未打开提示信息
  Indic_Conn.Caption = " 串口未打开"
  ’设置Timer1为不可用
  Timer1.Enabled = False
  End Sub
  注意,AddressNo.AddItem即设备地址参数,可以根据实际需要参照Modbus协议规定继续添加。同时,在过程中关闭了Timer1控件对象,因为本程序在Timer1_Timer事件中有数据通讯请求过程,若在串口未连接的情况下执行数据通讯请求,会出现错误,所以在Form_load()中將其关闭,待串口打开后再将其打开,执行数据通讯请求。
  3.3 按钮互锁的过程设计
  本控制程序中的串口连接与断开两个按钮要实现互锁,即串口成功打开后,则打开按钮状态变为无效,直到按断开按钮,使串口成功断开为止。断开按钮也是如此,断开串口后,则断开按钮状态也变为无效,要等串口成功连接后,断开按钮才有效。按钮互锁子过程放在窗体代码中,按钮互锁子过程代码如下:
  Public Sub button_manage(button As Variant)
  Select Case button
  ’参数为连接按钮
  Case CMDConn
  ’断开按钮有效
  CMDDisconn.Enabled = True
  ’连接按钮无效
  CMDConn.Enabled = False
  ’参数为断开按钮
  Case CMDDisconn
  ’连接按钮有效
  CMDConn.Enabled = True
  ’断开按钮无效
  CMDDisconn.Enabled=False
  End Select
  End Sub
  其中,被锁定的按钮控件名作为调用过程的参数,锁定管理过程根据参数判断被锁定按钮,并打开对应的另一按钮。   3.4 打开与关闭串口的程序设计
  CMDConn_Click()是串口打开事件过程,首先在过程中设置一条On Error Goto Errline语句,功能是若串口打开不成功则跳转至Errline行,进行打开错误提示,并退出串口连接过程。其后是串口各参数设置并打开串口过程。执行完打开串口指令后,继续执行提示串口打开成功指令、执行打开关闭按钮互锁过程、执行使Frame控件无效指令和打开Timer1控件指令,实现各个控件对应的功能。串口打开过程代码如下:
  Private Sub CMDConn_Click()
  On Error GoTo Errline
  ’配置、确定打开串口各项参数
  MSComm1.CommPort = ComNo.ListIndex 1
  MSComm1.Settings = BaudeRate.Text
   "," Parity.Text "," DataBit.Text
  "," StopBit.Text
  MSComm1.InputMode = 1
  MSComm1.InputLen = 0
  MSComm1.InBufferCount = 0
  MSComm1.OutBufferCount = 0
  MSComm1.RThreshold = 7
  MSComm1.InBufferSize = 1024
  MSComm1.OutBufferSize = 1024
  ’ 根据以所确定参数打开串口
  MSComm1.PortOpen = True
  ’提示串口成功打开
  Indic_Conn.Caption = " 串口成功打开"
  ’调用按钮互锁程序,使打开无效关闭按钮
  ’有效
  button_manage (CMDConn)
  ’使各通讯参数不可更改
  Commpara.Enabled = False
  ’使Timer1控件工作
  Timer1.Enabled = True
  Exit Sub
  Errline:
  Indic_Conn.Caption = "串口未打开,请检查串口参数重新连接.."
  End Sub
  关闭串口过程代码如下:
  Private Sub CMDDisconn_Click()
  ’关闭Timer1使数据通讯请求指令无效
  Timer1.Enabled = False
  ’使串口通讯各参数可调整
  Commpara.Enabled = True
  ’关闭串口
  MSComm1.PortOpen = False
  ’显示串口关闭信息
  Indic_Conn.Caption = " 串口已关闭"
  ’关闭断开按钮,打开连接按钮
  button_manage (CMDDisconn)
  End Sub
  3.5 数据写入与读取过程程序设计
  根据霍尼韦尔温控表的技术资料可知,温控表保存设定温度数据的寄存器地址为000,保存程序温度数据的寄存器地址为138,要在控制程序中分别显示温控表的设定温度值和程序温度值,本程序采用的是读取设定温度数据请求和读取程序温度数据分开发送和读取的方法,程序中定义了一个公共变量,用于判断Modbus-RTU传输协议应答报文中传输的是设定温度寄存器数据还是程序温度寄存器数据,同时定义了一个保存设定温度寄存器数据的变量,供温度设定控件Slider1和温度写入过程共同使用。将以上两个公共变量,定义在公共模块中,并将公共模块命名为PublicFUN,PublicFUN模块中设置以上两公共变量的代码如下:
  ’定义数据请求寄存器地址变量
  Public addressVal As Integer
  ’定義设定温度值数据变量
  Public SSetVal As Long
  由Modbus-RTU协议规范模式可知,传输的报文的最后两个字节存放的是计算后的CRC校验码,程序中必须有CRC校验码计算程序,供系统发送请求数据和接受数据进行数据正确性检验时使用,因为CRC校验码计算是公用的函数,我们将也其放在公共模块中,CRC校验码计算函数代码如下:
  Public Function CRC16(data() As Byte, no As Integer, btLoCRC As Byte, _
  btHiCRC As Byte) As String
  Dim CL As Byte, CH As Byte
  Dim SaveHi As Byte, SaveLo As Byte
  Dim i As Integer
  Dim Flag As Integer
  btHiCRC =
其他文献
该文以为长沙市燕山街社区为研究对象,将全景漫游技术的实例成果运用到社区规划过程中。基于实景的全景漫游展示直观真实地展现了场景信息,借助这一展示系统,为规划设计人员和社区居民之间搭建效的沟通桥梁,为公众参与畅通渠道,为规划设计成果搭建平台,切实提高社区规划的公众参与度。
一、研究这个问题很有现实意义1.正确的方法才能实现战略目标,才能完成任务,才能获得成功我们既要重视战略、规划、工作部署,又要重视实现战略、实施规划、落实部署的方法。如果
社区矫正作为非监禁刑罚,其实施和完善不仅体现了国家依法治国的精神,也是社会文明的进步的标志。在总结国际经验和国内实践背景的基础上,以浙江大学紫领志愿服务团队在杭州
在新媒体环境下,为了配合大学生心理健康教育工作,满足日益增长的大学生心理健康服务需求。该文分析了大学生网络阅读疗法需求,依托图书馆文献资源,利用新媒体信息技术,微信
随着自动化技术的不断升级,基于图像处理技术设计的全自动检测系统技术已经日趋成熟。该检测系统目前在工业生产产品质量监控、精密测量等领域都得到了广泛的应用。其不仅可以减少检测人员的工作量,而且实现了无间断地连续检测,同时也大大提高了检测、测量精度。近年来随着图像处理技术的不断进步,基于图像处理的检测系统研究设计也需要做出突破,改善检测系统应用现状。
摘要:针对我校研究生公共基础课《图论及其应用》优质课程建设的实际情况以及教学中存在的问题,该文总结了我们在《图论及其应用》课程的教学改革、教材建设、师资队伍建设、网站建设等方面建设研究生优质核心课程的经验。通过近几年的建设,目前课程在教学目标、教学内容、教学手段和考核评价等方面具有一定的优势和特色。  关键词:课程建设;图论;教学改革;教学内容  1概述  大量事物以及事物之间的关系,常可用图形来
提温岭市泽国镇的参与式预算民主恳谈,经过多年以来坚持不懈的努力,新技能不断运用,新策略不断完善,在恳谈代表的产生上有着独到的做法,现已基本形成了“预算编制有审查、预算执行
党的十八大以来,中国在建设中国特色社会主义经济方面继续推进,取得的成就举世瞩目。与此同时,海外对中国政府的经济政策、中国经济发展模式、中国特色社会主义经济制度的完善更
五大发展理念是基于社会发展的"合规律性"和基于人的发展的"合目的性"相统一的理论典范和实践总结。五大发展理念体现了对经济规律、自然规律、社会规律、世界历史规律、社会主义
摘要:针对无线传感网络中低功耗分簇型路由协议LEACH易遭受Sybil攻击的问题,提出一种基于接收信号强度值的轻量级检测算法。在充分分析无线传感网络自身特点与LEACH协议原理的基础上,采用信号强度值比较以低成本、快速检测Sybil攻击。仿真实验证明,算法可以以较低代价有效检测Sybil恶意攻击,保证网络正常运行。  关键词: 无线传感网络; Sybil攻击;接收信号强度值  中图分类号:TP39