杭州代理商 西門(mén)子 6ES7355-1VH10-0AE0 杭州代理商 西門(mén)子 6ES7355-1VH10-0AE0
SIEMENS長(zhǎng)沙奈歐自動(dòng)化設(shè)備有限公司
我公司理西門(mén)子全系列產(chǎn)品歡迎
來(lái)電 電話(huà):13762110473(微信同步)
長(zhǎng)沙奈歐自動(dòng)化設(shè)備有限公司
聯(lián)系人:劉文秀(銷(xiāo)售經(jīng)理)
商務(wù)QQ:1533714462
”信譽(yù),客戶(hù)至上“是公司成立之初所確立的宗旨,在公司的嚴(yán)格要求和員工們不折不扣地貫徹執(zhí)行下發(fā)展延續(xù)至今。“假一罰十”一直是我公司的承諾。
【信譽(yù)、誠(chéng)信交易】【長(zhǎng)期銷(xiāo)售、】
【稱(chēng)心滿(mǎn)意、服務(wù)動(dòng)力】【真誠(chéng)面對(duì)、溝通無(wú)限】
我公司長(zhǎng)期銷(xiāo)售西門(mén)子PLC模塊6ES7331-7KF02-0AB0 6ES7321-1BL00-0AA0 6ES7322-1BL00-0AA0 6ES7332-5HF00-0AB0 6ES7153-1AA03-0xB0 6XV1830-0EH10電纜 6ES7972-0BA12-0xA0接頭 6GK1503-3CB00光纖鏈路模塊 6ES7307-1EA00-0AA0 6ES7953-8LJ30-0AA0內(nèi)存卡 西門(mén)子PLC模塊315-2DP 6ES7315-2AH14-0AB0 西門(mén)子PLC模塊6ES7315-2EH14-0AB0 西門(mén)子PLC模塊6ES7214-2BD23-0xB8 處理6GK7343-1EX30-0xE0 屏66643-0CD01-1AX1 銷(xiāo)售西門(mén)子6SN1145-1BA02-0CA2
手機(jī):13762110473
公司地址:長(zhǎng)沙市岳麓區(qū)天頂街道尖山安置公寓樓702
———————————————————————————————————
【服務(wù)、一諾千金】【承諾、客戶(hù)滿(mǎn)意】
24小時(shí)西門(mén)子PLC銷(xiāo)售:13762110473微信同步
西門(mén)子總公司-長(zhǎng)沙奈歐伺服公司經(jīng)營(yíng)西門(mén)子全新原裝現(xiàn)貨PLC;S7-200S7-300 S7-400 S7-1200 屏,變頻器,6FC,6SN,S120 G120C V90 V80伺服數(shù)控備件:原裝進(jìn)口電機(jī)(1LA7、1LG4、1LA9、1LE1),國(guó)產(chǎn)電機(jī)(1LG0,1LE0)大型電機(jī)(1LA8,1LA4,1PQ8)伺服電機(jī)(1PH,1PM,1FT,1FK,1FS)西門(mén)子全新原裝產(chǎn)品‘質(zhì)保一年。 西門(mén)子伺服驅(qū)動(dòng)器現(xiàn)貨
1、SMS基礎(chǔ)知識(shí)介紹
SMS(Short Messaging Service)是最早的短消息業(yè)務(wù),也是現(xiàn)在普及率最高的一種短消息業(yè)務(wù)。目前,這種短消息的長(zhǎng)度被限定在140字節(jié)之內(nèi),這些字節(jié)可以是文本的。SMS以簡(jiǎn)單方便的使用功能受到大眾的歡迎,卻始終是屬于第一代的無(wú)線數(shù)據(jù)服務(wù),在內(nèi)容和應(yīng)用方面存在技術(shù)標(biāo)準(zhǔn)的限制。
一個(gè)SMS消息最長(zhǎng)可包括 160個(gè)字符(偶數(shù)二進(jìn)制)。
SMS是一種存儲(chǔ)和轉(zhuǎn)發(fā)服務(wù)。也就是說(shuō),短消息并不是直接從發(fā)送人發(fā)送到接收人,而始終通過(guò)SMS中心進(jìn)行轉(zhuǎn)發(fā)的。如果接收人處于未連接狀態(tài)(可能電話(huà)已關(guān)閉),則消息將在接收人再次連接時(shí)發(fā)送。
SMS具有消息發(fā)送確認(rèn)的功能。這意味著
SMS與尋呼不同,用戶(hù)不是簡(jiǎn)單地發(fā)出短消息然后相信消息已發(fā)送成功;而是短消息發(fā)送人可以收到返回消息,通知他們短消息是否已經(jīng)發(fā)送成功。
SMS 消息的發(fā)送和接收可以和 GSM 語(yǔ)音同步進(jìn)行。
SMS 消息按消息收費(fèi),因此要比通過(guò)基于 IP 的網(wǎng)絡(luò)(例如,使用 GPRS [通用分組無(wú)線業(yè)務(wù)])發(fā)送的數(shù)據(jù)昂貴得多(每字節(jié))。
要使用 SMS,用戶(hù)需要預(yù)訂支持 SMS 的移動(dòng)網(wǎng)絡(luò),并且必須為該用戶(hù)啟用 SMS 的使用。用戶(hù)需要有發(fā)送短消息或接收短消息的目的地。該目的地通常是其他的移動(dòng)電話(huà),但也可以是服務(wù)器。最后,用戶(hù)還需要有支持 SMS 的移動(dòng)電話(huà),并需要了解如何使用其特定型號(hào)的移動(dòng)電話(huà)發(fā)送或閱讀短消息。
SMS發(fā)送的模式分有兩種:Text模式和PDU模式.
使用Text模式收發(fā)短信代碼簡(jiǎn)單,實(shí)現(xiàn)起來(lái)十分容易,但是最大的缺點(diǎn)是不能收發(fā)中文短信, PDU模式完全可以解決這個(gè)問(wèn)題,PDU模式不僅支持中文短信,也能發(fā)送英文短信, PDU模式收發(fā)短信可以使用三種編碼: 7-bit、8-bit和UCS2編碼。 7-bit編碼用于發(fā)送普通的ASCII字符,8-bit編碼通常用于發(fā)送數(shù)據(jù)消息,UCS2編碼用于發(fā)送Unicode字符。我們要實(shí)現(xiàn)中文短信的發(fā)送,所以選擇UCS2,即中文Unicode碼。下面是關(guān)于兩種方式發(fā)送的示例AT指令:
范例:向手機(jī)號(hào)碼13801234567發(fā)送短信“Weather”
(1) TEXT方式
AT+CMGF=1<CR> …………設(shè)置短信發(fā)送方式為T(mén)EXT模式
AT+CMGS=”13801234567”<CR> …………向被叫號(hào)碼發(fā)短信
> Weather <CTRL+Z>
(2) PDU方式
AT+CMGF=0<CR> ……………設(shè)置短信發(fā)送方式為PDU模式
AT+CMGS=018<CR> ……………向被叫號(hào)碼發(fā)送PDU的長(zhǎng)度
>0001000D91683108214365F700080459296C14<CTRL+Z>
注:PDU方式中AT+CMGS命令解釋?zhuān)?br />
AT+CMGS=XXX<CR> …XXX表示PDU中TPDU的長(zhǎng)度
>PDU ...輸入PDU信息
0001 :基本參數(shù) 00 :消息基準(zhǔn)值TP-MR 0D :目標(biāo)地址數(shù)字個(gè)數(shù)(十進(jìn)制,不包含91) 91 :目標(biāo)地址格式 68 :目標(biāo)地址為中國(guó) 3108214365F7 :目標(biāo)地址(13801234567) 00 :協(xié)議標(biāo)示TP-PID 08 :用戶(hù)信息編碼格式TP-DCS(08表示UCS2編碼) 00 :有效期TP-VP 04 :用戶(hù)信息長(zhǎng)度TP-UDL 59296C14 :用戶(hù)信息(“天氣”) |
其中,紅色的數(shù)字(3108214365F7)代表對(duì)方的手機(jī)號(hào)碼,在PDU格式中,手機(jī)號(hào)碼每?jī)晌恍枰獙?duì)調(diào)。比如在上面這個(gè)例子里,對(duì)方的手機(jī)號(hào)碼為13801234567,F(xiàn)用來(lái)補(bǔ)充7后面的空位。藍(lán)色的數(shù)字(59296C14)是短消息內(nèi)容的Unicode碼,這里5929代表“天”6C14代表“氣”。Unicode碼同樣可以用來(lái)表示中一般英文字母和數(shù)字,方法是在英文或數(shù)字的ASCII碼前加00。紫色的數(shù)字(04)代表短消息的長(zhǎng)度,它等于其后所有字符個(gè)數(shù)除以2。黑色的數(shù)字每次發(fā)送短消息時(shí)都是相同的,使用時(shí)可以照抄,但前提是所使用的SIM卡在使用前要用手機(jī)設(shè)置好短消息服務(wù)中心號(hào)碼(+8613800100500)。漢字的Unicode碼可以通過(guò)編碼轉(zhuǎn)換軟件得到。
PDU格式發(fā)送短消息時(shí),還必須計(jì)算整個(gè)PDU數(shù)據(jù)包的長(zhǎng)度,PDU數(shù)據(jù)包的長(zhǎng)度等于(PDU數(shù)據(jù)包字符數(shù)-2)/2,在上面的例子里:(38-2)/2=18。
2、網(wǎng)絡(luò)結(jié)構(gòu)圖
硬件的連接, S7-300CP后接CP340(RS232串口)或CP341(RS232串口),再通過(guò)串口直連線連接CP340或CP341到MD720-3的串口上,MD720-3插一塊SIM卡。直連線的1針到9針對(duì)應(yīng)連接。
圖1、網(wǎng)絡(luò)結(jié)構(gòu)圖
3、需要的軟件及硬件
硬件
Component | Qty. | MLFB / Order number | Note |
PS307 5A | 1 | 6ES7307-1EA00-0AA0 | |
CPU317-2PN/DP | 1 | 6ES7317-2EJ10-0AB0 | |
CP341 | 1 | 6ES7341-1AH01-0AE0 | |
MD720-3 | 1 | 6NH9720-3AA00 | |
直連線 | 1 | 6ES7901-3CB30-0XA0 | |
SIM card |
表1、硬件列表
軟件
Component | No. | MLFB / Order number | Note |
STEP 7 5.4 SP4 | 1 | 6ES7810-4CC08-0YA5 |
表2、軟件列表
4、以TEXT的方式發(fā)送SMS
在這里不介紹用自由口編程的方式編寫(xiě)AT的指令來(lái)發(fā)送SMS,而是采用西門(mén)子提供庫(kù)功能塊來(lái)編寫(xiě)程序。庫(kù)程序的下載鏈接地址如下:26100569
上面庫(kù)程序是壓縮文件,先解壓縮到一個(gè)目錄下,在該目錄下又會(huì)看到3個(gè)壓縮文件,再解壓這三個(gè)壓縮文件,解壓縮后如下圖所示:
圖2、存放目錄
從上圖中,解壓三個(gè)壓縮文件后Sms_bloc;SMS_MD720_Application;Sms_MD720_Simple
Sms_bloc: 包括了使用CP340、CP341、CP442-1收發(fā)短信的庫(kù)功能。
Sms_MD720_Application:包含了用CP341和CP442-1收發(fā)短信的應(yīng)用程序。
Sms_MD720_Simple:包含了一個(gè)用Cp341收發(fā)短信的簡(jiǎn)單應(yīng)用程序
由于三個(gè)文件夾的程序只有Sms_MD720_Simple的程序是完整的,另外兩個(gè)文件夾下的程序由于編者的疏忽,程序不完整,導(dǎo)致無(wú)法正常編譯通過(guò)。所以在本文里我們只能介紹,通過(guò)拷貝Sms_MD720_Simple項(xiàng)目下的功能塊到實(shí)際的項(xiàng)目中來(lái)實(shí)現(xiàn)發(fā)送短信的功能。
在新建項(xiàng)目前,需要硬件按照網(wǎng)絡(luò)圖安裝好,并加電。MD720加電后恢復(fù)出廠設(shè)置,讓其工作在終端模式下(在MD720的系統(tǒng)手冊(cè)上介紹如何恢復(fù)出廠設(shè)置,這里不再作詳細(xì)介紹),恢復(fù)后用串口直連線,連接MD720與計(jì)算機(jī)的串口,打開(kāi)計(jì)算機(jī)的超級(jí)終端程序,打開(kāi)方式如下圖:
圖3、打開(kāi)超級(jí)終端
打開(kāi)后在連接描述的窗口里輸入一個(gè)連接名如下圖:
圖4、輸入連接名
點(diǎn)擊OK后,選擇與計(jì)算機(jī)連接的串口,這里連接的是串口1,所以設(shè)置如下圖:
圖5、選擇COM端口
在上圖點(diǎn)擊OK按鈕后,設(shè)置串口的通訊參數(shù)如下:
圖6、COM口的參數(shù)設(shè)置
點(diǎn)擊OK按鈕后,在出現(xiàn)的串口里先輸入 “+++”后,輸入“AT”檢查與Modem的連接是否正常,若正常則Modem會(huì)返回OK,如下圖:
圖7、測(cè)試與Modem的連接
然后在輸入指令“AT+IRP=9600”修改通訊波特率為9600如下圖所示:
圖8、設(shè)置Modem的波特率
修改成功后,把連接計(jì)算機(jī)上的串口拔下后,把9針口連接到CP341的串口上。
打開(kāi)Step7 Manger,打開(kāi)后點(diǎn)擊File菜單下的New…,新建一個(gè)項(xiàng)目,在新建項(xiàng)目的串口里輸入項(xiàng)目SMS_CP341,然后點(diǎn)擊新建,項(xiàng)目的硬件組態(tài)如下圖所示:
圖9、S7-300站的硬件組態(tài)
雙擊CP341-RS232C,打開(kāi)屬性窗口如下圖:
圖10、CP341的硬件地址設(shè)置
點(diǎn)擊Parameter...,設(shè)置串口的通訊協(xié)議為
圖11、選擇通訊協(xié)議為ASCII
雙擊Protocol協(xié)議包,配置串口通訊的參數(shù)如下圖:
圖12、設(shè)置ASCII的通訊參數(shù)
圖13、設(shè)置傳輸?shù)目刂品绞?
圖14、設(shè)置接收的緩存區(qū)
配置完硬件后,編譯并下載硬件組態(tài),然后打開(kāi)Sms_MD720_Simple項(xiàng)目,并拷貝Sms_MD720_Simple項(xiàng)目下的除OB1功能塊外的所有功能塊到SMS_CP341項(xiàng)目相應(yīng)的目錄下,同時(shí)需要拷貝Source下的源代碼到SMS_CP341項(xiàng)目下的Source目錄下。
拷貝后如下圖:
圖15、拷貝庫(kù)程序到項(xiàng)目下
打開(kāi)OB1塊,在OB1里調(diào)用FB100,背景數(shù)據(jù)塊為DB100,如下圖所示:
圖16、OB1中調(diào)用短消息功能塊
在CP_ADR中只需輸入CP341的邏輯地址256。輸入后保存程序。編寫(xiě)OB1后打開(kāi)DB100數(shù)據(jù)塊如下圖:
圖17、在發(fā)送功能塊的背景數(shù)據(jù)塊中設(shè)置修改CP341的硬件地址
這里SIM卡無(wú)PIN碼,要發(fā)送的信息是“Weather”;發(fā)送的手機(jī)號(hào)為“13801234567”;設(shè)置DB100的參數(shù)如下圖:
圖18、在發(fā)送功能塊的背景數(shù)據(jù)塊中設(shè)置PIN碼、目的手機(jī)號(hào)及信息
修改后保存DB100,并下載所有的程序塊到CPU中。下載后打開(kāi)打開(kāi)變量監(jiān)控表并在線監(jiān)控,如下圖:
圖19、通過(guò)變量監(jiān)控表觸發(fā)信息發(fā)送
在變量監(jiān)控表里先置位”SMS”.b_init,然后在置位”SMS”.SEND,等待一會(huì)兒,可以看到變量監(jiān)控表里的”SMS”.n_status當(dāng)置位”SMS”.b_init時(shí)會(huì)從1002變成201,然后當(dāng)置位”SMS”.SEND時(shí)會(huì)從201變成202、204、206,過(guò)一會(huì)兒又回到201的值,這樣接可以再目的手機(jī)上接收到“Weather”的短信。
上面的調(diào)試步驟只是從功能上實(shí)現(xiàn)了發(fā)短信的功能,要實(shí)現(xiàn)收發(fā)多條信息到多個(gè)多個(gè)手機(jī),可以參考Sms_MD720_Application和Sms_MD720_Simple下的編程思路開(kāi)發(fā)適合自己應(yīng)用的程序。
注意:如果例子項(xiàng)目文件打不開(kāi),請(qǐng)把計(jì)算機(jī)的語(yǔ)言設(shè)置為德語(yǔ)。
5、以PDU的方式發(fā)送中文SMS
要發(fā)送中文短信,需要安裝Step7 SCL編程語(yǔ)言包,發(fā)送短信庫(kù)功能塊是由FB100來(lái)完成的,F(xiàn)B100是由SCL語(yǔ)言編寫(xiě),要想使其能發(fā)送中文的短信,那么就需要用SCL語(yǔ)言修改FB100功能塊。修改方式如下:
在發(fā)送文本方式步驟的基礎(chǔ)上,用SCL語(yǔ)言打開(kāi)SMS_CP341項(xiàng)目下目錄Source下的SMS_Send源代碼,如下圖:
圖20、打開(kāi)發(fā)送功能塊的源文件
打開(kāi)后如下圖:
圖21、SCL編輯器打開(kāi)后的源文件
修改源程序代碼MD720_SMS_Textmode := '$R$LAT+CMGF=1$R'為MD720_SMS_Textmode := '$R$LAT+CMGF=0$R'如下圖所示:
圖22、修改短信的發(fā)送模式為PDU模式
str_outbox := SMS_Textmode_Attr;改為str_outbox :=MD720_SMS_Textmode;如下圖:
圖23、修改程序中的發(fā)送模式
修改后,點(diǎn)擊File下Save,然后再點(diǎn)擊File下的Complie,如下圖:
圖24、重新編譯修改后的程序
關(guān)閉SCl編輯窗口,若發(fā)送的目的手機(jī)號(hào)為13801234567發(fā)送的內(nèi)容為“天氣”打開(kāi)DB100,修改發(fā)送參數(shù)如下圖:
圖25、修改為PDU模式下的信息格式
描述:
集成 PROFINET 口的 CPU 和 WinAC RTX ,支持開(kāi)放式 IE 通信。
關(guān)于集成 PROFINET 口的 CPU 和 WinAC RTX 所支持的通信服務(wù)總覽,請(qǐng)參見(jiàn)條目18909487 。此總覽包含有關(guān)集成 PROFINET 口的 CPU 和 WinAC RTX 所支持的開(kāi)放式 IE 通信協(xié)議的信息。
下列通信塊可以用于基于 TCP 協(xié)議的開(kāi)放式通信:
這些通信塊可以在 Standard Library -> Communication Blocks 下找到。
從標(biāo)準(zhǔn)庫(kù)中拷貝最新版本的上述通訊塊到用戶(hù)程序中,然后再編寫(xiě)程序中調(diào)用它們。
建立 TCP 連接的連接參數(shù)保存在一個(gè)數(shù)據(jù)結(jié)構(gòu)中。
本例中,用到 UDT65 "TCON_PAR" 這個(gè)數(shù)據(jù)結(jié)構(gòu),保存在DB1中并由用戶(hù)參數(shù)化。 注意
字節(jié) | 參數(shù) | 數(shù)據(jù)類(lèi)型 | 描述 |
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ù)。
首先為 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:
OB100 是重啟 OB 塊,當(dāng) CPU 重新啟動(dòng)時(shí) (暖啟動(dòng)) 執(zhí)行一次.在 OB100 中,第一次通信由 M0.3 觸發(fā)。
OB1:
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
FB1:
在 OB1 中調(diào)用 FB1。該 FB1 中調(diào)用以下功能塊:
圖. 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)斷開(kāi)連接,或讓CPU 進(jìn)入停止模式或關(guān)閉電源來(lái)斷開(kāi)連接。
圖. 03
在 "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)求。
可以為輸入?yún)?shù) "DATA" 指定包含要發(fā)送數(shù)據(jù)的存儲(chǔ)區(qū)。
并在輸入?yún)?shù) "LEN" 填寫(xiě)要發(fā)送的字節(jié)數(shù)。
本例中發(fā)送數(shù)據(jù)保存在DB100中,向通信伙伴發(fā)送100個(gè)字節(jié)。
輸出參數(shù) "DONE", "ERROR" 和 "STATUS" 用于任務(wù)評(píng)價(jià)。
圖. 04
如果發(fā)送任務(wù)成功完成, "SEND_BUSY" 被復(fù)位。這時(shí)新的發(fā)送任務(wù)才可以被觸發(fā)。
如果發(fā)送任務(wù)執(zhí)行出錯(cuò),那么 "SEND_BUSY" 變量同樣被復(fù)位,F(xiàn)B63 的輸出參數(shù) "STATUS" 的值被保存用于錯(cuò)誤分析。
圖. 05
圖. 06
一旦 TCP 連接建立了,就能接收數(shù)據(jù)。
用輸入?yún)?shù) "DATA" 指定保存接收數(shù)據(jù)的存儲(chǔ)的地址和長(zhǎng)度。
本例中接受100個(gè)字節(jié)并保存在DB200中。
圖. 07
輸出參數(shù) "NDR" 用于表示已接收到新數(shù)據(jù)。輸出參數(shù) "RCVD_LEN" 表明接收數(shù)據(jù)的長(zhǎng)度,如果數(shù)據(jù)接收成功,保存參數(shù) "RCVD_LEN"。
圖. 08
如果數(shù)據(jù)未被成功接收,那么輸出參數(shù) "STATUS" 可以保存下來(lái)并用于評(píng)估狀態(tài)。
圖. 09
可以通過(guò) FB66 "TDISCON" 有目的地結(jié)束 TCP 連接。在 FB66 "TDISCON" 的輸入?yún)?shù)"REQ" 上施加上升沿以請(qǐng)求結(jié)束 TCP 連接。
圖. 10
注意:
示例程序中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" 。