日韩成人激情_欧美黑人xxx_国产一区二精品区在线_精品在线一区_97成人资源_久久久久久一区

產(chǎn)品分類

當(dāng)前位置: 首頁(yè) > 新聞熱點(diǎn)

上位機(jī)與PLC通信與實(shí)時(shí)控制的實(shí)現(xiàn)

發(fā)布日期:2022-07-14 點(diǎn)擊率:53

ot;display: block;">  引言

  在工業(yè)控制中,可編程控制器(PLC)由于控制能力強(qiáng)、體積小、抗干擾能力強(qiáng)、可靠性高、使用極為方便等優(yōu)點(diǎn)而得到了廣泛的應(yīng)用,已經(jīng)成為現(xiàn)代工業(yè)控制的主要技術(shù)平臺(tái)之一。實(shí)際應(yīng)用中往往需要利用PC機(jī)對(duì)PLC控制程序中的少量參數(shù)進(jìn)行設(shè)置或修改,這樣就需要解決PC機(jī)與PLC進(jìn)行通信的問(wèn)題。本文以PLC在罐蒸呢機(jī)控制系統(tǒng)中與上位機(jī)PC之間通信的實(shí)際應(yīng)用為基礎(chǔ),探討了PLC與PC機(jī)通信問(wèn)題。系統(tǒng)框圖如圖1所示:

  方案概述

  罐蒸呢機(jī)是在紡織行業(yè)當(dāng)中應(yīng)用較多的設(shè)備,其工作流程為:打開(kāi)高壓釜的門;小車從高壓釜中退出;梁(軸)裝在星形件上;星形件轉(zhuǎn)動(dòng);梁裝在小車上;小車進(jìn)入高壓釜;高壓釜門關(guān)閉;在高壓釜中循環(huán)。

  在罐蒸呢機(jī)的控制當(dāng)中,采用西門子S7-200系列的PLC可滿足要求,在系統(tǒng)造價(jià)方面要求盡量低。上位機(jī)方面:需要控制的數(shù)據(jù)不是很多,采用專門的組態(tài)軟件成本太高。基于這種思路,我們?cè)谏衔粰C(jī)上采用VC++編制串口通訊程序進(jìn)行數(shù)據(jù)的傳輸、控制。

  一般S7-200系列通信端口分為四種工作方式:PPI,MPI,PROFIBUS和自由口通


