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