如何通过ST语言实现SIMOTION的DP从站地址修改?

通过执行_setDpSlaveAddress程序可以实现SIMOTION的DP从站地址修改。

实现方法:

(1)首先打开HW config 硬件组态,配置接口为DP从站: 

图01. 设置DP 接口为从站
(2)配置DP从站通信的IO地址如下图: 

图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地址生效。

如何通过ST语言实现SIMOTION的DP从站地址修改?

相关文章:

你感兴趣的文章:

标签云: