S7-1200與其他PLC/組態(tài)軟件無(wú)線串口通訊
圖1:控制系統(tǒng)原理
S7-1200 PLC目前有3種類(lèi)型的CPU:
1)S7-1211C CPU
2)S7-1212C CPU
3)S7-1214C CPU
這三種類(lèi)型的CPU都可以連接三個(gè)串口通信模版
本例中使用的PLC硬件為:
1)PM1207電源(6EP1 332-1SH71)
2)S7-1214C(6ES7 214-1BE30-0XB0)
3)CM1241 RS232(6ES7 241-1AH30-0XB0)
編程軟件 Step7 Basic V10.5(6ES7 822-0AA0-0YA0)
我們通過(guò)下述的實(shí)際操作來(lái)介紹如何在Step7 Basic V10.5中組態(tài)S7-1214C和超級(jí)終端通信。
點(diǎn)擊桌面上的“Totally Integrated Automation Portal V10"圖標(biāo),打開(kāi)如下圖:
圖2:新建S7-1200項(xiàng)目
首先需要選擇“Create new project"選項(xiàng),然后在“Project name:"里輸入PTP;在“Path:"修改項(xiàng)目的存儲(chǔ)路徑為“C:\";點(diǎn)擊“Create",這樣就創(chuàng)建了一個(gè)文件PTP的新項(xiàng)目。創(chuàng)建后的窗口如下圖所示:
圖3:新建項(xiàng)目后
點(diǎn)擊門(mén)戶視圖左下角的“Project View"切換到項(xiàng)目視圖下,如下圖:
圖4:切換到項(xiàng)目視圖
打開(kāi)后,在“Devices"標(biāo)簽下,點(diǎn)擊“Add new device",在彈出的菜單中輸入設(shè)備名“PLC_1"并在設(shè)備列表里選擇CPU的類(lèi)型。選擇后如下圖:
圖5:PLC硬件組態(tài)
插入CPU后,點(diǎn)擊CPU左邊的空槽,在右邊的“Catalog "里找到“Communication"下的RS232模塊,拖拽或雙擊此模塊,這樣就把串口模塊插入到硬件配置里,接下來(lái)就需要配置此RS232模塊硬件接口參數(shù),選擇RS232模塊,在其下方會(huì)出現(xiàn)該模塊的硬件屬性配置窗口, 在屬性窗口里有兩個(gè)選項(xiàng),一個(gè)是“general";一個(gè)是“RS232 interface"。在“General"里包括了此模塊的“項(xiàng)目信息"和“訂貨信息";而在“RS232 interface"里包括“項(xiàng)目信息"、“端口的配置"、“發(fā)送信息的配置"、“接收信息的配置"和“硬件識(shí)別號(hào)"。
在這里我們選擇“RS232 interface",在“端口"配置的選項(xiàng)里,進(jìn)行端口的參數(shù)配置,
波特率為:9600 ;
校驗(yàn)方式:無(wú) ;
數(shù)據(jù)位為:8 ;
停止位:1;
硬件流控制:無(wú);
等待時(shí)間:1ms設(shè)置參數(shù)如下圖:
圖6:RS232接口配置
此時(shí)確認(rèn)一下“硬件識(shí)別號(hào)"為11。
此時(shí),完成了硬件的組態(tài),接下來(lái)需要編寫(xiě)串口通訊程序,在這里我們實(shí)現(xiàn)兩個(gè)功能:
1. S7-1200 發(fā)送數(shù)據(jù)給超級(jí)終端(具體實(shí)現(xiàn)步驟如下);
2. 超級(jí)終端發(fā)送數(shù)據(jù)給S7-1200(具體實(shí)現(xiàn)步驟如下);
S7-1200發(fā)送數(shù)據(jù)給超級(jí)終端,實(shí)際上是S7-1200是數(shù)據(jù)的發(fā)送方,超級(jí)終端是數(shù)據(jù)的接收方,對(duì)于S7-1200需要編寫(xiě)發(fā)送程序;而對(duì)于超級(jí)終端來(lái)說(shuō),只要打開(kāi)超級(jí)終端程序,配置硬件接口參數(shù)與前面S7-1200的端口參數(shù)一只即可。
下面的步驟將具體介紹此功能實(shí)現(xiàn)的步驟:
1)在PLC中編寫(xiě)發(fā)送程序。在項(xiàng)目管理視圖下雙擊“Device"下的程序塊下的Main(OB1),打開(kāi)OB1,在主程序中調(diào)用SEND_PTP功能塊如下圖所示:(注:SEND_PTP在指令庫(kù)下的擴(kuò)展指令中通訊指令下)
圖7:調(diào)用發(fā)送功能塊
要對(duì)SEND_PTP賦值參數(shù),首先需要?jiǎng)?chuàng)建SEND_PTP的背景數(shù)據(jù)塊和發(fā)送緩沖數(shù)據(jù)塊 ,雙擊“Devices"——> “PLC_1"——>“Program Block "——“Add new block",在彈出的串口命名DB_Send_PTP,選擇DB塊,在Type后選擇“SEND_PTP(SFB113)"
圖8:創(chuàng)建發(fā)送功能塊的背景數(shù)據(jù)塊
插入背景DB后,再插入發(fā)送緩沖DB塊,重復(fù)上面的步驟,只是在選擇DB類(lèi)型為“Global DB",并去掉“Symbolic access>
圖9:在接收緩沖區(qū)中接收到的數(shù)據(jù)
定義完發(fā)送緩沖區(qū)后,接下來(lái)就可以對(duì)SEND_PTP賦值參數(shù),賦值參數(shù)后如下圖:
圖10:發(fā)送編程
在上面的編程塊里需要注意的是,在定發(fā)送緩沖區(qū)時(shí)。字符的開(kāi)始地址是從第二個(gè)字節(jié),而不是零字節(jié)開(kāi)始,即是P#DB2.DBX2.0 Byte10 而不是P#DB2.DBX0.0 Byte10,原因是由于S7-1200對(duì)字符串的存放的格式造成的,S7-1200對(duì)字符串的前兩個(gè)字節(jié)的定義第一字節(jié)是最大的字符長(zhǎng)度,第二個(gè)字節(jié)是實(shí)際的字符長(zhǎng)度。接下來(lái)才是存放實(shí)際字符。如下圖:
圖11:String存儲(chǔ)格式
上面就完成了程序的編寫(xiě),對(duì)項(xiàng)目進(jìn)行編譯;右擊PLC_1項(xiàng)目在彈出的菜單里選擇“Complies ALL"選項(xiàng),這樣就對(duì)硬件與軟件進(jìn)行編譯,如下圖:
圖12:編譯項(xiàng)目
編譯且沒(méi)有錯(cuò)誤后就可以下載程序到PLC中,同樣右擊PLC_1項(xiàng)目,在彈出的菜單選擇“Download to Device"。
2)用串口交叉線連接S7-1200的串口與計(jì)算機(jī)的串口,打開(kāi)計(jì)算機(jī)的超級(jí)終端程序,并設(shè)置硬件端口參數(shù)如下圖:
圖13:超級(jí)終端的端口設(shè)置
3)打開(kāi)OB1功能塊在線監(jiān)控程序,在變量監(jiān)控表里強(qiáng)制M0.0為1,觸發(fā)數(shù)據(jù)的發(fā)送,此時(shí)在超級(jí)終端就會(huì)接收到發(fā)送的數(shù)據(jù),如下圖:
圖14:在超級(jí)終端監(jiān)控發(fā)送來(lái)的數(shù)據(jù)
超級(jí)終端發(fā)送數(shù)據(jù)給S7-1200,實(shí)際上是S7-1200是數(shù)據(jù)的接收方,超級(jí)終端是數(shù)據(jù)的發(fā)送方,對(duì)于S7-1200需要編寫(xiě)接收程序;而對(duì)于超級(jí)終端來(lái)說(shuō),只要打開(kāi)超級(jí)終端程序,配置硬件接口參數(shù)與前面S7-1200的端口參數(shù)一致,在界面上輸入發(fā)送內(nèi)容即可。
下面的步驟將具體介紹此功能實(shí)現(xiàn)的步驟:
1)在PLC中編寫(xiě)發(fā)送程序。在項(xiàng)目管理視圖下雙擊“Device"下的程序塊下的Main(OB1),打開(kāi)OB1,在主程序中調(diào)用RCV_PTP功能塊如下圖所示:(注:RCV_PTP在指令庫(kù)下的擴(kuò)展指令中通訊指令下)
圖15:調(diào)用發(fā)送功能塊
要對(duì)RCV_PTP賦值參數(shù),首先需要?jiǎng)?chuàng)建RCV_PTP的背景數(shù)據(jù)塊和發(fā)送緩沖數(shù)據(jù)塊 ,雙擊“Devices"——> “PLC_1"——>“Program Block "——“Add new block",在彈出的串口命名DB_RCV_PTP,選擇DB塊,在Type后選擇“RCV_PTP(SFB114)"
圖16:創(chuàng)建接收功能塊的背景數(shù)據(jù)塊
插入背景DB后,再插入接收緩沖DB塊,重復(fù)上面的步驟,只是在選擇DB類(lèi)型為“Global DB",并去掉“Symbolic access>
圖17:定義接收緩沖區(qū)
定義完接收緩沖區(qū)后,接下來(lái)就可以對(duì)RCV_PTP賦值參數(shù),賦值參數(shù)后如下圖:
圖18:接收編程
在上面的編程塊里需要注意的是,在指接收緩沖區(qū)時(shí)。字符的開(kāi)始地址是從第二個(gè)字節(jié),而不是零字節(jié)開(kāi)始,即是P#DB2.DBX2.0 Byte10 而不是P#DB2.DBX0.0 Byte10,原因是由于S7-1200對(duì)字符串的存放的格式造成的,S7-1200對(duì)字符串的前兩個(gè)字節(jié)的定義第一字節(jié)是最大的字符長(zhǎng)度,第二個(gè)字節(jié)是實(shí)際的字符長(zhǎng)度。接下來(lái)才是存放實(shí)際字符。如下圖:
圖19:String存儲(chǔ)格式
上面就完成了程序的編寫(xiě),對(duì)項(xiàng)目進(jìn)行編譯;右擊PLC_1項(xiàng)目在彈出的菜單里選擇“Complies ALL"選項(xiàng),這樣就對(duì)硬件與軟件進(jìn)行編譯,如下圖:
圖20:編譯項(xiàng)目
編譯且沒(méi)有錯(cuò)誤后就可以下載程序到PLC中,同樣右擊PLC_1項(xiàng)目,在彈出的菜單選擇“Download to Device"。
2)用串口交叉線連接S7-1200的串口與計(jì)算機(jī)的串口,打開(kāi)計(jì)算機(jī)的超級(jí)終端程序,并設(shè)置硬件端口參數(shù)如下圖:
圖21:超級(jí)終端的端口設(shè)置
在桌面上新建文本文件,打開(kāi)此文本文件在里面輸入“gfdcba",如下圖:
3)打開(kāi)變量監(jiān)控表,強(qiáng)制M0.0,使能接收。然后, 在超級(jí)終端里,選擇菜單“Transfer"下的“Send Text file",在打開(kāi)的窗口里找到桌面 上的文本文件。
圖23:通過(guò)超級(jí)終端發(fā)送數(shù)據(jù)
打開(kāi)DB_RCV_BUFF數(shù)據(jù)塊,在線查看接收到的數(shù)據(jù),如下圖:
通過(guò)上面的例子實(shí)現(xiàn)了簡(jiǎn)單的應(yīng)用,在實(shí)際的應(yīng)用過(guò)程中,需要按第三方設(shè)備的協(xié)議進(jìn)行編寫(xiě)S7-1200的程序。