在线免费观看成年人视频-在线免费观看国产-在线免费观看国产精品-在线免费观看黄网站-在线免费观看精品

產(chǎn)品分類

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

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

基于VB6.0的西門子PLC與PC的通信實現(xiàn)微機監(jiān)控功能

發(fā)布日期:2022-04-22 點擊率:52 品牌:西門子_Siemens

                   1  引言
  可編程序控制器(programmable controller)簡稱plc是以微處理器為基礎的新型控制裝置,是將計算機技術(shù)應于工業(yè)控制領(lǐng)域的嶄新產(chǎn)品。它集邏輯運算、順序控制、定時、計數(shù)、算術(shù)運算功能為一體。另外還可以與其他計算機進行通信聯(lián)網(wǎng),這種通信不但包括不同的plc之間的數(shù)據(jù)交換,而且還包括plc與計算機之間的通信。本文介紹筆者使用vb6.0實現(xiàn)plc與上位機之間的通信,使運行人員通過油機配電屏的顯示可以監(jiān)測并控制遠端設備的工作。

2  系統(tǒng)構(gòu)成
  本系統(tǒng)采用plc采集模擬信號、數(shù)據(jù)處理,通過串行通信口上傳到計算機,計算機對傳上來的數(shù)據(jù)進行分析、分類記入數(shù)據(jù)庫,實時顯示在配電屏上并提供數(shù)據(jù)查詢。plc為s7-224,串行通信接口的信號線采用rs-485,此信號線為半雙工,即不能同時接收和發(fā)送。將plc置于run狀態(tài),就可以將plc中存于發(fā)送緩沖區(qū)中的數(shù)據(jù)及信號送入上位機的串口,上位機通過串口通信程序接收這些數(shù)據(jù)后顯示并通過數(shù)據(jù)庫控件adodc的綁定,把數(shù)據(jù)記錄到數(shù)據(jù)庫,從而完成數(shù)據(jù)的采樣。本工程所需采集的數(shù)據(jù)包括日常量、故障量和設備動作量。對于日常量需每時每刻的數(shù)據(jù)顯示在配電屏的主控制平面上,以便工作人員觀察實時數(shù)據(jù),但是不需要把日常量都記入數(shù)據(jù)庫,只需隔一段時間記錄一次(在這里每隔半小時記錄一次),對于故障量和設備動作量要求只要設備發(fā)生故障或動作就要記錄到數(shù)據(jù)庫,以便工作人員查詢。

3  s7-200的通信方式與通信參數(shù)的設置
  s7-200的通信功能很強大,有多種通信方式可供用戶選擇,包括單主站方式、多主站方式、使用調(diào)制解調(diào)器的遠程通信方式等。本工程選擇 step7-micro/win32支持的通信硬件pc/ppi電纜,它所支持的波特率有9.6kbps和19.2kbps,支持的協(xié)議為ppi協(xié)議,即點對點接口協(xié)議,基于開放系統(tǒng)互聯(lián)模型osi。ppi是主/從協(xié)議,網(wǎng)絡上的s7-200cpu均為從站,其他cpu、simatic編程器或td200 為主站。s7-200 cpu的通信端口采用rs-485信號標準的連接口,pc/ppi電纜把s7-200 計算機連接起來,通過使用接收中斷、發(fā)送中斷和字符中斷等指令,自由端口通信可以控制s7-200cpu通信口的操作模式。本工程使用的是自由端口模式,允許在cpu處于run模式時通信口0使用自由端口模式,通過設定smb30的值,我們可以選擇波特率、奇偶校驗、每個字符的數(shù)據(jù)位和協(xié)議。cpu處于stop模式時,停止自由端口通信,通信口強制轉(zhuǎn)換成ppi協(xié)議模式,此時,就可以向cpu中輸入plc程序,實現(xiàn)編程軟件對plc的編程和控制功能。在這里的通訊過程采用主從方式,即計算機為主機,plc為從機,只有主機計算機發(fā)送請求報文后,從機plc才向pc返回發(fā)送緩沖區(qū)中的數(shù)據(jù)。

