近年来随着工控领域自动化水平的大幅进步,很多厂、矿企业原有的控制系统陆续开始各种软硬件的升级和改造。改造过程中,数据通讯的公道、可靠关系到
现场一系列大型设备的安全。由于整个工程往往由不同的单位分别完成,各部分之间的整合性必须得到保证,因此产业控制系统中常使用标准的协议进行接口通讯。
Modbus协议是一种产业通讯和分布式控制系统协议,由MODICON公司出品,现已被众多的硬件生产厂商所支持并广泛应用于产业控制领域。
DCS即集散控制系统,是以微处理器为核心的操纵显示集中、控制功能分散的产业控制系统。安全可靠的性能和成熟的使用技术使得DCS广泛地应用于电力、冶
金、石油化工、造纸、制药等行业。
陕西某电厂改扩建工程包括两部分系统:DCS,远程I/O数据采集系统。这两部分之间采用Modbus协议进行接口串行通讯。
2Modbus通讯协议
2.1协议简介
Modbus是一种主从网络,答应一个主机(Master)和一个或多个从机(Slave)通讯,支持两种有效的传送方
式:RTU(RemoteTerminalUnit,远程终端装置)和ASCII(美国标准信息交换码)。两种方式的命令格式是相同的,采用何种
方式取决于对通讯速度的要求。要求速度快的要用RTU方式,而对通讯速度要求不高的可用ASCⅡ码方式。协议的内容主要包括寄存器读写、开关量I/O等命
令的格式。
本项目工程通讯要求采用RTU方式,以下先容、分析的命令格式均为标准的Modbus协议格式,所用的数据示例均引自工程中的应用实例。
2.2主、从机命令格式
主机和从机之间采用查询与应答方式进行通讯,每一种查询命令报文都对应着一种应答报文。主机发出的查询命令报文格式如表1所示:
表1主机查询命令报文格式
地址码“02”表示主机要求查询02号从机,功能码“04”表示主机要求读保持寄存器操纵,起始数据“0000”表示从第1个数据开始读,数据长度“0040”表示要求读取64个模拟量数据。
CRC校验码:即循环冗余校验码,当本机计算得的CRC码与接收到的CRC码一致时方以为命令校验正确并进行操纵,否则返回出错信息或放弃此命令。具体参见下文2.3。
从机接收到表1所示命令时的正确信息应答报文格式如表2所示:
表2从机应答命令报文格式
表中“02、04”如前所述,“80”为从机发送数据的字节个数,即数据共发送了128个字节(64个数据);“0010…013A”为第1~64个数据的高、低字节值。
从机应答命令中的地址码、功能码必须与主机查询命令相同;命令中的模拟量数据必须按高位字节在前、低位字节在后的顺序放置,而CRC码与此相反,是低位字节在前、高位字节在后。
假如发生错误或异常,从机将返回主机出错命令,格式如表3所示:
表3从机返回出错命令报文格式
“84”是与主机查询命令中功能码“04”相对应的出错功能码,出错码“03”表明主机查询命令中的“数据长度”项有错,例如超出了最大数据量等。
在其他工程应用中,Modbus协议的各种功能码、出错码的含义及其具体选择、使用可参见参考文献[1]。
2.3错误检测方法
标准的Modbus协议串行通讯网络采用两种错误检测方法。一是奇偶校验,对每个字符都可用;二是帧检测(CRC或LRC),应用于整个命令报文。
RTU方式下帧检测采用的是CRC校验,方法是先调进一值是全“1”的16位寄存器,然后调用一过程对命令中连续的8位字节各当前寄存器中的值进行处理。终极寄存器中的值,就是命令字符串中所有的字节都执行之后的CRC校验码值。
下面给出VisualC++6.0下CRC校验码计算函数:
WORDCRC_Calc(PBYTEbuf,UINTnum)
{
UINTi,j;
WORDtemp,crc=0xFFFF;
for(i=0;i<num;i++){
temp=buf[i]&0x00FF;
crc︿=temp;
for(j=0;j<8;j++){
if(crc&0x0001)
{crc>>=1;crc︿=0xA001;}
elsecrc>>=1;
}
}
returncrc;
}
计算得的CRC校验码添加到命令中时,必须按低位字节在前、高位字节在后的顺序放置。例如,对表1所示的主机查询命令调用计算函数得到其CRC码为C9F1,则命令中最后两个字节是F1、C9。
3硬件构架
系统中通讯网络采用点对点方式,即网络中只有一台主机和一台从机。将一台产业PC机模拟PLC作为从机(远程I/O数据采集系统),采用RS-485
信号与DCS主机进行串口通讯。通讯的模拟量参数为#1机组217点、#2机组217点和公用部分48点,共计三个数据块482点。
系统的硬件实现如图1所示:
图1系统硬件接口框图
主机、从机之间装有一对台湾研华公司的ADAM4520转换器,用于完成RS-232与RS-485信号的转换,实现长间隔的通讯。另外,此转换器还需要+24V直流电源。
4软件设计
4.1软件功能
主机通讯子程序已内嵌在DCS系统中,以下先容从机通讯子程序的设计和开发。
从机操纵系统为Win2000,程序设计平台为VC++6.0,通讯程序采用Win32的API函数读、写串口。
程序的界面设计主要包括:一个复选框,用于选择通讯的数据块;一系列下拉列表,用于设置通讯的串口参数;网络状态显示控件。复选框的内容是#1、#2
及公用部分三个数据块,下拉列表主要包括设定波特率(9600bps)、起始位(1位)、数据位(7位)、奇偶校验位(1位)、停止位(1位),有无奇偶
检验(无)等,设置的内容均可以调整。
程序的功能设计请参见通讯子程序以及解析应答模块的流程图,分别如图2、3所示:
图2从机通讯子程序流程图
从机通讯子程序采取了多线程的工作方式。程序首先设置与DCS相同的串口参数以进行串口初始化,并按照DCS的要求选定通讯的数据块,之后创建一个侦
听串口事件线程CommWatchThread(),由此线程监测网络状态及主机发送来的命令消息等各种串口事件,再调用相应的函数对事件进行处理。
图3从机解析应答模块流程图
解析应答模块共有两个函数:RecvData()、SendData()。当RecvData()函数成功读取到主机的查询命令后,首先对数据
量和校验码进行校验,假如有错,则由SendData()向主机返回相应的出错命令报文;假如正确,则由SendData()按照命令中要求的起始数
据和数据量读取数据库,预备应答命令报文,并调用CRC计算函数计算出CRC码添加到命令的最后两个字节中,发送给主机。
由于通讯系统网络采用点对点方式且只进行模拟量数据的通讯,所以从机程序的解析、应答模块在对命令进行校验的时候只进行了数据量和CRC校验,省略了地址码和功能码等的校验,以节省时间,进步通讯的效率。
4.2软件特点
1、采用VisualC++面向对象的设计方法编写通讯软件程序,模拟PLC通讯的原理在产业PC机上实现基于Modbus协议的串行通讯,操纵方便。
2、采用多线程技术和消息驱动的工作方式,可以充分利用计算机系统的资源,避免瓶颈的产生,达到将系统进行公道组织的目的,有效地避免了网络数据的冲突,使得数据通讯安全可靠。
5结束语
本文先容了使用产业PC机通过Modbus协议实现DCS与远程I/O系统进行串口数据通讯的过程,采用VC开发的通讯软件已成功应用于陕西某电厂的
改造工程,这种通讯方式灵活方便,可靠性高,完全达到了预期的要求。了解Modbus协议是我们把握PLC、智能仪表、单片机等通讯机制的重要内容,对过
程监控、数据采集等系统中使用PC机进行串行通讯的软件开发本文不失为具有普遍的意义。
分享到:
相关推荐
建筑工地扬尘治理与文明施工检查表.docx
基于java的个性化旅游攻略定制系统设计与实现.docx
数学建模培训资料 数学建模实战题目真题答案解析解题过程&论文报告 导弹追击模型的建立与求解 共6页.pdf
基础课程辅助教学-JAVA-基于springBoot程序设计基础课程辅助教学系统设计与实现
适用人群:大学生 自学者 使用场景:大学生毕设 自学者练手项目 学习与交流 其它说明:部分资源来源网络及开源社区、仅供参考与学习、不可商用、若有侵权请联系删除! 内容概要:用springmvc实现的校园选课管理系统
java课程期末考试
C++ Vigenère 密码(解密代码)
工程研究中心申报基本情况一览表.docx
Vigenère 密码(加密代码)
密码学AES算法源代码,密码学实验
基于java的百货中心供应链管理系统设计与实现.docx
环境说明:开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7 数据库工具:Navicat 开发软件:eclipse/myeclipse/idea Maven包:Maven 浏览器:谷歌浏览器。 项目均可完美运行
【资源说明】 大数据毕业设计 基于Python+Spark机器学习天气预测系统详细文档+全部资料.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
购物系统 微信小程序+PHP毕业设计 源码+数据库+论文+启动教程
BIM 人才培养的框架和方法 相关的标准
源项目文件
ActiveMQ消息中间件的测试案例
内容概要:本文全面解析了汽车电动化、智能化背景下,车规芯片SoC的重要性和发展趋势。首先概述了汽车行业发展三大趋势——新能源车市场崛起、智能化引领新潮流、商业模式及价值链重构。随后详细介绍了车规芯片SoC的应用领域,包括主控芯片、功率芯片、CMOS芯片、射频接收器、传感器、存储芯片及汽车面板,并阐述了它们的作用和技术需求。文章接着讨论了电子电气架构的演进路径,从分布式向集中式的演进对汽车芯片供应链带来的影响。最后探讨了汽车SoC的技术特征、应用领域、未来发展方向及其面临的挑战。 适合人群:汽车芯片设计师、汽车制造商、科研机构及相关行业的专业人士。 使用场景及目标:理解和掌握汽车芯片尤其是SoC在智能电动汽车中的应用及未来发展,帮助相关从业者做出更好的技术和商业决策。 其他说明:随着智能电动汽车市场的快速成长,车规芯片SoC作为核心技术将面临前所未有的机遇和挑战。
用于控制 Broadlink RM2/3 (Pro) 遥控器、A1 传感器平台和 SP2/3 智能插头的 Python 模块python-broadlink用于本地控制 Broadlink 设备的 Python 模块和 CLI。支持以下设备通用遥控器RM home、RM mini 3、RM plus、RM pro、RM pro+、RM4 mini、RM4 pro、RM4C mini、RM4S、RM4 TV mate智能插头SP mini、SP mini 3、SP mini+、SP1、SP2、SP2-BR、SP2-CL、SP2-IN、SP2-UK、SP3、SP3-EU、SP3S-EU、SP3S-US、SP4L-AU、SP4L-EU、SP4L-UK、SP4M、SP4M-US、Ankuoo NEO、Ankuoo NEO PRO、Efergy Ego、BG AHC/U-01开关MCB1、SC1、SCB1E、SCB2出口BG 800, BG 900电源板MP1-1K3S2U、MP1-1K4S、MP2环境传感器A1报警套件S1C、S2KIT灯泡LB1、LB26 R1、LB2
这是一份关于五个城市的PM2.5监测数据文件,以CSV格式存储。数据涵盖了广州、北京、沈阳等地的空气质量情况,旨在帮助研究人员和数据分析人员更好地理解城市空气污染状况。 使用人群 适合对环境科学、大气污染研究感兴趣的科研工作者、学生及环保组织成员使用。 数据内容 包含五个主要城市的PM2.5浓度数据 时间跨度较长,覆盖多年数据 CSV格式方便导入各种数据分析软件进行进一步处理和分析