信。其中PPI模式只能在PLC停止方式(STOP)下通信,而自由口模式只能在PLC運(yùn)行方式(RUN)下通信。CPU的串行通信口可由用戶程序控制,這種操作方式稱之為自由口模式。當(dāng)選擇自由口模式時(shí),用戶程序即可以通過(guò)發(fā)送中斷、接收中斷、發(fā)送指令(XMT)和接收指令(RCV)來(lái)控制串行通信口的運(yùn)行。在自由口模式下,通信協(xié)議完全由用戶程序來(lái)控制。


  由于在自由端口模式下,通信協(xié)議可完全由梯形圖程序控制,還可使用接收中斷、發(fā)送中斷、發(fā)送指令和接受指令來(lái)控制通信操作,因而選用自由口通信方式。

  上位機(jī)(PC)控制程序編程

  1  初始化

  上位機(jī)的控制程序的編寫(xiě)按照如下步驟進(jìn)行:

  (1) 建立基于對(duì)話框的MFC應(yīng)用程序;

  (2) 在對(duì)話框中插入MSComm控件;

  (3) 利用ClassWizard定義CMSComm類控制對(duì)象;

  (4) 在對(duì)話框中添加MSComm控件,并賦予變量;

  (5) 打開(kāi)串口、設(shè)置參數(shù):需要完成的任務(wù)是選擇、打開(kāi)串口,規(guī)定波特率,校驗(yàn)類型,數(shù)據(jù)位、停止位等一些控制信息;

  if(m_())

  m_(FALSE);

  m_(1); //選擇com1

  if( !m_())

  m_(TRUE);

  //打開(kāi)串口

  else

  AfxMessageBox("cannot open serial port");

  m_("9600,n,8,1");

  //波特率9600,無(wú)校驗(yàn),8個(gè)數(shù)據(jù)位,1個(gè)停止位

  //在該處的設(shè)置要同下位機(jī)的通訊參數(shù)相匹配,一般根據(jù)下位機(jī)的具體情況設(shè)定

  m_(1);

  //1:表示以二進(jìn)制方式檢取數(shù)據(jù)

  m_(1);

  //SetRThreshold(1);

  //參數(shù)1表示當(dāng)串口接收緩沖區(qū)中有大于等于1個(gè)字符時(shí)將引發(fā)接收數(shù)據(jù)的OnComm事件

  m_(0);

  //設(shè)置當(dāng)前接收區(qū)數(shù)據(jù)長(zhǎng)度為0

  m_();

  //先預(yù)讀緩沖區(qū)以清除殘留數(shù)據(jù)

  (6) 添加串口事件消息處理函數(shù)OnComm。 這個(gè)函數(shù)是用來(lái)處理串口消息事件的,即每當(dāng)串口接收到數(shù)據(jù),就會(huì)產(chǎn)生一個(gè)串口接收數(shù)據(jù)緩沖區(qū)中有字符的消息事件,就會(huì)執(zhí)行剛才添加的函數(shù),在onComm()函數(shù)中加入相應(yīng)的處理代碼就能實(shí)現(xiàn)自己想要的功能。

  2  控制數(shù)據(jù)的處理

  對(duì)控制數(shù)據(jù)進(jìn)行存儲(chǔ)操作,編程時(shí)給控制量賦初值即默認(rèn)值,每次運(yùn)行上位機(jī)控制程序時(shí)將控制數(shù)據(jù)讀出并送給相應(yīng)的控制單元,即使是第一次運(yùn)行該程序,點(diǎn)擊"運(yùn)行"也能將控制數(shù)據(jù)從文件中取出并同步下達(dá)到下位機(jī);以后每次更改控制數(shù)據(jù)時(shí)就將該控制數(shù)據(jù)進(jìn)行保存,作為新的默認(rèn)控制數(shù)據(jù),以備以后啟動(dòng)設(shè)備時(shí)使用。

  在這里我們要實(shí)現(xiàn)的功能是控制下位機(jī)的啟動(dòng)和停止,以及三個(gè)定時(shí)器的定時(shí)長(zhǎng)度的給定。所發(fā)送的數(shù)據(jù)包括下位機(jī)的起停標(biāo)志,3個(gè)定時(shí)器定時(shí)長(zhǎng)度和控制信息結(jié)束標(biāo)志。需要注意的是在控制信息的結(jié)尾要添加結(jié)束標(biāo)志,該結(jié)束標(biāo)志在PLC上規(guī)定,需要上位機(jī)配合,作用是下位機(jī)接收到該標(biāo)志以后產(chǎn)生接收完成中斷,從而響應(yīng)上位機(jī)的控制。具體操作如下:


  發(fā)送數(shù)據(jù):由發(fā)送按鈕觸發(fā)一個(gè)單擊消息,用以讀取編輯框的內(nèi)容,將讀取的數(shù)據(jù)保存到文件當(dāng)中,并向串口發(fā)送數(shù)據(jù)。

  UpdateData(TRUE); //讀取編輯框內(nèi)容

  CFile OutFile;

  (pFileName,CFile::modeCreate|CFile::modeWrite);

  ();

  CArchive ar(&OutFile,CArchive::store);

  UpdateData(true);

  ar << m_strTXData<<

  ();   

  ();     //文件關(guān)閉

  CtrlData=MachineState+m_strTXData+m_strTXData2

  +m_strTXData3+EndFlag; &