4  自由端口模式下plc的通信
  由于本工程使用的是pc/ppi電纜,所以要在plc的程序中考慮電纜的切換時間。plc接收到請求報文到它返回發(fā)送緩沖區(qū)的數(shù)據(jù)的延遲時間必須不小于電纜的切換時間。波特率為9600bps時,電纜的切換時間是2ms。在本工程的程序中是用定時中斷實現(xiàn)切換延時的。
定時中斷子程序:
    network title  ’定時中斷程序int_2
    ld       sm0.0
    dtch    10
    xmt     vb200, 0
  當程序運行到“啟動定時中斷”(即atch int_2, 10)的語句時,就會跳到如上所示的中斷子程序中,sm0.0是特殊存儲器,該位始終為1,即只要plc處于run狀態(tài),這一開關(guān)即是接通的。xmt vb200, 0語句是用來發(fā)送數(shù)據(jù)到串口的,此時發(fā)送的是存儲在以vb200為首地址的連續(xù)的存儲空間中的數(shù)據(jù),是通過端口0發(fā)送的。
  另外為了提高通信的可靠性,我們需要使用到異或校驗,即在通信的雙方都將每一幀的每一個字符作異或校驗,將兩者進行對比,如果不相同則可以判定通信有誤。
      network1  network title ’求異或校驗碼的子程序fcs
          ld   sm0.0
          movb   0, #xorc    
          bti    #numb, #numi   
          for    #temp1, +1, #numi
         movb 0, #xorc ’用來把異或校驗碼 
                           清零, 用bti#numb,  
                          #numi將字節(jié)數(shù)
                          轉(zhuǎn)換為整數(shù)
network2
           ld     sm0.0
          xorb   *#pnt, #xorc               
          incd   #pnt       
network3           
          next
  for到next語句指明了一個循環(huán),從這一幀的第一個字符開始(不包括起始字符)到該幀中最后一個字符作異或運算。通過調(diào)用這個子程序可以計算所指定的數(shù)據(jù)存儲空間內(nèi)的字符的異或校驗碼,如果在上位機中的vb程序中也有計算校驗碼的子程序,那么就可以比較這兩次計算的校驗碼是否相同??梢允褂谜Z句(call fcs, &vb102, vb99, vb90)來調(diào)用該子程序,其中&vb102是指出子程序fcs進行校驗的起始地址,vb99是用來存儲需要異或的字節(jié)數(shù),而vb90是用來存儲計算出來的校驗和。假設把從上位機接收到的校驗碼存儲在vb91中,比較vb90和 vb91中的數(shù)據(jù)就可以檢驗這次通信是否正確。同樣,我們可以使用這個子程序計算從plc中發(fā)送的數(shù)據(jù)的校驗碼,把它送到上位機中某一特定的地址中,在上位機中比較兩個數(shù)據(jù)是否正確(在上位機的計算異或校驗碼的vb程序?qū)⒃诤竺娼o出)。
  因為報文的起始字符和結(jié)束字符只有8位,接收的報文數(shù)據(jù)區(qū)內(nèi)出現(xiàn)與起始字符和結(jié)束字符相同的字符的幾率很大,這就可能會是數(shù)據(jù)區(qū)字符與起始字符或結(jié)束字符發(fā)生混淆,為了避免這種情況,可以在發(fā)送數(shù)據(jù)前對數(shù)據(jù)作一下處理,把數(shù)據(jù)字符轉(zhuǎn)換為bcd碼,在s7-200中專門提供了整數(shù)與bcd碼的轉(zhuǎn)換指令,可以使用語句(ibcd vw200)就把輸入的整數(shù)轉(zhuǎn)換為bcd碼,結(jié)果送入了vw200中。上位機接收到后需要將其轉(zhuǎn)換回整數(shù)。
  另外,在初始化時要注意自由端口通信協(xié)議的設定,一定要使通信過程中的波特率,數(shù)據(jù)位,奇偶校驗及停止位與上位機vb以及通信線上中設定的參數(shù)相同,否則將不能實現(xiàn)通信過程,要么接收不到數(shù)據(jù),要么會出現(xiàn)“下標越界”的錯誤。

