
我們的一個(gè)客戶可以在使用SD300伺服驅(qū)動(dòng)過(guò)程中向我們反饋了這樣一個(gè)問(wèn)題,客戶通過(guò)485發(fā)送一串報(bào)文,讓電機(jī)在速度模式下運(yùn)行一定的速度,但是出現(xiàn)了發(fā)送報(bào)文以后,驅(qū)動(dòng)器沒(méi)有響應(yīng)的現(xiàn)象,客戶確定自己發(fā)送的報(bào)文是正確的,然后連著發(fā)送幾次以后,驅(qū)動(dòng)器才正常響應(yīng),電機(jī)跑了起來(lái)。以下為客戶發(fā)送的報(bào)文原文: 
客戶接線圖:  
首先,客戶反映485通訊發(fā)送報(bào)文,驅(qū)動(dòng)有響應(yīng),可以判斷驅(qū)動(dòng)器的485通訊應(yīng)該是不存在問(wèn)題的 ,響應(yīng)時(shí)間有延遲,需要客戶發(fā)送多次才有反映,說(shuō)明接收?qǐng)?bào)文不順暢,初步判斷或者存在干擾的可能。 485通訊接口采用差分方式傳輸信號(hào),,并不需要相對(duì)于某個(gè)參照點(diǎn)來(lái)檢測(cè)信號(hào),系統(tǒng)只需檢測(cè)兩線之間的電位差就可以了。但由于收發(fā)器有一定的共模電壓范圍,RS-485收發(fā)器共模電壓范圍為-7~+12V,只有滿足上述條件,整個(gè)網(wǎng)絡(luò)才能正常工作。當(dāng)網(wǎng)絡(luò)線路中共模電壓超出此范圍時(shí)就會(huì)影響通信的穩(wěn)定可靠,甚至損壞接口。即共模干擾的問(wèn)題,所以485通訊一般使用可以起到屏蔽作用的雙絞線,來(lái)降低干擾。 圖中客戶使用的線并不是標(biāo)準(zhǔn)雙絞線,存在有干擾收發(fā)信號(hào)的因素在,可以建議客戶更換雙絞線來(lái)減低干擾。 另外就是判斷客戶發(fā)送報(bào)文信息格式是否存在問(wèn)題,格式不對(duì)也會(huì)影響發(fā)送信息準(zhǔn)確性。 通訊參數(shù)  使用 RS-485 通訊時(shí),上位控制器為主機(jī),伺服驅(qū)動(dòng)器為從機(jī)。伺服驅(qū)動(dòng)器的通訊地址需由此參數(shù)設(shè)定為不同的通訊站號(hào),站號(hào)地址的設(shè)定范圍為-1~247,默認(rèn)值為-1 表示關(guān)閉通訊功能,設(shè)置值大于 0 表示開(kāi)放通訊功能。在使用通訊功能之前,必須將此參數(shù)設(shè)置為需要的站號(hào),此站號(hào)代表本驅(qū)動(dòng)器在通訊網(wǎng)絡(luò)中的****地址,一組伺服驅(qū)動(dòng)器僅能設(shè)定一站號(hào),若重復(fù)設(shè)定站號(hào)將導(dǎo)致無(wú)法正常通訊。 
通過(guò)此參數(shù)選擇 RS-485 通訊的波特率,不同的值對(duì)應(yīng)不同的波特率,選擇的通訊波特率需與上位控制器的通訊波特率一致,具體的設(shè)定值如下: 參數(shù)意義: 0:波特率為 4800bps 1:波特率為 9600bps 2:波特率為 19200bps 3:波特率為 38400bps 
通過(guò)此參數(shù)選擇 RS-485 通訊的數(shù)據(jù)模式,選擇的數(shù)據(jù)模式需與上位控制器的通訊協(xié)議一致,具體的參數(shù)值意義如下: 0:數(shù)據(jù)位-8 位 校驗(yàn)位-無(wú) 停止位-1 位 1:數(shù)據(jù)位-8 位 校驗(yàn)位-偶校驗(yàn)(Even) 停止位-1 位 2:數(shù)據(jù)位-8 位 校驗(yàn)位-奇校驗(yàn)(Odd) 停止位-1 位 3:數(shù)據(jù)位-8 位 校驗(yàn)位-無(wú) 停止位-2 位 4:數(shù)據(jù)位-8 位 校驗(yàn)位-偶校驗(yàn)(Even) 停止位-2 位 5:數(shù)據(jù)位-8 位 校驗(yàn)位-奇校驗(yàn)(Odd) 停止位-2 位 使用 RS-485 串行通訊時(shí),每臺(tái)伺服驅(qū)動(dòng)器必須預(yù)先在參數(shù) Pr181 上設(shè)定其通訊站號(hào),計(jì)算機(jī)或者上位控制器根據(jù)站號(hào)對(duì)相應(yīng)的伺服驅(qū)動(dòng)器實(shí)施控制;波特率需要參考上位控制器的通訊方式來(lái)設(shè)定參數(shù) Pr182;MODBUS 通訊協(xié)議暫時(shí)只支持 RTU(Remote Terminal Unit)模式,使用者可根據(jù)上位控制器的要求在參數(shù)Pr183 上設(shè)定所需的通訊數(shù)據(jù)模式。以上參數(shù)設(shè)置完成后,需要執(zhí)行參數(shù)保存操作并且斷電重啟驅(qū)動(dòng)器后才能生效。 RTU 模式: MODBUS 應(yīng)用層協(xié)議定義了一個(gè)簡(jiǎn)單的協(xié)議數(shù)據(jù)單元(PDU),如下圖所示,該協(xié)議數(shù)據(jù)單元不依賴于底層的通訊層。 
MODBUS 以地址場(chǎng)作為幀的開(kāi)始,地址場(chǎng)的內(nèi)容為有效地址值(0~247),主機(jī)在請(qǐng)求信息的地址場(chǎng)中放置從機(jī)地址值以確定該請(qǐng)求信息的接收者,符合 條件的從機(jī)接收到信息并完成相應(yīng)處理之后,在響應(yīng)信息的地址場(chǎng)中放置自身 的地址值,使主機(jī)知道是何從機(jī)發(fā)送的響應(yīng)。地址場(chǎng)之后是功能碼,它指示從機(jī)將完成何種操作。功能碼之后是數(shù)據(jù)場(chǎng), 數(shù)據(jù)場(chǎng)包含請(qǐng)求和響應(yīng)的參數(shù),根據(jù)功能碼的不同,數(shù)據(jù)場(chǎng)的格式、長(zhǎng)度以及含義也有所不同。校驗(yàn)碼是用來(lái)驗(yàn)證信息的有效性,保證信息傳送的可靠性。RTU 模式下是使用的 16 位 CRC(Cyclical Redundancy Check)校驗(yàn)。 RTU 模式下,信息幀中的每 8 位一個(gè)字節(jié)的數(shù)據(jù)按 2 個(gè) 4 位的 16 進(jìn)制碼發(fā)送,例如:1byte 數(shù)據(jù) 64H。 (以下為天書(shū),有興趣的可以自行了解一下哈) RTU 模式是面向比特的傳輸模式,以不少于 3.5 個(gè)字符的空閑時(shí)間為幀的開(kāi)始,隨后發(fā)送的是地址場(chǎng),網(wǎng)上設(shè)備監(jiān)視通訊總線,當(dāng)連續(xù)監(jiān)視到 3.5 個(gè)字符的空閑時(shí)間后可以接收地址場(chǎng)信息,當(dāng)判斷接收到的地址場(chǎng)信息為有效時(shí),繼續(xù)接收其后信息,然后根據(jù)功能碼及附加信息進(jìn)行相應(yīng)操作,若要求有響應(yīng)信息則封裝響應(yīng)信息并發(fā)送給主機(jī)。最后發(fā)送的字節(jié)大約經(jīng)過(guò) 3.5 個(gè)字符的空閑時(shí)間后表示信息幀的結(jié)束,新的信息幀可以發(fā)送。RTU 模式靠模擬的同步信息來(lái)保持幀同步,整個(gè)信息幀必須作為連續(xù)數(shù)據(jù)流一次傳送完。如果一個(gè)連續(xù)數(shù)據(jù)流在傳送過(guò)程中,接收設(shè)備檢測(cè)到有 1.5 個(gè)以上字符間隔時(shí)間,則認(rèn)為一幀數(shù)據(jù)已經(jīng)接收完,并把下一個(gè)接收字符作為下一幀的開(kāi)始。 在正常情況下,信息幀之間的間隔時(shí)間至少有 3.5 個(gè)字符,即一幀數(shù)據(jù)發(fā)送完,至少要經(jīng)過(guò) 3.5 個(gè)字符的空閑時(shí)間才能發(fā)送下一幀數(shù)據(jù)。 
字符結(jié)構(gòu): 
由客戶發(fā)送的報(bào)文可以判斷出格式是沒(méi)有問(wèn)題的 。但是客戶需要以速度模式發(fā)送 那么發(fā)送的信息即為速度信息: 
客戶自己判斷出寫(xiě)的代碼里面,雖然發(fā)送的指令是對(duì)的,但是線程間的切換導(dǎo)致指令發(fā)送分段發(fā)送,導(dǎo)致驅(qū)動(dòng)器接收的報(bào)文不完整。所以不響應(yīng)了。其實(shí)還是指令設(shè)置的問(wèn)題。 
|