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

          關(guān) 閉

          新聞中心

          EEPW首頁(yè) > 工控自動(dòng)化 > 設(shè)計(jì)應(yīng)用 > 和利時(shí)PLC與Flash存儲(chǔ)設(shè)備進(jìn)行自由口通訊方案

          和利時(shí)PLC與Flash存儲(chǔ)設(shè)備進(jìn)行自由口通訊方案

          作者: 時(shí)間:2010-10-18 來(lái)源:網(wǎng)絡(luò) 收藏

          1、引言

          和利時(shí)LM系列PLC是杭州和利時(shí)公司自主研發(fā)的小型一體化PLC產(chǎn)品。LM系列PLC具有可靠性高、指令豐富、通訊能力強(qiáng)等特點(diǎn)。其支持六種編程語(yǔ)言,包括LD、IL、FBD、SFC、ST、CFC,能夠適應(yīng)多種PLC編程基礎(chǔ)的人群。一些大的控制系統(tǒng)具有很多現(xiàn)場(chǎng)設(shè)備,其中一部分現(xiàn)場(chǎng)設(shè)備可能不支持標(biāo)準(zhǔn)的通訊協(xié)議,但是還需要與第三方控制設(shè)備進(jìn)行數(shù)據(jù)通訊,任何一個(gè)廠商的PLC都不可能支持所有現(xiàn)場(chǎng)設(shè)備的數(shù)據(jù)通信協(xié)議。如何實(shí) PLC與非標(biāo)準(zhǔn)協(xié)議的第三方設(shè)備進(jìn)行互聯(lián)呢,LM系列PLC推出了自由口的,可以實(shí)現(xiàn)與任何協(xié)議的第三方設(shè)備進(jìn)行互聯(lián)。本文介紹的是LM系列PLC通過(guò)自由口與 Flash進(jìn)行數(shù)據(jù)通訊。

          2、LM系列PLC的

          LM系列PLC支持多種,如Profibus DP、以太網(wǎng)、。LM系列PLC的CPU模塊本體集成了一個(gè)RS232通訊口和一個(gè)RS485通訊口,RS232和RS485支持標(biāo)準(zhǔn)的Modbus RTU、LM專有協(xié)議和協(xié)議。用戶可以用圖程序設(shè)定通訊口的協(xié)議、通訊速率、數(shù)據(jù)位、校驗(yàn)、發(fā)送數(shù)據(jù)和接收數(shù)據(jù)。下圖為和PLC自由口相關(guān)的指令。

          圖1為設(shè)定速率、數(shù)據(jù)位、校驗(yàn)的指令;圖2為恢復(fù)Modbus RTU和LM專有協(xié)議的指令,同時(shí)也可以設(shè)定通訊速率、數(shù)據(jù)位和校驗(yàn);圖3為數(shù)據(jù)發(fā)送指令;圖4為數(shù)據(jù)接收指令。同時(shí)軟件中有CRC校驗(yàn)的指令,可以進(jìn)行數(shù)據(jù)校驗(yàn)。也可以通過(guò)ST語(yǔ)言方便的編寫校驗(yàn)程序。以計(jì)算CRC 校驗(yàn)碼為例,下面是變量聲明部分:

          FUNCTION_BLOCK Generate_CRC
          VAR_INPUT
          pData:POINTER
          TO BYTE;
          byteCounter:WORD;
          END_VAR
          VAR_OUTPUT
          CRC_Code:WORD;
          FINISH:BOOL:=FALSE;
          END_VAR
          VAR
          Reg16: WORD;
          j: BYTE;
          i: WORD;
          mval: WORD;
          temp_byte: BYTE;
          flg: WORD;
          END_VAR

          以下是ST語(yǔ)言的程序代碼部分:
          Reg16 := 16#FFFF;
          mval := 16#A001;

          FOR i:=0 TO byteCounter-1 BY 1 DO
          temp_byte:=pData︿;
          pData:=pData+1;
          Reg16:=(Reg16 XOR temp_byte);

          FOR j:=0 TO 7 BY 1 DO
          flg := 0;
          flg:=(Reg16 AND 16#0001);
          Reg16 := SHR(Reg16,1);
          IF (flg = 1) THEN
          Reg16:=Reg16 XOR mval;
          END_IF;
          END_FOR;
          END_FOR;

          CRC_Code:=Reg16;
          FINISH:=TRUE;

          3、數(shù)據(jù)存儲(chǔ)系統(tǒng)的設(shè)計(jì)

          該P(yáng)LC控制系統(tǒng)是應(yīng)用在節(jié)能汽車上,通過(guò)PLC對(duì)液壓回路的控制使汽車達(dá)到降低油耗的目的,在該車的試驗(yàn)階段,需要把運(yùn)行過(guò)程中的一些過(guò)程數(shù)據(jù)進(jìn)行記錄。當(dāng)時(shí)提出了三種設(shè)計(jì)方案,第一種方案是對(duì)PLC進(jìn)行改造,在內(nèi)部增加一條FLASH芯片,修改PLC的底層程序,實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ);第二種方案是通過(guò)GPRS收發(fā)器把數(shù)據(jù)上傳到遠(yuǎn)程PC;第三種方案是通過(guò)自由口與U盤讀寫模塊進(jìn)行通訊,把數(shù)據(jù)實(shí)時(shí)寫入U(xiǎn)盤中。我們對(duì)運(yùn)行環(huán)境進(jìn)行了現(xiàn)場(chǎng)考察和反復(fù)研究,在可靠性、穩(wěn)定性、方便性等方面做了大量工作,權(quán)衡利弊,最終選擇了方案三進(jìn)行實(shí)施。

          Flash首先要配置各項(xiàng)參數(shù),包括接口方式、功能設(shè)置、通訊速率等,如圖5所示:


          圖5 模塊配置

          PLC進(jìn)行壓力、流量、速度等一些參數(shù)的采集,并把數(shù)據(jù)轉(zhuǎn)換為ASII碼的形式進(jìn)行實(shí)時(shí)存儲(chǔ)。然后通過(guò)自由口對(duì)U盤讀寫模塊發(fā)送指令,U盤讀寫模塊對(duì)發(fā)送的指令進(jìn)行響應(yīng),并完成相應(yīng)的讀寫U盤操作。系統(tǒng)要求在每組數(shù)據(jù)后面進(jìn)行時(shí)間記錄,所以PLC在每次數(shù)據(jù)發(fā)送的同時(shí)把時(shí)間寫在文件中,如圖6所示:

          4、結(jié)論

          經(jīng)過(guò)長(zhǎng)時(shí)間的應(yīng)用證明,數(shù)據(jù)存儲(chǔ)系統(tǒng)的穩(wěn)定性很好,這種數(shù)據(jù)存儲(chǔ)的實(shí)現(xiàn)方式大大節(jié)省了系統(tǒng)的成本,且實(shí)現(xiàn)起來(lái)較為方便,可以大力推廣??梢?jiàn),LM系列PLC的自由口應(yīng)用起來(lái)相當(dāng)靈活,可以方便的和第三方設(shè)備進(jìn)行通訊。



          評(píng)論


          相關(guān)推薦

          技術(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); })();