5  上位機的通信部分采用vb語言編程
  上位機通信接口部分采用vb語言來編寫, 在vb中專門有一個控件microsoft comm control(簡稱mscomm控件)用來提供串行通信。在編程過程中只要設置mscomm控件的屬性, 就可以實現(xiàn)串行通信。mscomm控件一般不包括在常用的工具框中, 需要在右邊的工具框的空白處點擊鼠標右鍵,選擇components選項,就會出現(xiàn)components對話框,在其中的controls標簽下就會找到 microsoft comm control6.0,選定它, 點擊確定就可以把這一控件加入到右邊的工具框中, 圖標為。 
  用鼠標拖動這個圖標到form中,即可設置其屬性。在此控件眾多的屬性當中,需要重新定義的屬性只有commport(傳輸數(shù)據(jù)的通信端口號)、settings(設置數(shù)據(jù)傳輸?shù)牟ㄌ芈?、奇偶校驗、?shù)據(jù)位以及停止位,注意,此參數(shù)一定要與plc通信程中設置的參數(shù)相一致)、 portopen(設置通信端口的狀態(tài))、inputmode(讀取接收緩沖區(qū)的格式)等。本工程采用事件驅(qū)動方式處理接受信息,即把 rthreshold屬性設置為非零的值,此時只要接收字符或傳輸線發(fā)生變化就會產(chǎn)生串口事件oncomm。通過查詢commevent屬性可以捕獲這些通信事件。
  在vb中實現(xiàn)異或計算的程序及注釋如下:
nbyte(1)=ubound(sdata)+1   ’送數(shù)據(jù)區(qū)字節(jié)數(shù)
fcs=nbyte(1)               ’校驗碼初始化
for i=2 to ubound(sdata)+2     
nbyte(i)=sdata(i - 2)       ’待發(fā)送數(shù)據(jù)報文數(shù)
                           組的數(shù)據(jù)區(qū)
fcs=fcs xor nbyte(i)        ’異或運算, 求校驗碼
next
nbyte(i)=fcs              ’送校驗碼
  其中sdata為發(fā)送的數(shù)據(jù)數(shù)組的變量名稱,for-next語句實現(xiàn)所發(fā)送的數(shù)據(jù)每一位都進行異或運算。這樣就可以把發(fā)送數(shù)據(jù)的異或校驗碼送到plc中,在plc比較兩次計算出的校驗碼是否相同,從而提高通信的可靠性。
  本工程中把計算機向下發(fā)送控制命令的部分寫成自定義函數(shù)send(xi)(i從1到6),在每一個需要發(fā)送控制命令的按鈕處調(diào)用此函數(shù),只是在send中參數(shù)設置為不同的控制數(shù)。


圖1     設備動作狀態(tài)接收表


  圖1為模擬一個油機配電屏控制面,該軟件可以對三相輸出電壓、電流、功率因數(shù)這些實時信號進行采集、顯示并存儲,并對設備的動作狀態(tài)、故障情況采集到數(shù)據(jù)庫中。該控制面上方有一系列的控制按鈕,點擊某一按鈕就會向下位機發(fā)送相應的控制命令,控制下位機動作。
  在通信過程中,由于計算機為主機,而plc為從機,因此,plc只有在接收到計算機發(fā)送的信息后,才發(fā)送數(shù)據(jù)。計算機發(fā)送數(shù)據(jù)的次數(shù)并不是與其接收數(shù)據(jù)次數(shù)是一一對應的,計算機每點擊一次發(fā)送控制命令的按鈕(請參看圖1)后,plc就要向計算機傳輸存于其緩沖區(qū)內(nèi)的所有數(shù)據(jù),而每引發(fā)一次 oncomm事件只能傳輸8個字節(jié),因此假如plc的發(fā)送緩沖區(qū)中一共右50個數(shù)據(jù),那么每要求向上傳送一次數(shù)據(jù),就會相應的引發(fā)7次oncomm事件,而且,每引發(fā)一次oncomm事件程序就會一直執(zhí)行到end sub為止。這一點可以通過在發(fā)送數(shù)據(jù)的程序中加入測試語句 “debug.print‘start’”,在end sub前加一測試語句“debug.print‘end’”來驗證,我們可以清楚的在立即窗口中發(fā)現(xiàn)每一個start后有7個end。

