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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 利用VB實(shí)現(xiàn)PC與PLC的聯(lián)機(jī)控制

          利用VB實(shí)現(xiàn)PC與PLC的聯(lián)機(jī)控制

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

          序號(hào)

          控件類型

          控件名稱

          說(shuō)明

          1

          form

          frmmain

          程序主窗體

          2

          frame

          Frame1

          框架

          3

          MSComm

          MSComm1

          串口通信控件

          4

          Timer

          Timer1

          定時(shí)器

          5

          CommandButton

          cmdzz

          正轉(zhuǎn)按鈕

          6

          CommandButton

          cmdfz

          反轉(zhuǎn)按鈕

          7

          CommandButton

          cmdtj

          停機(jī)按鈕

          8

          Label

          Labdjzt

          電機(jī)狀態(tài)顯示標(biāo)簽

          添加上述控件后的程序窗體如圖4所示。

          PC機(jī)的控制程序如下:
          Private Sub Form_Load() 窗體加載過(guò)程
          MSComm1.CommPort = 1 通信控件選用PC機(jī)的串口1
          MSComm1.Settings = "9600,o,8,1" 設(shè)定串口1的波特率為9600bps,奇校驗(yàn),8位數(shù)據(jù)位,1位停止位
          MSComm1.PortOpen = True 打開(kāi)串口1
          Timer1.Interval = 1000 定時(shí)器1的定時(shí)值為1s
          Timer1.Enabled = True 啟動(dòng)定時(shí)器1
          End Sub

          Function com(a As String, b As Integer) 向PLC讀寫寄存器內(nèi)容函數(shù)
          MSComm1.InBufferCount = 0 清空串口的接收緩沖區(qū)
          MSComm1.Output = a 將要發(fā)送的字符串從串口發(fā)送出去
          Do
          DoEvents
          Loop Until MSComm1.InBufferCount >= b 等待PLC的響應(yīng)字符至一定位數(shù)
          com = MSComm1.Input 讀入串口接收到的字符串
          End Function

          Private Sub Timer1_Timer() 定時(shí)讀取Y0、Y1的值以判斷電機(jī)當(dāng)前狀態(tài)
          a = "%01#RCP2Y0000Y0001**" + Chr(13) 定義讀Y0、Y1值的通信字符串
          s = com((a), 9) 讀Y0、Y1的當(dāng)前值
          If Mid(s, 7, 1) = "1" Then 返回字符串中第7位為1表示Y0接通,電機(jī)正轉(zhuǎn)
          cmdzz.Enabled = False 電機(jī)已正轉(zhuǎn),禁止操作正轉(zhuǎn)按鈕但可操作反轉(zhuǎn)按鈕
          cmdfz.Enabled = True
          Labdjzt.Caption = "電機(jī)當(dāng)前狀態(tài):正轉(zhuǎn)"
          ElseIf Mid(s, 8, 1) = "1" Then 反轉(zhuǎn)
          cmdfz.Enabled = False 電機(jī)反轉(zhuǎn),禁止操作反轉(zhuǎn)按鈕但可操作正轉(zhuǎn)按鈕
          cmdzz.Enabled = True
          Labdjzt.Caption = "電機(jī)當(dāng)前狀態(tài):反轉(zhuǎn)"
          ElseIf Mid(s, 7, 1) = "0" And Mid(s, 8, 1) = "0" Then 停機(jī)
          cmdfz.Enabled = True 電機(jī)已停止,可操作正轉(zhuǎn)或反轉(zhuǎn)按鈕
          cmdzz.Enabled = True
          Labdjzt.Caption = "電機(jī)當(dāng)前狀態(tài):停止"
          End If
          End Sub

          Private Sub cmdzz_Click() 正轉(zhuǎn)指令
          a = "%01#WCSR01001**" + Chr(13) 定義將R100置1,啟動(dòng)正轉(zhuǎn)的通信字符串
          s = com((a), 7)
          End Sub

          Private Sub cmdfz_Click() 反轉(zhuǎn)指令
          a = "%01#WCSR01011**" + Chr(13) 定義將R101置1,啟動(dòng)反轉(zhuǎn)的通信字符串
          s = com((a), 7)
          End Sub

          Private Sub cmdtj_Click() 停機(jī)指令
          a = "%01#WCSR01021**" + Chr(13) 定義將R102置1使電機(jī)停轉(zhuǎn)的通信字符串
          s = com((a), 7)
          End Sub
          運(yùn)行上述程序,既可在PC機(jī)上實(shí)現(xiàn)對(duì)電機(jī)正反轉(zhuǎn)以及停止的控制,也可在現(xiàn)地通過(guò)SB0、SB1和SB2按鈕實(shí)現(xiàn)對(duì)電機(jī)的控制;既可在現(xiàn)地啟動(dòng)或停止電機(jī)轉(zhuǎn)動(dòng),也可在PC機(jī)上實(shí)現(xiàn)停機(jī)或電機(jī)轉(zhuǎn)動(dòng)控制。由于PC機(jī)定時(shí)讀取PLC內(nèi)部Y0、Y1的值,所以在現(xiàn)地操作改變電機(jī)的工作狀態(tài)時(shí),在PC機(jī)程序中可顯示出當(dāng)前電機(jī)的工作狀態(tài)并禁止相應(yīng)的操作,真正實(shí)現(xiàn)了PC與PLC的聯(lián)機(jī)控制。

          6. 結(jié)束語(yǔ)

          上述設(shè)計(jì)已在實(shí)踐中應(yīng)用。經(jīng)驗(yàn)證,可在此基礎(chǔ)上,增加聯(lián)機(jī)通信故障自動(dòng)檢測(cè)報(bào)警功能,利用數(shù)據(jù)讀寫命令實(shí)現(xiàn)聯(lián)機(jī)大批量數(shù)據(jù)傳送,根據(jù)現(xiàn)地來(lái)的狀態(tài)信息增加PC機(jī)動(dòng)畫演示功能,從而使PC與PLC的聯(lián)機(jī)控制程序更加完善,控制界面更加形象。根據(jù)上述原理,結(jié)合PC與PLC控制的特點(diǎn),可在其它控制場(chǎng)合使用上述方法實(shí)現(xiàn)雙機(jī)甚至多機(jī)聯(lián)機(jī)控制。


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

          關(guān)鍵詞: VBPCPLC聯(lián)機(jī)控

          評(píng)論


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