1 引言
智能楼宇工程中的中央空调、电梯、通风、给排水、照明、火灾报警等个子系统的互联方案中,采用Modbus tcp协议的串行通信方式,全面兼容modbus工业标准,数据传输可靠,响应速度快,扩展灵活,通过互联网实现各子系统与中央管理系统的通信。modbus tcp协议是在tcp/ip标准中,应用层采用工业领域事实标准modbus。modbus使用tcp/ip应用层的502端口,这是经过国际公认的。该串行总线方式支持各种介质的rs-232、rs-422、rs-485接口。modbus tcp的网络通信模式采用client/server方式,如图1所示。
2 modbus tcp串行通信分析与实现
某智能楼宇中各子系统主要采用PLC作为主控模块,如图2所示。网络互联采用modbus tcp网络通信模式,中央管理系统与该网络的互联是亟待解决的问题,plc将智能楼宇中各子系统的相关状态和参数信息保存于它的寄存器中,中央管理系统需要读取plc中一些保持寄存器的数值,以此来进行智能楼宇的全面监控与管理。modbus tcp协议提供了相应指令来进行保持寄存器的读取。
2.1 协议分析
modbus tcp数据报文结构,如图3所示。
一次modbus tcp读取保持寄存器的通信分析(省略了ip/tcp头):
从左向右分析该数据报文:00 03为此次通信编号,一般每次通信之后将被要求加1以区别不同的通信数据报文;00 00表示协议标识符,00 00为modbus协议;00 06为数据长度,用来指示接下来数据的长度,单位字节;03为设备地址,用以标识连接在串行线或者网络上的远程服务端的地址。以上七个字节也被称为modbus报文头。03为功能码,此时代码03为读取保持寄存器数据。00 00 00 01为功能码的参数,指示将被读取的保持寄存器的地址与长度。从左向右分析该数据报文:00 03为此次通信编号,应答报文要求与先前对应的请求保持一致;00 00为协议标识符,00 00表示modbus协议;00 05为数据长度,用来指示接下来数据的长度,单位字节;03为设备地址,应答报文要求与先前对应的请求保持一致。以上七个字节同样为modbus报文头。03为功能码,正常情况下应答报文要求与先前对应的请求保持一致,如果出错则返回80h+先前的功能码。02为功能码的第一个参数,指示接下来数据的字节长度;00 17为被读取的保持寄存器中的数据值,即要求被读取的地址为00 00的保持寄存器中的数值为0017h。
测试程序(master)发送数据(hex)及 plc(modbus tcp slave) 响应数据(hex)样例分析如图4所示。
2.2 程序流程
以下是主程序的流程图,如图5所示,主要功能是建立tcp/ip连接以及连接错误处理。
modbus tcp协议的每一次工作循环的流程图,如图6所示。
2.3 程序测试
; 首先在ip中填上需要被连接的服务端ip地址,然后点击connect进行连接。连接成功后,在oFFset中填写需要读取的保持寄存器的开始地址,在length中填写需要读取的保持寄存器的长度。最后点击trigger读取一次上述保持寄存器,同时将在sent和received中显示发送及收到的数据报文(hex),并且在data monitor中显示对这些报文的解释。
3 结束语
本文对Modbus tcp协议以及modbus tcp串行通信在智能楼宇工程中的应用作了简单介绍,重点分析研究了modbus tcp读取PLC的保持寄存器数据的过程,并提出实现modbus tcp协议通信的解决方案,进行编程以及调试,成功实现了预期的功能。
关键字:PC机 PLC 串行通信 Modbus TCP协议
引用地址:
PC机与PLC的串行通信通过Modbus TCP协议实现
推荐阅读最新更新时间:2024-05-02 23:37
机电产品在自动开袋机上成功应用
1 前言 随着人们生活水平的不断提高,对服装质量,缝纫工艺要求也越来越高;而传统缝纫机制造业长期的过度竞争,盈利能力大大下降;而以前开袋还停在手工阶段,生产效率低,质量不稳定;因此应客户需求和企业发展的需要,主要用于高档西服自动开袋的设备也就应运而生。在人工成本日益上涨的今天,为企业进一步发展增强了竞争力。图1为自动开袋机实物图。 图1 自动开袋实物图 2 开袋机介绍 该机型机头由专用伺服马达驱动,以固定速度高速针缝。应用台达高性能EH2系列可编程控制器,通过高速脉冲控制台达ASD-B系列伺服马达以不同速度拖动大压脚送布,从而完
[嵌入式]
S7-200CPU之间设置一个简单的Modbus通讯
使用下面的例程你可以在S7-200CPU之间设置一个简单的Modbus通讯。这个例子是关于Modbus功能码6的(写从站保持寄存器), 也可以作为其他所支持的功能码:1, 2, 3, 4, 5, 15 和16 的基本参数设置步骤 。 要求:要使用Modbus协议必须先在STEP 7 Micro/Win上安装指令库 。Modbus主站协议只支持STEP 7 Micro/Win V4.0 SP5及其以上版本.。 硬件设置 参数匹配 指令库的存储地址 保持寄存器值得传输 1.硬件设置例程中的Modbus通讯是在两个S7-200 CPU的0号通讯口间进行的(最好每个CPU都有两个通讯口)。在主站侧也可以选择相应库文
[模拟电子]
电工学PLC编程入门基础学习心得
十年前,刚开始使用PLC时,也是一头雾水。仗着自己对硬件、工程知识的熟悉,和对组态软件的粗浅了解,硬着头皮接下了任务。当时已经来不及接受培训,相关资料极其缺乏,仅有的参考资料是一本英文的S7-200手册,以及西门子网站上找到的一些全西文的示例,总算在三个月内完成了系统的构建、软件的编写工作。 期间走弯路、出故障是家常便饭,经常搞得我茶饭不思,而且还由于操作不慎烧毁过一台PLC。所以我非常理解那些刚入门的网友两手抓瞎的感觉。 在此,粗略的总结一下自己的学习之路,供网友们参考。 1、编程需要坚强的毅力和足够的耐心 人各有所长。有些人把编程看作一项冗长而枯燥的工作;有些人把编程看作一项趣味的智力游戏。如果你是前者,强烈建
[工业控制]
smart200PLC一键启停的常用写法
在生产中,由于安装环境,成本控制,操作便利等因素,会用到一键启停的控制, 比如电机控制,阀门控制等等,今天我给大家聊聊常见的几种写法,为了直观通俗,我们 用LAD(梯形图)来写。 1.)位指令一键启停: (位指令一键启停) 程序解说: 当按下M10.0按钮,M10.0接通一个扫描周期,在第一个扫描周期,Q0.0的常开 触点断开,M10.1线圈失电,M10.0的上升沿接通Q0.0得电,电动机启动; 到第二个扫描周期,Q0.0常开点闭合,但M10.0的上升沿断开,M10.1线圈失电,Q0.0线圈失电,电动机停止。 2.)位指令 (位指令一键启停) 程序解说: 首次按下M10.2的上升沿接通M10.3线圈,它得电;在同一个扫
[嵌入式]
单片机串行通信基础知识
1、引脚信号 在实际工作中,CPU与其他外部设备间的信息交换,或一台计算机与另一台计算机之间信息交换均称为 通信 。 并行通信是数据的各位同时传送。并行通信的特点是传送速度快、效率高,但有多少数据位就需多少根数据线,因此传送成本高,适合近距离传输。在集成电路芯片的内部、同一插件板上各部件之间、同一机箱内各插件板之间的数据传送都是并行的。 串行通信是数据一位一位顺序传送。串行通信的特点是数据传送按位顺序进行,最少只需一根传输线即可完成,成本低但速度慢。计算机与远程终端或终端与终端之间的数据传送通常都是串行的。串行通信的距离可以从几米到几千公里。 串行通信又分为异步通信和同步通信两种方式。在单片机中,主要使用异步通信方式。
[单片机]
研华提升工厂自动化效率的整体解決方案
项目背景 国内某知名专门制造燃气灶具、热水器、抽油烟机等厨房与家庭用具的厂商,为了提高其工厂管理的效率而导入了MES系统,但可惜的是,由于厨房内所使用的机器设备过于老旧,使得生产过程中的重要数据无法与系统直接衔接,而需要借由人力方式将数据一笔笔上传,这样的运作模式不仅容易造成人为失误,且大幅增加了作业人员的工作量。同时,工厂内四处装设了冲床机与相关设备,这样的环境亦不适合在现场进行网络布线作业;燃具工厂是一个没有空调的高温多尘的环境,也让相关装置需要提供更优异的性能才能满足在如此严格条件下顺利运作的需求。 系統描述 此案中,客户其中的一些设备因过旧没有数据采集设备,而这个重要数据将影响制造质量。此项目中,研华选用三种ADAM采集模
[嵌入式]
基于CAN总线的计算机与PLC通信
1 引言
在现代工业中,PLC 之间或PLC 与计算机之间的通信联网应用日益广泛。PLC 的联网功能越来越强。以欧姆龙CP1、CJ1 和CS1 系列PLC 为例,配合使用各种模块,可以支持工业以太网、Controller Link 等现场总线通信联网功能。但是,应用广泛的CPM1A、CPM2A等中小型PLC 的通信联网一般只能采用工业总线的物理层形式(如RS232 或RS485),通信的稳定性与抗干扰能力并不是很强。
本文选用欧姆龙的CPM2A 机型,配合使用RS232-CAN 适配器,实现了计算机与PLC 的通信联网,方法简单, 实用性强。
2 CAN 总线简介
CAN 总线由德国BOS
[嵌入式]
如何学习PLC编程 PLC梯形图语言的编程原则
PLC是一款可编程控制器,它是属于电气工程师必学设备之一。那么作为一个新手小白,应该如何学习PLC编程呢?需要从哪几个方面入手呢?下面咱们就来说说如何学习PLC编程: · 触点及线圈指令 · PLC梯形图语言的编程原则: 1、梯形图由多个梯级组成,每个线圈可构成一个梯级,每个梯级有多条支路,每个梯级代表一个逻辑方程; 2、梯形图中的继电器、接点、线圈不是物理的,是PLC存储器中的位(1=0N;0=0FF);编程时常开/常闭接点可无限次引用,线圈输出只能是一次; 3、梯形图中流过的不是物理电流而是“概念电流”,只能从左向右流; 4、用户程序的运算是根据PLC的输入/输出映象寄存器中的内容,逻辑运算结果可以立即被后面的程序使用
[嵌入式]