6  與數(shù)據(jù)庫綁定的控件
  采集數(shù)據(jù)的最終目的不僅要把需要顯示的數(shù)據(jù)(比如:日常量)顯示在界面上,另外還要把數(shù)據(jù)記錄到數(shù)據(jù)庫中,以備日后查詢。顯示數(shù)據(jù)的過程很容易實現(xiàn),就是把接收緩沖區(qū)的內(nèi)容按照事先約定好的順序依次取出即可。要把數(shù)據(jù)記錄到數(shù)據(jù)庫就需要用到數(shù)據(jù)庫綁定控件,在本工程中用到的是adodc控件,這一控件也不包括在常用的工具框中,仍然要依照加mscomm控件的方法把工具條microsoft ado data control6.0(sp4)(oledb)加到工具框中,然后就可以把這一控件拖入form(在本次工作中把adodc控件放在了程序運行時不顯示的查詢畫面中,這樣就可以同時完成記錄到數(shù)據(jù)庫和查詢工作)中,通過設定adodc1的connectionstring(要求與事先建好的數(shù)據(jù)庫所存儲的地址相聯(lián)接)、 commandtype(由于要向數(shù)據(jù)庫寫入數(shù)據(jù)因此要把它設置為2-adcmdtable)以及recordsource(如果指定的數(shù)據(jù)庫包含多個表,就要選擇一個與此adodc1相對應的表)屬性(其他屬性用默認值即可)就綁定完畢。
  在編程序時,可以通過下面的語句把傳遞上來的信息整理并寫進數(shù)據(jù)庫:
if rcv(5) then
with adodc1
.recordset.addnew                                   
.recordset(“設備名稱”)=“斷路器1” 
.recordset(“動作狀態(tài)”)=“合”                           
.recordset(“動作時間”)=now
.recordset.update
end with
end if
  其中“設備名稱”“動作狀態(tài)”“動作時間”是所綁定的數(shù)據(jù)庫的字段名,等號后面的值是滿足條件語句時向所綁定的數(shù)據(jù)庫的相應的字段所加的字段值,在本工程中在數(shù)組rcv中暫放了從接收緩沖區(qū)中接收到的所有數(shù)據(jù),而rcv(5)所放置的是是否合斷路器1這個動作信息,約定plc送上來的數(shù)據(jù)中 rcv(5)=1表示合斷路器1,因此有上述語句,其他的動作狀態(tài)記錄、故障狀態(tài)記錄及日常量記錄與上述程序幾乎相同,但是由于日常量不需要每時每刻都要記錄到數(shù)據(jù)庫,因此在日常量向數(shù)據(jù)庫寫入時用了靜態(tài)變量count來計時,假如count的值每增加1時間就增加1s,要求每半個小時記錄一次,那么就可以用count mod 1800 =0來實現(xiàn)這一時間的控制。

7  結(jié)束語 
  文中列出了筆者認為plc與計算機通信程序編寫過程中需要注意的問題,并給出筆者認為有難度的程序代碼,本工程已經(jīng)成功的通過了測試,已交付使用。

參考文獻
[1] 羅朝盛等. visual basic6.0程序設計教程[m]. 北京:人民郵電出版社,2002.
[2] 廖常初. plc編程及應用[m]. 北京:機械工業(yè)出版社,2002.

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

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

