• {{item.name}}
{{item.name}}
{{item2.name}}
更多
操作指南

MM440与S7-300通过DP通讯实现读取和修改参数例程

star star star star star
5.0 分
  • 通信(通讯)
  • 使用操作
  • S7-300
  • MM440
  • 总线
  • 周期
文档编号:A0279| 文档类型:操作指南| 发布时间:2024年02月29日
  • 0
  • 1303
  • 29374
本文介绍了通过DP总线建立MM440(版本V2.09及以上)和S7-300之间的通讯,对于不同数据结构类型的参数,则分别以具体例程介绍了以周期和非周期通讯方式来读写参数的不同方法,同时对周期和非周期通讯报文结构进行了说明。

1、MM440的DP通讯功能简介
MM440变频器既支持和主站的周期性数据通讯,也支持和主站的非周期性数据通讯,即S7-300可以使用功能块SFC14/SFC15读取和修改MM440参数值,调用一次可以读取或者修改一个参数。同时也可以使用功能块SFC58/SFC59或者SFB52/SFB53读取和修改MM440参数值,一次最多可以读取或者修改39个参数。

2、MM440周期性数据通讯的报文说明
MM440周期性数据通讯报文有效 数据区域由两部分构成,即PKW区(参数识别ID-数值区)和PZD区(过程数据),见表1。PKW区最多占用4个字,即PKE(参数标识符值:占用一个字)、IND(参数的下标:占用一个字)、PWE1和PWE2(参数数值:共占用两个字)。S7-300使用功能块SFC14/SFC15读取和修改参数需要占用4个PKW,即调用一次功能块可以修改一个参数。PKW区的说明见表2。下面分别介绍一下PKW区的四个字。



表1



表2

(1)第一个字PKE:参数识别标识ID,见表3。


表3

参数识别标记ID(PKE)总是一个16位的值,位0~10(PNU)包括所请求的参数号码,位11(SPM)用于参数变更报告的触发位,位12~15(AK)包括任务识别标记ID(见表4)和应答识别标记ID(见表5)。


表4


表5

(2)第二个字IND:参数的下标
完整的参数号码是由基本参数号码和下标(PNU页号)中的位12-15产生,见表6。因为MM440参数号码没有超过4000,所以在读取和修改参数号为2000到3999时位15-12中必须为1。


表6

(3)第三个字PWE1和第四个字PWE2:参数数值,见表7。
总是以双字(32位)来传送参数值(PWE)。在PPO报文中,仅一个参数值能被传送。由PWE1(高位有效字:第三个字)和PWE2(低位有效字:第四个字)组成一个32位参数值。用PWE2(低位有效字:第四个字)传送一个16位参数值,这种情况下,必须在PROFIBUS-DP主站中,设定PWE1(高位有效字:第三个字)为零。



表7

  • 位0到15(PWE2):用于16位参数的参数值或用于32位参数的低位部分。
  • 位16到31(PWE1):用于等于零的1位参数或用于32位参数的高位部分。


3、MM440非周期性数据通讯的报文说明
MM440支持非周期通讯方式,即扩展的PROFIBUS DP(DPV1)功能,一次最多可以传送240个字节,传输数据块的内容应遵照 PROFIdrive Profile, version 4.0(with data block 47 (DS47))非周期参数通道结构。它包括参数请求和参数应答两部分。

(1)参数请求包括请求标题、参数地址和参数值,见表8。

项目 数据类型 数值 注释
请求参考 无符号8 位数 0x01 … 0xFF 每一次新的请求主站改变“请求参考“,从站在其应答时镜像“请求参考“
请求ID 无符号8位数 0x01 读请求
   0x02 写请求
设备ID无符号8位数 0x00 … 0xFF 对于多个驱动单元设定相应设备ID
参数数量 无符号8位数 0x01 … 0x27 No.1…39,对于请求多个参数时的参数数量,=1为请求一个参数
属性 无符号8位数 0x10 数值型
   0x20 描述型
   0x30 文本型(不可能)
元素数量 无符号8位数 0x00 特定功能
   0x01 … 0x75 No. 1 … 117,数组数量
