西门子300-200 ModBus通信 S7-300 CP341作主S7-200作从的Modbus通信

西门子300-200 ModBus通信  S7-300 CP341作主S7-200作从的Modbus通信
西门子300-200 ModBus通信  S7-300 CP341作主S7-200作从的Modbus通信

S7-300 CP341作主S7-200作从的Modbus通信Modbus Communication -- S7-300 CP341 as Master and S7-200 as Slave

Edition(2009年11月)

摘要自动化各个厂家在工业控制通信方面都有各自的通信协议及方式。西门子控制产品中通信的主要方式有MPI,Profibus,Ethernet。在现场应用中,往往需要两个厂家的控制器进行通信交换数据。Modbus通信是常用的一种。本文就以CP341都作为Modbus主站,S7-200作为Modbus从站的通信实验作介绍。

关键词CP341 S7-200 Modbus

Key Words CP341 S7-200 Modbus

IA&DT Service & Support Page 2-24

目录

S7-300 CP341作主S7-200作从的Modbus通信 (1)

1.系统简介及软硬件需求 (4)

1.1 软件环境 (4)

1.1.1 STEP7 V5.4 SP3 (4)

1.1.2 CP PtP Param V5.1 SP8 (5)

1.1.3 CP PTP Modbus Master V3.1.4 (5)

1.1.4 STEP 7 MicroWIN V4.0 SP6 (5)

1.1.5Toolbox_V32-STEP 7-Micro WIN 32 Instruction Library (5)

1.2 硬件列表 (5)

1.3硬件安装 (5)

2. CP341作Modbus主站的设置与编程 (8)

2.1 CP341作Modbus主站的硬件组态 (8)

2.1.1 硬件组态CPU及CP341 (8)

2.1.2 设置Modbus总线传输速率和帧字符结构 (8)

2.1.3 设置电气接口 (9)

2.1.4 Modbus配置的下载 (10)

2.2 CP341作Modbus主站的编程 (11)

3.S7-200作Modbus从站的设置 (15)

4.通信测试 (17)

4.1 FC01主站读取从站多个DO点状态 (17)

4.2 FC02主站读取从站多个DI点状态 (18)

4.3 FC03主站读取从站多个内部寄存器状态 (19)

4.4 FC06主站写单字到从站内部寄存器 (20)

4.5 FC16主站写多字到从站内部寄存器 (21)

附录-推荐网址 (23)

IA&DT Service & Support Page 3-24

1.系统简介及软硬件需求

Modbus 是公开通信协议,其具有两种串行传输模式,ASCII 和 RTU。它们定义了数据如何打包、解码的不同方式。通信双方必须同时支持上述模式中的一种,通常支持Modbus 通信的设备大都支持RTU 格式。Modbus 通信标准协议可以通过各种传输方式传播,如

RS232C、RS485、光纤、无线电等。在 S7-200 CPU 通信口上实现的是 RS485 半双工通信,使用的是 S7-200 的自由口功能。

Modbus 是一种单主站的主/从通信模式。Modbus 网络上只能有一个主站存在,主站在Modbus 网络上没有地址,从站的地址范围为 0 - 247,其中 0 为广播地址,从站的实际地址范围为 1 - 247。

在实现Modbus通信方面,西门子AS产品中往往会用到CP341和S7-200。其二者之间的不同是CP341的接口类型多,包含RS 232C (V.24) 20 mA (TTY), RS 422/RS 485 (X.27)。由于其实现Modbus通信需要购买Modbus Dongle,在实现功能成本方面比较高。但是由于CP341可安装在ET200M站上通过Profibus的方式与主站相通,此种方案很适合比较大型系统进行的Modbus通信设计和改造。S7-200系列产品是西门子AS产品中低端的产品。但是其小而精湛集成了很多通信功能。虽然S7-200在实现Modbus通信时使用的是S7-200 的自由口功能,接口采用RS485,或是通过适配器转换成RS 232接口类型不如

CP341的型号丰富,但是其在实现Modbus功能上无需组态和额外购买组件,所以实现起来既简单而且成本低廉,在比较低端的场合是个不错的选择。

在现场应用中CP341往往都作为Modbus主站来读取第三方设备的数据,而S7-200常作为Modbus从站与其他设备进行Modbus通信。本文就以CP341都作为Modbus主站,S7-200作为Modbus从站,来实现其二者的Modbus通信,阐述其二者在实现通信方面的设置和注意事项。需要说明的是S7-300与S7-200的通讯方式有很多种包括MPI、Profibus、Ethernet、Modbus等。本文旨在说明其二者在Modbus通信方面的具体安装和编程步骤。

1.1 软件环境

1.1.1 STEP7 V5.4 SP3

用于编写S7-300/400 等PLC程序,此软件需要购买,本文档中所有的程序代码均使用Step7 V5.4 SP3编写。

IA&DT Service & Support Page 4-24

1.1.2 CP PtP Param V5.1 SP8

串行通信模板的驱动程序,安装此驱动后才能配置PtP模板,并在Step7中集成通信编程需要使用的功能块。此驱动随购买模板一起提供,也可以从以下的链接下载。

https://www.360docs.net/doc/bd18141392.html,/CN/view/zh/27013524

1.1.3 CP PTP Modbus Master V3.1.4

CP341或CP441-2用于Modbus 主站时,需要安装此驱动协议,但安装此驱动之前必须先安装PtP driver,此驱动可以在购买Modbus Dongle时选择购买,或者可以从以下链接下载。 https://www.360docs.net/doc/bd18141392.html,/CN/view/zh/8713784

1.1.4 STEP 7 MicroWIN V4.0 SP6

此软件是用于S7-200编程和组态的软件。此软件可以免费下载到。

1.1.5Toolbox_V32-STEP 7-Micro WIN 32 Instruction Library

S7-200实现Modbus功能,需要使用Modbus的指令库,其实质是自由口通信。

STEP 7-Micro/WIN V4.0 以上版内部已经带有新的指令库,支持Modbus通过Port0、Port1进行通信,但在未安装西门子 Instruction Library 软件包的情况下,不能显示出来使用。

要使用西门子的标准指令库,必须先安装西门子的指令库软件包 Instruction Library。安装了 Instruction Library 之后,只要安装的 STEP 7-Micro/WIN 版本是最新的,就能获得相应版本的新指令库。安装 Micro/WIN 的升级包(Service Pack)也会更新指令库的版本。

1.2 硬件列表

z S7-300站:

CPU315-2DP 6ES7 315-2AG10-0AB0

CP343-1 6ES7 341-1EX30-0XE0

CP341 RS422/485 6ES7 341-1CH01-0AE0

Dongle 6ES7 870-1AA01-0YA0 (MODBUS master)

z S7-200站:

224XP 6ES7 214-2BD23-0XB8 (选用双口CPU便于调试)

1.3硬件安装

物理接口方面S7-200的通信口为RS485物理接口, CP341选用的也是RS 422/485接口类型的模块。二者之间可采用6ES7 902-3AB00-0AA0 RS 422/485 5m连接电缆。在本系统中

IA&DT Service & Support Page 5-24

采用的电缆为DP 红B 绿A 两线电缆。

在接线之前首先要仔细阅读CP341及S7-200通信接口的手册,查看通信接口针脚的定义。如图1所示。

图1 S7-200 CPU通信口引脚定义

