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