参数值 无符号16位数 0x0001 … 0xFFFF No. 1 … 65535
下标 无符号16位数 0x0001 … 0xFFFF No. 1 … 65535
格式 无符号8位数 0x02 8位整形数
   0x03 16位整形数
   0x04 32位整形数
   0x05 无符号8位数
   0x06 无符号16位数
   0x07 无符号32位数
   0x08 浮点数
   Other values 见 PROFIdrive Profile
   0x40 0
   0x41 字节
   0x42
   0x43 双字
   0x44 错误
数值号 无符号8位数 0x00 … 0xEA 0..234
数值 无符号16位数 0x0000 … 0x00FF 读或写的参数值

表8


(2)参数应答描述见表9:

错误值含义注释
0X00 无效的参数号 获取不存在的参数
0X01 参数值不能被改变 修改了一个不允许修改的参数
0X02 超出上下限 修改的数值超限
0X03 无效的下标 获取不存在的下标
0X04 没有数组 用下标获取不存在下标的参数
0X05 数据类型不正确  
0X06 无效的设定操作(参数只能设定为0)  
0X07 描述的元素不能被修改 修改了不能被修改的元素
0X09 没有描述的数据 获取不存在的参数
0X0B 没有操作权限  
0X0F 下一个数组不存在 获取下一个不存在的数组
0X11 变频器运行时不能执行请求任务  
0X14 无效数值  
0X15 应答长度太长 当前的应答长度超出最大传输长度
0X16 无效的参数地址  
0X17 无效的数据格式  
0X18 数据数量不一致  
0X19 驱动装置不存在  
0X20 文字类型的参数不能被改变  

表9

4、硬件组态和站地址设置
本例中主站选用的是CPU319F-3 PN/DP,版本为V2.6,从站MM440的DP地址为5,MM440的版本为V2.09,选择的报文结构是PPO1,即含有4个PKW和2个PZD,见图1。也可以选择其他报文类型,只要含有4个PKW就可以,见图2。本例中PKW的地址范围是256~263,PZD的地址范围是264~267。



图1                                                                                     图2

5、周期性DP通讯读取和修改参数例程
首先在主程序OB块中调用SFC14(读取参数)和SFC15(修改参数),功能块中LADDR为W#16#100,实际就是PKW的起始地址,DB1.DBB 0开始的8个字节是读到的值,DB1.DBB 24开始的8个字节是需要修改的参数值,见图3。M20.0为使能位,同时需要建一个DB1块。因为参数2000以下和2000以上的报文中IND不同,本文则以实例分别介绍如何读取和修改MM440的单字、双字和浮点数的三种参数类型。


图3

修改和读取2000以上参数方法:在下面的图中上部红色框中为实际修改后的值,由功能块SFC14读回来,下部红色框中为希望修改参数值的报文。

(1) 单字:修改参数P2010[1]为6,见图4。

修改参数请求报文
PKE=DB1.DBW 24=200A
IND=DB1.DBW 26=0180
PWE1=DB1.DBW 28=0000
PWE2=DB1.DBW 30=0006
实际应答报文
PKE=DB1.DBW 0=100A
IND=DB1.DBW 2=0180
PWE1=DB1.DBW 4=0
PWE2=DB1.DBW 6=6



图4

(2) 双字:修改参数P2200[1]为1,见图5。
修改参数请求报文
PKE=DB1.DBW 24=80C8
IND=DB1.DBW 26=0180
PWE1=DB1.DBW 28=0001
PWE2=DB1.DBW 30=0000

实际应答报文
PKE=DB1.DBW 0=50C8
IND=DB1.DBW 2=0180
PWE1=DB1.DBW 4=0001
PWE2=DB1.DBW 6=0000


图5

(3) 浮点数:修改参数P2240[1]为40.0,见图6。

修改参数请求报文
PKE=DB1.DBW 24=80F0
IND=DB1.DBW 26=0180
PWE1+PWE2=DB1.DBD 28=40.0

实际应答报文
PKE=DB1.DBW 0=50F0
IND=DB1.DBW 2=0180
PWE1+PWE2=DB1.DBD 4=40.0


图6

修改和读取2000以下参数方法:下面的图中上部红色框中为实际修改后的值,由功能块SFC14读回来,下部红色框中为希望修改参数值的报文。

