<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)與組態(tài)王通信協(xié)議

          單片機(jī)與組態(tài)王通信協(xié)議

          作者: 時(shí)間:2016-11-27 來(lái)源:網(wǎng)絡(luò) 收藏
          一、通訊參數(shù):

          通訊參數(shù)包括數(shù)據(jù)位,停止位,波特率、校驗(yàn)方式。

          本文引用地址:http://www.ex-cimer.com/article/201611/322101.htm

          數(shù)據(jù)位、停止位、波特率由單片機(jī)決定。組態(tài)王中的設(shè)定和單片機(jī)一致即可。校驗(yàn)方式參照“數(shù)據(jù)傳輸格式”中相關(guān)部分。

          二、數(shù)據(jù)傳輸格式:

          格式1、組態(tài)王發(fā)送地址請(qǐng)求格式:(此時(shí)檢驗(yàn)位為1)

          ENQ

          Sta

          EOT

          CRC

          格式2、單片機(jī)應(yīng)答地址格式:(此時(shí)檢驗(yàn)位為0)

          ACK

          Sta

          ETX

          CRC

          格式3、組態(tài)王讀數(shù)據(jù)請(qǐng)求格式:(此時(shí)檢驗(yàn)位為0)

          ENQ

          R

          DataType

          DataAddr

          DataNum

          EOT

          CRC

          格式4、單片機(jī)應(yīng)答讀數(shù)據(jù)格式(正確):(此時(shí)檢驗(yàn)位為0)

          ACK

          DataLong

          Data….

          ETX

          CRC

          格式5、單片機(jī)應(yīng)答讀數(shù)據(jù)格式(錯(cuò)誤):(此時(shí)檢驗(yàn)位為0)

          NAK

          ErrorCode

          ETX

          CRC

          格式6、組態(tài)王寫(xiě)數(shù)據(jù)請(qǐng)求格式:(此時(shí)檢驗(yàn)位為0)

          ENQ

          W

          DataType

          DataAddr

          Data….

          EOT

          CRC

          格式7、單片機(jī)應(yīng)答寫(xiě)數(shù)據(jù)格式(正確):(此時(shí)檢驗(yàn)位為0)

          ACK

          ErrorCode

          ETX

          CRC

          三、時(shí)序:

          讀數(shù)據(jù):

          組態(tài)王

          單片機(jī)

          第一步:格式1

          第二步:格式2

          第三步:格式3

          第四步:格式4或格式5

          第五步:如果第四步單片機(jī)執(zhí)行格式4,結(jié)束。否則,執(zhí)行格式1。

          第六步:格式2

          第七步:格式3

          第八步:格式4或格式5

          寫(xiě)數(shù)據(jù):

          組態(tài)王

          單片機(jī)

          第一步:格式1

          第二步:格式2

          第三步:格式6

          第四步:格式7

          第五步:如果第四步單片機(jī)執(zhí)行格式7的ErrorCode=0,結(jié)束。否則,執(zhí)行格式1。

          第六步:格式2

          第七步:格式6

          第八步:格式7

          四、協(xié)議說(shuō)明:

          數(shù)據(jù)傳輸:所有數(shù)據(jù)均為16進(jìn)制數(shù)

          ENQ(頭)

          H05

          詢問(wèn)

          請(qǐng)求幀的開(kāi)始代碼

          ACK(頭)

          H06

          確認(rèn)

          ACK應(yīng)答幀的開(kāi)始代碼

          NAK(頭)

          H15

          否認(rèn)

          NAK應(yīng)答幀的開(kāi)始代碼

          EOT(尾)

          H04

          正文的結(jié)束

          請(qǐng)求幀的結(jié)束ASCII代碼

          ETX(尾)

          H03

          結(jié)束正文

          應(yīng)答幀的結(jié)束ASCII代碼

          Sta:: 設(shè)備地址1字節(jié)

          R:讀標(biāo)志1字節(jié)(0x52)

          W:寫(xiě)標(biāo)志1字節(jié)(0x57)

          DataType;需要交換的數(shù)據(jù)類型,1字節(jié)。1,字節(jié);2,字,3,浮點(diǎn)型。

          DataType的值

          含義

          1

          字節(jié)

          2

          3

          浮點(diǎn)數(shù)

          DataNum:要讀取的數(shù)據(jù)的數(shù)量,1字節(jié)。

          DataAddr;為數(shù)據(jù)偏移地址2字節(jié),低字節(jié)在前,高字節(jié)在后

          Data: 實(shí)際傳輸?shù)臄?shù)據(jù),低字節(jié)在前,高字節(jié)在后

          DataLong:單片機(jī)返回Data的字節(jié)數(shù),2字節(jié),低字節(jié)在前,高字節(jié)在后

          CRC: 為從第一個(gè)字節(jié) 至CRC前的所有字節(jié)的異或值,1字節(jié)

          ErrorCode:

          ErrorCode數(shù)值

          含義

          0

          正確應(yīng)答

          1

          數(shù)據(jù)類型錯(cuò)誤

          2

          數(shù)據(jù)范圍超限

          3

          指令無(wú)法識(shí)別,應(yīng)為R或W。

          4

          校驗(yàn)錯(cuò)誤

          以上協(xié)議若有不妥之處,可協(xié)商改動(dòng)。



          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();