背景
某項目使用安川(YASKAWA) V1000變頻器27台,采樣RS485通訊,協議為安川的MEMOBUS。MEMOBUS為標准Modbus的細微變種,變化主要體現在寄存器定義方面,支持有限的功能碼。具體信息可參見產品計數手冊:(株)安川電機 SICP C710606 17A 安川變頻器V1000 技術手冊
需要實現的功能
需要實現的功能是分別向變頻器的保持寄存器280H寫入頻率設定值,然后再分別向變頻器保持寄存器900H寫入0以實現頻率的掉電保持功能。
實現方式
MEMOBUS只支持三個Modbus功能碼:03H 讀取存儲寄存器的內容;08H 回路測;10H 向多個存儲寄存器的寫入。因此,選用10H功能碼組織報文,向串口發送。
測試程序如下:
class Program { static void Main(string[] args) { byte[] read=new byte[1024]; byte[] toSend=new byte[]{0x01 ,0x10 ,0x02 ,0x80 ,0x00 ,0x01 ,0x02 ,0x0B ,0x2C ,0x9C ,0xBD}; SerialPort sp = new SerialPort(); sp.PortName = "COM2"; sp.Open(); while (true) { sp.Write(toSend, 0, toSend.Length); Thread.Sleep(75); sp.Read(read,0,1000); } } }
問題
執行完畢后,27台變頻器不能全部實現掉電保持,成功與不成功的機器不固定,是隨機的。先前的推測是向900H寫0失敗,后來觀察,也可能是向280H寫頻率這一步就失敗了,為什么呢?
探究原因
現場工程人員通過在兩條寫命令之間添加固定時間的延時,發現可以解決問題,前提是時間大於某個固定值。
翻開技術手冊,發現了如下知識點:(圖片是針對PLC與變頻器的通訊,我們把PLC看成PC)

從上圖可見,每一個通訊周期是可以計算的。變頻器有個叫H5-06(通信等待時間)的參數,用來設定變頻器從接收數據到開始發送為止的時間。出廠設定在5ms,范圍在5--65ms。我們使用的變頻器是默認的出廠設定沒有更改。
經過測試,指令信息發送到相應信息返回,基本在120ms的時間;兩條指令信息的發送間隔,在75ms,可以正常執行功能。
那么24位長度是什么意思呢?我正在詢問安川的技術支持還沒有答復,希望有知道的人留言解答。這個時間是怎么計算出的,受何種因素影響,還要再分析。
