教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 教育文库 >

Modbus协议在智能信号变送器中的应用

来源:网络收集 时间:2026-09-05
导读: 2011年 第6期 仪表技术与传感器 Instrument Technique and Sensor2011 No.6 Modbus协议在智能信号变送器中的应用 付 青,丁金华,王 辉,王朋亮,王炜富 (大连工业大学机械工程与自动化学院,辽宁大连 116034) 摘要:针对工业上的需求,文中基于Modbus协议设计了一

 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=(byt …… 此处隐藏:3836字,全部文档内容请下载后查看。喜欢就下载吧 ……

Modbus协议在智能信号变送器中的应用.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/279999.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)