长沙 西门子 6ES7315-2AH14-0AB0 300CPU 长沙 西门子 6ES7315-2AH14-0AB0 300CPU
SIMATIC S7-300,CPU 315-2DP 带 MPI 的中央处理器 集成电源 24V DC 工作存储器 256 KB 2个 DP-Master/Slave 接口 需要微型存储卡
描述
在S7-300 CPU 中通过调用 "RDSYSST" 指令可以读取 IP 地址。 通过 "RDSYSST" 指令可读取部件列表或系统状态列表的部件目录(SSL 或德语的 SZL)。 通过 SSL ID 和 INDEX 指定部件列表或部件列表中一个对象的部件列表目录及类型或者数量。使用SSL ID = 37 (hex) 和 INDEX = 0 (hex) 来读取 S7-300 CPU 的 IP 地址。
图. 01
"RDSYSST" 指令的输入/输出
表 01 "RDSYSST" 指令的输入参数.
参数 | 数据类型 | 描述 |
REQ | BOOL | REQ=1: 触发执行 |
SSL_ID | WORD |
将要读取的系统状态列表或部分列表的ID号
SSL_ID=w#16#37: 读取 S7-300 CPU 的 IP 地址 |
INDEX | WORD |
部分列表中对象的类型或编号
INDEX=w#16#0: 读取 S7-300 CPU 的 IP 地址 |
表 02 "RDSYSST"指令的输出参数
参数 | 数据类型 | 描述 |
RET_VAL | INT | 如果执行中程序出错,RET_VAL 参数会返回故障代码。 |
BUSY | BOOL | TRUE:读指令尚未执行完毕。 |
SZL_HEADER | STRUCT | SZL_HEADER 是个结构体。详细结构介绍在"SZL_HEADER 结构体". |
DR | ANY | 读取SSL的部件列表或SSL部件列表的目录的目标区域。 |
SZL_HEADER 结构体
SZL_Header 输出是按照以下结构定义的一个结构体:
SZL_HEADER: STRUCT
LENTHDR: WORD
N_DR: WORD
END_STRUCT
LENTHDR 是SSL 部件列表或 SSL 部件目录的数据记录长度。
SSL 部件列表的目标区域或读取 SSL 部件列表的目录
本例中读取SSL 部件列表并保存在数据块 DB2 "SZL_VALUE" 的起始地址 0 中。 S7-300 CPU 的 IP 地址由 4 个字节构成,以16进制字节形式存储在 DB2 "SZL_VALUE" 的起始地址 2 中。
图. 02
如果你已经读取到 CPU 的 IP 地址,可在程序中评估。在本例中,IP 地址按照十进制数据保存在数据块 DB1 “DATA”的起始地址 8 中。
图. 03
图. 04
图. 05
图. 06
图. 07
下载
该下载包含项目 "Read_IP_Address.zip".
拷贝 "Read_IP_Address.zip" 文件到一个单独的文件夹然后双击,之后使用 STEP 7 打开。
描述:
关于集成 PROFINET 口的 CPU 和 WinAC RTX 所支持的通信服务总览,请参见条目18909487 。此总览包含有关集成 PROFINET 口的 CPU 和 WinAC RTX 所支持的开放式 IE 通信协议的信息。
下列通信块可以用于基于 TCP 协议的开放式通信:
这些通信块可以在 Standard Library -> Communication Blocks 下找到。
例程描述:
首先为 S7-300 站创建硬件组态。注意配置 MB100 作为时钟存储器。 发送请求由该时钟存储器触发。保存编译 S7-300 站的硬件组态,下载到 CPU。
STEP 7 程序由 OB100,OB1,FB1, DB11,DB1,DB100,DB200 , FB63,FB64,FB65 和 FB66。
OB100:
OB1:
FB1:
在 "FB63 "TSEND" 的输入参数 "REQ" 上施加上升沿以触发发送请求。发送任务的触发是由时钟标志 M100.6 和变量 "SEND_BUSY" 来控制的。如果发送任务运行, "C1.SEND_BUSY" 则被置位,无法再触发新的发送请求。
如果发送任务成功完成, "SEND_BUSY" 被复位。这时新的发送任务才可以被触发。
一旦 TCP 连接建立了,就能接收数据。
输出参数 "NDR" 用于表示已接收到新数据。输出参数 "RCVD_LEN" 表明接收数据的长度,如果数据接收成功,保存参数 "RCVD_LEN"。
如果数据未被成功接收,那么输出参数 "STATUS" 可以保存下来并用于评估状态。
可以通过 FB66 "TDISCON" 有目的地结束 TCP 连接。在 FB66 "TDISCON" 的输入参数"REQ" 上施加上升沿以请求结束 TCP 连接。
注意:
示例程序中TCP 协议用来数据传输,需在数据结构 "OUCW_2"中设定参数 "connection_type" 为 "B#16#11" 。
S7-300 CPUs V2.3 支持 TCP (兼容模式)。如在S7-300 CPU V2.3 中运行示例程序,需在数据结构 "OUCW_2" 中设定参数 "connection_type" 为 "B#16#01" 。
描述
这个例子是在功能块 FB1 中调用系统功能块 SFC51 "RDSYSST" 。 在 OB1 中调用 FB1。
系统功能块 SFC51 "RDSYSST" 的输入输出定义
SSL_ID=w#16#37: 读取 S7-300 CPU 的IP地址
INDEX=w#16#0: 读取 S7-300 CPU 的IP地址
表 02 列举出系统功能块 SFC51 "RDSYSST" 的输出定义。
SZL_HEADER 结构
SZL_HEADER: STRUCT
LENTHDR 定义为 SZL 列表的数据记录部分或者摘录部分的长度。
用于读取 SSL 部分列表或摘录部分的目标区域
当读出了 CPU的 IP 地址,可以在用户程序中使用它。在这个例子中,IP 地址以十进制值存储在 FB1 的背景数据块DB1 中。
如何编程通信块 FB63 "TSEND", FB64 "TRCV", FB65 "TCON" 和 FB66 "TDISCON" 以实现用 S7-300 或 S7-400 CPU 的 PROFINET 口进行基于 TCP 协议的数据交换?
集成 PROFINET 口的 CPU 和 WinAC RTX ,支持开放式 IE 通信。
从标准库中拷贝最新版本的上述通讯块到用户程序中,然后再编写程序中调用它们。
建立 TCP 连接的连接参数保存在一个数据结构中。
本例中,用到 UDT65 "TCON_PAR" 这个数据结构,保存在DB1中并由用户参数化。 注意
表 01 "OUCW_2" 数据结构保存的连接参数
表 01
字节
参数
数据类型
描述
0 to 1
block_length
WORD
"OUCW_2" 数据结构长度
2 to 3
id
BYTE
连接标识
值范围: w#16#0001 至 w#16#0FFF
必须在相关块ID中指定该参数。
4
connection_type
BYTE
TCP 协议版本: B#16#11
5
active_est
BOOLEAN
建立连接标识
6
local_device_id
BYTE
通过CPU 315-2 PN/DP集成PN接口通信:B#16#02
7
local_tsap_id_len
BYTE
local_tsap_id 长度
connection_type = B#16#11时可行值:0或2
(主动端:0或2,被动端:2)
8
rem_subnet_id_len
BYTE
当前不可用,参数值B#16#00
9
rem_staddr_len
BYTE
远程连接端点地址长度
10
rem_tsap_id_len
BYTE
rem_tsap_id beter参数
connection_type = B#16#11时的可行值:0或2
11
next_staddr
BYTE
next_staddr 长度
12 to 27
local_tsap_id
ARRAY [1..16] of BYTE
本地端口号:2000,例如
local_tsap_id[1] = B#16#7 (十六进制端口号高字节)
local_tsap_id[2] = B#16#D0 (十六进制端口号低字节)
local_tsap_id[3-16] = B#16#00
28 to 33
rem_subnet_id
ARRAY [1..6] of BYTE
当前不可用,参数值B#16#00
34 to 39
rem_staddr
ARRAY [1..6] of BYTE
远程连接端点IP地址: 192.168.0.30
rem_staddr[1] = B#16#C0
rem_staddr[2] = B#16#A8
rem_staddr[3] = B#16#00
rem_staddr[4] = B#16#1E
rem_staddr[5-6] = B#00(保留)
40 to 55
rem_tsap id
ARRAY [1..16] of BYTE
远程连接端点端口号: 2000,例如
local_tsap_id[1] = B#16#7 (十六进制端口号高字节)
local_tsap_id[2] = B#16#D0 (十六进制端口号低字节)
local_tsap_id[3-16] = B#16#00
56 to 61
next_staddr
ARRAY [1..6] of BYTE
next_staddr[1-6] = B#16#00
62-63
spare
WORD
保留,值W#16#0000.
S7 程序中包含了对 FB65 "TCON" 的调用和带有建立 TCP 连接的连接参数数据结构"OUCW_2" 创建的DB1 。也包含了来自于 Standard Library -> Communication Blocks 下的 FB63 "TSEND" 和 FB64 "TRCV" 的调用。 FB63 "TSEND" 用于发送数据到 S7 站或 S5 站,以及到 PC 站或到第三方系统. FB64 "TRCV" 用于接收来自其他 S7 站,S5 站,PC 站和第三方系统的数据。
OB100 是重启 OB 块,当 CPU 重新启动时 (暖启动) 执行一次.在 OB100 中,第一次通信由 M0.3 触发。
OB1 循环调用。 FB1 在 OB1 中被调用 (背景数据块: DB11) , M0.3作为 INIT_COM 参数,M10.0作为ABORT参数。在 OB1 中调用 FB1结束后, 复位M0.3。
图. 01
在 OB1 中调用 FB1。该 FB1 中调用以下功能块:
定义连接ID
你可以随意修改连接ID。修改FB1 network2中的连接ID和你的组态保持一致。连接ID保存在DB11的静态变量中。
本例中定义连接ID为 "2"。
图. 02 连接建立
通过 FB65"TCON" 的输入参数 "REQ" 的上升沿触发来建立连接。数据块DB11 的背景数据块中集成了带有连接参数的数据结构 "OUCW_2"。
FB65 "TCON" 的输入参数 "CONNECT" 需要指定一个含有连接参数的存储区。
在系统启动时连接建立并保持,直到调用 FB66 "TDISCON" 来断开连接,或让CPU 进入停止模式或关闭电源来断开连接。
图. 03
可以为输入参数 "DATA" 指定包含要发送数据的存储区。
并在输入参数 "LEN" 填写要发送的字节数。
本例中发送数据保存在DB100中,向通信伙伴发送100个字节。
输出参数 "DONE", "ERROR" 和 "STATUS" 用于任务评价。
图. 04
如果发送任务执行出错,那么 "SEND_BUSY" 变量同样被复位,FB63 的输出参数 "STATUS" 的值被保存用于错误分析。
图. 05
图. 06
用输入参数 "DATA" 指定保存接收数据的存储的地址和长度。
本例中接受100个字节并保存在DB200中。
图. 07
图. 08
图. 09
图. 10
在 STEP 7 V5.5 软件中,如何在用户程序里读取出 S7-300 CPU 的IP地址?
这个条目讲解了在 STEP 7 V5.5 的软件中,如何在用户程序中读取 S7-300 CPU 的 IP 地址。 为了这个目的,可以在用户程序中调用系统功能块 SFC51 "RDSYSST" 。 通过使用系统功能块 SFC51“RDSYSST” 可以读出系统状态列表的部分列表或部分列表摘要 (SSL 或 德语简称 SZL)。通过SSLID和索引,对于某些部分列表或部分列表摘录,必须指定对象类型或对象编号。使用SSL ID = 37(十六进制)和索引= 0(十六进制)的地址读取 S7-300 CPU 的 IP 地址。
图 01
表 01 列举出系统功能块 SFC51 "RDSYSST" 的输入定义。
表 01
参数
数据类型
描述
REQ
BOOLEAN
REQ=1: 上升沿有效
SZL_ID
WORD
部分列表摘录的 SSL_ID
INDEX
WORD
部分列表对象的类型或者数目
表 02
参数
数据类型
描述
RET_VAL
INT
如果在指令进程中出现一个错误,RET_VAL将给出错误代码
BUSY
BOOLEAN
TRUE: 读取进程尚未完成
SZL_HEADER
STRUCT
The SZL_HEADER 是一个数据结构。这个结构被描述为 "SZL_HEADER structure"。
DR
ANY
读取SSL的部分列表或部分列表摘录的目标区域。
SZL_HEADER 的输出被定义为如下结构:
LENTHDR: WORD
N_DR: WORD
END_STRUCT
在这个例子中,读取 SSL 部分列表被保存在数据块 DB100 "SYS_DATA" 起始地址 0 开始。S7-300 CPU 的 IP 地址占了 4 个字节,存储在 DB100 "SYS_DATA"地址 2 开始的地址中,十六进制存储格式。
图 02
图 03
图 04
图 05
图 06
图 07