歡迎來到海藍(lán)智能科技有限公司!
三菱plc中的LRC校驗(yàn)碼程序的編寫,在PLC與設(shè)備進(jìn)行通訊時(shí)采用MODBUS協(xié)議時(shí),一般會(huì)有兩種數(shù)據(jù)模式,1是RTU模式,2是ASCII碼模式。RTU的數(shù)據(jù)傳輸采用CRC校驗(yàn),而ASCII碼則采用LRC校驗(yàn)值。LRC值校驗(yàn)涵蓋從從機(jī)地址到數(shù)據(jù)的信息部分,校驗(yàn)和等于所有參與校驗(yàn)數(shù)據(jù)的字符和的補(bǔ)碼。
我們先說下具體的校驗(yàn)碼怎么計(jì)算,然后說三菱plc的LRC校驗(yàn)碼程序的編寫。
例子1
采用ASCII碼模式控制變頻器指令:01 03 21 00 00 01,這條指令中01一般是站號(hào),03是讀取命令,2100是參數(shù)地址(例如運(yùn)行頻率),00 01代表數(shù)據(jù)的個(gè)數(shù)。那么它的LRC校驗(yàn)碼怎么計(jì)算:指令的數(shù)據(jù)是16進(jìn)制的,和為:0x01+0x03+0x21+0x01=0x26,對(duì)0x25取2的補(bǔ)碼就是DA,具體計(jì)算就是取反加1,如:0x26=B0010,0110,取反后得到B1101,1001,加1得到B11011010=0xDA,那么LRC校驗(yàn)碼就是DA。
例子2
同樣的控制變頻器指令:03 06 00 03 27 10, 和為0x43,取反加1為0xBD,LRC校驗(yàn)值就是BD。
明白了它的計(jì)算過程接下來我們?cè)赑LC編寫它的算法,我們知道在PLC的運(yùn)算中都是十進(jìn)制的,為了方便轉(zhuǎn)換和計(jì)算,可采取另外一種方法(原理一樣),我們知道ASCII碼是2位的16進(jìn)制數(shù),取反過程可看做0xFF減去檢驗(yàn)總和如上述的0x26、0x43,加1就變成0x100減去檢驗(yàn)總和,轉(zhuǎn)換成10進(jìn)制的就是256(D)-和(D),再經(jīng)過ASCI指令轉(zhuǎn)換成ACIIS碼就可以了。以下面梯形圖進(jìn)行說明:
使用RS指令向變頻器發(fā)送命令,01 03 33 03 00 01,轉(zhuǎn)換成16進(jìn)制01 03 21 03 00 01這是一個(gè)讀取頻率的指令,LRC校驗(yàn)碼的運(yùn)算梯形圖:
使用一個(gè)變址寄存器Z0對(duì)數(shù)據(jù)D201到D206進(jìn)行累加求和D40,最后用K256減去41就是LRC校驗(yàn)碼215,通過ASCI指令轉(zhuǎn)換成ASCII碼,通過查看擴(kuò)展ASCII碼表:
215的16進(jìn)制為D7,與01+03 +21+ 03+ 00 +01=0x29=B00101001,取反加1得到11010111=0x(D7),結(jié)果一致。
海藍(lán)智能擁有一批理論與實(shí)踐經(jīng)驗(yàn)豐富的工程技術(shù)人員;長期承接自動(dòng)化工程項(xiàng)目、技術(shù)開發(fā)、安裝調(diào)試和咨詢培訓(xùn),為向用戶提供全面的技術(shù)支持和高效、快捷的售后服務(wù)?,F(xiàn)公司開設(shè)多個(gè)技術(shù)交流群,里面有眾多技術(shù)大牛經(jīng)驗(yàn)分享,解答疑問。有需要的朋友可以咨詢?cè)诰€客服或者留下你的聯(lián)系方式。