图2 CP341 RS 422/485通信口引脚定义

IA&DT Service & Support Page 6-24

图3 CP341 通过RS485与通信对象的连接方式

在接线时,S7-200端由于是9针 RS485口,故用标准的DP连接器。而CP341上的接口为15针口,其4、11对应RS485接线方式的连根线。从S7-200端口3引出的是红色B线,其连接CP341 15针口的11端口。从S7-200端口8引出的是绿色A线,其连接CP341 15针口的4端口。如图4所示。

图4 S7-200与CP341 RS 422/485接口通过DP电缆的接线图

IA&DT Service & Support Page 7-24

2. CP341作Modbus主站的设置与编程

2.1 CP341作Modbus主站的硬件组态

2.1.1 硬件组态CPU及CP341

图5 将CP341逻辑地址为272

2.1.2 设置Modbus总线传输速率和帧字符结构

双击CP341->Parameters->Protocol中选择Modbus Master;

双击信封Protocol,选择Modbus Master设置总线传输速率和帧字符结构。

如图 6,本例传输速率为9.6Kbit/s,帧字符选用8位数据位,1位停止位,无校验。此设置可根据实际情况调整,原则是通信双方选择一致。

IA&DT Service & Support Page 8-24

图6 通信帧字符结构

2.1.3 设置电气接口

选择半双工RS 485,默认设置是 R(A)为- ,R(B)为+。此设置主要是与RS485 A、B两线正负定义有关,在CP341接线与通信对象A、B两线正负定义相反时,可无需修改硬件接线,可直接修改此处颠倒接线正负。如图7所示。

IA&DT Service & Support Page 9-24

图 7 CP341接线与通信对象A、B两线定义

2.1.4 Modbus配置的下载

当配置好Modbus通信的参数后,在向CPU下载硬件组态前,要向CP341的Dongle 中下载Modbus Master的驱动,一旦下载完成后此后无需再次下载。对于通信参数的调整只需要进行HW对CPU的硬件下载即可。

要注意的是,在下载Dongle时,一定要CPU停机下载。如图8所示

IA&DT Service & Support Page 10-24

图8下载Dongle时,一定要CPU停机下载

2.2 CP341作Modbus主站的编程

实现CP341作Modbus主站的通信程序是“P_SND_RK”FB8负责发送控制字。编程如下:

IA&DT Service & Support Page 11-24

图9 “P_SND_RK”FB8

FB8参数说明表格1。

SF ‘S’为发送,此处必须为大写的‘S’

LADDR 硬件组态中的起始逻辑地址,本例中为272

REQ 发送数据触发位,上升沿触发,本例中为M0.5,以1s为周期的脉冲信号

DB_NO 发送数据块号,本例中为1

DBB_NO 发送数据的起始地址,本例中为0

LEN 发送数据的长度,本例中暂时为6

R_TYP ‘X’为扩展的数据块,此处必须为大写的‘X’

R 取消通信,本例始终为初始值FALSE

DONE 发送完成位,无故障发送完成后为true,M100.0

ERROR 错误位,为true说明有错误,M100.1

STATUS 状态字,标识错误代码,查看Modbus Master和CP341手册

其它参数 查看在线帮助

表 1

IA&DT Service & Support Page 12-24

其中创建发送数据块DB1结构如图10所示:

图10 发送DB块源区域结构

创建的发送数据块DB1,至少要有6个字节的长度,后面根据功能码的不同,所需长度不同,建议发送数据块创建的长度长一些。以上图为例6个字节Address为所通讯对象的Modbus地址为1,code为功能码FC03,所读对象寄存器的起始地址为0,所读寄存器的数量为4,其中一个寄存器为两个字节。

此处有几个注意事项:

1) R_TYP必须为大写的‘X’,

为小写"x"时,CP341 作为Modbus master时,调用FB8的状态字显示为 "0E4F" 错误。注意R_TYP必须为大写。且对于R_TYP可以写的值如下:

’D’ DB 区

’X’ DX 区,extended data block

’E’ I 区

’A’ Q 区

’M’ M 区

’T’ T 区

’C’ C 区

2) LEN的长度要根据通信所需功能码来针对填写,

如下表所示

IA&DT Service & Support Page 13-24

表 2

LEN的长度与功能码的对应。

“P_RCV_RK”FB7用于接收通信数据。编程如图11所示:

图 11 “P_RCV_RK”FB7

FB7参数说明表格3

LADDR 硬件组态中的起始逻辑地址,本例中为272

DB_NO 接收数据块号,本例中为DB2

DBB_NO 接收数据的起始地址,本例中默认为0

IA&DT Service & Support Page 14-24

3.S7-200作Modbus从站的设置

S7-200作Modbus通信要用到自由口通信下的Modbus Slave库,对于此库的应用要注意的是

z Modbus Slave库仅支持Modbus RTU通信模式,不支持ASCII 通信模式。

z目前的Modbus Slave库仅支持通信口Port0。

z使用Modbus Slave库时一定要注意对库分配内存区空间。否则编译后出现很多错误。

如图12所示:

图12 调用的库要分配系统内存地址区

编程时使用SM0.1调用子程序MBUS_INIT进行初始化,使用SM0.0调用

MBUS_SLAVE,并指定相应参数。关于参数的详细说明,可在子程序的局部变量表中找到。

图13为S7-200实现Modbus从站的程序。

IA&DT Service & Support Page 15-24

图13 调用Modbus RTU通信指令库

图中参数意义如下:

a. 模式选择:启动/停止Modbus,1=启动;0=停止

b. 从站地址:Modbus从站地址,取值1~247

c. 波特率:可选1200,2400,4800,9600,19200,38400,57600,115200

d. 奇偶校验:0=无校验;1=奇校验;2=偶校验

e. 延时:附加字符间延时,缺省值为0

f. 最大I/Q位:参与通信的最大I/O点数,S7-200的I/O映像区为128/128,缺省

值为128

g. 最大AI字数:参与通信的最大AI通道数,可为16或32

h. 最大保持寄存器区:参与通信的V存储区字(VW)

i. 保持寄存器区起始地址:以&VBx指定(间接寻址方式)

j. 初始化完成标志:成功初始化后置1

k. 初始化错误代码

IA&DT Service & Support Page 16-24

l. Modbus执行:通信中时置1,无 Modbus 通信活动时为 0

m. 错误代码:0=无错误

从程序截图中可见,S7-200作为Modbus从站,从站地址为10,接收存储区为VB0开始。

4.通信测试

至此,CP341和S7-200双方的程序及物理连线已经做好。在调试S7-300时可通过

CP343-1以太网模块,以便可以用以太网通信调试速度快且方便。S7-200站选用224XP,其中Port0作为Modbus通信口,Port1用于与笔记本的CP5512通信。

在进行通信测试前还要明确Modbus通信的功能码。

下表为Micro 'n Power中S7-200作为Modbus RTU从站通信功能码。

表 4 S7-200作为Modbus RTU从站通信功能码

以下测试为现场应用中经常用到的功能码FC01、02、03、06、16

4.1 FC01主站读取从站多个DO点状态

