長(zhǎng)沙 西門子 6ES7315-2AH14-0AB0 300CPU 長(zhǎng)沙 西門子 6ES7315-2AH14-0AB0 300CPU
SIMATIC S7-300,CPU 315-2DP 帶 MPI 的中央處理器 集成電源 24V DC 工作存儲(chǔ)器 256 KB 2個(gè) DP-Master/Slave 接口 需要微型存儲(chǔ)卡
描述
在S7-300 CPU 中通過(guò)調(diào)用 "RDSYSST" 指令可以讀取 IP 地址。 通過(guò) "RDSYSST" 指令可讀取部件列表或系統(tǒng)狀態(tài)列表的部件目錄(SSL 或德語(yǔ)的 SZL)。 通過(guò) SSL ID 和 INDEX 指定部件列表或部件列表中一個(gè)對(duì)象的部件列表目錄及類型或者數(shù)量。使用SSL ID = 37 (hex) 和 INDEX = 0 (hex) 來(lái)讀取 S7-300 CPU 的 IP 地址。
圖. 01
"RDSYSST" 指令的輸入/輸出
表 01 "RDSYSST" 指令的輸入?yún)?shù).
參數(shù) | 數(shù)據(jù)類型 | 描述 |
REQ | BOOL | REQ=1: 觸發(fā)執(zhí)行 |
SSL_ID | WORD |
將要讀取的系統(tǒng)狀態(tài)列表或部分列表的ID號(hào)
SSL_ID=w#16#37: 讀取 S7-300 CPU 的 IP 地址 |
INDEX | WORD |
部分列表中對(duì)象的類型或編號(hào)
INDEX=w#16#0: 讀取 S7-300 CPU 的 IP 地址 |
表 02 "RDSYSST"指令的輸出參數(shù)
參數(shù) | 數(shù)據(jù)類型 | 描述 |
RET_VAL | INT | 如果執(zhí)行中程序出錯(cuò),RET_VAL 參數(shù)會(huì)返回故障代碼。 |
BUSY | BOOL | TRUE:讀指令尚未執(zhí)行完畢。 |
SZL_HEADER | STRUCT | SZL_HEADER 是個(gè)結(jié)構(gòu)體。詳細(xì)結(jié)構(gòu)介紹在"SZL_HEADER 結(jié)構(gòu)體". |
DR | ANY | 讀取SSL的部件列表或SSL部件列表的目錄的目標(biāo)區(qū)域。 |
SZL_HEADER 結(jié)構(gòu)體
SZL_Header 輸出是按照以下結(jié)構(gòu)定義的一個(gè)結(jié)構(gòu)體:
SZL_HEADER: STRUCT
LENTHDR: WORD
N_DR: WORD
END_STRUCT
LENTHDR 是SSL 部件列表或 SSL 部件目錄的數(shù)據(jù)記錄長(zhǎng)度。
SSL 部件列表的目標(biāo)區(qū)域或讀取 SSL 部件列表的目錄
本例中讀取SSL 部件列表并保存在數(shù)據(jù)塊 DB2 "SZL_VALUE" 的起始地址 0 中。 S7-300 CPU 的 IP 地址由 4 個(gè)字節(jié)構(gòu)成,以16進(jìn)制字節(jié)形式存儲(chǔ)在 DB2 "SZL_VALUE" 的起始地址 2 中。
圖. 02
如果你已經(jīng)讀取到 CPU 的 IP 地址,可在程序中評(píng)估。在本例中,IP 地址按照十進(jìn)制數(shù)據(jù)保存在數(shù)據(jù)塊 DB1 “DATA”的起始地址 8 中。
圖. 03
圖. 04
圖. 05
圖. 06
圖. 07
下載
該下載包含項(xiàng)目 "Read_IP_Address.zip".
拷貝 "Read_IP_Address.zip" 文件到一個(gè)單獨(dú)的文件夾然后雙擊,之后使用 STEP 7 打開。
描述:
關(guān)于集成 PROFINET 口的 CPU 和 WinAC RTX 所支持的通信服務(wù)總覽,請(qǐng)參見條目18909487 。此總覽包含有關(guān)集成 PROFINET 口的 CPU 和 WinAC RTX 所支持的開放式 IE 通信協(xié)議的信息。
下列通信塊可以用于基于 TCP 協(xié)議的開放式通信:
這些通信塊可以在 Standard Library -> Communication Blocks 下找到。
例程描述:
首先為 S7-300 站創(chuàng)建硬件組態(tài)。注意配置 MB100 作為時(shí)鐘存儲(chǔ)器。 發(fā)送請(qǐng)求由該時(shí)鐘存儲(chǔ)器觸發(fā)。保存編譯 S7-300 站的硬件組態(tài),下載到 CPU。
STEP 7 程序由 OB100,OB1,F(xiàn)B1, DB11,DB1,DB100,DB200 , FB63,F(xiàn)B64,F(xiàn)B65 和 FB66。
OB100:
OB1:
FB1:
在 "FB63 "TSEND" 的輸入?yún)?shù) "REQ" 上施加上升沿以觸發(fā)發(fā)送請(qǐng)求。發(fā)送任務(wù)的觸發(fā)是由時(shí)鐘標(biāo)志 M100.6 和變量 "SEND_BUSY" 來(lái)控制的。如果發(fā)送任務(wù)運(yùn)行, "C1.SEND_BUSY" 則被置位,無(wú)法再觸發(fā)新的發(fā)送請(qǐng)求。
如果發(fā)送任務(wù)成功完成, "SEND_BUSY" 被復(fù)位。這時(shí)新的發(fā)送任務(wù)才可以被觸發(fā)。
一旦 TCP 連接建立了,就能接收數(shù)據(jù)。
輸出參數(shù) "NDR" 用于表示已接收到新數(shù)據(jù)。輸出參數(shù) "RCVD_LEN" 表明接收數(shù)據(jù)的長(zhǎng)度,如果數(shù)據(jù)接收成功,保存參數(shù) "RCVD_LEN"。
如果數(shù)據(jù)未被成功接收,那么輸出參數(shù) "STATUS" 可以保存下來(lái)并用于評(píng)估狀態(tài)。
可以通過(guò) FB66 "TDISCON" 有目的地結(jié)束 TCP 連接。在 FB66 "TDISCON" 的輸入?yún)?shù)"REQ" 上施加上升沿以請(qǐng)求結(jié)束 TCP 連接。
注意:
示例程序中TCP 協(xié)議用來(lái)數(shù)據(jù)傳輸,需在數(shù)據(jù)結(jié)構(gòu) "OUCW_2"中設(shè)定參數(shù) "connection_type" 為 "B#16#11" 。
S7-300 CPUs V2.3 支持 TCP (兼容模式)。如在S7-300 CPU V2.3 中運(yùn)行示例程序,需在數(shù)據(jù)結(jié)構(gòu) "OUCW_2" 中設(shè)定參數(shù) "connection_type" 為 "B#16#01" 。
描述
這個(gè)例子是在功能塊 FB1 中調(diào)用系統(tǒng)功能塊 SFC51 "RDSYSST" 。 在 OB1 中調(diào)用 FB1。
系統(tǒng)功能塊 SFC51 "RDSYSST" 的輸入輸出定義
SSL_ID=w#16#37: 讀取 S7-300 CPU 的IP地址
INDEX=w#16#0: 讀取 S7-300 CPU 的IP地址
表 02 列舉出系統(tǒng)功能塊 SFC51 "RDSYSST" 的輸出定義。
SZL_HEADER 結(jié)構(gòu)
SZL_HEADER: STRUCT
LENTHDR 定義為 SZL 列表的數(shù)據(jù)記錄部分或者摘錄部分的長(zhǎng)度。
用于讀取 SSL 部分列表或摘錄部分的目標(biāo)區(qū)域
當(dāng)讀出了 CPU的 IP 地址,可以在用戶程序中使用它。在這個(gè)例子中,IP 地址以十進(jìn)制值存儲(chǔ)在 FB1 的背景數(shù)據(jù)塊DB1 中。
如何編程通信塊 FB63 "TSEND", FB64 "TRCV", FB65 "TCON" 和 FB66 "TDISCON" 以實(shí)現(xiàn)用 S7-300 或 S7-400 CPU 的 PROFINET 口進(jìn)行基于 TCP 協(xié)議的數(shù)據(jù)交換?
集成 PROFINET 口的 CPU 和 WinAC RTX ,支持開放式 IE 通信。
從標(biāo)準(zhǔn)庫(kù)中拷貝最新版本的上述通訊塊到用戶程序中,然后再編寫程序中調(diào)用它們。
建立 TCP 連接的連接參數(shù)保存在一個(gè)數(shù)據(jù)結(jié)構(gòu)中。
本例中,用到 UDT65 "TCON_PAR" 這個(gè)數(shù)據(jù)結(jié)構(gòu),保存在DB1中并由用戶參數(shù)化。 注意
表 01 "OUCW_2" 數(shù)據(jù)結(jié)構(gòu)保存的連接參數(shù)
表 01
字節(jié)
參數(shù)
數(shù)據(jù)類型
描述
0 to 1
block_length
WORD
"OUCW_2" 數(shù)據(jù)結(jié)構(gòu)長(zhǎng)度
2 to 3
id
BYTE
連接標(biāo)識(shí)
值范圍: w#16#0001 至 w#16#0FFF
必須在相關(guān)塊ID中指定該參數(shù)。
4
connection_type
BYTE
TCP 協(xié)議版本: B#16#11
5
active_est
BOOLEAN
建立連接標(biāo)識(shí)
6
local_device_id
BYTE
通過(guò)CPU 315-2 PN/DP集成PN接口通信:B#16#02
7
local_tsap_id_len
BYTE
local_tsap_id 長(zhǎng)度
connection_type = B#16#11時(shí)可行值:0或2
(主動(dòng)端:0或2,被動(dòng)端:2)
8
rem_subnet_id_len
BYTE
當(dāng)前不可用,參數(shù)值B#16#00
9
rem_staddr_len
BYTE
遠(yuǎn)程連接端點(diǎn)地址長(zhǎng)度
10
rem_tsap_id_len
BYTE
rem_tsap_id beter參數(shù)
connection_type = B#16#11時(shí)的可行值:0或2
11
next_staddr
BYTE
next_staddr 長(zhǎng)度
12 to 27
local_tsap_id
ARRAY [1..16] of BYTE
本地端口號(hào):2000,例如
local_tsap_id[1] = B#16#7 (十六進(jìn)制端口號(hào)高字節(jié))
local_tsap_id[2] = B#16#D0 (十六進(jìn)制端口號(hào)低字節(jié))
local_tsap_id[3-16] = B#16#00
28 to 33
rem_subnet_id
ARRAY [1..6] of BYTE
當(dāng)前不可用,參數(shù)值B#16#00
34 to 39
rem_staddr
ARRAY [1..6] of BYTE
遠(yuǎn)程連接端點(diǎn)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
遠(yuǎn)程連接端點(diǎn)端口號(hào): 2000,例如
local_tsap_id[1] = B#16#7 (十六進(jìn)制端口號(hào)高字節(jié))
local_tsap_id[2] = B#16#D0 (十六進(jìn)制端口號(hào)低字節(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 程序中包含了對(duì) FB65 "TCON" 的調(diào)用和帶有建立 TCP 連接的連接參數(shù)數(shù)據(jù)結(jié)構(gòu)"OUCW_2" 創(chuàng)建的DB1 。也包含了來(lái)自于 Standard Library -> Communication Blocks 下的 FB63 "TSEND" 和 FB64 "TRCV" 的調(diào)用。 FB63 "TSEND" 用于發(fā)送數(shù)據(jù)到 S7 站或 S5 站,以及到 PC 站或到第三方系統(tǒng). FB64 "TRCV" 用于接收來(lái)自其他 S7 站,S5 站,PC 站和第三方系統(tǒng)的數(shù)據(jù)。
OB100 是重啟 OB 塊,當(dāng) CPU 重新啟動(dòng)時(shí) (暖啟動(dòng)) 執(zhí)行一次.在 OB100 中,第一次通信由 M0.3 觸發(fā)。
OB1 循環(huán)調(diào)用。 FB1 在 OB1 中被調(diào)用 (背景數(shù)據(jù)塊: DB11) , M0.3作為 INIT_COM 參數(shù),M10.0作為ABORT參數(shù)。在 OB1 中調(diào)用 FB1結(jié)束后, 復(fù)位M0.3。
圖. 01
在 OB1 中調(diào)用 FB1。該 FB1 中調(diào)用以下功能塊:
定義連接ID
你可以隨意修改連接ID。修改FB1 network2中的連接ID和你的組態(tài)保持一致。連接ID保存在DB11的靜態(tài)變量中。
本例中定義連接ID為 "2"。
圖. 02 連接建立
通過(guò) FB65"TCON" 的輸入?yún)?shù) "REQ" 的上升沿觸發(fā)來(lái)建立連接。數(shù)據(jù)塊DB11 的背景數(shù)據(jù)塊中集成了帶有連接參數(shù)的數(shù)據(jù)結(jié)構(gòu) "OUCW_2"。
FB65 "TCON" 的輸入?yún)?shù) "CONNECT" 需要指定一個(gè)含有連接參數(shù)的存儲(chǔ)區(qū)。
在系統(tǒng)啟動(dòng)時(shí)連接建立并保持,直到調(diào)用 FB66 "TDISCON" 來(lái)斷開連接,或讓CPU 進(jìn)入停止模式或關(guān)閉電源來(lái)斷開連接。
圖. 03
可以為輸入?yún)?shù) "DATA" 指定包含要發(fā)送數(shù)據(jù)的存儲(chǔ)區(qū)。
并在輸入?yún)?shù) "LEN" 填寫要發(fā)送的字節(jié)數(shù)。
本例中發(fā)送數(shù)據(jù)保存在DB100中,向通信伙伴發(fā)送100個(gè)字節(jié)。
輸出參數(shù) "DONE", "ERROR" 和 "STATUS" 用于任務(wù)評(píng)價(jià)。
圖. 04
如果發(fā)送任務(wù)執(zhí)行出錯(cuò),那么 "SEND_BUSY" 變量同樣被復(fù)位,F(xiàn)B63 的輸出參數(shù) "STATUS" 的值被保存用于錯(cuò)誤分析。
圖. 05
圖. 06
用輸入?yún)?shù) "DATA" 指定保存接收數(shù)據(jù)的存儲(chǔ)的地址和長(zhǎng)度。
本例中接受100個(gè)字節(jié)并保存在DB200中。
圖. 07
圖. 08
圖. 09
圖. 10
在 STEP 7 V5.5 軟件中,如何在用戶程序里讀取出 S7-300 CPU 的IP地址?
這個(gè)條目講解了在 STEP 7 V5.5 的軟件中,如何在用戶程序中讀取 S7-300 CPU 的 IP 地址。 為了這個(gè)目的,可以在用戶程序中調(diào)用系統(tǒng)功能塊 SFC51 "RDSYSST" 。 通過(guò)使用系統(tǒng)功能塊 SFC51“RDSYSST” 可以讀出系統(tǒng)狀態(tài)列表的部分列表或部分列表摘要 (SSL 或 德語(yǔ)簡(jiǎn)稱 SZL)。通過(guò)SSLID和索引,對(duì)于某些部分列表或部分列表摘錄,必須指定對(duì)象類型或?qū)ο缶幪?hào)。使用SSL ID = 37(十六進(jìn)制)和索引= 0(十六進(jìn)制)的地址讀取 S7-300 CPU 的 IP 地址。
圖 01
表 01 列舉出系統(tǒng)功能塊 SFC51 "RDSYSST" 的輸入定義。
表 01
參數(shù)
數(shù)據(jù)類型
描述
REQ
BOOLEAN
REQ=1: 上升沿有效
SZL_ID
WORD
部分列表摘錄的 SSL_ID
INDEX
WORD
部分列表對(duì)象的類型或者數(shù)目
表 02
參數(shù)
數(shù)據(jù)類型
描述
RET_VAL
INT
如果在指令進(jìn)程中出現(xiàn)一個(gè)錯(cuò)誤,RET_VAL將給出錯(cuò)誤代碼
BUSY
BOOLEAN
TRUE: 讀取進(jìn)程尚未完成
SZL_HEADER
STRUCT
The SZL_HEADER 是一個(gè)數(shù)據(jù)結(jié)構(gòu)。這個(gè)結(jié)構(gòu)被描述為 "SZL_HEADER structure"。
DR
ANY
讀取SSL的部分列表或部分列表摘錄的目標(biāo)區(qū)域。
SZL_HEADER 的輸出被定義為如下結(jié)構(gòu):
LENTHDR: WORD
N_DR: WORD
END_STRUCT
在這個(gè)例子中,讀取 SSL 部分列表被保存在數(shù)據(jù)塊 DB100 "SYS_DATA" 起始地址 0 開始。S7-300 CPU 的 IP 地址占了 4 個(gè)字節(jié),存儲(chǔ)在 DB100 "SYS_DATA"地址 2 開始的地址中,十六進(jìn)制存儲(chǔ)格式。
圖 02
圖 03
圖 04
圖 05
圖 06
圖 07