一、通訊基礎(chǔ)知識(shí) 1.1什么是通訊 要搞清楚RS485通訊我們要先搞明白什么是通訊,通訊就是兩個(gè)設(shè)備之間0、1代碼的傳遞,0-低電平1-高電平。 舉例:A設(shè)備向B設(shè)備傳遞數(shù)據(jù),首先A設(shè)備和B設(shè)備之間必須通過(guò)電纜連接(硬件連接)。如果A設(shè)備要向B設(shè)備發(fā)送101010這樣一串代碼,那么A設(shè)備就要在他的通訊端口產(chǎn)生如下圖所示的高低電平的組合,通過(guò)電纜這個(gè)介質(zhì)B設(shè)備的通訊端口就會(huì)接收到A設(shè)備發(fā)出高低電平的組合,同時(shí)就會(huì)將接收到的高低電平組合翻譯成101010,這就完成了A設(shè)備向B設(shè)備數(shù)據(jù)的傳遞,B設(shè)備向A設(shè)備數(shù)據(jù)傳遞也是同樣的道理。 與通訊有個(gè)的概念。 【全雙工與半雙工】全雙工是通訊端口在發(fā)送數(shù)據(jù)的同時(shí)可以接收數(shù)據(jù)。而半雙工指的是同一時(shí)刻通訊端口要么只能發(fā)送數(shù)據(jù),要么只能接收數(shù)據(jù)。舉例:全雙工-打電話時(shí)雙方都可以說(shuō)。半雙工:對(duì)講機(jī)-同一時(shí)刻只能一個(gè)人說(shuō)另一個(gè)人聽(tīng)。 【通訊速率】通訊速率也叫通訊波特率是1S內(nèi)通訊端口發(fā)送01代碼(或者說(shuō)是高低電平)的數(shù)量。舉例:我們說(shuō)通訊速率是9.6kbps,就表示通訊端口每秒發(fā)送9600個(gè)bit的數(shù)據(jù),也就是每秒可以產(chǎn)生9600個(gè)高低電平(注意:是高低電平總共加起來(lái)9600個(gè))。 【主從通訊】是在一個(gè)通訊網(wǎng)絡(luò)中一個(gè)站點(diǎn)是主站,其他站點(diǎn)作為從站。主站和從站之間可以直接進(jìn)行數(shù)據(jù)的傳遞,但是從站與從站之間不能直接進(jìn)行數(shù)據(jù)的傳遞。如果需要從站之間交換數(shù)據(jù)也必須要通過(guò)主站進(jìn)行轉(zhuǎn)發(fā)。如下圖所示 1.2、485通訊定義 明白了通訊的基本概念后再理解485通訊就相對(duì)容易了,下面我們從通訊介質(zhì)、通訊方式、通訊類型、物理層四個(gè)方面來(lái)介紹485通訊。 通訊介質(zhì):屏蔽雙絞線,也就是我們通常用的帶有屏蔽層的兩心電纜如下圖所示。 通訊方式:半雙工 通訊類型:主從通訊 物理層:9針接口,需要注意的是通常情況下485通訊的9針接口,只需要將兩芯電纜接 到3號(hào)腳和8號(hào)腳上,3是信號(hào)“﹢”,8是信號(hào)“-”。如下圖
1.3通訊協(xié)議 問(wèn):你這個(gè)通訊用的是什么協(xié)議? 答:我這個(gè)是485協(xié)議、我這個(gè)是232協(xié)議”?。?/span> 這就是典型的把通訊協(xié)議和通訊物理層搞混了,舉例:還是打電話,電話是物理層,通話的人之間說(shuō)的語(yǔ)言就是協(xié)議。同一個(gè)物理層可以傳輸不同的協(xié)議,就像電話兩邊的人既可以說(shuō)中文也可以說(shuō)英語(yǔ)。中文是一種協(xié)議,英文是另一種協(xié)議。485就好比是電話是物理層,在485這個(gè)物理層可以傳輸modbus協(xié)議,也可以傳送Profibus協(xié)議,這就是通訊協(xié)議和物理層之間的關(guān)系。 二、數(shù)據(jù)的發(fā)送 說(shuō)到通訊大家都覺(jué)得很難,覺(jué)得學(xué)起來(lái)沒(méi)有頭緒。其實(shí)所有學(xué)習(xí)通訊的人,剛開(kāi)始的時(shí)候也是這樣的感覺(jué),資料找了一大堆都是理論,看來(lái)看去總感覺(jué)無(wú)從下手,最后終于搞懂后才發(fā)現(xiàn),其實(shí)學(xué)不懂的主要原因并不應(yīng)該用難來(lái)形容,而是這個(gè)東西它太復(fù)雜了,想要一次全部看懂消化是不太可能的事情,只有分步驟將這個(gè)復(fù)雜的知識(shí)一點(diǎn)點(diǎn)的進(jìn)行拆分,循序漸進(jìn)的進(jìn)行理解,才能最終將這個(gè)復(fù)雜的知識(shí)掌握。 這里為了好理解咱們先動(dòng)手做,在做的過(guò)程中逐步的理解理論。 2.1實(shí)驗(yàn)工具 實(shí)例中所用到的學(xué)習(xí)工具,看完后大家可以找到這些東西自己親手做一遍。相信當(dāng)你從電腦上看到PLC發(fā)出的數(shù)據(jù)時(shí)你會(huì)由衷的露出喜悅的笑容,不信試試·········· 工具①、S7-200CPU 1個(gè)(型號(hào)無(wú)所謂,最好有兩個(gè)通訊口) 工具②、串口調(diào)試軟件(可以從網(wǎng)上任意下載一個(gè)使用,不一定是下圖所示) 工具③、Usb轉(zhuǎn)485轉(zhuǎn)換接頭1個(gè)(RS232轉(zhuǎn)RS485接頭也可) 4. 工具④、9針接頭公頭1個(gè) 工具⑤、兩芯電纜 2.2、實(shí)驗(yàn)流程 實(shí)驗(yàn)?zāi)康?/span>:從PLC向電腦發(fā)送一個(gè)字節(jié)的數(shù)據(jù)。 實(shí)驗(yàn)操作:用S7-200PLC向電腦發(fā)送一個(gè)字節(jié)的數(shù)據(jù),通過(guò)串口調(diào)試軟件接收。現(xiàn)在的電腦一般沒(méi)有RS485通訊接口,要使用Usb轉(zhuǎn)485轉(zhuǎn)換接頭才能保障電腦可以接收到來(lái)自PLC的數(shù)據(jù),接線是要注意9針頭的3針腳接Usb轉(zhuǎn)485接頭的信號(hào)“+”,8針腳接Usb轉(zhuǎn)485接頭的信號(hào)“-” 2.3自由口模式 這里先介紹一下S7-200的自由口模式,S7-200的默認(rèn)通訊方式是PPI通訊,不能自由的收發(fā)數(shù)據(jù),想自由收發(fā)數(shù)據(jù)就必須將S7-200的通訊接口設(shè)置為自由口模式??刂芐7-200自由口的是特殊位寄存器SMB30和SMB130。其中SMB30是控制CPU通訊口0的,SMB130是控制通訊口1的,如果只有一個(gè)通訊端口就只能使用SMB30這個(gè)特殊位寄存器了。下面我們來(lái)看看SMB30這8個(gè)位,分別表示什么含義。如下圖所示。 ①、0 -1位: 協(xié)議選擇 mm:00 = 點(diǎn)到點(diǎn)接口協(xié)議(PPI/從站模式) 01 = 自由口協(xié)議 10 = PPI/主站模式 11 = 保留(缺省是PPI/從站模式) ②、2-4位:自由口波特率設(shè)置 bbb:000= 38400bps 001 = 19200bps 010 = 9600bps 011 = 4800bps 100 = 2400bps 101 = 1200bps 110 = 115200bps 111 = 57600bps ③、5位:每個(gè)字符的數(shù)據(jù)位 d:0 = 8位/字符。1 = 7位/字符
④、6-7位:效驗(yàn)選擇 pp:00 = 不效驗(yàn) 01 = 偶效驗(yàn) 10 = 不效驗(yàn) 11 = 奇效驗(yàn) 【理論補(bǔ)充】在通訊的過(guò)程中每次發(fā)送與接收的最小單位是字符而不是位,1個(gè)字符包括1個(gè)起始位表示字符的開(kāi)始,1個(gè)停止位表示字符的結(jié)束,一個(gè)奇偶效驗(yàn)位用于驗(yàn)證字符錯(cuò)對(duì),和8個(gè)或者7個(gè)數(shù)據(jù)位用于傳遞信息。奇偶效驗(yàn)位可有可無(wú),數(shù)據(jù)位通常情況下是8個(gè)位也就是1個(gè)字節(jié),因此一個(gè)字符包含奇偶效驗(yàn)位通常是11個(gè)位,不包含奇偶效驗(yàn)位則是10個(gè)位。 如果我們?cè)赟7-200CPU的通訊端口0使用自由口模式,通訊速率為9600bps傳輸?shù)淖址灰媾夹?yàn)位,那么就必須將SMB30中的數(shù)據(jù)配置成00001001換算成16進(jìn)制就是16#9 2.4程序編寫 在編寫程序之前,先要掌握S7-200發(fā)送指令的使用。 XMT發(fā)送指令有兩個(gè)管腳,TBL和PORT。 【PORT】通訊端口編號(hào),如果用0端口則寫0,如果用1端口則寫1.
【TBL】定義發(fā)送緩沖區(qū)的起始地址和緩沖區(qū)的大小(注意是起始地址和緩沖區(qū)的大小兩個(gè)參數(shù))。 舉例:如果TBL中寫VB100并且VB100中存放1,那么發(fā)送緩沖區(qū)是VB101,發(fā)送數(shù)據(jù)時(shí)將VB101中的數(shù)據(jù)發(fā)送出去。如果VB100中存放2,那么發(fā)送緩沖區(qū)為VB101和VB102,發(fā)送數(shù)據(jù)時(shí)將VB101、VB102兩個(gè)字節(jié)的數(shù)據(jù)發(fā)送出去。 程序如下圖所示
上圖所示的程序是一個(gè)最簡(jiǎn)單的發(fā)送程序,先用SMB30將通訊口0定義為自由口,通訊速率9600bps,然后定義VB101為發(fā)送緩沖區(qū)(因?yàn)閂B100中存放的是1)。通過(guò)SM0.5將VB101中的16進(jìn)制的CC以1秒鐘為單位發(fā)送給電腦。最后在電腦端將會(huì)以1秒為單位接收到PLC發(fā)送的字符CC。如下圖所示
|
|