FC01功能下,“P_SND_RK”FB8的LEN为6,DB1的头两个字节分别是所要读取从站的地址10号站(16#A),和功能码01,如表5所示。图14为S7-200的QB0的4个位被传送到DB2的接收区。其中Reg_num位数为1-2040。

地址 名称 类型 值 注释

0.0 Slave_address BYTE B#16#0A 从站地址

1.0 Function_code BYTE B#16#01 功能代码

2.0 Reg_startAdr WORD W#16#0 位起始地址

4.0 Reg_num WORD W#16#4 位数

IA&DT Service & Support Page 17-24

表 5 FC01 的SEND 源区域结构

图14 FC01的数据交换

4.2 FC02主站读取从站多个DI点状态

FC02功能下,“P_SND_RK”FB8的LEN为6,DB1的头两个字节分别是所要读取从站的地址10号站(16#A),和功能码02,如表6所示。图15为S7-200的I0.0-I0.3的四个位被传送到DB2的接收区。其中Reg_num位数为1-2040。

地址 名称 类型 值 注释

0.0 Slave_address BYTE B#16#0A 从站地址

1.0 Function_code BYTE B#16#02 功能代码

2.0 Reg_startAdr WORD W#16#0 位起始地址

4.0 Reg_num WORD W#16#4 位数

表 6 FC02 的SEND 源区域结构

IA&DT Service & Support Page 18-24

图15 FC02的数据交换

4.3 FC03主站读取从站多个内部寄存器状态

FC03功能下,“P_SND_RK”FB8的LEN为6,DB1的头两个字节分别是所要读取从站的地址10号站(16#A),和功能码03,如表7所示。图16为S7-200的V区3个寄存器传送到DB2的接收区。注意在一次请求中可以读取最多 127 个寄存器(每个寄存器2个字节)的数据。

地址 名称 类型 值 注释

0.0 Slave_address BYTE B#16#0A 从站地址

1.0 Function_code BYTE B#16#03 功能代码

2.0 Reg_startAdr WORD W#16#0 寄存器起始地址

4.0 Reg_num WORD W#16#3 寄存器数

表 7 FC03 的SEND 源区域结构

IA&DT Service & Support Page 19-24

图16 FC03 的数据交换

4.4 FC06主站写单字到从站内部寄存器

FC06功能下,“P_SND_RK”FB8的LEN为6,DB1的头两个字节分别是所要读取从站的地址10号站(16#A),和功能码06,如表8所示。图17为DB1.DBW4传送到从站VW0的接收区。

地址 名称 类型 值 注释

0.0 Slave_address BYTE B#16#0A 从站地址

1.0 Function_code BYTE B#16#06 功能代码

2.0 Reg_startAdr WORD W#16#0 寄存器地址

4.0 Reg_num WORD W#16#1234 寄存器值

表 8 FC06 的SEND 源区域结构

IA&DT Service & Support Page 20-24

西门子指令解释

置位/复位指令根据RLO的值,来决定被寻址位的信号状态是否需要改变。若RLO的值为1,被寻址位的信号状态被置1或清0;若RLO是0,则被寻址位的信号保持原状态不变。对于置位操作,一旦RLO为1,则被寻址信号(输出信号)状态置1,即使RLO又变为0,输出仍保持为1;对于复位操作,一旦RLO为1,则被寻址信号(输出信号)状态置0,即使RLO又变为0,输出仍保持为0。 语句表STL表示的置位/复位指令 ●R Reset 复位指令 ●S Set 置位指令 梯形图LAD表示的置位/复位指令 ●---( S ) Set Coil 线圈置位指令 ●---( R ) Reset Coil 线圈复位指令 ●SR Set-Reset Flip Flop 复位优先型SR双稳态触发器指令 ●RS Reset-Set Flip Flop 置位优先型RS双稳态触发器指令 位逻辑指令的运算结果用两个二进制数字1和0来表示。可以对布尔操作数(BOOL)的信号状态扫描并完成逻辑操作。逻辑操作结果称为RLO(result of logic operation)。 语句表STL表示的基本位逻辑指令 ● A And 逻辑“与” ●AN And Not 逻辑“与非” ●O Or 逻辑“或” ●ON Or Not 逻辑“或非”

●X Exclusive Or 逻辑“异或” ●XN Exclusive Or Not 逻辑“异或非” ●= Assign 赋值指令 ●NOT Negate RLO RLO取反 ●SET Set RLO (=1) RLO=1 ●CLR Clear RLO (=0) RLO=0 ●SAVE Save RLO in BR Register 将RLO的状态保存到BR。边沿信号识别指令。 位逻辑指令的运算规则:“先与后或”。 可以用括号将需先运算的部分括起来,运算规则为: “先括号内,后括号外”。 梯形图LAD表示的基本位逻辑指令 ●---| |--- Normally Open Contact (Address) 常开触点 ●---|/|--- Normally Closed Contact (Address) 常闭触点 ●---(SAVE) Save RLO into BR Memory 将RLO的状态保存到BR ●XOR Bit Exclusive OR 逻辑“异或”

西门子S7200与VLT2800 Modbus RTU通讯调试说明

Modbus Modbus , Modbus Modbus Modbus 1 Modbus Modbus RS-232C Modem Modbus Modbus 2 Modbus 3 1 03 2 ASCII RTU Modbus Modbus ASCII : 1 ... n LRC LRC RTU

1 ... n CRC CRC ASCII RTU Modbus MAP Modbus Plus Modbus 1 ASCII Modbus ASCII 8Bit ASCII 1 ASCII 0...9 A...F ASCII 1 7 1 1 2 Bit LRC( ) 2 RTU Modbus RTU 8Bit 4Bit ASCII 8 0...9 A...F 8 1 8 1 1 2 Bit CRC( ) Modbus ASCII RTU Modbus RTU 3.5 0...9,A...F 3.5

1.5 3.5 CRC CRC T1-T2-T3-T4 8Bit 8Bit n 8Bit 16Bit T1-T2-T3-T4 1 ASCII 8Bit RTU 0...247 ( ) 1 (247) 0 Modbus 2 ASCII 8Bits RTU 1 (255) ( ) 1 0 0 0 0 0 0 1 1 03H 1 0 0 0 0 0 1 1 83H 3 00...FF ASCII RTU 03 10 0 0B 4 Modbus ASCII ASCII ASCII LRC LRC RTU

RTU 16Bits ( 8 ) CRC CRC Modbus LRC CRC RTU CRC CRC CRC 16 CRC CRC CRC 1 16 8 8Bit CRC CRC 8 OR 0 LSB LSB 1 LSB 0 8 8 8 CRC CRC 1.2004 6 15 VLT6000 2.6X VLT2800 2.8X Modbus RTU 175Z3362 Modbus RTU VLT6000 VLT2800 Modbus RTU RS485 +/- 68/69 LCP 5XX 9600Baud, 19200Baud. 2.DANFOSS ANFOSS ANFOSS SIMATIC S7-200 PLC S7-200 PLC FreeportMode DANFOSS DANFOSS VLT2800 MODBUS RTU .S7

modbus_通讯协议_实例

上海安标电子有限公司 ——PC39A接地电阻仪通信协议 通信协议: 波特率:9600数据位:8校验位:无停止位:1 上位机(计算机): 字节号 1 2 3 4 5 6 7 8 意义ID Command 数据地址V alue CRC 注:1 ID:1个字节,由单机来定(0~255) 2 Command:1个字节,读:3或4,写:6 3 数据地址:2个字节,寄存器地址,读从100开始,写从200开始 4 V alue:2个字节,读:个数(以整型为单位),写:命令/ 数据(以整型为单位) 5 CRC:计算出CRC 下位机(PC39A): 读数据,若正确 字节号 1 2 3 3+N (N=个数*2) 3+N+1 3+N+2 意义ID Command=3 / 4 数据个数数据CRC 注:1 ID:1个字节,由单机来定(0~255) 2 Command:1个字节,收到的上位机命令 3数据个数:1个字节,返回数据个数(以字节为单位) 4 V alue:N个字节,是返回上位机的数据 5 CRC:计算出CRC 写命令,若正确 返回收到的数据: 若错误 字节号 1 2 3 4 5 意义ID Command 数据CRC 注:1 ID:1个字节,由单机来定(0~255) 2 Command:1个字节,收到的上位机命令或上0x80, 如收到3,返回0x83 3数据:1个字节,错误的指令 错误指令 1:表示command不存在 2:表示数据地址超限 4 CRC:计算出CRC

例如读PC39A 电流数据: 机器地址为12,电流的数据地址100,数据为15.45(A) (一个整型数据) 主机: ID Command 数据地址 V alue CRC 16进制 0x0c 0x03 0x0064 0x0001 CRC_H CRC_L 10进制 12 3 100 1 CRC_H CRC_L 从机返回 如正确: ID Command 数据个数(以字节为单位) V alue CRC 16进制 0x0c 0x03 0x002 0x0609 CRC_H CRC_L 10进制 12 3 2 1545 CRC_H CRC_L 如错误: ID Command 数据 CRC 16进制 0x0c 0x83 0x02 CRC_H CRC_L 10进制 12 131 2 CRC_H CRC_L 例如发PC39A 启动命令: 机器地址为12,命令的地址200,数据为25000(25000表示启动) 主机: ID Command 数据地址 V alue CRC 16进制 0x0c 0x06 0x00c8 0x61a8 CRC_H CRC_L 10进制 12 6 200 25000 CRC_H CRC_L 从机返回 如正确: ID Command 数据地址 V alue CRC 16进制 0x0c 0x06 0x00c8 0x61a8 CRC_H CRC_L 10进制 12 6 200 25000 CRC_H CRC_L 如错误: ID Command 数据 CRC 16进制 0x0c 0x86 0x02 CRC_H CRC_L 10进制 12 134 2 CRC_H CRC_L 0011 10000110 错误码0x83 功能码0x06错误码0x86

Modbus RTU相关常识和通信示例

Modbus RTU –基本功能 1 关于ModBus ModBus网络是一个工业通信系统,由带智能终端的可编程序控制器和计算机通过公用线路或局部专用线路连接而成。其系统结构既包括硬件、亦包括软件。它可应用于各种数据采集和过程监控。 1.1 报文结构 以串行数据传输为基础,通过一位接着一位进行传送。 1.2协议数据单元(PDU) 1.2.1 Modbus PDU(协议数据单元)由功能码和实际数据两部分组成。 1.2.2 Modbus 串行通讯的消息帧 站号(站地址) 站号字段为1字节长,可能选择0~247站点。 选择0 地址表示选择所有的子机站,代表广播消息的意思。 FC(RTU功能代码) FC字段为1字节长,用以下所示的0~255的值进行定义。带有网格部分表示使用的FC。请不要使用未使用的FC。否则会成为异常应答。常用ModBus的功能码FC定义如下: 01 READ COIL STATUS 01 读取线圈状态 02 READ INPUT STATUS 02 读取离散量输入。 03 READ HOLDING REGISTER 03 读取保持寄存器。 04 READ INPUT REGISTER 04 读取输入寄存器。 05 WRITE SINGLE COIL 05 强置单线圈。 06 WRITE SINGLE REGISTER 06 预置单寄存器 15 WRITE MULTIPLE COIL 07 15 强置多线圈。 16 WRITE MULTIPLE REGISTER 16 预置多寄存器 数据区 数据字段包含所有的信息(功能代码(地址)、字节计数、数据数、数据等)。有关各消息类型(广播、查询、正常应答、异常应答) 的信息字段的详细情况; CRC校验

几种通信总线详尽总结

微处理器中常用的集成串行总线是通用异步 接收器传输总线(UART)、串行通信接口(SCI) 和通用串行总线(USB)等,这些总线在速度、 物理接口要求和通信方法学上都有所不同。本文详细介绍了嵌入式系统设计的串行总线、驱动器和物理接口的特性,并为总线最优选择提供性能比较和选择建议。 由于在消费类电子产品、计算机外设、汽车和工业应用中增加了嵌入式功能,对低成本、高速和高可靠通信介质的要求也不断增长以满足这些应用,其结果是越来越多的处理器和控制器用不同类型的总线集成在一起,实现与PC软件、开发系统(如仿真器)或网络中的其它设备进行通信。目前流行的通信一般采用串行或并行模式,而串行模式应用更广泛。 微处理器中常用的集成串行总线是通用异步接收器传输总线、串行通信接口、同步外设接口(SPI)、内部集成电路(I2C) 和通用串行总线,以及车用串行总线,包括控制器区域网(CAN)和本地互连网(LIN)。这些总线在速度、物理接口要求和通信方法学上都有所不同。本文将对嵌入式系统设计的串行总线、驱动器和物理接口这些要求提供一个总体介绍,为选择最优总线提供指导并给出一个比较图表(表1)。为了说明方便起见,本文的阐述是基于微处理器的设计。 串行与并行相比 串行相比于并行的主要优点是要求的线数较少。例如,用在汽车工业中的LIN 串行总线只需要一根线来与从属器件进行通信,Dallas公司的1-Wire总线只使用一根线来输送信号和电源。较少的线意味着所需要的控制器引脚较少。集成在一个微控制器中的并行总线一般需要8条或更多的线,线数的多少取决于设计中地址和数据的宽度,所以集成一个并行总线的芯片至少需要8个引脚来与外部器件接口,这增加了芯片的总体尺寸。相反地,使用串行总线可以将同样的芯片集成在一个较小的封装中。 另外,在PCB板设计中并行总线需要更多的线来与其它外设接口,使PCB板面积更大、更复杂,从而增加了硬件成本。此外,工程师还可以很容易地将一个新器件加到一个串行网络中去,而且不会影响网络中的其它器件。例如,可以很容易地去掉总线上旧器件并用新的来替代。

Modbus RTU通讯协议

要实现Modbus RTU通信, 一、需要STEP 7-Micro/WIN32 V3.2以上版本的编程软件,而且须安装STEP 7-Micro/WIN32 V3.2 Instruction Library(指令库)。Modbus RTU功能是通过指令库中预先编好的程序功能块实现的。 Modbus RTU从站指令库只支持CPU上的通信0口(Port0) 基本步骤: 1. 检查Micro/WIN的软件版本,应当是STEP 7-Micro/WIN V3.2以上版本。 2. 检查Micro/WIN的指令树中是否存在Modbus RTU从站指令库(图1),库中应当 包括MBUS_INIT和MBUS_SLAVE两个子程序。 如果没有,须安装Micro/WIN32 V3.2的Instruction Library(指令库)软件包; 1. 西门子编程时使用SM0.1调用子程序MBUS_INIT进行初始化,使用SM0.0调用 MBUS_SLAVE,并指定相应参数。 关于参数的详细说明,可在子程序的局部变量表中找到; 调用Modbus RTU通信指令库图中参数意义如下: a. 模式选择:启动/停止Modbus,1=启动;0=停止 b. 从站地址:Modbus从站地址,取值1~247 c. 波特率:可选1200,2400,4800,9600,19200,38400,57600,115200 d. 奇偶校验:0=无校验;1=奇校验;2=偶校验 e. 延时:附加字符间延时,缺省值为0 f. 最大I/Q位:参与通信的最大I/O点数,S7-200的I/O映像区为128/128, 缺省值为128 g. 最大AI字数:参与通信的最大AI通道数,可为16或32 h. 最大保持寄存器区:参与通信的V存储区字(VW) i. 保持寄存器区起始地址:以&VBx指定(间接寻址方式) j. 初始化完成标志:成功初始化后置1

基于Modbus协议实现单片机与PLC之间的通讯

基于Modbus协议实现单片机与PLC之间的通讯 来源:PLC&FA 作者:蔡晓燕赵兴群万遂人董鹏云 关键词:可编程控制器 Modbus 通讯协议 1 引言 HMI(人机界面)以其体积小,高性能,强实时等特点,越来越多的应用于工业自动化系统和设备中。它有字母、汉字、图形和图片等不同的显示,界面简单友好。配有长寿命的薄膜按钮键盘,操作简单。它一般采用具有集成度高、速度快、高可靠且价格低等优点的单片机[1]作为其核心控制器,以实现实时快速处理。PLC和单片机结合不仅可以提PLC的数据处理能力,还可以给用户带来友好简洁的界面。本文以Modbus通讯协议为例,详细讨论了一个人机系统中,如何用C51实现单片机和PLC之间通讯的实例。 2 Modbus通讯协议[4] Modbus协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络和其它设备之间可以通信。 Modbus协议提供了主—从原则,即仅一设备(主设备)能初始化传输(查询)。其它设备(从设备)根据主设备查询提供的数据作出相应反应。主设备查询的格式:设备地址(或广播,此时不需要回应)、功能代码、所有要发送的数据、和一错误检测域。从设备回应消息包括确认地址、功能码、任何要返回的数据、和一错误检测域。如果在消息接收过程中发生一错误,或从设备不能执行其命令,从设备将建立一错误消息并把它作为回应发送出去。 控制器能设置为两种传输模式:ASCII和RTU,在同样的波特率下,RTU可比ASCII方式传送更多的数据,所以采用KTU模式。 (1) 典型的RTU消息帧 典型的RTU消息帧如表1所示。

RTU消息帧的地址域包含8bit。可能的从设备地址是0...127(十进制)。其中地址0是用作广播地址,以使所有的从设备都能认识。主设备通过将要联络的从设备的地址放入消息中的地址域来选通从设备。当从设备发送回应消息时,它把自己的地址放入回应的地址域中,以便主设备知道是哪一个设备作出回应。 RTU消息帧中的功能代码域包含了8bits,当消息从主设备发往从设备时,功能代码域将告之从设备需要执行哪些行为;当从设备回应时,它使用功能代码域来指示是正常回应(无误)还是有某种错误发生(称作异议回应,一般是将功能码的最高位由0改为1)。 从主设备发给从设备消息的数据域包含附加的信息:从设备必须用于进行执行由功能代 码所定义的行为。这包括了像不连续的寄存器地址,要处理项的数目,域中实际数据字节数。如果没有错误发生,从从设备返回的数据域包含请求的数据。如果有错误发生,此域包含一异议代码,主设备应用程序可以用来判断采取下一步行动。 当选用RTU模式作字符帧时,错误检测域包含一16Bits值(用两个8位的字符来实现)。错误检测域的内容是通过对消息内容进行循环冗长检测(CRC)方法得出的。CRC域附加在消息的最后,添加时先是低字节然后是高字节。 (2) 所有的Modbus功能码 Modbus的功能码定义如表2所示。

用西门子CP341实现Modbus RTU通讯

用西门子CP341实现Modbus RTU通讯 1 概述 CP341模块是西门子S7—3001400系列PLC中的串行通讯模块。该模块具有1个串行通讯口(RS232C或 TTY或RS485/422),RS422/485的通讯最大距离位1200m。支持以下协议ASCII,ModbusRTU远程终端,Data Highway(DF1协议),电气接口为15针D型孔接 4 CP341驱动配置 在您的计算机上首先安装STEP7 5.x软件和CP34x模板所带的软件驱动程序.模板驱动程序包括了对CP341进行参数化的窗口(在STEP7的硬件 组态界面下可以打开)、用于串行通讯的FB程序块。当系统上电,CP34x模板初始化完成后,CP34x上的sF灯点亮: 在硬件组态窗口中双击CP341模板,打开CP341模板的属性窗口,选择通讯协议modbus,网络工作方式设置为半双工,请记录下模板的硬件地址 以便在编程序时用到。双击CP341模板属性窗口中的protocol 协议图标进行协议参数设置,这里我们使用默认值:96oo bit,s, 8 data bits, 1 stop bit,even parity。对的硬件组态存盘编译,下载硬件组态.如果此时sF灯亮.请将通讯电缆与另一个通讯伙伴进行连接后.SF灯熄灭,说明硬件组态正确。 5 程序编写 (1)CP341发送模块的设计而发送程序主要是通过调用功能块FB8来实现,FB8 是基于上升沿触发工作的.来一个上升沿FB8工作一次向总线上发 送一个请求数据包,所以在程序中一定要设计一个触发代码段,来不断的使REQ:=M50.0循环往复的置“1”置“0”,这样FB8就可以正常运行了。 在设计程序时一定要注意FB8的参数SF:=‘S’及R_TYP:=‘X’的值都是大写否则程序调试不成功。FB8需要一个背景数据块.这一背景数据块一般由系统自动生成.以上程序中为DB3;对于通过CP34 1的Modbus Master驱动通讯的发送模块需要设计发送数据块DB块.用来对主站发送参数进行设置和初始化。 Modbus能够实现的功能代码共有10个.分别针对不同的寄存器读写功能设置.功能代码Initial value:B#16#4的功能是读从站的输出数据寄存器 整数型、状态字或浮点型数据:寄存器的起始地址Initial value:W#16#0是功能代码规定的寄存器的起始地址;读取寄存器的数目Initial value:4的意义是从起始地址开始总共读取4个寄存器。 (2)CP341接收程序的设计 接收程序是调用FB7来实现的,由于CP341可以处理接收程序的细节部分.因此对于设计者来说只需要进行简单的设计就可以实现数据的接收。接 收程序同样也需要设计背景数据块本例中为Db44块和接收数据块本例中为DB5块。 (3)装载设计好的发送接收程序FC 1与FC2。 6 参数化远程从站RTU . 以上介绍的是Modbus主站的应用与程序设计,没有对远程终端RTU从站进行介绍.其实在进行程序调试时必须对从站进行一些参数设置使其参 数与主站要求的一致,包括协议类型、从站地址、寄偶校验、传输超时等,否则

用VB实现Modbus RTU串行通讯工程实例

用VB实现Modbus RTU串行通讯工程实例 声明:网上看到的,觉得不错,稍微整理了一下分享给大家。 用VB实现Modbus RTU串行通讯 在一些应用中可能需要使用诸如VB来进行上位机监控程序的开发,而Modbus 协议是这类应用中首选的通讯协议;Modbus协议以其简单易用,在工业领域里已广泛的为其他第三方设备所支持。这里对VB和Twido PLC间的通讯进行说明。 对于大部分应用,Twido PLC作为从站,它不需要编制通讯程序,只要把通讯口的参数设置好即可,例如下图表示此Twido通过编程口和上位机连接,其站号地址为2;波特率、数据位、校验、停止位和上位机设置保持一致。 VB程序通过利用MSComm控件很容易就能够实现。 1.通讯口初始化: MSComm1.Settings = "9600,n,8,1" https://www.360docs.net/doc/bd18141392.html,mPort = 1 MSComm1.SThreshold = 0 If Not MSComm1.PortOpen Then MSComm1.PortOpen = True 2. CRC校验码的计算方法,如以下函数,可以得到字节数组变量cmdstring指向的字符串的CRC校验码。 Function crc16_1(ByRef cmdstring() As Byte, ByVal j As Integer) Dim data As Integer Dim i As Integer Addressreg_crc = &HFFFF For i = 0 To j Addressreg_crc = Addressreg_crc Xor cmdstring(i) For j = 0 To 7 data = Addressreg_crc And &H1

(完整版)MODBUS通讯协议-RTU要点

Modbus 通讯协议 (RTU传输模式)本说明仅做内部参考,详细请参阅英文版本。

第一章Modbus协议简介 Modbus 协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。 此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备的过程,如果回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。 当在一Modbus网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成反馈信息并用Modbus协议发出。在其它网络上,包含了Modbus协议的消息转换为在此网络上使用的帧或包结构。这种转换也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法。 协议在一根通讯线上使用应答式连接(半双工),这意味着在一根单独的通讯线上信号沿着相反的两个方向传输。首先,主计算机的信号寻址到一台唯一的终端设备(从机),然后,在相反的方向上终端设备发出的应答信号传输给主机。协议只允许在主计算机和终端设备之间,而不允许独立的设备之间的数据交换,这就不会在使它们初始化时占据通讯线路,而仅限于响应到达本机的查询信号。 1.1 传输方式 传输方式是一个信息帧内一系列独立的数据结构以及用于传输数据的有限规则,以RTU 模式在Modbus总线上进行通讯时,信息中的每8位字节分成2个4位16进制的字符,每个信息必须连续传输下面定义了与Modebus 协议– RTU方式相兼容的传输方式。 代码系统 ?8位二进制,十六进制数0...9,A...F ?消息中的每个8位域都是一个两个十六进制字符组成 每个字节的位 ?1个起始位 ?8个数据位,最小的有效位先发送 ?1个奇偶校验位,无校验则无 ?1个停止位(有校验时),2个Bit(无校验时) 错误检测域 ?CRC(循环冗长检测)

PLC的MODBUS通信实例

PLC的MODBUS通信实例 随着工业时代的发展,工业自动化控制已进入网络时代,工业控制器连网也为网络管理提供了方便。MODBUS通信就是工业控制器的网络协议中的一种。 关键词:MOBUS通信协议,RS485,奥越信CPU,程序设计 一、MODBUS 简介 MODBUS是由Modicon(现为施耐德电气公司的一个品牌)在1979年发明的,是全球第一个真正用于工业现场的总线协议。当现代的控制领域持续不断的产生和应用诸如现场总线和网状网络等先进概念的时候,MODBUS的简单性以及它的便于在许多通讯媒介上实施 应用的特点一直使它受到最广泛的支持,并且成为全球应用最广泛的工业协议。通过此协议,控制器经由网络(例如以太网)和其它设备之间可以通信,此协议支持传统的RS-232、RS-422、RS-485和以太网设备。许多工业设备,包括PLC、DCS、变频器、智能仪表等都 在使用MODBUS协议作为他们之间的通讯标准,它可应用于各种数据采集和过程监控。 二、MODBUS协议库 1、使用MOBUS协议的部分要求 A、初始化MODBUS从站协议占用PortO作为MODBUS从站协议通信,MODBUS从站协议只支持端口0通信,所以选择奥越信的双通信的CPU,可以把Port1作为编程通信口,以便于调试;如果只有单通信口的话,可把CPU打到STOP模式在编程。 B、MODBUS从站协议指令的变量要求799字节的V区域,该区域的起始地址由用户指定,保留给MODBUS使用,程序中不可以使用库存储区占用的地址。 C、可参照S7-200编程手册中了解MODBUS指令的设置与编写。 2、MODBUS协议允许在各种网络体系结构内进行简单通信。如图所示:

西门子Port1接口定义

西门子的编程口都是口的。你用的接线方法做线肯定要失败。 图上的是的线,你还需要一个转的东西,可以参考德阳四星的转换器。 另外就是一根标准的线(自己做)。 此文原创为工控网“老菜鸟”希望吃水不忘打井人在工控上看到他记得 表示感谢。备注我不是老菜鸟。........下面先简单了解一下支持的通信 协议........比较详细的介绍请参阅《可编程控制器系统手册》第章通过 网络进行通信。........下面仅简单说明一下部分通信协议协议........该协议是西门子内部协议不公开。点对点接口是一个主从协议。主站向 从站发送申请从站进行响应从站器件不发信息不初始化信息只是等待 主站的要求并对要求作出响应。但当主站发出申请或查询时从站对其响应。主站可以是其他主机如等、编程器或文本显示器。网络中的所有都 默认为从站。系列中一些如果在程序中允许主站模式则在模式下可以作 为主站此时可以利用相关的通信指令来读写其他主机同时它还可以作 为从站来响应其他主站的申请或查询。........主站靠一个协议管理的共

享连接来与从站通讯。并不限制与任意一个从站通讯的主站数量但是在 一个网络中主站的个数不能超过。如果在用户程序中使能主站模式在运行模式下可以作主站。在使能主站模式之后可以使用网络读写指令来 读写另外一个。当作主站时它仍然可以作为从站响应其它主站的请求。 高级允许网络设备建立一个设备与设备之间的逻辑连接。对于高级每个设备的连接个数是有限制的。所有的都支持和高级协议而模块仅仅支持高级协议。协议是专门为开发的通信协议。的通信口、支持通信协议的一些通信模块也支持协议。与进行编程通信也通过协议。的网络通信是建立在网络的硬件基础上因此其连接属性和需要的网络硬件设 备是与其他网络一致的。之间的网络通信只需要两条简单的指令它们 是网络读和网络写指令。在网络读写通信中只有主站需要调用指令从站 只需编程处理数据缓冲区取用或准备数据。网络上的所有站点都应当有各自不同的网络地址。否则通信不会正常进行。........可以用两种方法编程实现网络读写通信.使用指令编程实现.使用中的指令向导中的向导。........使用通讯方式这是的专用通讯方式使用对中继器可以最远达到。支持的波特率有三种。这种方式是最容易实现的通讯只要编程设 置主站通讯端口的工作模式然后就可以用网络读写指令读写从站数据。 协议........该协议是西门子内部协议不公开。是多点通信的接口是一种适用于少数站点间通信的网络多用于连接上位机和少量之间近距离 通信。通过电缆和接头将控制器或的自带的编程口及自带的通信口相互 连接以及与上位机网卡的编程口口通过或电缆连接即可实现。网络中当然也可以不包括机而只包括。允许主主通讯和主从通讯。每个通信口

西门子S7200与变频器MODBUS通讯实例详解

西门子S7200与变频器MODBUS通讯实例详解 西门子S7200PLC简介 西门子S7-200PLC在实时模式下具有速度快,具有通讯功能和较高的生产力的特点。一致的模块化设计促进了低性能定制产品的创造和可扩展性的解决方案。来自西门子的S7 - 200微型PLC可以被当作独立的微型PLC解决方案或与其他控制器相结合使用。 Modbus通讯协议简介 Modbus是由Modicon(现为施耐德电气公司的一个品牌)在1979年发明的,是全球第一个真正用于工业现场的总线协议。 ModBus网络是一个工业通信系统,由带智能终端的可编程序控制器和计算机通过公用线路或局部专用线路连接而成。其系统结构既包括硬件、亦包括软件。它可应用于各种数据采集和过程监控。 ModBus网络只有一个主机,所有通信都由他发出。网络可支持247个之多的远程从属控制器,但实际所支持的从机数要由所用通信设备决定。采用这个系统,各PC可以和中心主机交换信息而不影响各PC执行本身的控制任务。 1 MODBUS RTU协议在S7-200中的应用原理 1.1 MODBUS RTU协议与S7-200相互关系简介 S7-200 CPU上的通讯口Port0可以支持MODBUS RTU协议,成为MODBUS RTU从站。此功能是通过S7-200的自由口通讯模式实现,因此可以通过无线数据电台等慢速通讯设备传输。 想在S7-200 CPU与其他支持MODBUS RTU的设备使用MODBUS RTU协议通讯,需要由有S7-200 CPU做MODBUS主站。S7-200 CPU做主站必须由用户自己用自由口模式,按相关协议编程。 2 从站指令的用法: S7-200控制系统应用中,MODBUS RTU从站指令库只支持CPU上的通讯0口(Port0)。要

很好的威纶通MODBUSRTU通讯协议与变频器通讯案例

很好的威纶通 M O D B U S R T U通讯协议与变频器通讯案例 公司标准化编码 [QQX96QT-XQQB89Q8-NQQJ6Q8-MQM9N]

本文研究的是触摸屏通过MODBUS RTU通讯协议与变频器通讯实现变频器的控制。触摸屏采用威纶通TK6070IP,变频器用汇川MD380通用系列。通过触摸屏编程软件,编辑控制画面实现变频器的启动、停止、速度调节、多段速速度设置,通过宏指令实现工程值与实际值的转换。 一、MODBUS RTU 简介: 为了在自动化系统之间、自动化系统和所连接的分散的现场设备之间进行信息交换,如今串行现场总线被主要用作通讯系统。成千上万的应用已经强烈地证明了通过使用现场总线技术,可以节省多至40%的接线、调试及维护的费用。仅仅使用两根电线就可以传送现场设备的所有相关信息,比如输入和输出数据、参数、诊断数据。过去使用的现场总线往往是制造商的特定现场总线,并且同其它现场总线不兼容。如今使用的现场总线几乎是完全公开和标准化的。这就意味者用户可以以最合理的价格选择最好的产品,而不用依赖于每个独立的制造商。Modbus RTU是一种国际的、开放的现场总线标准。作为一种很容易实现的现场总线协议,在全世界范围内,Modbus得到了成功的应用。应用领域包括生产过程中的自动化、过程控制和楼宇自控。MODBUS RTU通讯协议的报文如图1。 图1 MODBUS RTU 通讯协议的报文功能码如下: 01H 读取线圈状态。从执行机构上读取线圈(单个位)的内容; 02H 读取离散量输入。从执行机构上读取离散量输入(多个位)的内容; 03H 读取保持寄存器。从执行机构上读取保持寄存器(16位字)的内容; 04H 读取输入寄存器。从执行机构上读取输入寄存器(16位字)的内容; 05H 强置单线圈。写数据到执行机构的线圈(单个位)为“通”(“1”)或“断”(“0”); 06H 预置单寄存器。写数据到执行机构的单个保持寄存器(16位字); 0FH 强置多线圈。写数据到执行机构的几个连续线圈(单个位)为“通”(“1”) 或“断”(“0”); 10H 预置多寄存器。写数据到执行机构的几个连续的保持寄存器(16位字)。 二、威纶通编程软件介绍: EB8000软件中MODBUS协议的设备类型为0x、1x、3x、4x、5x、6x,还有 3x_bit,4x_bit,6x_bit,0x_multi_coils等,下面分别说明这些设备类型在MODBUS协议中支持哪些功能码。 0x:是一个可读可写的设备类型,相当于操作PLC的输出点。该设备类型读取位状态的时候,发出的功能码是01H,写位状态的时候发出的功能码是05H。写多个寄存器时发出的功能码是0fH。

西门子总线连接器

1、DP总线连接器是PROFIBUS DP协议中主站和从站电缆之间的RS485通用接口器件,主要应用于制造业自动化系统中单元级和现场级通信,在PLC通讯口与Profibus电缆之间以轮循通讯的方式传输数据,能够以12 M比特率的传输速率进行信号传输,并带有内置的终端匹配电阻。 2、连接器的设计充分考虑到了电缆进线角度及缓解拉紧的问题,内置的接地金属片有效地防止了共模干扰,并具有较强的电磁兼容性能。

3、使用方便,直接将总线电缆接入DP总线连接器并将连接器插口插入Profibus主/从站的接口、用螺丝钉固定即可。 4、适用性强,有带编程口的OBB型和不带编程口的0BA型2种类型:电缆接入形式有垂直接入式和35°角接入式,可以方便地应用于不同场合。 6ES7 972-0BA12-0XA0 PROFIBUS总线连接器最大12 Mbit/s,90度出线,带有隔离功能的终端电阻,无编程器接口。 6ES7 972-0BB12-0XA0 PROFIBUS总线连接器最大12 Mbit/s,90度出线,带有隔离功能的终端电阻,有编程器接口。 6ES7 972-0BA41-0XA0 PROFIBUS总线连接器最大12 Mbit/s,35度出线,带有隔离功能的终端电阻,无编程器接口。 6ES7 972-0BB41-0XA0 PROFIBUS总线连接器最大12 Mbit/s,35度出线,带有隔离功能的终端电阻,有编程器接口。 6ES7 972-0BA50-0XA0 PROFIBUS总线连接器最大12 Mbit/s,90度出线,带有隔离功能的终端电阻,快速连接,无编程器接口。 6ES7 972-0BB50-0XA0 PROFIBUS总线连接器最大12 Mbit/s,90度出线,带有隔离功能的终端电阻,快速连接,有编程器接口。

modbus协议下上位机编程实例

竭诚为您提供优质文档/双击可除modbus协议下上位机编程实例 篇一:modbus协议下的上位机地址 Rs485采取流量计数据,经串口com1的2号地址读到int ouch中来,双字40001、40002为浮点型瞬时流量,读到上位机项目为40001F双字40004、40005为长整型累计流量,读到上位机项目为40004l 驱动设置与intouch标记名的设置 驱动设置: 项目名设置 注:在不修改驱动设置的情况下,s=s1+s2*65535 s=s2+s1*65535 根据各个厂家的仪表,上面工式有区别,设计时各个测试一下。 篇二:modbus通讯协议实例 上海安标电子有限公司 ——pc39a接地电阻仪通信协议 通信协议:

波特率:9600数据位:8校验位:无停止位:1 上位机(计算机): 注:1id:1个字节,由单机来定(0~255) 2command:1个字节,读:3或4,写:6 3数据地址:2个字节,寄存器地址,读从100开始,写从200开始4Value:2个字节,读:个数(以整型为单位),写:命令/数据(以整型为单位)5cRc:计算出cRc下位机(pc39a ):注:1id:1个字节,由单机来定(0~255) 2command:1个字节,收到的上位机命令 3数据个数:1个字节,返回数据个数(以字节为单位)4Value:n个字节,是返回上位机的数据5cRc:计算出cRc 写命令,若正确返回收到的数据:若错误注:1id:1个字节,由单机来定(0~255) 2command:1个字节,收到的上位机命令或上0x80, 如收到3,返回0x83 3数据:1个字节,错误的指令错误指令 1:表示command不存在2:表示数据地址超限 4cRc:计算出cRc 例如读pc39a电流数据: 机器地址为12,电流的数据地址100,数据为15.45(a)(一个整型数据)

S7-200实现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. 硬件设置 2. 参数匹配 3. 指令库的存储地址 4. 保持寄存器值得传输 1. 硬件设置 例程中的Modbus通讯是在两个S7-200 CPU的0号通讯口间进行的(最好每个CPU 都有两个通讯口)。在主站侧也可以选择相应库文件 "MBUS_CTRL_P1" 和 "MBUS_MSG_P1"通过1号通讯口通信。通讯口1与Micro/WIN建立PG或PC连接,两个CPU的通讯口0通过PPI电缆进行连接(电缆的针脚连接为2,3,7,8)。

图. 01 2. 参数匹配 对于MODBUS通讯, 主站侧需要程序库 "MBUS_CTRL" 和 "MBUS_MSG", 从站侧需要程序库 "MBUS_INIT" and "MBUS_SLAVE"。 在 Micro/WIN 中您需要为主站和从站新建一个项目,程序与参数设置见图.02。 必须要保证主站与从站的“Baud”和"Parity"的参数设置要一致,并且程序块"MBUS_MSG"中的"Slave"地址要与程序块"MBUS_INIT"中的"Addr"所设置的一致 (见图. 02)。 Micro/WIN“系统块”中设置的0通讯口的波特率与MODBUS协议无关("Mode" = "1")。 图. 02 下面的表格列出了程序块各个参数选项及其意义 主站

西门子PLC通讯规则及BUS线故障查找

西门子PLC414的通讯规则 1、Prifibus通讯示意图,仅供培训参考用。 2、西门子PLC通讯规则: (1)若数据继续往下面模板传送,该块模板与下面的模板之间还有通讯,则该块模板BUS的ON/OFF开关必须拨到OFF的位 置,表示数据还要继续传送。 (2)只有在PLC通讯的首尾两块模板才需要把ON/OFF开关拨到ON位置,表示接上截至电阻,信号不再往下传送,通过截止 电阻构成回路。 (3)ET200从站是CPU与外挂输入/输出模板之间的中间处理单元,ET200上有地址位可以设置该块模板的通讯地址。 (4)主CPU414与从站之间的寻址是通过从站ET200设定的地址位来寻址。 (5)西门子PLC通讯规则,哪一根BUS线通讯有问题,则该BUS 线(往后传送)后面的PLC模板会出现BUS报警,前面通讯 正常的模板上不会BUS报警。 (6)当两个从站的地址相同时,地址相同的两块从站BUS线都会报警,但其它没有错误的从站BUS不报警。

(7)PLC一通电,就开始检查各个模板的地址是否正确,如地址不 对,则产生PLC通讯错误,BUS灯闪烁。如地址正确,这时再 把地址故意设置错误,PLC也不会报警,BUS灯不闪烁,当重新 启动PLC的CPU后,才会产生BUS线通讯报警。当PLC模板 地址错误时,设定完成新的地址后,必须关闭电源,重新开电, 重新启动PLC。否则,CPU将无法识别新的通讯地址,仍然会 有BUS线通讯报警。(在广州燕塘故障排除课程中已经验证) (8)注意:各个ET200从站的地址是从ET200发给PLC的 CPU 的,当重新设定ET200地址后,关闭CPU414的电源再启动后, ET200从站的地址仍然无法正确识别,BUS线仍然报警。但是在 设置完正确的ET200从站的地址,关闭ET200从站的电源再启 动后,CPU414能够正确识别ET200从站的地址,BUS线不再报 警。(在济南佳宝712机器上已经验证) 2、CPU414有两个通讯端口,MPI通讯端口与CPU412和PC计算机之间通 讯。 3、CPU414上的Prifibus通讯端口,是主CPU与A11、A12、A13、A1 4、 A15、A16、A17、A18(UHT)、A19(CIP)等从站之间的通讯。 二、PLC BUS线通讯故障。 (一)所有的从站BUS线BUS线都报警的原因 1、凡是Prifibus线通讯的首尾两端的从站(不再继续往下传送数据的从 站),BUS线插头应该拨到ON位置的,如果把BUS线插头拨到OFF 位置,这样截止电阻就未接到Prifibus通讯线上,Prifibus通讯线就构 不成回路,从而导致所有的ET200从站(包括UHT和CIP从站)和 CPU414主站上的BUS线都报警。(经过佳宝CF712_870751048灌装 机的实际检验,当把UHT、CIP、A21、A18(无菌风站)这四个从站 任意一个从站的BUS插头的ON/OFF开关由ON位置拨到OFF位置 时,所有的ET200从站和CPU414主站上的BUS线都报警)(在广州 杨协成和济南佳宝都已测试) 2、当BUS线在某一处断了(无论在何处断线),Prifibus通讯的两 根线就构不成回路,同样会导致所有的ET200从站(包括UHT和 CIP从站)和CPU414主站上的BUS线都报警。(在广州杨协成和 济南佳宝都已测试)

S7-200的MODBUS RTU主站协议库使用方法

S7-200 MODBUS-RTU VLT . MODBUS MODBUS CTROL MODBUS MGS CRC Micro/WIN V4.0 SP5 Modbus RTU

1. Micro/WIN V4.0 SP5 1. Modbus RTU Port 0 Port 1 2. Modbus RTU 3. Modbus RTU CPU CPU 2.00 2.01 6ES721* ***23-0BA* 1.22 1.22 S7-200 CPU Modbus RTU Modbus RTU I/O Modbus RTU 1. 2. Modubs RTU .Modbus RTU 1. Modbus RTU SM0.0 MBUS_CTRL 2. SM0.0 Modbus RTU : a. EN SM0.0 b. Mode 1 Modbus 0 PPI

c. Baud 1200 2400 4800 9600 19200 38400 57600 115200 d. Parity 1 2 e. Timeout 1000 1 1 - 32767 f. Done 1 MBUS_MSG g. Error Done 1 1 2 3 2. Modbus RTU MBUS_MSG Modbus 3. Modbus RTU : a. EN MBUS_MSG MBUS_MSG MBUS_MSG Done b. First c. Slave 1 - 247 d. RW 0 1 1. 2. e. Addr 00001 0xxxx - 10001 1xxxx -

相关文档
最新文档