西门子PLC,Profibus dp通讯主从设置方法
1. PROFIBUS 基本性质PROFIBUS规定了串行现场总线系统的技术和功能特性。通过这个系统,从底层(传感器、执行器级)到中层(单元级)的分布式、数字现场可编程控制器都可以连网。PROFIBUS区分为主站和从站。
> 主站 主站掌握总线中数据流的控制权。只要它拥有访问总线权(令牌),主站就可在没有外部请求的情况下发送信息。在PROFIBUS协议中,主站也被称作主动节点。
> 从站 从站是简单的输入、输出设备。典型的从站为传感器,执行器以及变频器。从站也可为智能从站,如S7300/400带集成口的CPU等。从站不 会拥有总线访问的授权。从站只能确认收到的信息或者在主站的请求下发送信息。从站也被称作被动节点。
> 传输方法 符合美国标准EIA RS485的闭合电路传输,是制造工程、建筑服务管理 系统和动力工程的基本标准。它采用铜导体的双绞线,也可用光纤。
> 传输速度 PROFIBUS总线的传输速率从9.6Kbit/s—12Mbit/s。
网段总线长度与传输速率的关系
> 最大节点数 127(地址0-126)
2. ROFIBUS现场应用类型
PROFIBUS提供了三种通信协议类型:FMS,DP和PA
> PROFIBUS-FMS: 用于现场通用通信任务的FMS接口(DIN 19245 T.2)
> PROFIBUS-DP: 用于与分布式I/O进行高速通讯
> PROFIBUS-PA: 用于执行规定现场设备特性的PA设备,它使用扩展的PROFIBUS-DP协议进行数据传输。
3. 利用PROFIBUS DP进行的通信
PROFIBUS-DP是为了实现在传感器-执行器级快速数据交换而设计的。中央控制装置(例如可编程控制器)在这里通过一种快速的串行接口与分布式输入和输出设备通信。与这些装置的通信一般是循环发生的。
中央控制器(主站)从从站读取输入信息并将输出信息写到从站。
单主站或者多主站系统可以由PROFIBUS-DP来实现。这使得系统配置异常方便。一条总线最多可以连接126个设备(主站或从站)。
> 系统配置
系统配置的规范包含一系列的站点,I/O地址的分配, 输入输出数据的完整性,诊断信息的格式以及总线参数。
> 设备类型
DP1类主站 这是一种在给定的信息循环中与分布式站点(DP从站)交换信息
的中央控制器。
典型的设备有: 可编程控制器(PLC),微机数值控制(CNC)或计算机(PC)
等。
DP2类主站 属于这一类的装置包括编程器,组态装置和诊断装置,例如上位
机。这些设备在DP系统初始化时用来生成系统配置。
DP从站 一台DP从站是一种对过程读和写信息的输入、输出装置(传感器/
执行器),例如分布式I/O,ET200,变频器等。
通过PROFIBUS-DP实现两CPU集成DP接口之间的主从通信
PROFIBUS-DP从站不仅仅是ET200系列的远程I/O站,当然也可以是一些智能从站,如带集成DP接口和PROFIBUS 通信模块的S7 300站,S7400站(V3.0以上)都可以作为DP的从站。下面我们将以两个CPU315-2DP CPU之间主从通信为例介绍连接智能从站的组态方法。
1. 硬件和软件需求
硬件:
PROFIBUS-DP主站 S7-300 CPU315-2DP(6ES7 315-2AG10-0AB0),SM374
PROFIBUS-DP从站 S7-300 CPU315-2DP(6ES7 315-2AG10-0AB0);SM374
PROFIBUS电缆及接头
CP5512(PCMCIA卡,用于笔记本电脑)或PC适配器,CP5611(PC机)
软件:
STEP7 V5.3 SP2
2. 网络组态及参数设置
1) 新建项目:
在STEP7中创建一个新项目,然后选择Insert ® Station ® Simatic 300 station,插入两个S7 300站,这里命名为Simatic 300(master)和 Simatic 300(slave)。当然也可完成一个站的配置后,再建另一个。如图1。
图1 在STEP7 硬件组态中插入两个S7 300站
2) 组态从站:在两CPU主从通信组态配置是,原则上要先组态从站。
> 硬件组态
双击Simatic 300(slave)“Hardware”,进入硬件组态窗口,在功能按钮栏中点击“Catalog”图标打开硬件目录,按硬件安装次序和订货号依次插入机架、电源、CPU和SM374等进行硬件组态。
插入CPU时会同时弹出PROFIBUS接口组态窗口。也可以插入CPU后,双击DP(X2)插槽,打开DP属性窗口点击属性按钮进入PROFIBUS接口组态窗口。点击“NEW”按钮新建PROFIBUS网络,分配 PROFIBUS站地址,本例设为3号站。点击“Propertives”按钮组态网络属性,选择“Network Setting”进行网络参数设置,如波特率、行规。本例传输速率为1.5Mbit/s,行规为DP。如图2。
图2 Profibus DP 网络参数设置
确认上述设置后,PROFIBUS接口状态如图3。
图3 Profibus 接口状态
> DP 模式选择
同样在DP属性设置对话框中,选择“Operating Mode”标签,激活“DP slave”操作模式。如果“Test,commissioning,routing”选项被激活,则意味着这个接口既可以作为DP从站,同时还可以通过这个接口监控程序。也可以用STEP7 F1帮助功能查看详细信息。
图4 DP 模式选择
> 定义从站通信接口区
选择“Configuration”标签,打开I/O通信接口区属性设置窗口,点击“New”按钮新建一行通信接口区,如图5可以看到当前组态模式为主从(MS,Master-slave configuration)。注意此时只能对本地(从站)进行通信数据区的配置。
Address type: 选择“Input”对应输入区,“Output”对应输出区。
Address: 设置通信数据区的起地址。
Length: 设置通信区域的大小,最多32字节。
Unit: 选择是按字节(byte)还是按字(word)来通信。
Consistency: 选择“Unit”是按在“Unit”中定义的数据格式发送,即按字节或字发送;
若选择“All”表示是打包发送,每包最多32字节。此时通信数据大于4个
字节时,应用SFC14,SFC15。
设置完成后点击“Apply”按钮确认。同样可根据实际通信数据建立若干行,但最大不能超过244字节。在本例中分别创建一个输入区和一个输出区,长度为4字节,设置完成后可在“Configuration”窗口中看到这两个通信接口区。如图6。
图5 通信接口区设置
图6 设置完成后的从站通信区
> 设置通信区完成后,点击编译存盘按钮,编译无误后即完成从站的组态。
图7 从站的编译存盘
3) 组态主站
> 完成从站组态后,就可以对主站进行组态,基本过程与从站相同。在完成基本 硬件组态后对DP接口参数进行设置,如图8。本例中地址设为2,并选择与从站相同的PROFIBUS网络(PROFIBUS1)。波特率以及行规与从站应设置相同。(1.5Mbit/s;DP)。
> 然后在DP属性设置对话框中,选择“Operating Mode”标签,选择“DP Master”操作模式。如图9所示。
图8 主站DP接口参数设置
图9 DP接口为主站
> 连接从站 :在硬件组态(HW Config)窗口中,打开硬件目录,选择“ PROFIBUS DP ® Configured Stations”文件夹,将CPU31x拖拽到主站系统DP接口的PROFIBUS总线上,这时会同时弹出DP从站连接属性对话框,选择所要连接的从站后,点击“Connect”按钮确认。如图10。
注:如果有多个从站存在时,要一一连接。
图10 连接从站
> 通信接口区 :连接完成后,点击“Configuration”标签,设置主站的通信接口区从站的输出区与主站的输入区相对应,从站的输入区同主站的输出区相对应,如图11所示。图12为设置完成I/O通信区。
图11 通信数据区设置
图12 通信数据区
确认上述设置后,在硬件组态(HW Config)中,选择编译存盘按钮,编译无误后即完成主从通信组态配置。
图 13 组态的编译存盘
简单编程:在程序调试阶段,建议将OB82,OB86,OB122下载到CPU中,这样可使在CPU有上述中断触发时, CPU仍可运行。相关OB的解释可以参照STEP7帮助。
推荐阅读:
西门子PLC组织块与中断处理
S7-1200plc作为从站的编程详解
S7-1200 作为Modbus RTU 从站
S7-1200 支持Modbus RTU通信模式的模块可作为Modbus RTU从站。以下以 CPU1215C DC/DC/DC和CM1241 RS485为例,介绍S7-1200 Modbus RTU 从站通信组态及编程步骤。
硬件和软件需求及所完成的通信任务:
硬件: ① CPU1215C DC/DC/DC (订货号:6ES7 215-1AG31-0XB0)② CM1241 RS485 (订货号:6ES7 241-1CH30-0XB0)③ PS 307电源(订货号:6ES7307-1KA02-0AA0) ④ PC(带以太网卡) ⑤ TP以太网电缆软件: ① STEP 7 V11 Professional SP2 UPD4 +HSP② ModScan(该软件是第三方软件,可以从 Internet 网络下载)所完成的通信任务: 将Modbus RTU从站CPU1215C中地址从DB1.DBW0开始的5 个字中的数据,分别读取到Modbus RTU主站ModScan中Modbus地址从40001开始的5个字中。
1 组态Modbus RTU通信模块
在硬件目录里找到“通信模块”→“点到点”→ “CM1241(RS485)”,双击或拖拽此模块至CPU左侧即可,如下图1所示:
图1 组态通信模块
接下来,在“设备视图”中用鼠标选中CM1241(RS485)模块,在“属性”→“端口组态”中配置此模块硬件接口参数。如下图2所示:
以下以传输率=9.6Kbps,奇偶校验=无奇偶校验,数据位=8位字符,停止位=1,其它保持默认设置为例。
图2 RS485 端口设置
最后在“硬件标识符”里确认一下硬件标识符为271,如下图3所示:
图3 硬件标识符
2 添加启动OB
在项目树下选择“CPU1215C DC/DC/DC”→“程序块”→“添加新块”,在弹出的窗口中选择“OB 组织块”→ “Startup”,添加启动OB 100,如下图4所示:
图4 添加启动OB
3 调用MB_COMM_LOAD指令
为使端口一启动就被设置为Modbus RTU通信模式,可在OB 100中调用“MB_COMM_LOAD”指令。调用“MB_COMM_LOAD”指令时会自动弹出创建相应背景数据块的界面,如下图5所示:
图5 调用MB_COMM_LOAD指令
点击“确认”为该指令创建背景数据块后,为各输入/输出引脚分配地址。尤其需注意MB_DB输入引脚需指向“MB_SLAVE”指令的背景数据块,如下图6所示:
注意: “MB_COMM_LOAD”指令输入位“REQ”需使用上升沿触发。由于OB 100只在S7-1200启动时执行一次,因此,此例中将“REQ”设为“TRUE”。
图6 MB_COMM_LOAD指令
MB_COMM_LOAD指令参数意义如下表1所示:
引脚
说明
EN
使能端
REQ
在上升沿执行该指令
PORT
通信端口的硬件标识符
BAUD
波特率选择:3600,6000,12000,2400,4800,9600,19200,38400,57600,76800,115200 (注意:所有其它值均无效)
PARITY
奇偶检验选择:0-无;1-奇校验;2-偶校验
FLOW_CTRL
流控制选择:0-(默认值)无流控制
RTS_ON_DLY
RTS延时选择:0-(默认值)
RTS_OFF_DLY
RTS关断延时选择:0-(默认值)
RESP_TO
响应超时:默认值 = 1000 ms。MB_MASTER 允许用于从站响应的时间(以毫秒为单位)。
MB_DB
对 MB_MASTER 或 MB_SLAVE 指令所使用的背景数据块。
DONE
完成位:指令执行完成且未出错置1
ERROR
错误位:0-未检测到错误;1-检测到错误。在参数STATUS中输出错误代码。
STATUS
表1 MB_COMM_LOAD指令参数意义
4 创建MB_HOLD_REG数据块
通过“程序块”→ “添加新块”,选择“数据块(DB)”创建 DB 块,选择“标准与S7- 300/400兼容” ,点击“确认”键,定义数据区为5个字的数组,如下图7所示:
注意:MB_HOLD_REG使用的DB访问类型必须是标准与S7- 300/400兼容。
图7 创建MB_HOLD_REG数据块
5 调用MB_SLAVE指令
在OB1中调用MB_SLAVE指令, 调用该指令时会自动弹出创建相应背景数据块的界面,如下图8所示:
图8 调用MB_SLAVE指令
点击“确认”为该指令创建背景数据块后,并为各输入/输出引脚分配地址,如下图9所示:
S7-1200作为Modbus RTU从站,MB_HOLD_REG指向Modbus保持寄存器数据块的指针。设置如下所示:MB_HOLD_REG=P#DB3.DBX0.0 WORD 5。
对应关系如下表2所示:
Modbus RTU主站Modbus地址
Modbus RTU从站CPU1215C 数据缓冲区地址
40001
DB3.DBW0
40002
DB3.DBW2
40003
DB3.DBW4
40004
DB3.DBW6
40005
DB3.DBW8
表2 Modbus地址对应关系
图9 MB_SLAVE指令
引脚
说明
EN
使能端
MB_ADDR
Modbus 从站的站地址 。默认地址范围:0 至 247;扩展地址范围:0 至 65535
MB_HOLD_REG
指向 Modbus 保持寄存器数据块的指针。必须使用“标准 - 与 S7-300/400 兼容”访问类型创建该数据块。
NDR
新数据就绪:0-无新数据;1-表示Modbus主站已写入新的数据
DR
数据读取:0-无数据读取;1-表示Modbus主站已读取新的数据
ERROR
错误位
STATUS
表3 MB_SLAVE指令参数意义
MB_SLAVE Modbus功能
S7-1200
代码
功能
数据区
地址范围
数据区
CPU地址
01
读位
输出
1到8192
输出过程映像区
Q0.0到Q1023.7
02
读位
输入
10001到18192
输入映像区
I0.0到I1023.7
04
读字
输入
30001到30512
输入映像区
IW0到IW1022
05
写位
输出
1到8192
输出过程映像区
Q0.0到Q1023.7
15
写位
输出
1到8192
输出过程映像区
Q0.0到Q1023.7
表4 Modbus地址到过程映象区的映射
MB_SLAVE Modbus功能
S7-1200
代码
功能
数据区
地址范围
CPU DB数据区
CPU地址
03
读字
保持寄存器
40001到49999
MB_HOLD_REG
字1到字9999
400001到465535
字1到字65535
06
写字
保持寄存器
40001到49999
MB_HOLD_REG
字1到字9999
400001到465535
字1到字65535
16
写字
保持寄存器
40001到49999
MB_HOLD_REG
字1到字9999
400001到465535
字1到字65535
表5 Modbus地址到CPU存储区的映射
6 Modbus 主站软件设置
注意: 客户机采用ModScan软件测试,该软件是第三方软件,可以从 Internet 网络上下载。
首先在打开的ModScan软件中建立连接,并设置RTU模式的参数:波特率Baud=9600,数据位Data=8,停止位Stop=1,校验Parity=NONE,如下图10所示:
图10 建立ModScan连接
选择“File”→ “New” 打开ModScan通信界面,设置Modbus RTU从站的地址Device Id=1,数据开始地址Address=0001,数据长度Length=5,Modbus数据类型功能码03,如下图11所示:
注意: Device Id设置必须与“MB_SLAVE”指令中输入引脚“MB_ADDR”设置的地址一致。
图11 设置ModScan
7 Modbus RTU测试结果
在STEP 7 V11 Professional SP2 UPD4软件中打开该项目CPU1215 DC/DC/DC的“监控表”,对DB3.DBW0写入数值21,DB3.DBW2写入数值22,DB3.DBW4写入数值23,DB3.DBW6写入数值24,DB3.DBW8写入数值25。ModScan主站将S7-1200 Modbus RTU从站地址DB3.DBW0的数值21,DB3.DBW2的数值22,DB3.DBW4的数值23,DB3.DBW6的数值24,DB3.DBW8的数值25,分别读取到了地址40001,40002,40003,40004,40005中。如下图12所示:
图12 Modbus RTU测试结果
MB_COMM_LOAD和MB_SLAVE指令STATUS错误代码
STATUS(W#16#)
说明
0000
端口无错误
8180
端口ID值无效
8181
波特率值无效
8182
奇偶校验值无效
8183
流控制值无效
8184
响应超时值无效
8185
MB_DB参数不是MB_MASTER或MB_SLAVE的背景数据块
表6 MB_COMM_LOAD指令STATUS错误代码
STATUS(W#16#)
说明
0000
无错误
80D1
接收方发出了暂停主动传输的流控制请求并且在指定的等待时间内未重新激活该传输
80D2
传送请求终止
80E0
因接收缓冲区满,消息被终止
80E1
因出现奇偶校验错误,消息被终止
80E2
因组帧错误,消息被终止
80E3
因出现超限错误,消息被终止
80E4
因指定长度超出总缓冲区大小,消息被终止
8180
无效端口ID值或MB_COMM_LOAD指令出错
8186
Modbus站地址无效
8187
指向MB_HOLD_REG指针无效
818C
指向M存储器或DB(DB区域允许符号地址和直接地址)的MB_HOLD_REG指针无效
表7 MB_SLAVE指令STATUS参数意义(通信和组态错误)
STATUS(W#16#)
从站的响应代码
说明
8380
无响应
CRC错误
8381
01
不支持功能代码或者在广播中不支持功能代码
8382
03
数据长度错误
8383
02
数据地址错误或地址超出DATA_PTR取的有效范围
8384
03
数据值错误
8385
03
不支持此数据诊断代码值
表8 MB_SLAVE指令STATUS参数意义(Modbus协议错误)
常见问题
为什么触发“MB_SLAVE”指令出错,输出位“ERROR”=1,输出状态字“STATUS”=16#8187?
输出状态字”STATUS“=16#8187表示指向MB_HOLD_REG指针无效。以下两种情况会造成如上错误:
程序中不存在“MB_SLAVE”指令的输入引脚“MB_HOLD_REG”对应的DB块。在创建“MB_SLAVE”指令的输入引脚“MB_HOLD_REG”对应的DB块时选择了“仅符号寻址”。解决方法分别如下:
新建“MB_SLAVE”指令的输入引脚“MB_HOLD_REG”对应的DB块。创建“MB_SLAVE”指令的输入引脚“MB_HOLD_REG”对应的DB块时只能选择了“标准与S7-300/400兼容”。爱上电气 我是电气工程师,分享电气知识;【重要提示】请点击关注,然后进入
公众号
相关问答
plc主从站通讯异常?
1.不充足2.PLC主从站通讯异常可能是由于以下原因导致:硬件故障、通讯参数设置错误、通讯线路故障、主从站程序逻辑错误等。这些问题需要仔细排查和解决,需要...
一个plc能同时做主站和从站吗?
从技术上来说,PLC是可以同时担任主站和从站的角色,因为PLC本质上是一个可编程的控制器,可以根据不同的程序对输入输出进行控制和通信。但是要实现PLC同时做主...
三菱plcFX2N128两台,如何做主从站,详解或例子?
这个就非常简单了,三菱PLC本身有N:N网络,十分简单容易上手。两台还能用并联协议,通讯的D和M将会更多,通讯更有保障。详细请看三菱编程手册--通讯篇这个就非...
两个三菱plc怎么连接通信设置?
两个三菱plc怎么连接通信设置拿到通信手册我们发现两个三菱plc之间的通信方式有许多中如CC-LINK、N:N网络、并联连接、计算机链接、MODBUS通信以及以太网通信。...
西门子300plc组智能从站的时候,主从都要编..._网络编辑_帮考网
参数有哪些?通讯接口区是指在西门子300PLC组智能从站中,主站和从站之间进行通讯所需的参数设置区域。主站和从站都需要在通讯接口区中编辑相关参数,...
在单位做设备维修,很多设备上有PLC,想在PLC上多下点功夫,怎么做?
我是矿山电气小东,分享电气知识。看到这个问题时,第一时间就想到了我自己在十几年前,初次接触PLC的场景我与PLC初相识那还是在2007年的一天,我们矿的一斜...1...
不清楚mondbus通信格式怎样实现通讯?
不清楚mondbus通信格式怎样实现通讯modbus通信是我们工控中常见的通信协议,首先是主从通讯,主站可以与从站之间进行通信,从站之间无法进行。主站站号为0,从...
如果都用485通讯,所有设备都通过485连在一起,假如主站是plc,假如有些设备用modbus,有?
虽然DP的物理接口实质上也是RS485,但两类不同协议的设备一般不能在同一根线缆上。DP设备走一根线缆,MODBUS设备走另外一根线缆。PROFIBUS-DP是一个主从令牌网...
有人知道吗成都微型PLC品牌大全及型号,微型PLC适合新手吗??
[回答]词多效果好就选易搜宝!诚信至上合作双赢,互赢自动化宣!选择时要根据实际需要选择合适的通讯方式。PC为主站,多台同型号PLC为从站,组成简易PLC网络...
西门子400冗余控制器之间怎么通讯?
西门子400冗余控制器之间可以通过MPI或ProfibusDP总线进行通讯。MPI总线是西门子专有的串行总线,用于连接西门子S7系列PLC、人机界面、编程器等设备。Profibu...