西门子IM 154-2PROFIBUS-DP 接口模块
时间:2020-09-04 阅读:445
西门子IM 154-2PROFIBUS-DP 接口模块 西门子IM 154-2PROFIBUS-DP 接口模块
浔之漫智控技术(上海)有限公司 上海诗慕自动化设备有限公司
本公司销售西门子自动化产品,*,质量保证,价格优势
西门子PLC,西门子触摸屏,西门子数控系统,西门子软启动,西门子以太网
西门子电机,西门子变频器,西门子直流调速器,西门子电线电缆
我公司大量现货供应,价格优势,*,德国*
回答:
通过执行_setDpSlaveAddress程序可以实现SIMOTION的DP从站地址修改。
实现方法:
(1)首先打开HW config 硬件组态,配置接口为DP从站:
图01. 设置DP 接口为从站
(2)配置DP从站通信的IO地址如下图:
西门子IM153-2接口模块
图02. 配置DP从站通信的IO地址
(3)查询DP 诊断地址用于后续编程时填写参数使用:
图03. 查询该接口的诊断地址
(4)编写如下程序
VAR_GLOBAL
locDpSlaveAddress : SINT := 8; // 需要使用的PROFIBUS地址
retDpSlaveAddress : structRetDpSlaveAddress; // 返回值变量
locRetVal : DINT;
neededSetDpAddress : DINT := 0;
startChange :BOOL;
END_VAR
END_INTERFACE
IMPLEMENTATION
PROGRAM bkgChangDPaddress
IF startChange THEN
// 读取当前的DP从站地址
retDpSlaveAddress := _getActiveDpSlaveAddress (
logicalAddressCommunicationAdapter := 16382 // 步骤3查询的接口诊断地址
);
IF (0 = retDpSlaveAddress.functionResult) THEN
// 检查是否需要更新DP地址,如果当前地址与地址locDpSlaveAddress 不相同,则执行更新
IF (retDpSlaveAddress.dpSlaveAddress <> locDpSlaveAddress) THEN
neededSetDpAddress := 1;
ELSE
;
END_IF;
END_IF;
IF (1 = neededSetDpAddress) THEN
// 设置新的DP地址
locRetVal := _setDpSlaveAddress (
logicalAddressCommunicationAdapter := 16382, // 步骤3查询的接口诊断地址
dpSlaveAddress := locDpSlaveAddress
// PROFIBUS address of the local slot
);
IF (0 = locRetVal) THEN
locRetVal := _activateDpSlaveAddress (
logicalAddressCommunicationAdapter := 16382 // 步骤3查询的接口诊断地址
);
ELSE
;
END_IF;
END_IF;
END_IF;
(5)修改startChange为1,程序执行成功会导致SIMOTION重新启动,随后新的DP地址生效。
描述:
SFC14 "DPRD_DAT"
使用 SFC 14“DPRD_DAT”(读取 DP 标准从站的*数据)可读出DP标准从站/PROFINET IO 设备的数据。 如果在数据传送过程中没有发生错误,读出的数据就被输入到由RECORD 建立的目标域。目标域必须与在 STEP 7 组态中所选的模块的长度相同。 当调用 SFC14 时,只能在所配的起始地址下访问一个模块/DP标识的数据。
SFC15 "DPWR_DAT"
使用 SFC 15“DPWR_DAT”(将*数据写入 DP 标准从站)可将 RECORD 中的数据*地传送到所寻址的DP标准从站/PROFINET IO 设备中。 源区域必须与在 STEP 7 组态中所选的模块的长度相同。 对于模块化结构的标准DP从站只能访问一个DP从站模块。
PROFIBUS DP用户*性数据区大长度和寻址
西门子IM153-2接口模块
下面的手册中可以找到更多关于PROFIBUS DP用户*性数据区大长度和寻址的信息。
表 01
PROFINET IO用户*性数据区大长度和寻址
下面的手册中可以找到更多关于PROFINET IO用户*性数据区大长度和寻址的信息。
表 02
对于通信处理器(CP)子模块的*性数据区域的大小明确如下:
CP | MLFB | 上限 |
CP 443-1 | 6GK7443-1EX20-0XE0 | 240 bytes |
CP 443-1 | 6GK7443-1EX30-0XE0 | 240 bytes |
CP 443-1 Advanced | 6GK7443-1EX40-0XE0 | 128 bytes |
CP 443-1 Advanced | 6GK7443-1EX41-0XE0 | 240 bytes |
CP 443-1 Advanced | 6GK7443-1GX20-0XE0 | 240 bytes |
CP 443-1 Advanced | 6GK7443-1GX30-0XE0 | 240 bytes |
CP 343-1 | 6GK7343-1EX21-0XE0 | 128 bytes |
CP 343-1 | 6GK7343-1EX30-0XE0 | 240 bytes |
CP 343-1 Advanced | 6GK7343-1GX21-0XE0 | 128 bytes |
CP 343-1 Advanced | 6GK7343-1GX30-0XE0 | 240 bytes |
CP 343-1 Advanced | 6GK7343-1GX31-0XE0 | 240 bytes |
表 03
注意事项:
PROFIBUS DP 标准定义了*性用户数据传送的数量上限。当前的 DP 标准从站遵守这些上限,但早期的CPU(1999年前),对*性用户数据的传送,不同的 CPU 有特定的限制。
这些 CPU 对 DP 标准从站*性读写数据的大长度在“DP主站 - 每个 DP 从站的用户数据”下的技术数据中给出。根据这些数值,使用该值,新近的CPU可支持超出DP标准从站 所提供或接收的数据长度。
重要事项:
分散读写*性数据(小于 4 字节),不调用系统函数 SFC14 和 SFC15 时,也是可行的。支持此功能的模块可参考条
下表给出了超过过程映像之外的*性数据的访问方式。
数据区长度 | 读/写访问 | 数据*性 |
1 字节 | 装载/传送 | 单元*性 |
2 字节 | 字装载/字传送 | 总长*性 |
3 字节 | SFC14 / SFC15 | 总长*性 |
4 字节 | 双字装载/双字传送 | 总长*性 |
5 字节 | SFC14 / SFC15 | 总长*性 |
表 04
举例:
在下面的例子中,一个S7-400 CPU作为DP主站,一个CP342-5作为从站。
DP从站的输入和输出*性数据区域设定如下:
- 对于输出,设定传输50个字节的总长*性数据。这50个字节在S7-400CPU的过程影像分区3中数据是*的,所以可以用 load/transfer 命令进行读操作。
- 对于输入,设定传输20个字节的总长*性数据。这20个数据不存储在过程映像或过程映像区中,只能通过系统功能SFC14/15进行写操作。
图 01
在过程映像的更新过程中,操作系统*性地传送此数据。可使用加载和传送指令访问过程映像中的数据。对于 S7-400 CPU ,还可以使用 SFC 26 "UPDAT_PI" 或 SFC 27 "UPDAT_PO" 在程序中的任意点更新过程映像,但此 TPA 在系统侧可能并未进行更新。如果没有或不能把数据放入过程映像,那么就应该使用 SFC14 和 SFC15 进行数据通信。