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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于自由口模式的S7-200 PLC與上位機(jī)的通信

          基于自由口模式的S7-200 PLC與上位機(jī)的通信

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

          在工控PC機(jī)中可采用VB來(lái)實(shí)現(xiàn)監(jiān)控程序,通過(guò)MSCOMM控件就可控制串口通信[6],主要參數(shù)設(shè)置代碼如下:
           MSComm1.Settings="9600,N,8,1"
           //串口通信參數(shù)設(shè)置
           MSComm1.CommPort=1
           MSComm1.PortOpen=True
          MSComm1.InputLen=0
          4 主控PLC軟件設(shè)計(jì)
          CPU224XP自由口通信模式的初始化是通過(guò)對(duì)特殊存儲(chǔ)字節(jié)SMB30(PORT0)寫(xiě)入通信控制字來(lái)設(shè)置通信的波特率、奇偶校驗(yàn)、停止位和數(shù)據(jù)位數(shù)[7]。SMB30中的內(nèi)容如下:
           PP:奇偶選擇。00為無(wú)奇偶校驗(yàn);01為偶校驗(yàn);10為奇校驗(yàn);11為保留。
           D:每個(gè)字符的數(shù)據(jù)位。0為每個(gè)字符8位;1為每個(gè)字符7位。
           BBB:自由端口波特率。本設(shè)計(jì)為010,表示波特率為9 600 b/s。
           MM:協(xié)議選擇。00為點(diǎn)到點(diǎn)接口協(xié)議的PPI從站模式;01為自由端口協(xié)議;10為PPI主站模式;11為保留。缺省設(shè)置為00,即PPI從站模式。
          本文中傳輸速率固定為9 600 b/s,數(shù)據(jù)格式由1位起始位、8位數(shù)據(jù)位、無(wú)校驗(yàn)位、1位停止位組成。
          配置自由口通信模式后,就可以進(jìn)行數(shù)據(jù)的收發(fā)了。PLC通信程序框圖如圖5所示。接收數(shù)據(jù)指令RCV的命令格式為RCV TABLE,Port0,RCV指令可以接收一個(gè)或多個(gè)字符,一次最多接收255個(gè)字符。發(fā)送數(shù)據(jù)指令XMT的命令格式為XMT TABLE,Port0,激活發(fā)送緩沖區(qū)TABLE中的數(shù)據(jù)。數(shù)據(jù)緩沖區(qū)的第一個(gè)數(shù)據(jù)指明了要發(fā)送的字節(jié)數(shù),最多有255個(gè)字符的緩沖區(qū)。

          通信程序的設(shè)計(jì)需遵循一定的規(guī)則,例如,中斷通信處理程序要短小精悍,要避免XMT與RCV指令在一個(gè)端口同時(shí)執(zhí)行[8]。本設(shè)計(jì)采用主從方式通信,PC設(shè)為主機(jī),PLC設(shè)置為從機(jī)。只有PLC接收到指令幀后,才可能根據(jù)接收數(shù)據(jù)情況發(fā)送反饋幀。為簡(jiǎn)化程序設(shè)計(jì),PC機(jī)只發(fā)出讀指令和寫(xiě)指令兩種指令幀。若為讀指令,PLC準(zhǔn)備好發(fā)送數(shù)據(jù)后執(zhí)行XMT指令;若為寫(xiě)指令,PLC先把數(shù)據(jù)寫(xiě)入指定存儲(chǔ)區(qū),準(zhǔn)備好應(yīng)答數(shù)據(jù)后同樣執(zhí)行XMT命令;若接收到錯(cuò)誤幀(如校驗(yàn)錯(cuò)誤及不能識(shí)別的命令),PLC準(zhǔn)備相應(yīng)標(biāo)志數(shù)據(jù)執(zhí)行XMT指令。
           主要代碼如下:
           LD SM0.0
           MOVB 9,SMB30//設(shè)置端口0為:9 600,N,8,1
           LD SM0.0//RCV指令初始化
           MOVB 16#EC,SMB87
           //允許接收信息,使用SMB88,SMB89。
           MOVB 83,SMB88//設(shè)置起始字符為"S"
           MOVB 115,SMB89//設(shè)置結(jié)束字符為"s"
           MOVB +1000,SMW92//接收信息時(shí)間不能超過(guò)1 ms
           MOVB 30,SMB94//接收的最大字符數(shù),這里設(shè)置為30
           R SMB87.2,1//復(fù)位SMB87.2,使其為0,忽略SMW92
           LD SM0.0
           ATCH RCVOVER,23
           //將0口接收完成中斷事件連接到RCVOVER上
           LD SM0.0
           ATCH XMTOVER,9、
            //將0口發(fā)送完成中斷事件連接到XMTOVER上
           LD SM0.0
           ENI//允許中斷
          S7-200自由口通信方式使用戶可以自己定義PLC指令通信協(xié)議,與任何公開(kāi)通信協(xié)議(如RS-422或RS-232C)接口設(shè)備進(jìn)行通信,使通信范圍大大增加,控制系統(tǒng)配制更加靈活。本通信程序用于ITER導(dǎo)體穿纜測(cè)力測(cè)長(zhǎng)監(jiān)控系統(tǒng),PLC完成數(shù)據(jù)采集及現(xiàn)場(chǎng)控制,工控PC機(jī)實(shí)時(shí)顯示導(dǎo)體穿纜的速度及行程,同時(shí)以梯形圖和通信控件顯示動(dòng)作過(guò)程,便于監(jiān)控及故障診斷,得到用戶好評(píng)。本文設(shè)計(jì)的通信協(xié)議也可用于其他控制系統(tǒng)的監(jiān)控。
          參考文獻(xiàn)
          [1] SIEMENS公司.SIMATIC S7-200可編程控制器系統(tǒng)手冊(cè)[M]. http://www2.ad.siemens.com.cn/download/Upload/AS/manual/1109582. pdf, 2008-08-01.
          [2] 吉順平.西門子PLC與工業(yè)網(wǎng)絡(luò)技術(shù)[M].北京:機(jī)械工業(yè)出版社,2008.
          [3] 劉杰,陽(yáng)林,陳超麗.三菱FX2N系列PLC與PC通訊的簡(jiǎn)易實(shí)現(xiàn)[J].制造業(yè)自動(dòng)化,2006(1):65-67.
          [4] 陳明意.基于VC6.0的PC與FX2NPLC通信的實(shí)現(xiàn)[J].武漢工業(yè)學(xué)院學(xué)報(bào),2005,24(4):14-16.
          [5] 丁莉君,李宏燕.自由口模下S7-200 PLC與的通信[J].機(jī)床電器,2009(1):26-28.
          [6] 湯光華,吳青.下S7-200 PLC與的通信[J].微計(jì)算機(jī)信息,2008(24):62-64.
          [7] 劉紅兵.S7-200自由口通訊的實(shí)現(xiàn)及應(yīng)用[J].PLCFA,2009(2):58-62.
          [8] 李紹民,潘登.S7-200 PLC與上位機(jī)的通信[J].大連民族學(xué)院學(xué)報(bào),2009,11(3):209-211.

          西門子plc相關(guān)文章:西門子plc視頻教程


          數(shù)字通信相關(guān)文章:數(shù)字通信原理


          通信相關(guān)文章:通信原理



          上一頁(yè) 1 2 下一頁(yè)

          關(guān)鍵詞: 自由口模式 上位機(jī)

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