基于LabVIEW的Modbus串口通讯协议的实现.docx
《基于LabVIEW的Modbus串口通讯协议的实现.docx》由会员分享,可在线阅读,更多相关《基于LabVIEW的Modbus串口通讯协议的实现.docx(7页珍藏版)》请在冰豆网上搜索。
基于LabVIEW的Modbus串口通讯协议的实现
二〇〇八年・第二期研究报告基于LabVIEW的Modbus串口通讯协议的实现
袁 雪 陈 斌 鲁中巍 管国强
(江苏大学机械学院 镇江 212013
摘 要 本文简要地介绍Modbus通信协议,详细的阐述以PC机作为上位机,Labview
711作为上位机软件开发平台的主从式串口通信程序的实现。
经过测试,该程序可在基
于labview的测控系统中加以实际应用。
关键词 Labview PLC 串口通信 Modbus协议
引言
LabVIEW(laboratoryvirtualinstrument2ingworkbench
境,
软件,。
LabVIEW,VXI,RS2232和RS2485,还内置了支持TCP/IP,ActiveX等软件标准的库函数,其图形化编程语言环境,简单直观,极大节省程序开发时间,可以完成各种各样的编程任务。
本文详细介绍基于labview711开发平台实现Modbus通讯协议的方法,该程序可用于上位机与下位PLC的串口通讯程序。
在实际测试中,上位机通过串口RS232转RS485与下位台达PLC进行通讯,被测参数的大量实时信号通过串口传送给上位PC机,上位机可以对接收到的这些参数进行实时数据显示、趋势图显示、数据查询和管理,还可以对下位PLC进行参数控制和曲线控制。
1 Modbus协议简介〔1〕
Modbus通信协议是应用于电子控制器上的一种通用语言,通过此协议控制器相互之间、控制器经由网络和其它设备之间可以通信,它已经成为一通用工业标准。
不同厂商生产的控制设备可以连成工业网络,进行集中监控。
111 Modbus协议两种串口传输方式
Modbus协议定义两种数据传输方式,即ASCII模式和RTU模式。
在标准的Modbus网络上,可以设置控制器为两种传输模式中的任何一种。
在配置每个控制器的时候,需选择想要的模式,以及串口通信参数(波特率、校验方式等,在Modbus网络上的所有设备都必须选择相同的传输模式和串口11
Modbus消息被传送设备作为,这就允许接收的设备在消息起始,读地址分配信息,判断哪一个设备被选中(广播方式则传给所有设备,判知何时信息已完成。
11211 ASCII帧 使用ASCII模式,消息以冒号(:
字符(ASCII码3AH开始,以回车换行符结束(ASCII码0DH,0AH。
其它域可以使用的传输字符是十六进制的。
网络上的设备不断侦测“:
”字符,当有一个冒号接收到时,每个设备都解码下个域(地址域来判断是否发给自己的。
消息中字符间发送的时间间隔最长不能超过1s,否则接收的设备将认为传输错误。
一个典型消息帧(见图1。
起始位设备地址功能代码数据LRC校验结束符1个字符2个字符2个字符n个字符2个字符2个字符图1 ASCII消息帧
11212 RTU帧 使用RTU模式,消息发送至少要以315个字符时间的停顿间隔开始。
在网络波特率下多样的字符时间,这是最容易实现的(如图2的T12T22T32T4所示。
传输的第一个域是设备地址。
可以使用的传输字符是十六进制的。
网络设备不断侦测网络总线,包括停顿间隔时间内。
当第一个域(地址域接收到,每个设备都进行解码以判断是否发往自己的。
起始位
设备
地址
功能
代码
数据
CRC
校验
结束符T12T22T32T48位8位n个8位16位T12T22T32T4图2 RTU消息帧
2 LabVIEW中基于Modbus通信协议的串口通讯程序实现
211 Labview与串口通讯
13
现代仪器(www1moderninstrs1org1cn二〇〇八年・第二期
Labview针对串行口通信提供完整功能的组件,共有6个串口通信节点,分别实现初始化串口、串口读、串口写、串口缓存检测和串口暂停以及关闭串口等功能,能方便地规定主机串口地址、从机地址、传送的数据量及一帧串行数据的格式,包括波特率、数据位数、有无奇偶校验位和停止位位数等。
各节点端口参数表参见文献〔2〕。
利用图形化编程语言2G语言直观、快捷的优势,通过功能模块的组合和连接,能够比较方便地开发出适合各种不同通信协议的串行口通信程序。
在labview中进行串口通讯的基本步骤是:
(1初始化串口,设置串口参数与PLC下位机的串行通讯参数一致;(2读写端口;(3延时;(4关闭串口。
212 基于Modbus
根据Labview,照Modbus。
21211 在function面板中选择PropertyNode,将其reference端口和VISAresourcename相连,右键选择property2Serialset2ting,设定进行串口通信的波特率,通讯模式(RTU或ASCII,奇偶校验,流控制。
21212 串口请求模块 这个模块的功能是将mod2bus命令封装起来,对串口进行各种读写操作。
整个通讯模块可以做成一个子程序,入口参数是功能代码,数据在从机的起始地址,出口参数为读到的存储器的值,调用起来很方便。
完成这个功能需要以下几个子函数:
(1串口命令发送子函数 首先把命令消息帧按照Modbus协议格式化成为计算机可以识别的字符串形式,再发送到VISAWrite1vi端口。
在发送之前需要选择信息发送的模式,在ASCII模式下,采用LRC错误校验,这个错误校验码是一个8位二进制数,可作为2个ASCII十六进制字节传送。
计算LRC码时,仅设备地址、功能代码、数据块字节参加运算,而冒号(:
、回车符号(CR、换行字符(CF不参加运算。
具体计算LRC码的步骤为:
需运算的所有字节相加,所得之和丢弃进位;将上步计算出的8位字节取反或由FFFF减去该8位字节;将取反后的值加1即为LRC码。
接收端判断接收到的信息是否正确的简单方法是:
将除冒号(:
、回车符号(CR、换行字符(LF以外的所有字节,包括码相加并丢弃进位,若结果为0,则表明信息传送正确,否则出错〔3〕。
实现LRC校验的子程序框图(见图3。
图3 LRC
在RTU模式下,315个字符时间,200Bps,使用11s模式下采用CRC校CRC码,放置于发送信息帧的CRC值,两者比较如果相符,表示接收的消息帧正确无误,否则,说明接收的信息帧有误。
在进行CRC码计算时只用8个数据位、起始位、停止位及奇偶教验位都不参与CRC计算。
CRC码的计算方法:
a1预置2个16位的寄存器为十六进制FFFF,称此寄存器为CRC寄存器;b1把第1个8位二进制数据(即通讯信息帧的第1个字节与16位的寄存器的低8位相异或把结果放于CRC寄存器;c1把CRC寄存器的内容右移一位(朝低位,用0填补最高位,并检查右移后的移出位;d1如果移出位为0,重复第3步(再次右移一位;如果移出位为1,CRC寄存器与多项式A001进行异或;e1重复步骤C和d,直到右移8次,这样整个8位数据全部进行处理;f1重复步骤b到步骤e,进行通讯信息帧下一个字节的处理;g1将该通讯信息帧所有字节按上述步骤计算完成后,得到的16位CRC寄存器的高、低字节进行交换;h1最后得到的CRC寄存器内容即为CRC码〔4〕。
实现CRC校验的子程序框图(见图4。
(2串口命令接收子函数:
这个函数功能就是把写入串
图4 CRC码程序框图
口缓冲的Modbus消息命令帧读取出。
本框图程序采用顺序结构,顺序第1帧,利用VISARead节点从ByteCount端口读取一个字符数,并与指定的从
23
二〇〇八年・第二期
研究报告
机设备相比较,确定读取的从机号与实际从机相符合。
顺序第2帧,利用VISABytesatSerialPort1vi和VISARead1vi将串口输入缓存中的数据字节数全部读出。
同时,利用TickCount1vi计算整个读取命令帧的时间间隔,如果超过给定的超时时间(这里设为10000ms,程序会报超时错误。
另外,采用一个while循环结构,对读出字符串的校验码进行核对,如果不正确,重新读取,直到读出的校验码与发送的相符,中止循环(见图5。
顺序第3帧,添加一个子函数,String转ModbusDataUnit
1
图5 串口命令接收子函数程序框图
vi,其目的就是将读出的所有字符串按照Modbus
消息命令帧的格式将从机地址与功能代码和数据量
(ModbusDataUnit分开,为下一步解码提供函数
入口参数。
(3字符串解码子函数:
根据Modbus协议命令帧的功能代码,返回给用户实际读出的寄存器的值。
213 关闭串口结束通讯
3 结语
本文在labview711软件平台上,利用RS232转RS485串口,成功开发基于Modbus协议的串口通讯模块,可以方便地实现上位PC机与多台下位PLC的主从式串行通讯,作。
可以不加任,,运,运行良好可靠。
参考文献
1 MODICON,Inc1ModbusProtocolReferenceGuide〔Z〕119962 杨乐平,李海涛,杨磊.
labview程序设计与应用〔M〕,
北京:
电子工业出版社,2005
3 陈金平,吴文英1基于Labview的Modbus协议两种校验
码的实现方法〔J〕,仪表技术,2005,(2∶42~43
4 谢启,顾启民,涂水林等1基于Labview的ModbusRTU通
讯协议的实现〔J〕,煤炭机械,2006,27(12∶95~97
TherealizationoftheserialcommunicationprotocolbasedonLabview
YuanXue ChenBin LuZhongwei GuanGuoqiang
(JiangsuUniversity.Zhenjiang 212013
Abstract Thepaperfirstlygivesabriefintroductiontothemodbuscommunicationprotocol,thenexpatiatesthe
realizationofMaster2SlaveserialcommunicationprogrammerwithLabVIEWasthedevelopmenttoolandPCasthesupercompuer1ItisprovedthattheprogrammercanbetakenintopracticeinthetestandcontrolsystembasedonLabVIEW1
Keywords LabVIEW PLC Serialcommunication Modbusprotocol
(上接第26页
Therapiddeterminationoftracechromiuminmedicineastragalusbyflow
injectionchemiluminescencemethod
JiaoYanna RenXiaorong MaHongqiong LiHuiPangGuowei
(CollegeofChemicalEngineering,SichuanUniversity,Chengdu 610065,China
Abstract Anewandeffectivemethodchemiluminescence2flowinjectionisestablished1Itisbasedonthemeas2
urementofthelightemittedfromtheCr3+2catalysedoxidationluminolbyH2021Cr6+isreducedtoCr3+
byH2SO3,thusthetotalchromiumioncanbedetermined1Optimumconditionsareobtained:
appliedvoltageis2500V;lumi2
nolconcentrationis2150×1024mol/L;hydrogenperoxideconcentrationis4100×1022
mo1/L;pHofluminolis12,
pHofCr(Ⅲsolutionis51Thelinearrangeis1100×1026mg/mL~110×1024
mg/mLanddetectionlimitis6160
×1027mg/mL(S/N=3,Therelativestandarddeviation(RSDis016%for11measurementsof6100×10
26
mg/mLCr3+
standardsolution1ThemethodhasbeensuccessfullyappliedtothedeterminationofchromiumofthemedicinesamplesAstragalus1
Keywords Flowinjection Chemiluminescence Astragalus Chromium
3
3