freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

modbus協(xié)議概述(編輯修改稿)

2024-12-13 12:32 本頁面
 

【文章內(nèi)容簡介】 生(稱作異議回應(yīng))。對正?;貞?yīng),從設(shè)備僅回應(yīng)相應(yīng)的功能代碼。對異議回應(yīng),從設(shè)備返回一等同于正常代碼的代碼,但最重要的位 置為邏輯 1。 例如:一從主設(shè)備發(fā)往從設(shè)備的消息要求讀一組保持寄存器,將產(chǎn)生如下功能代碼: 0 0 0 0 0 0 1 1 (十六進(jìn)制 03H) 對正?;貞?yīng),從設(shè)備僅回應(yīng)同樣的功能代碼。對異議回應(yīng),它返回: 1 0 0 0 0 0 1 1 (十六進(jìn)制 83H) 除功能代碼因異議錯誤作了修改外,從設(shè)備將一獨(dú)特的代碼放到回應(yīng)消息的數(shù)據(jù)域中,這能告訴主設(shè)備發(fā)生了什么錯誤。 主設(shè)備應(yīng)用程序得到異議的回應(yīng)后,典型的處理過程是重發(fā)消息,或者診斷發(fā)給從設(shè)備的消息并報告給操作員。 數(shù)據(jù)域 數(shù)據(jù)域是由兩個十六 進(jìn)制數(shù)集合構(gòu)成的,范圍 00...FF。根據(jù)網(wǎng)絡(luò)傳輸模式,這可以是由一對 ASCII 字符組成或由一 RTU 字符組成。 從主設(shè)備發(fā)給從設(shè)備消息的數(shù)據(jù)域包含附加的信息:從設(shè)備必須用于進(jìn)行執(zhí)行由功能代碼所定義的所為。這包括了象不連續(xù)的寄存器地址,要處理項(xiàng)的數(shù)目,域中實(shí)際數(shù)據(jù)字節(jié)數(shù)。 例如,如果主設(shè)備需要從設(shè)備讀取一組保持寄存器(功能代碼 03),數(shù)據(jù)域指定了起始寄存器以及要讀的寄存器數(shù)量。如果主設(shè)備寫一組從設(shè)備的寄存器(功能代碼 10十六進(jìn)制),數(shù)據(jù)域則指明了要寫的起始寄存器以及要寫的寄存器數(shù)量,數(shù)據(jù)域的數(shù)據(jù)字節(jié)數(shù),要寫入 寄存器的數(shù)據(jù)。 如果沒有錯誤發(fā)生,從從設(shè)備返回的數(shù)據(jù)域包含請求的數(shù)據(jù)。如果有錯誤發(fā)生,此域包含一異議代碼,主設(shè)備應(yīng)用程序可以用來判斷采取下一步行動。 在某種消息中數(shù)據(jù)域可以是不存在的( 0 長度)。例如,主設(shè)備要求從設(shè)備回應(yīng)通信事件記錄(功能代碼 0B 十六進(jìn)制),從設(shè)備不需任何附加的信息。 錯誤檢測域 標(biāo)準(zhǔn)的 Modbus 網(wǎng)絡(luò)有兩種錯誤檢測方法。錯誤檢測域的內(nèi)容視所選的檢測方法而定。 ASCII 當(dāng)選用 ASCII 模式作字符幀,錯誤檢測域包含兩個 ASCII 字符。這是使用 LRC(縱向冗長檢測)方法對消息內(nèi) 容計(jì)算得出的,不包括開始的冒號符及回車換行符。 LRC 字符附加在回車換行符前面。 RTU 當(dāng)選用 RTU 模式作字符幀,錯誤檢測域包含一 16Bits 值 (用兩個 8 位的字符來實(shí)現(xiàn) )。錯誤檢測域的內(nèi)容是通過對消息內(nèi)容進(jìn)行循環(huán)冗長檢測方法得出的。 CRC域附加在消息的最后,添加時先是低字節(jié)然后是高字節(jié)。故 CRC 的高位字節(jié)是發(fā)送消息的最后一個字節(jié)。 字符的連續(xù)傳輸 當(dāng)消息在標(biāo)準(zhǔn)的 Modbus 系列網(wǎng)絡(luò)傳輸時,每個字符或字節(jié)以如下方式發(fā)送(從左到右): 最低有效位 ...最高有效位 使用 ASCII 字符幀時,位的序 列是: 有奇偶校驗(yàn) 啟始位 1 2 3 4 5 6 7 奇偶位 停止位 無奇偶校驗(yàn) 啟始位 1 2 3 4 5 6 7 停止位 停止位 圖 4. 位順序( ASCII) 使用 RTU 字符幀時,位的序列是: 有奇偶校驗(yàn) 啟始位 1 2 3 4 5 6 7 8 奇偶位 停止位 無奇偶校驗(yàn) 啟始位 1 2 3 4 5 6 7 8 停止位 停止位 圖 4. 位順序( RTU) 四、錯誤檢測方法 標(biāo)準(zhǔn)的 Modbus 串行網(wǎng)絡(luò)采用兩種錯誤檢測方法。奇偶校驗(yàn)對每個字符都可用,幀檢測( LRC 或 CRC)應(yīng)用于整個消息。它們都是在消息發(fā)送前由主設(shè)備產(chǎn)生的,從設(shè)備在接收過程中檢測每個字符和整個消息幀。 用戶要給主設(shè)備配置一預(yù)先定義的超時時間間隔,這個時間間隔要足夠長,以使任何從設(shè)備都能作為正常反應(yīng)。如果從設(shè)備測到一傳輸錯誤,消息將不會接收,也不會向主設(shè)備作出回應(yīng)。這樣超時事件將觸發(fā)主設(shè)備來處理 錯誤。發(fā)往不存在的從設(shè)備的地址也會產(chǎn)生超時。 奇偶校驗(yàn) 用戶可以配置控制器是奇或偶校驗(yàn),或無校驗(yàn)。這將決定了每個字符中的奇偶校驗(yàn)位是如何設(shè)置的。 如果指定了奇或偶校驗(yàn),“ 1”的位數(shù)將算到每個字符的位數(shù)中( ASCII 模式 7個數(shù)據(jù)位, RTU中 8 個數(shù)據(jù)位)。例如 RTU 字符幀中包含以下 8 個數(shù)據(jù)位: 1 1 0 0 0 1 0 1 整個“ 1”的數(shù)目是 4 個。如果便用了偶校驗(yàn),幀的奇偶校驗(yàn)位將是 0,便得整個“ 1”的個數(shù)仍是 4 個。如果便用了奇校驗(yàn),幀的奇偶校驗(yàn)位將是 1,便得整個“ 1”的個數(shù)是 5 個。 如果 沒有指定奇偶校驗(yàn)位,傳輸時就沒有校驗(yàn)位,也不進(jìn)行校驗(yàn)檢測。代替一附加的停止位填充至要傳輸?shù)淖址麕小? LRC 檢測 使用 ASCII 模式,消息包括了一基于 LRC方法的錯誤檢測域。 LRC域檢測了消息域中除開始的冒號及結(jié)束的回車換行號外的內(nèi)容。 LRC 域是一個包含一個 8 位二進(jìn)制值的字節(jié)。 LRC 值由傳輸設(shè)備來計(jì)算并放到消息幀中,接收設(shè)備在接收消息的過程中計(jì)算 LRC,并將它和接收到消息中 LRC 域中的值比較,如果兩值不等,說明有錯誤。 LRC 方法是將消息中的 8Bit 的字節(jié)連續(xù)累加,丟棄了進(jìn)位。 LRC 簡單函數(shù)如下: static unsigned char LRC(auchMsg,usDataLen) unsigned char *auchMsg 。 /* 要進(jìn)行計(jì)算的消息 */ unsigned short usDataLen 。 /* LRC 要處理的字節(jié)的數(shù)量 */ { unsigned char uchLRC = 0 。 /* LRC 字節(jié)初始化 */ while (usDataLen) /* 傳送消息 */ uchLRC += *auchMsg++ 。 /* 累加 */ return ((unsigned char)(((char_uchLRC))) 。 } CRC 檢測 使用 RTU 模式,消息包括了一基于 CRC 方法的錯誤檢測域。 CRC 域檢測了整個消息的內(nèi)容。 CRC 域是兩個字節(jié),包含一 16 位的二進(jìn)制值。它由傳輸設(shè)備計(jì)算后加入到消息中。接收設(shè)備重新計(jì)算收到消息的 CRC,并與接收到的 CRC 域中的值比較,如果兩值不同,則有誤。 CRC 是先調(diào)入一值是全“ 1”的 16 位寄存器,然后調(diào)用一過程將消息中連續(xù)的 8 位字節(jié)各當(dāng)前寄存器中的值進(jìn)行處理。僅每個字符中的 8Bit 數(shù)據(jù)對 CRC 有效,起始位和停止位以 及奇偶校驗(yàn)位均無效。 CRC 產(chǎn)生過程中,每個 8 位字符都單獨(dú)和寄存器內(nèi)容相或( OR),結(jié)果向最低有效位方向移動,最高有效位以 0 填充。 LSB 被提取出來檢測,如果 LSB 為 1,寄存器單獨(dú)和預(yù)置的值或一下,如果 LSB 為 0,則不進(jìn)行。整個過程要重復(fù) 8 次。在最后一位(第 8 位)完成后,下一個 8 位字節(jié)又單獨(dú)和寄存器的當(dāng)前值相或。最終寄存器中的值,是消息中所有的字節(jié)都執(zhí)行之后的 CRC 值。 CRC 添加到消息中時,低字節(jié)先加入,然后高字節(jié)。 CRC 簡單函數(shù)如下: unsigned short CRC16(puchMsg, usDataLen) unsigned char *puchMsg 。 /* 要進(jìn)行 CRC 校驗(yàn)的消息 */ unsigned short usDataLen 。 /* 消息中字節(jié)數(shù) */ { unsigned char uchCRCHi = 0xFF 。 /* 高 CRC 字節(jié)初始化 */ unsigned char uchCRCLo = 0xFF 。 /* 低 CRC 字節(jié)初始化 */ unsigned uIndex 。 /* CRC 循環(huán)中的索引 */ while (usDataLen) /* 傳輸消息緩沖區(qū) */ { uIndex = uchCRCHi ^ *puchMsgg++ 。 /* 計(jì)算 CRC */ uchCRCHi = uchCRCLo ^ auchCRCHi[uIndex} 。 uchCRCLo = auchCRCLo][uIndex] 。 } return (uchCRCHi 8 | uchCRCLo) 。 } /* CRC 高位字節(jié)值表 */ static unsigned char auchCRCHi[] = { 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x8
點(diǎn)擊復(fù)制文檔內(nèi)容
法律信息相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1