Modbus协议在智能信号变送器中的应用
更新时间:2023-04-24 06:08:02 阅读量: 实用文档 文档下载
2011年 第6期
仪表技术与传感器
Instrument Technique and Sensor2011
No.6
Modbus协议在智能信号变送器中的应用
付 青,丁金华,王 辉,王朋亮,王炜富
(大连工业大学机械工程与自动化学院,辽宁大连 116034)
摘要:针对工业上的需求,文中基于Modbus协议设计了一种嵌入式智能传输数据的仪表,CPU采用C8051F系列的微处理器,上下位机通过RS-485总线进行通讯。下位机采用C语言来编程,通过ADC和脉宽调制功能实现数据的采集和变换;上位机采用C#来开发Modbus协议通信软件,采用主线程和辅线程机制来实现Modbus协议通信,将数据显示在界面上,同时绘制数据的动态曲线图,方便观察数据,系统整体实用性较高。关键词:Modbus协议;RS-485总线;C#
中图分类号:TN915;TP212 文献标识码:A 文章编号:1002-1841(2011)06-0026-03
ApplicationofModbusTCPProtocolinIntelligentSignalTransducer
FUQing,DINGJin-hua,WANGHui,WANGPeng-liang,WANGWei-fu
(SchoolofMechanicalEngineering&Automation,DalianPolytechnicUniversity,Dalian116034,China)Abstract:Accordingtoindustrialneeds,thispaperdesignedanembeddedintelligentdatatransmissioninstrumentbasedonModbusprotocol.TheCPUadoptedC8051Fseriesmicroprocessor,theupperandlowercomputerrealizedcommunicationthroughtheRS-485bus.ThelowercomputeradoptedCprogramminglanguage,throughtheADCandpulsewidthmodulationfunctiontorealizedatacollectionandconversion,PCusedC#todevelopModbusprotocolcommunicationsoftware,usedthemainmechanismofurban-ruralbenefitreadjustmentandprocesstorealizedatacommunicationbasedonModbusprotocol.Itdisplaysdatainthehostcomputerinterface,whiledrawsdataonthedynamicgraph,itisaconvenientandpracticalsystemasawhole.Keywords:Modbusprotocol;RS-485bus;C#0 引言
ModBus通讯协议是一种开放式现场总线通信协议,其功能完善、使用简单、协议开放,正在成为仪表及智能终端的工业标准[1]。
工业上通常需要把温度、压力、速度、角度等物理量的变化转换成模拟量电信号才能传输到几百米外的控制室或显示设备上,这种将物理量转换成电信号的设备称为变送器。工业上最广泛采用的是用4~20mA电流来传输模拟量[2]。
文中介绍了基于modbus协议的智能隔离变送器,设计合理,稳定性、可靠性较好,在工业控制领域会有广泛的应用前景。1 系统整体设计
系统通过RS-485—RS-232转换器,进行主从机数据通信,PC机作为主机,24个隔离器作为从机,最多可扩展到255台从机。整体结构图如图1所示。
3 软件设计
3.1 下位机程序编写
下位机程序主要用到串口中断UART0,当接收到数据时,首先判断首字节和自己的地址是否吻合,如果正确则依次接收,在最后一个传输字节之后,必须要有至少3.5个字符的停顿时间来标定一帧消息的结束。结束之后从机对接收到的消息进行CRC校验。如果校验结果与帧消息包含的CRC校验码吻合,则表示通信正常,否则该帧通信有错误,通知主机重发命
图1 系统结构图
图2 系统硬件框图
信号源4~20mA,经过调理电路,将电流信号转换为电压,经低温漂运算放大器OP07将电压放大后加到V/F变换器LM331的输入端,LM331将输出的频率信号转换成TTL电平,进过6N137光电耦合器送给C8051F340单片机的I/O口进行脉宽调制,串口通讯则通过MAX485进行转换。硬件原理框图如图2所示。
令帧。接收数据流程图如图3所示。3.2 上位机程序编写
上位机软件主要实现上下位机串口通信和Modbus协议实隔离器的输出显面上。
2 硬件设计
基金项目:辽宁省教育厅2009—2010科学技术研究项目(2009A083)
:201118
第6期
付青等:Modbus协议在智能信号变送器中的应用
27
图4 上位机工作界面
图3 下位机数据接收流程图
Modbus串口通信程序采用多线程方式,主线程完成对串口的初始化、设置,发送控件则启动定时器,定时向串行口发送请求数据帧,发送完毕后需要放开发送总线,以便下位机占总线。接收线程监视串行口,当串行口收到从机数据时,接收线程向主线程发送消息,通知主线程从串行口取得从机的数据并进行相应的处理。如果经过校验接受数据正确,则设备地址加1,采集下个隔离器的数据。反之,重新发送数据帧。如果多次从机无应答,则提示通讯错误,停止通讯,此时可在上位机手动将该从机跳过以便其他从机继续运行。
(1)计算机发送查询电流信号消息给隔离器,如表1所示。
并可以通过选择一个隔离器将实时曲线显示出来,界面如图4所示。
上位机串口通信是采用VisualStudio2005开发工具中Se-rialPort类的设计方法,采用多线程,完成对通信数据的打包、数据解析以及通信的连接。实现了串口的初始化、串口参数设置、串口事件监视等。串口数据的读取用了事件触发方式,在SerialPort类中有DataReceived事件,当串口的读缓存有数据到达时则触发DateReceived事件。SerialPort.DataReceived事件运行比较特殊,其运行在辅线程,不能与主线程直接进行数据传输,所以用到了同步委托的方法Invoke
。
表1 查询数据消息
地址01
功能码03
存储地址高8位
00
存储地址低8位
00
数量高8位
00
数量低8位
02 {
if(ctlisTextBox) {
if(=="textBox"+snumber) {
((TextBox)ctl).BackColor=Color.Red; } }
MessageBox.Show("站号:"+snumber+"出现问题,请处理");
timer1.Enabled=false; port1.Close(); } }
privatestringcrc16(byte[]buffer,Int16length)//CRC校验 {
stringresult="";
byteuchCRCHi=0xFF;//highbyteofCRCinitialized byteuchCRCLo=0xFF;//lowbyteofCRCinitialized intuIndex;//willindexintoCRClookuptableo0;gt++校验码高8位
ai
校验码低8位
ao
主要代码实现:
privatevoidsenddata(){
port1.RtsEnable=true;//占总线
port1.DiscardInBuffer();//删除缓冲区的数据if(number>=24)number=1;//循环24个从机buffsend[0]=number;//从机地址snumber=Convert.ToString(number,10);
buffsend[1]=HexStringToBinary(TBfucnum.Text);//功能码buffsend[2]=(byte)(HexStringToUInt16(TBadress.Text)/256);buffsend[3]=(byte)(HexStringToUInt16(TBadress.Text)%256);buffsend[4]=(byte)(HexStringToUInt16(TBshul.Text)/256);buffsend[5]=(byte)(HexStringToUInt16(TBshul.Text)%256);buffsend[6] =ai;//校验码高8位buffsend[7]=ao;//校验码低8位
port1.Write(buffsend,0,buffsend.Length);port1.RtsEnable=false;count++;
if(count==5)//重发5次没有反应报错{
ctl.nt
28
{
uIndex=uchCRCHi buffer[i];
InstrumentTechniqueandSensor
result=converHex(uchCRCHi); result+=converHex(uchCRCLo); returnresult; }
Jun.2011
uchCRCHi=(byte)(uchCRCLo auchCRCHi[uIndex]); uchCRCLo=(byte)(auchCRCLo[uIndex]); ai=uchCRCHi; ao=uchCRCLo; }
(2)隔离器返回电流信号数据,如表2所示。
表2 返回数据消息
地址01
功能03
码数据长度高8位
00
数据长度低8位
02
数据8位rsdataH
数据8位rsdataL
校验码高8位
ai
校验码低8位
ao
代码实现:
privatevoidport1 DataReceived(objectsender,SerialDataReceivedE-ventArgse)
{
byte[]bufferok=newbyte[8]; byte[]buffcrc=newbyte[6]; intbytes=port1.BytesToRead;
byte[]buffrec=newbyte[bytes];//接收数据 port1.Read(buffrec,0,bytes);//将数据读到缓冲区 booldata ok=false;//数据是否正确
buffer.AddRange(buffrec);//定义一个缓冲区 while(buffer.Count>=8) {
if(buffer[0]==buffsend[0]) {
buffer.CopyTo(0,buffcrc,0,6);
if((buffer[6]!=ai) (buffer[7]!=ao)) {
buffer.RemoveAt(0); continue; }
buffer.CopyTo(0,bufferok,0,8); data ok=true;
buffer.RemoveRange(0,8); } else {
buffer.RemoveAt(0); } }
if(data ok) {
rsdata=bufferok[4]*256+bufferok[5];
input=Convert.ToString(rsdata,10);//数据显示在界面上 SetTextCallbackd=newSetTextCallback(Updatatextbox); this.Invoke(d,newstring[]{input});//同步委托方法 number++;
if(number>=24){number=1;}//站号 count=0; }}
4 结束语
Modbus作为国际智能化仪表普遍采用的主流通信协议之一,应用广泛。该系统采用Modbus通讯协议可靠地实现了上下位机的通讯。经实验测试,系统符合工业控制的要求,而且系统稳定,误差较小,实用性较强,而且从机可以扩展到255台,基于Modbus通讯技术应用于智能变送器设计,提高了其稳定性、可靠性和通用性,且结构简单,成本较低,会得到普遍的推广和应用。参考文献:
[1] 叶露林,洪雪峰.基于ModBus通讯协议智能模块实现及应用.电
子科技,2009,22(2):11-13
[2] 王正德,赵菲菲.工业用4/20mA两线制变送器的设计.仪表技
术,2009(11):75-77.
[3] 郭庆,李成贵,田宏杰.智能测试仪器和系统中Modbus协议的实
现.计量与测试技术,2009,36(1):47-49.
[4] 张波,丁金华,孙秋花,等.基于微控制器的隔离变送器的设计.大
连工业大学学报,2010,29(3):223-226.
[5] 崔鹏.基于MODBUS协议智能控制系统设计.山西电子科技,2010
(3):24-25.
[6] 陆瑶,景鑫.基于C#环境的单片机(89C51)与PC的串行通信.信
息技术,2009(7):225-229.
作者简介:付青(1984—),硕士研究生。E-mail:11955589@
(上接第25页)
[7] DONG,Qing.OceanwavespectrumfromSARimageusing2D-ARMA
model.IEEEInternationalGeosciencesandRemoteSensingSymposi-um,2005,991-994.
[8] LimitedARMDevelopmentGuide2000-2001.ARMDOI,2000,06.[9] POPPaul.Embeddedsystemsdesign:Optimizationchallenges.Lecture
NotesinComputerScience,2005,35(24):16-20.
[10] 胡松,温志渝,陈伟民.一种新型微小光谱仪的设计.压电与声
光,2006,22(6):363-366.
作者简介:苏小会(1970—),博士研究生,副教授,主要从事计算机应用
技术方向的研究。
E-mail:xusp686@,suxh666@
正在阅读:
Modbus协议在智能信号变送器中的应用04-24
“十三五”重点项目-连锁经营项目节能评估报告(节能专篇)10-24
七年级英语上册Unit1ThisismeReadingI教案新版牛津版01-09
奥鹏教育 初中英语研修总结 作者:杨秀萍12-27
江苏省徐州市王杰中学高中地理地壳的运动和变化教学案 新人教版03-12
家里墙上字什么内容好 显得您文化底蕴深厚07-27
艺术家眼中的自己09-11
田园风光手抄报图片和资料02-16
应用文考试重点01-08
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 变送器
- 信号
- 协议
- 智能
- 应用
- Modbus
- 行政领导学复习题小抄
- 壳牌和德士古煤气化排渣系统比较
- 重大决策征求意见制度
- 预防医学实验中心指导的大学生创新实验项目一览表
- 小学三年级的作文要求
- 中职英语基础模块Unit2__Family
- Happy Marriage 幸福的婚姻
- 15 氨基酸 蛋白质 核酸
- 081-单位擅自实行年薪制,员工以拖欠工资为由要求经济补偿金获支
- 北京市房山区实验中学学生留学找谁办理靠谱
- 各种密封圈产品性能详解
- 2.沟通与人际关系技巧
- 天津站站盾构接收专项方案114
- 心理学研究方法的重点
- 2010信息技术会考模拟题1
- 分步傅里叶算法的MATLAB程序实现
- 第七批省级骨干农业龙头企业名单
- 《雨林的毁灭——世界性灾难》正式版
- 大班社会活动教案《合理用钱》含反思
- 2006年全国小学生英语竞赛(NECPS)六年级组竞赛样题