1  引言
西門子S7-200PLC是德國西門子公司生產的小型PLC。S7-200以其高可靠性、指令豐富、內置功能豐富、強勁的通訊能力、較高的性價比等特點,在工業控制領域中被廣泛應用。S7-200PLC的突出特點之一是自由口通訊功能。如何實現S7-200PLC與個人計算機的互聯通信,是S7-200PLC應用的技術關鍵。
可編程控制器與計算機之間的通訊一般是">

      技術頻道

      S7-200PLC與PC自由口通訊的多種實現方法

      1 引言
      西門子S7-200PLC是德國西門子公司生產的小型PLC。S7-200以其高可靠性、指令豐富、內置功能豐富、強勁的通訊能力、較高的性價比等特點,在工業控制領域中被廣泛應用。S7-200PLC的突出特點之一是自由口通訊功能。如何實現S7-200PLC與個人計算機的互聯通信,是S7-200PLC應用的技術關鍵。
      可編程控制器與計算機之間的通訊一般是通過RS-422口或RS-232C口進行的,信息交換的方式為字符串方式,運用RS-232C或RS-422通道,容易配置一個與計算機進行通信的系統,將所有軟元件的數據和狀態用可編程控制器送入計算機,由計算機采集這些數據,進行分析及運行狀態監測。用計算機改變可編程控制器設備的初始值和設定值,從而實現計算機與可編程控制器的直接控制,一旦確定了可編程控制器的控制指令,就能很方便地與計算機連接。

      2 S7-200的自由口通訊模式
      S7-200支持多種通訊模式,如點點接口(PPI)、多點接口(MPI)、Rrofibus DP等。PPI等通訊協議主要用于西門子系列產品之間的通訊以及對PLC編程。在自由口模式下,可由用戶控制串行通訊接口,實現用戶自定義的通訊協議。用戶可以用梯形圖程序調用接收中斷、發送中斷、發送指令(XMT)、接受指令(RCV)來控制通信操作。在自由口模式下,通信協議完全由梯形圖程序控制。
      S7-200CPU上的通信口是與RS-485兼容的9針D型連接器,PLC還提供了實現 RS-485與 PC機上RS-232C相連接的PC/PPI電纜,利用它可以方便地實現S7-200系列PLC與PC之間的硬件連接。
      S7-200的編程軟件為STEP7-Micro/WIN32,該軟件有STL、FBD和Ladder三種編程模式,有SIMATIC指令和IEC131-3指令兩種指令。本文所給出的范例是使用SIMATIC指令的STL編程。

      3 S7-200 PLC端的通訊程序實現
      PLC程序分為主程序和中斷程序。主程序完成初始化通信口、開中斷、判斷、發送數據等功能,中斷程序完成接收和發送數據的功能。接收指令(RCV)啟動或終止接收信息功能,必須為接收操作指定開始和結束條件。發送指令(XMT)在自由口模式下依靠通訊口發送數據。
      3.1 控制字的選取
      反映CPU工作方式的模式開關當前位置的特殊存儲器位為SM0.7,它控制自由端口模式的進入。當SM0.7為0時,模式開關處于TREM位置;當SM0.7為1時模式開關處于RUN位置。而只有當模式開關位于RUN位置時,才允許進行自由口通訊。SMB30是自由口模式控制字節,用來設定校驗方式、通訊協議、波特率等通訊參數(其它控制字的設定參閱有關書籍)。
      3.2 程序的一些簡單介紹
      NETWORK1
      LD SM0.1 // 第一次掃描
      MOVB 16#09,SMB30
      //自由口通訊模式:9600波特率,無奇偶校驗,8個數據位
      MOVB 16#7C,SMB87 //接收信息狀態字節
      MOVB 16#53,SMB88
      //設置信息的開始字符“S”
      MOVB 16#45,SMB89
      //設置信息的結束字符“E”
      MOVW +5,SMW90
      //設定空閑行的時間間隔(ms)
      MOVW +179,SMW92
      //字符間/信息間定時器超時值(ms)
      MOVB 60,SMB94 //接收字符的個數
      NETWORK2
      LD SM0.1 MOVB 16#53,VB2499
      //設置接收和發送緩沖區的首地址
      ATCH 發送完中斷,9
      //把發送完成中斷和發送完成中斷子程序連接起來
      ATCH 接收完中斷,23
      //把接收完成中斷和接收完成中斷子程序連接起來
      ENI //允許中斷
      PLC程序的主要流程框圖如圖1所示:

      圖1 PLC程序流程

      4 自由口通訊在PC 端程序實現
      為了充分利用計算機數據處理的強大功能,可以在上位機編寫程序來實現計算機與PLC的通訊。可以用VC或VB實現上位機和PLC的通訊。
      4.1 利用VC6.0 或VC6.0 MSComm控件實現
      MSComm控件Microsoft公司提供的簡化的Windows下串行通訊編程的ActiveX控件,它為應用程序提供了通過串口收發數據的簡便方法。PC機通過RS-232口與PLC進行通信,該通信控件提供了使用RS-232開發串行通信軟件的細則,使用事件驅動或查詢方式來解決開發通信軟件中遇到的問題。事件驅動是一種強大的處理問題的方法,對事件發生的跟蹤和處理在通信軟件中用Oncomm來實現,它包括檢測和處理通信錯誤等;查詢方式則要求設計者自行讀取CommEven值,并判斷發生何種事件,再對之進行處理。該控件有許多重要的屬性,主要的屬性如附表所示。

      附表 MSComm屬性


      開發通信軟件只需上述幾個重要屬性設置好通信口,然后用SetOutput指令發送命令。按照通信協議,待PC機與PLC握手成功后,可按特定的數據格式通過GetInput或SetOutput來接收或發送數據。
      4.2 利用VC6.0 CSerialPorts類實現
      如果在程序中使用多個串口,而且還要做很復雜的處理工作,那么最好不用MSComm控件。如果這時候不愿意自己編寫底層函數,就可以使用CSerial Ports類。
      這個類是由Remon編寫的。其中詳細的功能可以在其網站上查詢。
      將SerialPort.h 和 SerialPort.cpp兩個類文件復制到工程文件夾中,用 Project -> Add to project -> Files命令將上述兩個文件加入工程。
      串口的初始化:
      在這種方式下,串口的初始化通常放在一個自定義的函數中,這樣可以使用多不同的端口,下面以初始化COM的為例給出部分代碼。
      void CtestView::OpenCom2()
      { DCB dc;
      dc.DCBlength = sizeof(DCB);
      dc.BaudRate = CBR_9600;
      //數據傳輸速率為9600
      dc.ByteSize = 8;
      //8位數據位
      dc.StopBits = ONESTOPBIT;
      //1位停止位
      dc.Parity = NOPARITY;
      //無校驗
      }
      其中DCB(設備控制塊)是一種數據結構,用以實現串口屬性的設置。
      數據的接收和發送:
      數據接收是調用了ReadByte函數,每次讀取一個BYTE型變量,多個數據的讀取可以通過循環實現。數據發送是調用WriteByte函數,每次只能發送一個無符號的char型或者與之等價的數據,多個數據可以通過循環實現。
      4.3 利用PCommPro應用軟件實現
      與PLC通訊時,PC機還可采用的PCommPro應用軟件,該軟件是通過Win32初級API函數的調用來控制和使用通訊端口。與VB/VC中的MComm控件相比較,使用較復雜些,但通訊效率高輸出控制較好。
      在程序中PC機接收數據采用回調函數的處理方式,即欲建立事件,需給定一個函數的地址,當事件發生時,Pcomm便到該回調函數所在的地址去執行該程序代碼。所謂回調函數是指當調用一個函數時(尤其是API),該函數會要求調用者提供一個函數的地址,當被調用函數執行后,會再去調用此函數,目的是將結果傳送回來讓用戶知道,或是該被調用函數需要另一個參考的函數運算等,這種做法就稱為回調。Pcomm中的回調函數主要介紹以下幾種。
      Sio_term_irq:當收到終止字符時引發事件程序;
      Sio_cnt_irq:接收到固定字符時引發事件;
      Sio_modem_irq:當硬件線路的電壓發生變化時,引發事件,硬件線路包括DCD,DSR,CTS,RI4支管腳;
      Sio_break_irq:當接到中斷信號時引發事件。
      在程序設計中要根據具體的情況來選擇不同的回調函數。例:數據以ASCII值形式傳遞時,可以使用Sio_term_irq函數,即當收到終止字符時引發事件程序,也可以使用其它回調函數。但當傳遞的數據以字節形式表示時,使用Sio_term_irq函數可能會引發一些問題,是因為傳遞的數據值可能與函數所設置的終止字符相同,可能造成接收數據的不完整。

      圖2 PC的主要程序流程框圖
      應用到的其它函數還有如下:
      sio_open():打開通信端口;
      sio_ioctl():設置傳輸的端口參數,給定的參數有三個,有端口號碼、波特率和參數模式(由數據位、停止位和奇偶檢驗位3部分組成);
      sio_read():從接收緩沖區中讀取字符串;
      sio_write():把發送緩沖區中的數據發送出去;
      sio_close():關閉通訊端口,此操作會導致所有的接收和傳送操作都停止。
      PC程序的主要流程框圖如圖2所示。

      5 結束語
      S7-200的自由口通訊方式,使用戶可以通過PLC指令自己定義通訊協議,從而與任何公開通訊協議的RS-422或RS-232C接口設備進行通訊,使通訊范圍大為增加,控制系統配制更加靈活。隨著計算機的普及,人們更希望在享受PLC高性能控制功能的同時,利用個人計算機大量豐富的軟件,將PLC的信息轉換成各類畫面顯示,并可以對PLC的參數進行實時修改,達到管理、控制一體化。

      文章版權歸西部工控xbgk所有,未經許可不得轉載。

      主站蜘蛛池模板: 久久精品国内一区二区三区| 在线视频精品一区| 国产福利91精品一区二区| 在线观看国产一区亚洲bd| 日韩精品无码视频一区二区蜜桃| 国产人妖视频一区二区| 一区五十路在线中出| 在线播放精品一区二区啪视频| 综合久久一区二区三区| 国产精品亚洲一区二区无码 | 亚洲日韩精品无码一区二区三区| 精品欧洲AV无码一区二区男男| 亚洲一区精品伊人久久伊人| 2021国产精品一区二区在线| 一区二区三区四区精品| 日韩一区二区在线观看| 无码人妻一区二区三区免费视频 | 亚洲中文字幕无码一区| 一区二区高清在线观看| 国产伦精品一区二区三区免费迷 | 无码人妻一区二区三区免费| 国产成人久久精品一区二区三区| 成人区精品一区二区不卡| 综合久久久久久中文字幕亚洲国产国产综合一区首 | 波多野结衣一区在线| 无码少妇一区二区三区芒果| 亚洲午夜一区二区三区| 无码av免费毛片一区二区| 国产成人高清亚洲一区91| 国产丝袜无码一区二区视频| 无码人妻精品一区二| 五月婷婷一区二区| 国模精品一区二区三区视频| 麻豆AV无码精品一区二区| 国产精品资源一区二区| 久久久无码精品国产一区| 亚洲AV无码一区二区三区性色 | 日韩免费一区二区三区在线| 日本免费一区尤物| 色窝窝无码一区二区三区| 日本一区二区三区精品视频|