siemensplcmodbus通讯协议数据读取c.docx
- 文档编号:5616889
- 上传时间:2022-12-29
- 格式:DOCX
- 页数:6
- 大小:20.09KB
siemensplcmodbus通讯协议数据读取c.docx
《siemensplcmodbus通讯协议数据读取c.docx》由会员分享,可在线阅读,更多相关《siemensplcmodbus通讯协议数据读取c.docx(6页珍藏版)》请在冰豆网上搜索。
siemensplcmodbus通讯协议数据读取c
竭诚为您提供优质文档/双击可除
siemens,plc,modbus,通讯协议,数据,读取,c
篇一:
pc(上位机)与plc串行通讯
协议与串口dll之modbusrtu协议
modbusrtu通信协议串口通讯动态链接库dll(以下简称dll),是为满足工业通信需要,针对工业领域要求上位机对plc、工业仪表通讯实时采集与控制的组态编程而设计。
本dll是采用delphi语言开发的标准串口通讯库,具有以下特点:
1)、遵循modbusrtu串口通讯协议(施耐德、西门子、台达、永宏等品牌plc及各类工业仪表等支持本协议);
2)、实时性、可靠性好,通用性强;
3)、适用于多plc联网和上位机通信,满足多方面的需要(联网时可采用485总线式);
4)、函数接口功能全,操作简单,支持modbus的大部分读写功能函数;
5)、附加实用转换与读取函数,易于快速开发(Vc等非Rad开发环境的开发);
6)、支持usb、pc扩展卡等扩展串口号;
7)、支持多种操作系统win9x/win2000/winxp(标注win32dll);
8)、可在多种编程环境下使用,例如Vb、Vc、delphi等开发环境。
9)、支持modbusrtu标准的功能代码01、02、03、04、05、06、15、16且对相关功能代码的读取和写如做了一些扩充更加符合工业自动化领域的工控软件的开发,是广大工控工程师的必备工具软件。
二、modbusrtu通讯协议简介
modbus协议是应用于电子控制器上的一种通用语言。
通过此协议,控制器相互之间、控制器经由网络(例如以太网)
和其它设备之间可以通信。
它已经成为一通用工业标准。
有了它,不同厂商生产的控制设备可以连成工业网络,进行集
中监控。
此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。
它描述了一控制器请
求访问其它设备的过程,如果回应来自其它设备的请求,以及怎样侦测错误并记录。
它制定了消息域格局和内容的公共
格式。
当在一modbus网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定
要产生何种行动。
如果需要回应,控制器将生成反馈信息并用modbus协议发出。
在其它网络上,包含了modbus协议的消
息转换为在此网络上使用的帧或包结构。
这种转换也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法。
1、在modbus网络上转输
标准的modbus口是使用一Rs-232c兼容串行接口,它定义了连接口的针脚、电缆、信号位、传输波特率、奇偶校验。
控制
器能直接或经由modem组网。
控制器通信使用主—从技术,即仅一设备(主设备)能初始化传输(查询)。
其它设备(从设备)
根据主设备查询提供的数据作出相应反应。
典型的主设备:
主机和可编程仪表。
典型的从设备:
可编程控制器。
主设备
可单独和从设备通信,也能以广播方式和所有从设备通信。
如果单独通信,从设备返回一消息作为回应,如果是以广播
方式查询的,则不作任何回应。
modbus协议建立了主设备查询的格式:
设备(或广播)地址、
功能代码、所有要发送的数
据、一错误检测域。
从设备回应消息也由modbus协议构成,包括确认要行动的域、任何要返回的数据、和一错误检测域。
如果在消息接收过程中发生一错误,或从设备不能执行其命令,从设备将建立一错误消息并把它作为回应发送出去。
2、在其它类型网络上转输
在其它网络上,控制器使用对等技术通信,故任何控制都能初始和其它控制器的通信。
这样在单独的通信过程中,控制
器既可作为主设备也可作为从设备。
提供的多个内部通道可允许同时发生的传输进程。
在消息位,modbus协议仍提供了
主—从原则,尽管网络通信方法是“对等”。
如果一控制器发送一消息,它只是作为主设备,并期望从从设备得到回应。
同样,当控制器接收到一消息,它将建立一从设备回应格式并返回给发送的控制器。
3、查询—回应周期
(1)、查询
查询消息中的功能代码告之被选中的从设备要执行何种功能。
数据段包含了从设备要执行功能的任何附加信息。
例
如功能代码03是要求从设备读保持寄存器并返回它们的内容。
数据段必须包含要告之从设备的信息:
从何寄存器开始读
及要读的寄存器数量。
错误检测域为从设备提供了一种验证消息内容是否正确的方法。
(2)、回应
如果从设备产生一正常的回应,在回应消息中的功能代码是在查询消息中的功能代码的回应。
数据段包括了从设备
收集的数据:
象寄存器值或状态。
如果有错误发生,功能代码将被修改以用于指出回应消息是错误的,同时数据段包含
了描述此错误信息的代码。
错误检测域允许主设备确认消息内容是否可用。
3、两种传输方式
控制器能设置为两种传输模式(ascii或Rtu)中的任何一种在标准的modbus网络通信。
用户选择想要的模式,包括串
口通信参数(波特率、校验方式等),在配置每个控制器的时候,在一个modbus网络上的所有设备都必须选择相同的传输
模式和串口参数。
ascii模式
-------------------------------------------
|地址|功能代码|数据数量|数据1...数据n|lRc高字节|lRc低字节|回车|换行|-------------------------------------------
Rtu模式
------------------------------------|地址|功能代码|数据数量|数据1...数据n|cRc高字节|cRc低字节|
------------------------------------
所选的ascii或Rtu方式仅适用于标准的modbus网络,它定义了在这些网络上连续传
输的消息段的每一位,以及决定
怎样将信息打包成消息域和如何解码。
在其它网络上(象map和modbusplus)modbus消息被转成与串行传输无关的帧。
因ascii模式通讯效率较低一多采用Rtu模式,这里只对Rtu模式进行详细介绍。
4、modbusRtu模式
当控制器设为在modbus网络上以Rtu(远程终端单元)模式通信,在消息中的每个8bit字节包含两个4bit的十六进制
字符。
这种方式的主要优点是:
在同样的波特率下,可比ascii方式传送更多的数据。
代码系统
8位二进制,十六进制数0...9,a...F
消息中的每个8位域都是一个两个十六进制字符组成
每个字节的位
1个起始位
8个数据位,最小的有效位先发送
1个奇偶校验位,无校验则无
1个停止位(有校验时),2个bit(无校验时)
错误检测域
cRc(循环冗长检测)
地址域
消息帧的地址域包含8bit(Rtu)。
可能的从设备地址是0...247(十进制)。
单个设备的地址范围是1...247。
主设备通过
将要联络的从设备的地址放入消息中的地址域来选通从设备。
当从设备发送回应消息时,它把自己的地址放入回应的地址域
中,以便主设备知道是哪一个设备作出回应。
地址0是用作广播地址,以使所有的从设备都能认识。
当modbus协议用于更高
水准的网络,广播可能不允许或以其它方式代替。
如何处理功能域
数据域是由两个十六进制数集合构成的,范围00...FF。
根据网络传输模式,这可以是由一Rtu字符组成。
从主设备发给
从设备消息的数据域包含附加的信息:
从设备必须用于进行执行由功能代码所定义的所为。
这包括了象不连续的寄存器地址,
要处理项的数目,域中实际数据字节数。
例如,如果主设备需要从设备读取一组保持寄存器
(功能代码03),数据域指定了起
始寄存器以及要读的寄存器数量。
如果主设备写一组从设备的寄存器(功能代码10十六进制),数据域则指明了要写的起始寄
存器以及要写的寄存器数量,数据域的数据字节数,要写入寄存器的数据。
如果没有错误发生,从从设备返回的数据域包含
请求的数据。
如果有错误发生,此域包含一异议代码,主设备应用程序可以用来判断采取下一步行动。
在某种消息中数据域
可以是不存在的(0长度)。
例如,主设备要求从设备回应通信事件记录(功能代码0b十六进制),从设备不需任何附加的信息。
三、dll函数说明
modbus.dll是王俊于20xx年最新开发的基于施耐得modbusrtu通讯协议的串口通讯链接库。
modbus.dll专业版实现了对保持寄存器40001~4xxxx区数据读写(Fcn03:
读、Fcn16:
写,Fcn06写单个数据);对逻辑线圈00001~0xxxx的读写(Fcn01:
读取一组线圈,Fcn05:
强置单线圈,Fcn15强置多线圈);对输入状态10001~1xxxx的读(Fcn02);对输入寄存器30001~3xxxx的读(Fcn04)。
dll中的主要函数:
comopen:
打开串口
comclose:
关闭串口
Fcn01:
读取一组线圈(00001~0xxxx)
Fcn02:
取得一组开关输入状态数据(10001~1xxxx)
Fcn03:
读多个保持寄存器数据(40001~4xxxx)
Fcn04:
读多个输入寄存器数据(30001~3xxxx)
Fcn05s:
置位单线圈(00001~0xxxx)
Fcn05R:
复位单线圈(00001~0xxxx)
Fcn06:
预置单保持寄存器数据(40001~4xxxx)
Fcn15:
强置多线圈的通断数据(00001~0xxxx)
Fcn16:
写多个保持寄存器数据(40001~4xxxx)
Fcn16_xset:
单保持寄存器的0~15相应位的置位(40001.0-40001.15~4xxxx.0-4xxxx.15)
Fcn16_xReset:
单保持寄存器的0~15相应位的复位(40001.0-40001.15~4xxxx.0-4xxxx.15)
Fcn16_xsetReset:
单保持寄存器的0~15相应位的置复位(40001.0-40001.15~4xxxx.0-4xxxx.15),
指使相应的位短时间通断一次(约通60ms)
comtrue:
读取dll中的串口是否备有效打开
cinbin:
字中相应的位的状态抽取
1、打开串口
Functioncomopen(nport,baudRate,databits,parity,stopbits:
longint;user:
pchar):
longint;stdcall;
参数:
nport:
打开串口号,取值为1~8,代表com1~com8;
baudRate:
波特率,取值为:
1200、2400、4800、9600、19200、38400;
databits:
数据位,取值为5、6、7、8;
parity:
校验位,取值1(代表even)、取值2(代表odd)、取值3(代表mark)、取值4(代表space)、取值5(代表none);
stopbits:
停止位,取值1(代表1位停止位)、取值2(代表2位停止位)、取值3(代表1.5位停止位);
user:
dll授权用户名;
返回值:
长整型,操作成功返回“1”或“2”;1表示注册授权用户,2表示用户未注册;
操作不成功返回为“0”时的原因:
1)、串口不存在或被占用;2)、dll注册授权不正确。
注:
本dll用户不注册除了下面说明的功能限制外没有其他限制,未注册用户请使用特定用户名:
wangjun。
注册用户功能上无任何限制,且将得到永久的软件使用和更新升级服务;
使用举例:
篇二:
汇川plc-modbus从站通讯协议说明
modbus从站通讯协议说明(modbus功能码及数据编址)
h2u作为modbus从站时,支持modbus协议功能码0x01,0x03,0x05,0x06,0x0f,0x10(按十六进制数算);通过这些功能码,可读写的线圈有m,s,t,c,x(只读),y等变量;寄存器有d,t,c。
modbus通讯主机在访问(读取或改写)plc从机的内部变量时,必须遵循如下的通讯命令帧定义,以及变量地址索引方法,才能进行正常的通讯操作。
modbus帧格式(以modbus-Rtu为例)a)功能码0x01(01):
读线圈
请求帧格式:
从机地址+0x01+线圈起始地址+线圈数量+cRc检验
响应帧格式:
从机地址+0x01+字节数+线圈状态+cRc检验
b)功能码0x03(03):
读寄存器
请求帧格式:
从机地址+0x03+寄存器起始地址+寄存器数量+cRc检验
响应帧格式:
从机地址+0x03+字节数+寄存器值+cRc检验
c)功能码0x05(05):
写单线圈
请求帧格式:
从机地址+0x05+线圈地址+线圈状态+cRc检验
响应帧格式:
从机地址+0x05+线圈地址+线圈状态+cRc检验
d)功能码0x06(06):
写单个寄存器
请求帧格式:
从机地址+0x06+寄存器地址+寄存器值+cRc检验
响应帧格式:
从机地址+0x06+寄存器地址+寄存器值+cRc检验。
e)功能码0x0f(15):
写多个线圈
请求帧格式:
从机地址+0x0f+线圈起始地址+线圈数量+字节数+线圈状态+cRc检验。
响应帧格式:
从机地址+0x0f+线圈起始地址+线圈数量+cRc检验
f)功能码0x10(16):
写多个寄存器
请求帧格式:
从机地址+0x10+寄存器起始地址+寄存器数量+字节数+寄存器值+cRc检验。
响应帧格式:
从机地址+0x10+寄存器起始地址+寄存器数量+cRc检验。
变量编址a)线圈编址
线圈:
指位变量,只有两种状态0和1。
在本plc中包含m,s,t,c,x,y等变量。
b)寄存器编址
寄存器:
指16位或32位变量,在本plc中,16位变量包含d,t,c0~199;32位变量为c200~255。
说明:
通过modbus访问c200~c255段32位寄存器时,一个寄存器作两寄存器看待,一个32位寄存器占用两个16寄存器空间。
比
如用户要读或写c205~c208这4个寄存器,modbus地址为0xF70a(0xF700+10),寄存器数量8(4*2)。
32位寄存器不支持写单个寄存器(0x06)功能码。
注:
modbus通讯用plc的com1口,变量都需转为十六进制数,如pl默认地址为1,读线圈m400的值,需把十进制400转为十六进制0190来读,请求帧格式:
从机地址+0x01+线圈起始地址+线圈数量+cRc检验,010101900001+cRc检验。
读d1900需把十进制1900转为十六进制076c,请求帧格式:
从机地址+0x03+寄存器起始地址+寄存器数量+cRc检验,0103076c0001+cRc检验。
篇三:
atV71变频器与西门子s7-200进行modbus通讯(plc读写变频器)
atV71变频器与西门子s7-200通讯
强烈推荐!
!
!
一、接线【参考1:
concept_quantum与atV71的modbus串行通信(modbus通信控制启停、模拟量输出给定速度)_快速操作指南.doc
参考2:
twido与atV71的modbus串行通信(modbus通信给定速度、数字量输出控制启停)_完全通信指导.doc】
1.atV71变频器接口定义如下,4脚5脚为Rs485。
我们这里使用Rs485转Rs232将计算机与变频器连接起来。
二、变频器参数设置【参考1:
concept_quantum与atV71的modbus串行通信(modbus通信控制启停、模拟量输出给定速度)_快速操作指南.doc
参考2:
twido与atV71的modbus串行通信(modbus通信给定速度、数字量输出控制启停)_完全通信指导.doc】
三、上位机软件调试(读写变频器内部值)
(1)如下图所示,按照相关文档填写发送命令,打开串口,通讯正常即可接受到变频器返回的相应数据
(2)读写协议(参考:
atV71集成式modbus用户手册(20xx.02).pdf)
(3)变频器内部地址及含义如下:
【参考:
atV71communicationmanual12-2cn.pdf】
四、
1.2.五、
六、
plc与变频器通讯变频器参数设置(此时变变频器参数设置可能与之前不一样)plc程序(编写与变频器的通讯程序,实现相关数据的读写)11
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- siemensplcmodbus 通讯 协议 数据 读取