從站地址 | 功能碼 | 起始地址(高位) | 起始地址(低位) | 數(shù)量(高位) | 數(shù)量(低位) | 校驗(yàn)碼(低位) | 校驗(yàn)碼(高位) |
---|---|---|---|---|---|---|---|
0x01 | 0x03 | 0x00 | 0x04 | 0x00 | 0x04 | CRCL | CRCH |
基于485總線(xiàn)的modbus讀卡器, YW-630MA, YW-631MA,使用modbus rtu協(xié)議。RS485是一種半雙工總線(xiàn),我們必須了解modbus協(xié)議,這樣在項(xiàng)目中更容易分析問(wèn)題和解決問(wèn)題。
MODBUS協(xié)議支持多種功能碼,不同的功能碼有不同的功能
功能碼 | 功能 |
---|---|
0x01 | 讀線(xiàn)圈狀態(tài) |
0x02 | 讀離散輸入狀態(tài) |
0x03 | 讀保持寄存器 |
0x04 | 讀輸入寄存器 |
0x05 | 寫(xiě)單個(gè)線(xiàn)圈 |
0x06 | 寫(xiě)單個(gè)保持寄存器 |
0x0F | 寫(xiě)多個(gè)線(xiàn)圈 |
0x10 | 寫(xiě)多個(gè)保持寄存器 |
我們主要使用的功能碼是0x03,0x06和0x10
一、功能碼0x03,讀保持寄存器,讀外部寄存器
YW-630MA和YW-631MA用于讀的功碼就是0x03,PLC發(fā)送的數(shù)據(jù)幀:
從站地址 | 功能碼 | 起始地址(高位) | 起始地址(低位) | 數(shù)量(高位) | 數(shù)量(低位) | 校驗(yàn)碼(低位) | 校驗(yàn)碼(高位) |
---|---|---|---|---|---|---|---|
0x01 | 0x03 | 0x00 | 0x04 | 0x00 | 0x04 | CRCL | CRCH |
從站地址:Modbus讀卡器的站地址,YW-630MA和YW-631MA默認(rèn)地址都是1.
功能碼:
0x03,讀寄存器
起始地址:
2個(gè)字節(jié),如40004,實(shí)際地址是4,高位是0,低位是4.
寄存器數(shù)量:
需要讀取的寄存器的數(shù)量,讀卡號(hào)一般2個(gè)字節(jié),有部分需要讀4個(gè)字節(jié),這里4個(gè)字節(jié)為例,所以是4,高位是0,地位是4.
CRC:
CRC校驗(yàn)是標(biāo)準(zhǔn)算法,PLC里自動(dòng)計(jì)算,所以不用考慮。
YW-630MA和YW-631MA收到PLC發(fā)送的03指令后,回復(fù)的數(shù)據(jù)幀:
從站地址 | 功能碼 | 字節(jié)數(shù) | 數(shù)據(jù)1(高位) | 數(shù)據(jù)1(低位) | 數(shù)據(jù)n(高低位) | 校驗(yàn)碼(低位) | 校驗(yàn)碼(高位) |
---|---|---|---|---|---|---|---|
0x01 | 0x03 | 0x08 | 0x93 | 0xAE | ... | CRCL | CRCH |
從站地址:Modbus讀卡器的站地址,YW-630MA和YW-631MA默認(rèn)地址都是1.
功能碼:
0x03,讀寄存器
字節(jié)數(shù):
8個(gè)字節(jié),讀了4個(gè)寄存器,共8個(gè)字節(jié),這里注意是字節(jié)的數(shù)量,不是寄存器的數(shù)量.
數(shù)據(jù):
每個(gè)寄存器先高位,后低位,依次輸出,4個(gè)寄存器共8個(gè)字節(jié)。
CRC:
CRC校驗(yàn)是標(biāo)準(zhǔn)算法,自動(dòng)計(jì)算,所以不用考慮。
二、功能碼0x06,寫(xiě)單個(gè)寄存器
YW-630MA和YW-631MA用于寫(xiě)的功碼就是0x06和0x10,先說(shuō)0x06,PLC發(fā)送的數(shù)據(jù)幀:
從站地址 | 功能碼 | 寄存器地址(高位) | 寄存器地址(低位) | 寄存器值(高位) | 寄存器值(低位) | 校驗(yàn)碼(低位) | 校驗(yàn)碼(高位) |
---|---|---|---|---|---|---|---|
0x01 | 0x06 | 0x00 | 0x04 | 0x00 | 0x00 | CRCL | CRCH |
從站地址:Modbus讀卡器的站地址,YW-630MA和YW-631MA默認(rèn)地址都是1.
功能碼:
0x06,寫(xiě)單個(gè)寄存器
寄存器地址:
2個(gè)字節(jié),如40004,實(shí)際地址是4,高位是0,低位是4.
寄存器值:
2個(gè)字節(jié),一個(gè)寄存器2個(gè)字節(jié),高位在前,低位在后.
CRC:
CRC校驗(yàn)是標(biāo)準(zhǔn)算法,PLC里自動(dòng)計(jì)算,所以不用考慮。
YW-630MA和YW-631MA收到PLC發(fā)送的06指令后,回復(fù)的數(shù)據(jù)幀與收到的數(shù)據(jù)幀完全相同。這里就不解析了
三、功能碼0x10,寫(xiě)多個(gè)寄存器
YW-630MA和YW-631MA支持寫(xiě)多個(gè)寄存器,功能碼0x10,PLC發(fā)送的數(shù)據(jù)幀:
從站地址 | 功能碼 | 寄存器開(kāi)始地址(高位) | 寄存器開(kāi)始地址(低位) | 寄存器個(gè)數(shù)(高位) | 寄存器個(gè)數(shù)(低位) | 要寫(xiě)的字節(jié)數(shù) | 值(要寫(xiě)的n個(gè)字節(jié)) | 校驗(yàn)碼(低位) | 校驗(yàn)碼(高位) |
---|---|---|---|---|---|---|---|---|---|
0x01 | 0x10 | 0x00 | 0x04 | 0x00 | 0x04 | 0x08 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 | CRCL | CRCH |
從站地址:Modbus讀卡器的站地址,YW-630MA和YW-631MA默認(rèn)地址都是1.
功能碼:
0x10,寫(xiě)多個(gè)寄存器
寄存器地址:
2個(gè)字節(jié),如40004,實(shí)際地址是4,高位是0,低位是4.
寄存器數(shù)量:
4個(gè)寄存器,從40004到40007,高位在前00,低位在后04.
字節(jié)數(shù):
8個(gè)字節(jié),4個(gè)寄存器共8個(gè)字節(jié)
值:
對(duì)應(yīng)8個(gè)字節(jié)的值,對(duì)卡號(hào)清零,就寫(xiě)8個(gè)0
CRC:
CRC校驗(yàn)是標(biāo)準(zhǔn)算法,PLC里自動(dòng)計(jì)算,所以不用考慮。
YW-630MA和YW-631MA收到PLC發(fā)送的指0x10指令后,回復(fù)的數(shù)據(jù)幀:
從站地址 | 功能碼 | 寄存器開(kāi)始地址(高位) | 寄存器開(kāi)始地址(低位) | 寄存器個(gè)數(shù)(高位) | 寄存器個(gè)數(shù)(低位) | 校驗(yàn)碼(低位) | 校驗(yàn)碼(高位) |
---|---|---|---|---|---|---|---|
0x01 | 0x10 | 0x00 | 0x04 | 0x00 | 0x04 | CRCL | CRCH |
從站地址:Modbus讀卡器的站地址,YW-630MA和YW-631MA默認(rèn)地址都是1.
功能碼:
0x10,寫(xiě)多個(gè)寄存器
寄存器地址:
2個(gè)字節(jié),如40004,實(shí)際地址是4,高位是0,低位是4.
寄存器數(shù)量:
4個(gè)寄存器,從40004到40007,高位在前00,低位在后04.
CRC:
CRC校驗(yàn)是標(biāo)準(zhǔn)算法,PLC里自動(dòng)計(jì)算,所以不用考慮。
上一篇:如何修改ModbusTCP讀卡器的IP地址
下一篇:Modbus TCP協(xié)議分析
Modbus讀卡器,PLC讀卡器,Modbus RTU, Modbus TCP,modbus接口IC卡讀卡器,Modbus接口RFID讀卡器 微信掃一掃聯(lián)系我們 |