長沙 西門子 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" 指令可讀取部件列表或系統狀態(tài)列表的部件目錄(SSL 或德語的 SZL)。 通過 SSL ID 和 INDEX 指定部件列表或部件列表中一個對象的部件列表目錄及類型或者數量。使用SSL ID = 37 (hex) 和 INDEX = 0 (hex) 來讀取 S7-300 CPU 的 IP 地址。
圖. 01
"RDSYSST" 指令的輸入/輸出
表 01 "RDSYSST" 指令的輸入參數.
參數 | 數據類型 | 描述 |
REQ | BOOL | REQ=1: 觸發(fā)執(zhí)行 |
SSL_ID | WORD |
將要讀取的系統狀態(tài)列表或部分列表的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 | 如果執(zhí)行中程序出錯,RET_VAL 參數會返回故障代碼。 |
BUSY | BOOL | TRUE:讀指令尚未執(zhí)行完畢。 |
SZL_HEADER | STRUCT | SZL_HEADER 是個結構體。詳細結構介紹在"SZL_HEADER 結構體". |
DR | ANY | 讀取SSL的部件列表或SSL部件列表的目錄的目標區(qū)域。 |
SZL_HEADER 結構體
SZL_Header 輸出是按照以下結構定義的一個結構體:
SZL_HEADER: STRUCT
LENTHDR: WORD
N_DR: WORD
END_STRUCT
LENTHDR 是SSL 部件列表或 SSL 部件目錄的數據記錄長度。
SSL 部件列表的目標區(qū)域或讀取 SSL 部件列表的目錄
本例中讀取SSL 部件列表并保存在數據塊 DB2 "SZL_VALUE" 的起始地址 0 中。 S7-300 CPU 的 IP 地址由 4 個字節(jié)構成,以16進制字節(jié)形式存儲在 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 站創(chuàng)建硬件組態(tài)。注意配置 MB100 作為時鐘存儲器。 發(fā)送請求由該時鐘存儲器觸發(fā)。保存編譯 S7-300 站的硬件組態(tài),下載到 CPU。
STEP 7 程序由 OB100,OB1,FB1, DB11,DB1,DB100,DB200 , FB63,FB64,FB65 和 FB66。
OB100:
OB1:
FB1:
在 "FB63 "TSEND" 的輸入參數 "REQ" 上施加上升沿以觸發(fā)發(fā)送請求。發(fā)送任務的觸發(fā)是由時鐘標志 M100.6 和變量 "SEND_BUSY" 來控制的。如果發(fā)送任務運行, "C1.SEND_BUSY" 則被置位,無法再觸發(fā)新的發(fā)送請求。
如果發(fā)送任務成功完成, "SEND_BUSY" 被復位。這時新的發(fā)送任務才可以被觸發(fā)。
一旦 TCP 連接建立了,就能接收數據。
輸出參數 "NDR" 用于表示已接收到新數據。輸出參數 "RCVD_LEN" 表明接收數據的長度,如果數據接收成功,保存參數 "RCVD_LEN"。
如果數據未被成功接收,那么輸出參數 "STATUS" 可以保存下來并用于評估狀態(tài)。
可以通過 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 部分列表或摘錄部分的目標區(qū)域
當讀出了 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
字節(jié)
參數
數據類型
描述
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 (十六進制端口號高字節(jié))
local_tsap_id[2] = B#16#D0 (十六進制端口號低字節(jié))
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 (十六進制端口號高字節(jié))
local_tsap_id[2] = B#16#D0 (十六進制端口號低字節(jié))
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" 創(chuàng)建的DB1 。也包含了來自于 Standard Library -> Communication Blocks 下的 FB63 "TSEND" 和 FB64 "TRCV" 的調用。 FB63 "TSEND" 用于發(fā)送數據到 S7 站或 S5 站,以及到 PC 站或到第三方系統. FB64 "TRCV" 用于接收來自其他 S7 站,S5 站,PC 站和第三方系統的數據。
OB100 是重啟 OB 塊,當 CPU 重新啟動時 (暖啟動) 執(zhí)行一次.在 OB100 中,第一次通信由 M0.3 觸發(fā)。
OB1 循環(huán)調用。 FB1 在 OB1 中被調用 (背景數據塊: DB11) , M0.3作為 INIT_COM 參數,M10.0作為ABORT參數。在 OB1 中調用 FB1結束后, 復位M0.3。
圖. 01
在 OB1 中調用 FB1。該 FB1 中調用以下功能塊:
定義連接ID
你可以隨意修改連接ID。修改FB1 network2中的連接ID和你的組態(tài)保持一致。連接ID保存在DB11的靜態(tài)變量中。
本例中定義連接ID為 "2"。
圖. 02 連接建立
通過 FB65"TCON" 的輸入參數 "REQ" 的上升沿觸發(fā)來建立連接。數據塊DB11 的背景數據塊中集成了帶有連接參數的數據結構 "OUCW_2"。
FB65 "TCON" 的輸入參數 "CONNECT" 需要指定一個含有連接參數的存儲區(qū)。
在系統啟動時連接建立并保持,直到調用 FB66 "TDISCON" 來斷開連接,或讓CPU 進入停止模式或關閉電源來斷開連接。
圖. 03
可以為輸入參數 "DATA" 指定包含要發(fā)送數據的存儲區(qū)。
并在輸入參數 "LEN" 填寫要發(fā)送的字節(jié)數。
本例中發(fā)送數據保存在DB100中,向通信伙伴發(fā)送100個字節(jié)。
輸出參數 "DONE", "ERROR" 和 "STATUS" 用于任務評價。
圖. 04
如果發(fā)送任務執(zhí)行出錯,那么 "SEND_BUSY" 變量同樣被復位,FB63 的輸出參數 "STATUS" 的值被保存用于錯誤分析。
圖. 05
圖. 06
用輸入參數 "DATA" 指定保存接收數據的存儲的地址和長度。
本例中接受100個字節(jié)并保存在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” 可以讀出系統狀態(tài)列表的部分列表或部分列表摘要 (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的部分列表或部分列表摘錄的目標區(qū)域。
SZL_HEADER 的輸出被定義為如下結構:
LENTHDR: WORD
N_DR: WORD
END_STRUCT
在這個例子中,讀取 SSL 部分列表被保存在數據塊 DB100 "SYS_DATA" 起始地址 0 開始。S7-300 CPU 的 IP 地址占了 4 個字節(jié),存儲在 DB100 "SYS_DATA"地址 2 開始的地址中,十六進制存儲格式。
圖 02
圖 03
圖 04
圖 05
圖 06
圖 07