欢迎来到天天文库
浏览记录
ID:40493219
大小:22.00 KB
页数:5页
时间:2019-08-03
《modbus rtu说明》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、modbus?關於modbusRTU的使用說明先前留下了一些關於modbus的文章卻好像沒有留下一點關於modbus基礎的介紹modbus是一種工業控制常用的通訊協定,他定義了一個標準的通訊封包格式,而非一種通訊技術,最早modbus是使用於PLC上,漸漸的許多工控設備也開始採用modbus作為一種標準的通訊格式。而modbus也產生出了許多不同的形態,如modbusRTU為最原始的以二進制方式表示也有使用ASCII的modbusASCII,以及modbusTCP/IP等等型態,其不同的差異只有在於部分的格式不同(ASCII採用字元編碼方
2、式傳送)在低階的硬體控制中,最常使用的莫過於modbusRTU這種以二進制方式傳送的通訊是最簡單不過的,在RS485(TTL485)中經常可以看到modbus的通訊協定其原因為modbus本身也具有master與slave的架構,在一個並聯(RS485)的通訊環境中,有一節點(設備)為master,由該master向其他slave通訊,進行通訊、控制等。modbus提供許多操作功能碼,其詳細的定義了這些功能的作用以及格式這邊所提到,定義,指的只是一個規則,我們在寫程式或在使用時就必須遵照這些規則進行,就等於是在實行標準的modbus協議。
3、以下是我簡單介紹的modbusRTU的使用方式1.讀/寫位址表(Mappingtable):在使用modbus協定中,要讀取或寫入設備,通常必須先知道欲控制或讀取設備之記憶體暫存器位置表,不同的產品、設備,都會有自己的位址表,基本上是不會相同的,標準中每個地址的長度以1word表示,每個位址所代表的資料量為1word等於1address=1worddata但在實際用途上,經常性的資料範圍會有大於1word的時候,所以有些人則會連續定義兩個2address做為1個資料的內容存放空間,所以,在使用modbusRTU前,必須先了解該設備的位址表
4、,才有辦法讀取或控制自己要的內容2.Slaveaddress/SlaveID設備端ID當要讀寫slave時,必須先知道該設備的address/ID,至於這個ID要從何得知?通常就要問負責該設備的人,或者設計者,或者原廠公司,或者熟悉他的人3.常用的modbus功能碼(functioncode)-0x030x03功能碼(functioncode)所定義的功能為讀取多個暫存器,用來讀取一連續位址的資料。master讀取格式:設備ID(slaveaddress/ID)+0x03+讀取起始位置(word)+讀取的數量(word)+CRC16sla
5、ve回復格式:設備ID(slaveaddress/ID+0x03+回復資料的byte數+資料1(word)+...+資料n(word)+CRC16例如:(以下所出現之命令數字均已16進制表示)master送出:050301000003+CRC16slave回應:05030600A100B200C3+CRC16這樣就或許到暫存器位址中0100,0101,0102的資料分別為0100=00A10101=00B20102=00C34.常用的modbus功能碼(functioncode)-0x060x06的作用,在於寫入單一個暫存器資料,因一次只
6、能寫入一筆資料,依照modbus標準的定義來看,一次只能寫入1word的資料量。master寫入格式:設備ID(slaveaddress/ID)+0x06+寫入暫存器位置(word)+寫入資料(word)+CRC16slave回復格式:設備ID(slaveaddress/ID)+0x06+寫入暫存器位置(word)+寫入資料(word)+CRC160x06寫入與回應是相同的時候,代表寫入成功,如寫入失敗時,則會有另外一種格式,於後面介紹寫入範例:master送出:050602059999+CRC16slave回應:050602059999
7、+CRC16經過上面的命令後,slave端暫存器位置0205資料寫入變更為0x99995.常用的modbus功能碼(functioncode)-0x100x10是在執行連續寫入多個暫存器用,其發送命令類似0x03功能的回覆命令master寫入格式:設備ID(slaveaddress/ID)+0x10+寫入暫存器起始位置(word)+寫入的數量(word)+資料數量(byte)+第1筆資料(word)+...+第n筆資料(word)+CRC16slave回復格式:設備ID(slaveaddress/ID)+0x10+寫入暫存器起始位置(wo
8、rd)+寫入的數量(word)+CRC16這個命令通常剛接觸的人都會霧煞煞,簡單說就是指定一個寫入的起始位置,然後預計寫入多少個暫存器然後再加上一個資料數量,這個資料數量就是後面所帶的資料量有
此文档下载收益归作者所有