nbsp;  //控制數(shù)據(jù)


  MessageBox("發(fā)送給定數(shù)據(jù)?","發(fā)送提示!",0+48+512);//添加消息提示框

  m_(COleVariant(CtrlData));

  //發(fā)送數(shù)據(jù)

  CtrlData="";

  另外,啟動(dòng)、停止按鈕也會(huì)觸發(fā)單擊消息,處理方法跟上述發(fā)送數(shù)據(jù)的過(guò)程相似,只是在處理時(shí)要首先置位MachineState,啟動(dòng)時(shí)置1,停止時(shí)置0,用來(lái)啟動(dòng)或停止設(shè)備;而且不再對(duì)保存控制數(shù)據(jù)的文件進(jìn)行操作。

  下位機(jī)(PLC)控制程序編程

  1  初始化

  設(shè)定串口的通訊參數(shù)。接收完成以及發(fā)送完成都要產(chǎn)生中斷,中斷號(hào)分別為9、23。

  main:

  NETWORK 1

  LD     SM0.1

  MOVB   16#09, SMB30  //自由口參數(shù):無(wú)校驗(yàn),8位數(shù)據(jù)位,波特率9600,自由口通信;

  MOVB   16#B0, SMB87 

  //接收信息控制,啟動(dòng)接收功能,檢測(cè)信息結(jié)束標(biāo)志;

  MOVB   16#2A, SMB89 

  //定義信息結(jié)束標(biāo)志,與上位機(jī)配合;

  MOVW   +5, SMW90   

  //空閑行時(shí)間期限,單位微秒;

  MOVB   100, SMB94    //接收字符數(shù)目最大值

  ENI    //開(kāi)中斷

  ATCH   INT_0, 23      //接收中斷連接

  ATCH   INT_2, 9  //發(fā)送中斷連接

  RCV    VB100, 0

  2  控制主程序

  NETWORK 1

  LDB=   VB101, 16#31

  //檢測(cè)到要求起動(dòng)機(jī)器的控制信息,轉(zhuǎn)入開(kāi)動(dòng)操作

  LPS

  S      V10.0,1        //設(shè)置啟動(dòng)標(biāo)志位

  A      V10.0    //檢測(cè)啟動(dòng)標(biāo)志位

  A      I0.1      //檢測(cè)輸入是否為1

  TON    T51, VW600

  //若各條件具備,啟動(dòng)定時(shí)器,其定時(shí)參數(shù)由上位機(jī)給定

  A      T51

  A      V10.0

  //若定時(shí)到并且下位機(jī)處于啟動(dòng)狀態(tài),置位輸出Q0.4

  =      Q0.4

  NETWORK 2

  LDB=   VB101, 16#30


  A      V10.0

  S      V10.0, 1

  這段程序?qū)⒔邮盏降目刂茢?shù)據(jù)的啟動(dòng)、停止控制位進(jìn)行判斷,根據(jù)判斷的結(jié)果決定啟動(dòng)還是停止設(shè)備;在這段程序里面還將上位機(jī)發(fā)送的時(shí)間數(shù)據(jù)送給定時(shí)器;這樣上位機(jī)就能實(shí)時(shí)控制下位機(jī)的起停,并且能實(shí)時(shí)的對(duì)定時(shí)器的定時(shí)長(zhǎng)度進(jìn)行修改,實(shí)現(xiàn)遠(yuǎn)程控制。

  3  中斷處理

  INT_0:  

  //接收完成中斷如果接收狀態(tài)顯示接受到結(jié)束字符,連接一個(gè)10ms定時(shí)器

  // 發(fā)發(fā)送,同時(shí)將接收到的控制信息中的控制數(shù)據(jù)部分進(jìn)行轉(zhuǎn)換,以便后續(xù)程序的應(yīng)用

  LDB= SMB86,16#20 

  MOVB 10,SMB34

  BTI     VB102, VW600     

  //數(shù)據(jù)轉(zhuǎn)換,由ASCII轉(zhuǎn)換為整型數(shù)據(jù)

  -I 16#0030, VW60