(1) 单字:修改参数P0701[0]为2,见图7。

修改参数请求报文
PKE=DB1.DBW 24=72BD
IND=DB1.DBW 26=0000
PWE1=DB1.DBW 28=0000
PWE2=DB1.DBW 30=0002

实际应答报文
PKE=DB1.DBW 0=42BD
IND=DB1.DBW 2=0000
PWE1=DB1.DBW 4=0000
PWE2=DB1.DBW 6=0002


图7

(2) 双字:修改参数P1020[0]为1,见图8。

修改参数请求报文
PKE=DB1.DBW 24=83FC
IND=DB1.DBW 26=0000
PWE1=DB1.DBW 28=0001
PWE2=DB1.DBW 30=0000

实际应答报文
PKE=DB1.DBW 0=53FC
IND=DB1.DBW 2=0000
PWE1=DB1.DBW 4=0001
PWE2=DB1.DBW 6=0000


图8

(3) 浮点数:修改参数P1120[1]为40.0,见图9。
修改参数请求报文
PKE=DB1.DBW 24=8460
IND=DB1.DBW 26=0100
PWE1+PWE2=DB1.DBD 28=40.0
实际应答报文
PKE=DB1.DBW 0=5460
IND=DB1.DBW 2=0100
PWE1+PWE2=DB1.DBD 4=40.0



图9

6、非周期DP通讯读取和修改参数例程

方法一:使用SFB52/SFB53对MM440进行非周期DP通讯读取参数时必须要成对出现,即先发送读请求块SFB53,然后发送SFB52块读取参数;而修改参数只需要发送功能块SFB53就可以。功能块中ID的地址可以设置为PZD或者PKW的地址,也可以设置为诊断地址,本例中设为诊断地址W#16#1FFA;功能块中INDEX必须为47;建议功能块中LEN和RECORD的长度一致,或者RECORD的长度大于LEN的长度,只要小于240字节即可,见图10。程序中先置M0.0为1发出读请求,然后程序自动把M0.0复位为0;再置M0.1为1进行读取参数,M0.1也自动复位为0。



读请求                                                                                     读参数
                                               图10

方法二:使用SFC58/SFC59对MM440进行非周期DP通讯读取参数必须要成对出现,即先发送读请求块SFC59,然后发送SFC58块读取参数;而修改参数只需要发送功能块SFC59就可以。功能块中LADDER的地址可以设置为PZD或者PKW的地址,也可以设置为诊断地址,本例中设为诊断地址W#16#1FFA;功能块中IOID必须设置为B#16#54;功能块中RECNUM必须为B#16#2F,即十进制必须为47;程序中先置M2.0为1发出读请求,然后程序自动把M2.0复位为0;再置M2.1为1进行读取参数,M2.1也自动复位为0,见图11和图12。


读请求                                                                                         读参数

                                                               图11



图12

(1)一次读取参数P1120的三个下标值和P1121的三个下标值,报文结构说明见图13,其中DB1.DBB 2(驱动单元ID号码):可以取值为0或1或2。实际设置见图14。



图13


读请求                                                                                     读参数

图14

(2)单字:修改参数P0701的三个下标值均为9,主程序调用功能块SFC59,见图15,M3.1置后则自动复位为0。实际修改参数见图16。STARTER软件中参数P0701的三个下标值均被修改为9,见图17。


图15



图16


图17

(3)双字:把参数P2200的三个下标值都修改为1,实际修改参数见图18,STARTER软件中参数被修改为1,见图19。


图18



图19

(4)浮点数:把参数P1120的三个下标修改为11.0/7.0/30.0,实际修改参数见图20,STARTER软件中参数被修改为11.0/7.0/30.0,见图21。



图20


图21

关键词
S7-300 MM440 周期通讯 非周期通讯 读参数 写参数


剩余80%未阅读,请登录后下载/查看文档

  • 评论
更多
  • 分享

    扫码分享

提示
您即将前往“全球技术资源库”。
“全球技术资源库”的用户名与本地支持中心(下载中心、技术论坛、找答案、1847工业学习平台)的用户名不通用。如果需要在全球技术资源库下载文档,您需要重新登录或注册。
确定

扫码进入移动端

信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。