GE IS215UCVEH2AE VMIVME-017614-132 350-017614-132D RTU設(shè)備首先傳輸
GE IS215UCVEH2AE 用于計(jì)算CRC-16的偽代碼如下所示。
要發(fā)送的數(shù)據(jù)的預(yù)設(shè)字節(jié)數(shù)。
GE IS215UCVEH2AE 將16位余數(shù)(CRC)寄存器初始化為全1。
將第一個(gè)8位數(shù)據(jù)字節(jié)與16位CRC寄存器的高位字節(jié)進(jìn)行異或。這個(gè)
結(jié)果是當(dāng)前的CRC。
INIT SHIFT:將移位計(jì)數(shù)器初始化為0。
SHIFT:將當(dāng)前CRC寄存器向右移動(dòng)1位。
增加班次計(jì)數(shù)。


向右移位的位(標(biāo)志)是1還是0?
如果是1,則將生成多項(xiàng)式與當(dāng)前CRC進(jìn)行異或。
如果是0,請(qǐng)繼續(xù)。
移位計(jì)數(shù)器等于8嗎?
如果否,返回SHIFT。
如果是,則增加字節(jié)計(jì)數(shù)。
字節(jié)計(jì)數(shù)是否大于數(shù)據(jù)長(zhǎng)度?
如果否,將下一個(gè)8位數(shù)據(jù)字節(jié)與當(dāng)前CRC進(jìn)行異或,然后轉(zhuǎn)到INIT SHIFT。
如果是,將當(dāng)前CRC添加到數(shù)據(jù)消息的末尾,以便傳輸和退出。
當(dāng)發(fā)送消息時(shí),接收器對(duì)所有數(shù)據(jù)位執(zhí)行相同的CRC操作
以及發(fā)送的CRC。如果信息接收正確,則得到的余數(shù)(接收器
CRC)為0。
CRC-16計(jì)算示例
GE IS215UCVEH2AE RTU設(shè)備首先傳輸(寄存器或離散數(shù)據(jù)的)最右邊的字節(jié)。的第一位
發(fā)送的CRC-16是最高有效位。因此,在該示例中,CRC多項(xiàng)式的MSB為
極右翼。X16項(xiàng)被丟棄,因?yàn)樗挥绊懮蹋ū粊G棄),并且
而不是剩余部分(CRC字符)。因此生成多項(xiàng)式為1010 0000 0000
0001.余數(shù)被初始化為所有的1。
查詢(xún):
? 不允許0的地址,因?yàn)檫@不能是廣播請(qǐng)求。
? 功能代碼為01。
? 起始點(diǎn)號(hào)長(zhǎng)度為兩個(gè)字節(jié),可以是小于最高值的任何值
連接的CPU中可用的輸出點(diǎn)數(shù)。起點(diǎn)編號(hào)等于1
小于在對(duì)此請(qǐng)求的正常響應(yīng)中返回的第一個(gè)輸出點(diǎn)的數(shù)量。
? 點(diǎn)數(shù)值的長(zhǎng)度為兩個(gè)字節(jié)。它指定輸出點(diǎn)數(shù)
在正常響應(yīng)中返回。起點(diǎn)值與點(diǎn)數(shù)之和
值必須小于或等于附件中可用的最高輸出點(diǎn)號(hào)
CPU。起點(diǎn)編號(hào)和點(diǎn)數(shù)字段的高位字節(jié)作為
第一個(gè)字節(jié)。低位字節(jié)是每個(gè)字段中的第二個(gè)字節(jié)。
回應(yīng):
? 字節(jié)計(jì)數(shù)是從1到256(0=256)的二進(jìn)制數(shù)。它是正常情況下的字節(jié)數(shù)
在字節(jié)計(jì)數(shù)之后和錯(cuò)誤檢查之前的響應(yīng)。
? 正常響應(yīng)的數(shù)據(jù)字段是打包的輸出狀態(tài)數(shù)據(jù)。每個(gè)字節(jié)包含八個(gè)
輸出點(diǎn)值。第一個(gè)字節(jié)的最低有效位(LSB)包含輸出的值
其數(shù)量等于起點(diǎn)數(shù)量加一的點(diǎn)。輸出的值
點(diǎn)按數(shù)字排序,從數(shù)據(jù)字段第一個(gè)字節(jié)的LSB開(kāi)始,到結(jié)束
具有數(shù)據(jù)字段的最后一個(gè)字節(jié)的最高有效位(MSB)。如果點(diǎn)數(shù)不是
8的倍數(shù),最后一個(gè)數(shù)據(jù)字節(jié)在其最高階比特的一到七個(gè)中包含零。