亚洲性人人天天夜夜摸| 亚洲熟妇丰满XXXXX国语| 亚洲欧美中文字幕在线一区 | 国产成人无码精品一区在线观看| 国产乱人伦偷精精品视频| 久久精品国产99精品最新| 内射女校花一区二区三区| 日本少妇人妻XXXXⅩ18欧美| 午夜A级理论片在线播放不卡| 亚洲熟妇无码中文高清| JAVASCRIPTJAVA成熟亲子| 国产精品无卡毛片视频| 久久婷婷六月综合色液啪| 人人添人人澡人人澡人人人人| 五十熟妇日本熟妇久久| 一面亲上边一面膜| 处 女 开 破视频处CT开| 极品粉嫩小泬50P| 欧美精品一区二区三区人妻久久久 | 漂亮人妻被强中文字幕| 五十路○の豊満な肉体| 真人性囗交69图片| 粉嫩AV一二三区免费| 痉挛高潮喷水AV无码免费| 区二区三区在线 | 欧洲| 午夜无码片在线观看影院中文| 一本一道波多野结衣AV黑人| 成人爽A毛片免费网站美国| 狠狠色噜噜狠狠狠888米奇视频| 欧美成人精品视频一区二区三区| 无码人妻丰满熟妇啪啪网站| 中国VODAFONEWIFI粗| 国产成人亚洲精品无码H在线| 久久久久亚洲AV成人片丁香| 色欲丰满熟妇人妻AV无码| 亚洲色大成网站WWW| 厨房里我扒了岳的内裤| 久久精品国产大片免费观看| 日韩欧洲亚洲SUV| 伊人久久大香线蕉AV一区| 国产99久久久国产精品~~牛| 久久久久久久精品国产免费…| 色婷婷婷亚洲综合丁香五月| 夜夜夜高潮夜夜爽夜夜爰爰| 国产AⅤ精品福利一区二区三区| 拒嫁豪门少奶奶99次出逃| 玩弄白嫩少妇XXXXX性| 2021网站无需下载急急急| 国产在线精品99一区不卡| 秋霞网一区二区三区| 亚洲欧美日韩成人综合网| 多毛BGMBGMBGM胖在| 麻豆国产精品VA在线观看| 性国产SE╳O色欲A片免费观看| JAPANESE军人强迫| 久久精品动漫一区二区三区| 完整版免费AV片| H系列高强无收缩灌浆料黄文| 精品乱码久久久久久中文字幕| 色婷婷久久综合中文久久蜜桃AV| 在线天堂资源WWW在线中文| 国产午夜免费高清久久影院| 日本丰满熟妇×××××乱| 影音先锋女人AV女色资源| 国产无遮挡裸露视频免费| 日本丰满老妇BBB| 中国老太婆BB无套内射| 护士被弄到高潮喷水抽搐| 少妇 精69XXXXXx白浆| 97超级碰碰碰久久久久| 精品国产一区二区三区色欲 | 欧美日韩精品SUV| 亚洲性色AV一区二区三区| 国产精品女上位好爽在线| 日本喷奶水中文字幕视频| 18禁美女黄网站色大片免费观看| 狠狠人妻久久久久久综合| 私密按摩高潮熟女啪啪| 巴西女人与禽2O2O性论交| 么公的好大好硬好深好爽视频 | 四虎影视在线观看2413| XXXXX性BBBBB欧美| 没带罩子让他捏了一节课| 亚洲欧美日韩成人综合网| 国产下药迷倒白嫩美女网站| 色妞AV永久一区二区国产AV| av资源在线观看少妇| 老妇乱强伦XXXXX| 亚洲成AV人片在线观看无下载 | 无码色AV一二区在线播放| 成人午夜又粗又硬又长| 欧美性受XXXX人人本视频| 中文字幕人妻被公上司喝醉在线| 久久精品无码一区二区小草| 亚洲国产AV一区二区三区| 国产美女高潮流白浆视频| 四虎成人精品无码| 粗大挺进亲女H晓晓| 人人做天天爱夜夜爽2020| 99国内精品久久久久久久| 蜜桃AV自慰久久久久免费网站| 亚洲中文字幕精品一区二区三区| 好爽别插了无码视频| 性色做爰片在线观看WW| 国产精品久久久久久成人影院| 少妇人妻无码专区视频| 大肥女BBWBBWHD视频| 日本又黄又爽GIF动态图| YY111111111少妇影院| 欧美精品亚洲精品日韩传电影 | 国产粉嫩呻吟一区二区三区 | 亚洲精品无码专区在线播放| 国内精品久久久久影院优| 亚洲A∨国产AV综合AV下载| 国产女人的高潮国语对白| 无遮挡H肉动漫在线播放| 国产精品天干天干有线观看| 我的妈妈和黑人群交小说| 国产精品 高清 尿 小便 嘘嘘| 天天躁夜夜躁狠狠是什么心态| 丰满少妇人妻HD高清大乳在线| 色一情一乱一伦一区二区三区日本| 成人片黄网站色多多WWW| 日韩精品无码人妻一区二区三区| 宝宝湿透了还嘴硬怎么回事 | 免费A级毛片无码视频| 中文字幕无码AV正片AV| 女人天堂亚洲AⅤ在线观看| JK浴室自慰到不停喷水尿失禁 | 扒开粉嫩的小缝隙喷白浆| 日本XXXX色视频在线观看免费,| 被公侵犯肉体中文字幕电影| 日本乱妇乱子视频网站-百度| 成人欧美一区二区三区| 少妇被躁爽到高潮无码文| 国产精品美女被操| 亚洲妇女水蜜桃AV网网站| 久久精品久久电影免费| 中文无码乱人伦中文视频在线| 年轻 娇小 亚洲人 日本语 夹| AV成人片无码夜色AV大胸| 日本入室强伦姧BD在线观看| 闺蜜张开腿让我爽了一夜| 午夜无码片在线观看影视| 精品国产免费一区二区三区| 英语老师乖乖挽起裙子怎么写作文| 免费观看A级毛片| 啊灬啊别停灬用力啊无码视频| 少妇被又粗又硬猛烈进出小说| 国产拍揄自揄精品视频| 亚洲人成小说网站色在线观看| 美女GIF趴跪式抽搐动态图 | 亚洲最大AV一区二区三区| 内射老妇BBWX0C0CK| 成人无码小视频在线观看| 无码人妻精品中文字幕免费| 精品国产一区二区三区久久| 中国老妇XXXX性开放| 人禽伦免费交视频播放| 国产精品无码AV天天爽播放器| 亚洲精品自偷自拍无码忘忧| 免费观看电视在线高清| 差差差很疼视频无掩丰富| 无码αv人妻一区二区三区| 九妹免费观看完整版| 97人妻成人免费视频| 少妇高潮呻吟在线观看| 狠狠综合久久久久尤物丿| 18禁又污又黄又爽的网站| 肉体粗喘娇吟国产AV精品| 好紧我太爽了视频免费国产| 中文字幕精品亚洲无线码二区 | 成熟丰满熟妇AV无码区| 亚洲AV日韩AⅤ无码| 蜜桃91人妻在线视频| 妇女被深耕过后的变化| 亚洲女人被黑人巨大进入| 欧美熟妇另类久久久久久多毛| 国产成人精品久久久久| 亚洲一区二区三区国产精华液| 情人伊人久久综合亚洲| 国产一区二区三区久久精品| 中文成人无字幕乱码精品区 | 亚洲无人区码一码二码三码的特点 | 国产精品无码专区在线观看| 亚洲综合无码AV一区二区| 日本一区二区在线播放| 精品无码国产污污污免费网站| А√在线中文网新版地址在线 | 精品国产福利在线观看| 9L国产精品久久久久尤物| 性偷窥TUBE凸凹视频| 男生女生一起相差差差差| 国产精品久久一区二区三区蜜桃| 伊人色综合一区二区三区| 私人家庭影院5577| 乱中年女人伦AV一区二区| 国产精品白丝无码ThePorn| 在线永久无码不卡AV| 无码精品久久久久久人妻中字|