0    


  //將整型數(shù)據(jù)進(jìn)行運(yùn)算得出操作者見(jiàn)到的數(shù)據(jù)

  *I +10, VW600

  ATCH 1,10

  CRETI

  NOT

  RCV VB100,0 

  //如果接收完成,然后啟動(dòng)一個(gè)新的接收

  在這段程序中將接收到的數(shù)據(jù)信息部分進(jìn)行轉(zhuǎn)換和運(yùn)算。因?yàn)槟J(rèn)的下位機(jī)接收和發(fā)送的數(shù)據(jù)都是文本信息,格式為ASCII碼值,所以如果想得到用戶在上位機(jī)上給定值轉(zhuǎn)換成為整數(shù),然后將這些數(shù)據(jù)用于控制。

  4  注意事項(xiàng)

  在編程時(shí)有一點(diǎn)應(yīng)該注意:那就是接收和發(fā)送兩種模式之間的切換時(shí)間,因?yàn)橛?85通訊口進(jìn)行通訊時(shí),發(fā)送結(jié)束后不能立即轉(zhuǎn)為接收模式,有一個(gè)反應(yīng)時(shí)間。所以在接收完成后如果要接著發(fā)送數(shù)據(jù)的話,需要設(shè)一個(gè)定時(shí)器,延遲一段時(shí)間以后再進(jìn)行發(fā)送操作,反之亦然。主程序及各中斷服務(wù)程序流程圖如圖2所示:

 

  結(jié)束語(yǔ)

  上位機(jī)的運(yùn)行界面如圖3所示,在該界面下就能實(shí)現(xiàn)對(duì)下位機(jī)的啟動(dòng)、停止控制,以及對(duì)控制參數(shù)的修改,并可實(shí)現(xiàn)參數(shù)的在線修改。

  在該工程中控制對(duì)象的控制點(diǎn)數(shù)不是很多,人機(jī)交互也不是很多,功能相對(duì)獨(dú)立,能夠獨(dú)立組成一個(gè)小系統(tǒng)。在這種情況下該方案能有效節(jié)約投資,簡(jiǎn)化控制,維護(hù)方便,操作簡(jiǎn)單,且能保證控制系統(tǒng)的實(shí)時(shí)性,在小型控制系統(tǒng)尤其是需要交互的數(shù)據(jù)不太多的情況下,優(yōu)勢(shì)較為明顯。


下一篇: 網(wǎng)絡(luò)安全應(yīng)用

上一篇: 現(xiàn)場(chǎng)總線控制系統(tǒng)在火

主站蜘蛛池模板: 国产 日韩 欧美 制服 另类 | 日韩亚洲一区二区 | a在线免费观看 | 在线视频一区二区三区 | 草久在线视频 | 午夜在线视频一区二区三区 | 日本高清精品 | 亚洲一区二区免费看 | 欧美一级二级在线观看 | 亚洲欧美视频一区 | 中文字幕第三页 | 超碰520 | 久久精品免费一区二区三 | 99久久免费精品视频 | www免费视频 | 精品国产不卡一区二区三区 | 操操操日日日 | 久久久久久网 | 日韩欧美国产成人一区二区 | 中文在线亚洲 | 日韩精品免费视频 | 亚洲第一成年免费网站 | 久久久久久久久久一区 | 一区二区三区国产好 | 日一区二区三区 | 一区二区三区亚洲 | 伊人网站 | 欧美群妇大交群中文字幕 | 中文字幕在线观看www | 国色天香综合网 | 中文字幕国产精品 | 亚洲一区二区欧美 | 中文字幕国产视频 | 国产福利在线小视频 | 美女二区| 日日天天 | 久久这里只有精品首页 | 一区二区手机在线 | 成人免费观看男女羞羞视频 | 久久69精品久久久久久久电影好 | 成人av网站在线观看 |