在S7-1500CPU中如何通过用户程序设置NTP服务器的IP地址?

使用“T_CONFIG”指令可以从用户程序中改变以太网地址和PROFINET设备名称。

使用S7-1500 CPU V1.8及更高版本还有STEP 7 V13 SP1 Upd4及更高版本,可以在用户程序中使用“T_CONFIG”指令为日同步时间更改NTP服务器的IP地址。

之前有效的组态数据会被覆盖。

可以使用“T_CONFIG”指令做以下改变:

  • IP协议设置
    • IP地址
    • 子网掩码
    • 路由器地址
  • PROFINET设置
    • PROFINET设备名称分配
  • 时钟同步设置
    • 为时钟同步的NTP服务器(仅限S7-1500)分配IP地址

设置对应的配置选项位于:在“以太网地址”对话框中“IP 协议”和“PROFINET”下,或者在“时钟同步”对话框中“NTP 模式”下可以找到。这会在“设备视图”和“网络视图”中PROFINET接口属性下“Devices & Networks”中显示。

改变NTP服务器IP地址的必备条件
为使用“T_CONFIG”指令,必须在硬件组态中明确指定通过用户程序来分配IP地址参数和设备名称。

  • 为此,需要在设备视图中打开PROFINET接口的属性。为了通过“T_CONFIG”更改NTP服务器的IP地址,需要在“时钟同步”对话框激活选项“通过NTP服务器启动同步时间”,然后需要在NTP服务器处指定IP地址。
  • 组态数据必须存储在系统数据类型中,并在“CONF_DATA”参数中传递。在系统数据类型IF_CONF_NTP中储存NTP时钟同步的IP地址。

T_CONFIG”指令的输入参数
表01展示“T_CONFIG”指令的输入参数。

参数 数据类型 描述
REQ BOOL 当REQ=1时,指令被调用并开始运行。
INTERFACE HW_INTERFACE 硬件标识
硬件标识在设备视图下接口的属性中以及PLC变量的系统常量中显示。
CONF_DATA VARIANT 高级结构的指针包含系统数据类型 IF_CONF_HEADER, IF_CONF_V4和IF_CONF_NOS (参见CONF_DATA参数的描述)。

表01

T_CONFIG”指令的输出参数
表02展示“T_CONFIG”指令的输出参数。

参数 数据类型 描述
DONE BOOL 状态参数:

  • 0:还未完成处理。
  • 1:已成功完成指令处理。
BUSY BOOL

状态参数:

  • 0:指令还未开始、已经完成或者被终止处理。
  • 1:指令开始处理。
ERROR BOOL 参数状态:

  • 0:无错误
  • 1:有错误
STATUS DWORD 详细状态信息:
详细报错和状态信息在STATUS参数以一个错误代码的形式输出。
ERR_LOC DWORD 错误位置:

  • 0:错误出现在执行指令时或者参数化时
  • >0:错误出现在CONF_DATA参数配置数据的结构或者内容中。

表02

CONF_DATA 参数中组态数据的结构
CONF_DATA 参数的组态数据可以存在全局数据块或者块接口的“Static”部分。组态数据必须按照如下结构存储。

名称 数据类型 描述
ConfData Struct 高级结构特定的CONF_DATA 参数。
Header IF_CONF_HEADER 通过 header定义下列系统数据类型的编码。必须总是包含系统数据类型IF_CONF_HEADER。
IPData IF_CONF_V4 在这个系统数据类型中储存IP地址,子网掩码和路由器地址。只有在需要通过“T_CONFIG”修改以太网地址时才需创建 IF_CONF_V4。
NoS IF_CONF_NOS 在这个系统数据类型中存储PROFINET设备名称。只有在需要通过“T_CONFIG”修改设备名称时才需创建IF_CONF_NOS。
NTP IF_CONF_NTP 在这个系统数据类型中为时钟同步NTP服务器存储IP地址。

表03

IF_CONF_NTP子字段
通过IF_CONF_NTP 子字段为时钟同步NTP服务器定义IP地址。

字节 参数 数据类型 起始值 描述

0...1

Id UINT 17 系统数据类型的标识。必须不能改变参数的起始值。
2...3 Length UINT 22 IF_CONF_NTP系统数据类型的字节长度。因为IF_CONF_NTP的参数有固定的长度和结构,所以长度规格必须使用起始值。
4...5 Mode UINT 有效性:

  • 1:永久有效(不允许的)
  • 2:临时有效
6...9 NTP_IP[1] ARRAY[1..4] of IP_V4 NTP服务器1的IP地址
10...13 NTP_IP[2] ARRAY[1..4] of IP_V4 NTP服务器2的IP地址
14...17 NTP_IP[3] ARRAY[1..4] of IP_V4 NTP服务器3的IP地址
18...21 NTP_IP[4] ARRAY[1..4] of IP_V4 NTP服务器4的IP地址

表04

关于子字段IF_CONF_HEADER, IF_CONF_IPV4和 IF_CONF_NOS的信息可以在 "STEP 7 Professional V13 SP1,in the section entitled "CONF_DATA Parameter"手册中查看。

STATUS和ERR_LOC参数
在STATUS和ERR_LOC参数有“T_CONFIG”指令的输出状态和错误信息。

表05展示STATUS和ERROR参数的可能值,会在系统数据类型IF_CONF_V4或IF_CONF_NOS或IF_CONF_NTP发生错误时出现。

STATUS ERR_LOC 描述
C080_8B00 0001_000x 参数ID有一个无效值。 IF_CONF_V4使用“30”,IF_CONF_NOS 使用“40”,IF_CONF_NTP使用“17”。
C080_8C00 0001_000x 使用错误的额系统数据类型,错误的顺序或者多次使用一个系统数据类型。
C080_8D00 0001_000x 参数的长度不正确或是无效的值。
C080_8E00 0001_000x 模式参数有一个不正确或者无效的值。

  • IF_CONF_V4和IF_CONF_NOS只有“1”(永久)和“2”(暂时) 是有效值。
  • IF_CONF_NTP只有“2”(暂时)是有效值。
C080_9000 0001_000x 组态数据不能被接受。可能原因:

  • IF_CONF_V4:"Set IP address on device"没有在硬件组态中被选择。
  • IF_CONF_NOS:"Set PROFINET device names on device" 没有在硬件组态中被选择。
  • IF_CONF_NTP:"Enable time-of-day synchronization via NTP" 没有在硬件组态中被选择同时没有为NTP服务器指定IP地址。
C080_9400 0001_000x 参数值没有被定义或者是无效值。
C080_9500 0001_000x 两个参数的值不一致。

表05

更多关于STATUS和ERR_LOC参数的信息可以在手册"STEP 7 Professional V13 SP1",in the section entitled "STATUS and ERR_LOC Parameters"中找到。

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc322009.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月5日
下一篇 2021年4月12日

相关推荐

发表回复

登录后才能评论