<rt id="m4md3"></rt>
  • <bdo id="m4md3"><meter id="m4md3"></meter></bdo>
  • <label id="m4md3"></label>
      <center id="m4md3"><optgroup id="m4md3"></optgroup></center>
      產(chǎn)品分類

      當(dāng)前位置: 首頁(yè) > 工業(yè)控制產(chǎn)品 > 自動(dòng)化控制 > PLC可編程控制器 > 大型PLC可編程控制器

      類型分類:
      科普知識(shí)
      數(shù)據(jù)分類:
      大型PLC可編程控制器

      VB環(huán)境下利用并口實(shí)現(xiàn)PLC控制

      發(fā)布日期:2022-04-27 點(diǎn)擊率:75

      1 引言

      普通的計(jì)算機(jī)一般都配有并行接口(就是通常用的打印機(jī)接口),它是通過25芯的d型接頭連接打印機(jī)與計(jì)算機(jī)的,計(jì)算機(jī)的并行接口不僅可以向打印機(jī)發(fā)送數(shù)據(jù),還可以從打印機(jī)接收數(shù)據(jù)(打印的工作狀態(tài))。因此,利用計(jì)算機(jī)的并行接口,你可以去控制外部繼電器的吸合,從而控制外部設(shè)備,同樣可以利用它來檢測(cè)外部設(shè)備的狀態(tài)。不需添加任何硬件。從而使一臺(tái)普通的計(jì)算機(jī)具有“plc”的開關(guān)量的功能。

      本文分析的系統(tǒng),把普通并口實(shí)現(xiàn)了一個(gè)4輸入8輸出數(shù)字量的功能,切不需任何投資。們先對(duì)打印機(jī)的并行口做一下細(xì)致的分析。配有一個(gè)并口的計(jì)算機(jī)經(jīng)系統(tǒng)引導(dǎo)后,初始化過程把并行端口配置成lpt1,這個(gè)端口又分配了數(shù)據(jù)地址378h, 狀態(tài)地址379h。其中378h端口做輸出端口,379h端口做輸入端口。

      2 并口數(shù)據(jù)采集控制原理

      (1) 端口378h,378h的管腳見表1。

      在計(jì)算機(jī)通電后的自然狀態(tài),378h端口的每個(gè)數(shù)據(jù)位為1,表1中每個(gè)管腳對(duì)地(25腳)為高電平5v。即378h地址的內(nèi)容為ff(十進(jìn)制是255),當(dāng)控制378h的內(nèi)容為1(十進(jìn)制)二進(jìn)制碼是00000001時(shí),即2腳對(duì)地輸出高電平,其它對(duì)地是0電平。如控制378h的內(nèi)容為2(十進(jìn)制)二進(jìn)制碼是00000010,即3腳對(duì)地輸出高電平,其它對(duì)地是0電平。如控制378h的內(nèi)容為3(十進(jìn)制)二進(jìn)制碼是00000011,即2、3腳對(duì)地輸出高電平,其它對(duì)地是0電平。依次類推。

      當(dāng)某管腳對(duì)地是高電平5v時(shí),由于每條數(shù)據(jù)線的輸出電流高達(dá)20ma,可以接5v的直流繼電器,通過繼電器的觸點(diǎn)在去控制其它的設(shè)備,如電磁閥、電機(jī)等。圖1是用打印機(jī)并行接口實(shí)現(xiàn)的繼電器控制電路,此電路稍加修改即可用于其它設(shè)備的開關(guān)控制。

      (2) 端口379h,379h的管腳見表2。

      在計(jì)算機(jī)通電后的自然狀態(tài),379h端口的數(shù)據(jù)位第7位是0,其余每個(gè)數(shù)據(jù)位為1,即上述每個(gè)管腳對(duì)地(25腳)為高電平5v。即379h地址的內(nèi)容為127(十進(jìn)制)二進(jìn)制碼是01111111。當(dāng)只把某管腳(如10腳)通過500ω的電阻接到25腳,則它所對(duì)應(yīng)的數(shù)據(jù)位是0,其它的數(shù)據(jù)位不變,則379h的內(nèi)容為63(十進(jìn)制)二進(jìn)制碼是00111111。當(dāng)只把某管腳(如12腳)通過500ω的電阻接到地25腳,則它所對(duì)應(yīng)的數(shù)據(jù)位是0,其它的數(shù)據(jù)位不變,則379h的內(nèi)容為95(十進(jìn)制)二進(jìn)制碼是01011111依次類推。

      圖2是用打印機(jī)并行接口實(shí)現(xiàn)的開關(guān)檢測(cè)控制電路,當(dāng)k斷開時(shí),379h為127(十進(jìn)制),當(dāng)k閉合時(shí),379h為111(十進(jìn)制)二進(jìn)制數(shù)是01101111,即13腳所連接的第4數(shù)據(jù)位為0。

      3 軟件實(shí)現(xiàn)

      vb是一種可視化的編程語(yǔ)言,自面世以來,因簡(jiǎn)單易用倍受廣大編程人員的青睞,作為一種非常方便的windows95應(yīng)用程序開發(fā)平臺(tái),可以實(shí)現(xiàn)windows的絕大部分功能。

      vb中沒有專門的對(duì)并口的操作控件,要實(shí)現(xiàn)對(duì)并口的讀寫,需要對(duì)i/o進(jìn)行操作,但對(duì)硬件進(jìn)行訪問以及利用各種控制接口板進(jìn)行數(shù)據(jù)采集,僅靠vb是無(wú)法解決的。解決這樣的問題可以間接使用動(dòng)態(tài)鏈接庫(kù)dll(dynamic link library)來實(shí)現(xiàn)。程序人員利用dll可以實(shí)現(xiàn)應(yīng)用程序共享代碼和資源,dll與用戶的程序完全分開。

      動(dòng)態(tài)鏈接庫(kù)(dll)雖然是一個(gè)可執(zhí)行模塊,但它并不可以直接運(yùn)行,它只是提供一群函數(shù)供windows應(yīng)用程序或其它動(dòng)態(tài)鏈接庫(kù)調(diào)用,以完成其特殊任務(wù)。由于動(dòng)態(tài)鏈接庫(kù)是在應(yīng)用程序運(yùn)行期間被連接起來的,故稱為動(dòng)態(tài)鏈接庫(kù)。本設(shè)計(jì)用vc++設(shè)計(jì)了一個(gè)讀寫io端口的動(dòng)態(tài)鏈接庫(kù)io.dll。

      筆者利用vc++5.0開發(fā)的dll的完整的程序清單如下:

      ∥dll源文件i0.cpp

      #include

      #include

      int far pascal outport(unsigned)

      short sport);

      int far pascal outport(unsigned short port,int databyte);

      ∥d11entrypoint函數(shù)

      bool winapi d11entrypoint

      (hinstance hd11,

      dworddwreason,

      lpvoid reserved)



      switch(dwreason)



      case dll_process_attach:



      break;



      case dll_process_detach:



      break;





      return true;



      ∥兩個(gè)功能函數(shù)

      int far pascal inport(unsigned short port)



      reture(_inp(prot);



      int far pascal outport(unsigned short port,int databyte)



      int a;

      a=_outp(port,databyte);

      return a;



      ∥模塊定義文件i0.def

      code preload moveable discardable

      data preload single

      exports

      inport

      outport

      動(dòng)態(tài)鏈接庫(kù)只有在別的模塊中調(diào)用了它的某個(gè)函數(shù)以后,該動(dòng)態(tài)鏈接庫(kù)才發(fā)生作用。dll函數(shù)或過程必須在全局模塊(*.bas)中正確說明才有效。vb是用declare語(yǔ)句把一個(gè)dll函數(shù)引入vb中的,它告訴vb在哪里找到dll函數(shù),并且讓vb知道dll需要哪種類型的參數(shù),同時(shí)返回哪種類型的值。當(dāng)某個(gè)dll函數(shù)用declare語(yǔ)句正確聲明以后,就可以像使用其它函數(shù)一樣使用這個(gè)dll函數(shù)。

      在vb應(yīng)用程序的全局模塊中聲明i0.dll并將其放入windows\system目錄下,這樣就可以向使用windows

      api一樣使用i0中的inport(輸入)和outport(輸出)函數(shù)了。

      declare function inport lib“io.d11”

      (byval prot as integer)as long

      declare function outport lib“io.d11”

      (byval port as integer,byval

      databyte as long)as long

      下面的程序?qū)D1和圖2的例子進(jìn)行設(shè)計(jì)。(只列出輸入輸出的讀寫操作程序)

      private sub 輸入_click

      x=inport(&h379)

      print x

      end sub

      private sub輸出_click

      y=outport(&h378,1)

      end sub

      4 結(jié)束語(yǔ)

      并口25管腳中,作輸出用的是2~9共8個(gè)管腳,作輸入用的10、12、13、15共4個(gè)管腳,25腳地,利用并口可方便的實(shí)現(xiàn)了4入8出的開關(guān)量控制。

      在上位機(jī)中采用vb等語(yǔ)言編程,利用計(jì)算機(jī)的并口,巧妙地實(shí)現(xiàn)plc的開關(guān)量功能,而且可利用vb等語(yǔ)言的界面設(shè)計(jì)的功能,使系統(tǒng)做到監(jiān)控一體。且系統(tǒng)不需額外的投資,使用靈活簡(jiǎn)單,可靠性高。

      下一篇: PLC、DCS、FCS三大控

      上一篇: 索爾維全系列Solef?PV

      主站蜘蛛池模板: 色噜噜综合亚洲av中文无码| 国产精品免费综合一区视频| 综合91在线精品| 久久婷婷五月综合成人D啪| 久久综合88熟人妻| 色综合一区二区三区| 久久88色综合色鬼| 综合偷自拍亚洲乱中文字幕| 久久综合久久久久| 国产成人综合久久久久久| 色成年激情久久综合| 一本一道久久综合狠狠老| 久久久久久久综合综合狠狠| 国产精品综合色区在线观看 | 鲁一鲁一鲁一鲁一曰综合网| 国产精品亚洲综合五月天| 狠狠色噜噜色狠狠狠综合久久| 91精品国产综合久久香蕉 | 亚洲狠狠婷婷综合久久久久| 久久亚洲精品高潮综合色a片| 99久久综合狠狠综合久久止| 五月天婷五月天综合网在线| 亚洲国产成人久久综合| 亚洲五月丁香综合视频| 91精品一区二区综合在线| 色欲色香天天天综合网站| 国产AV综合影院| 久久综合亚洲色hezyo| 中文字幕久久综合| 亚洲伊人久久综合影院| 国产成人综合日韩精品无码| 亚洲av无码兔费综合| 精品久久综合一区二区| 婷婷综合久久中文字幕蜜桃三| 亚洲av永久中文无码精品综合| 在线精品国产成人综合| 天天色天天射综合网| 一本久道久久综合中文字幕| 亚洲国产婷婷综合在线精品| 亚洲中文字幕无码久久综合网| 亚洲综合AV在线在线播放|