色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

西門子S7-200 PPI協議獲取及在PLC現場總線通信中的應用

電子設計 ? 來源:曲阜師范大學電氣信息與 ? 作者:許其義,武玉強, ? 2020-06-03 07:53 ? 次閱讀

引言

西門子S7-2OO CPU可支持多種通信協議,如點到點(Pojnt-to-point)的協議(即PPI)、多點協議(MPI),以及Prfibus協議等。其中PPI協 議是西門子公司專門為其產品S7-200開發的通信協議,使用PPI協議進行通信時,PLC可以不用編程,而且可讀寫所有數據區,快捷方便。但是,PPI 協議屬內部協議對外不公開,用戶如果想使用PPI協議監控,必須購買其監控產品或第三方廠家的組態軟件(第三方廠家也是購買的該協議的驅動文件,他們同樣 也看不到該協議)。這樣給用戶自主開發帶來一定困難,特別是自行開發的現場設備就不能通過PPI協議接入PLC。其它通信方式編程也存在編程復雜,需要購 買軟件和授權等局限性。基于上述原因我們嘗試使用串口監視第三方軟件和PLC的數據通信,獲得它們的通信數據字,然后對大量的數據進行統計分析,得到通信 指令關鍵報文的格式,最后在自行開發的程序中逐一測試,總結得出PPI協議的內容,并開發出通信控件,使它在自主開發的總線控制系統中監控機與各子站 PLC的通信變得簡單、靈活、經濟,解決了PLC在現場總線控制系統中的通信難題。

Borland C++ Builder作為一種新穎的可視化編程語言,自誕生以來,就以其在運行速度、實現的功能及開發應用程序界面方面的強大功能風靡于世,成為Windows 平臺下最主要的應用開發系統之一。它繼承TRAD(rapid application development)和VCL(visual component library)技術,這使得利用C++ Builder開發應用程序變得簡單、快速、易于移植。因此,我們使用 C++ Builder開發通信控件。

一、S7-200 PPI協議

1.1 協議獲取方法

獲取協議的基本思路:西門子的Step7 Micro/ Win32是用于S7-200系列PLC的編程開發工具,它使用PC機上的COM口通過一條PC/PPI編程電纜連接到PLC的編程口上。這說明,PC實 際上是可以通過串口與S7-2OOCPU通信。通過截獲PC機串口上的收發數據,對照Step7 Micro/Win32軟件發出的指令,我們就有可能分析出有關指令的報文和通信方式;然后,直接通過串口向PLC發送報文,以驗證這些指令報文是否正 確。昆侖公司開發的MCGS組態軟件中有西門子S7-2OOPPI協議的驅動程序,我們可以利用它強大的監控能力更加方便地獲取數據報文。

獲取協議需要的硬件條件:一臺具有至少兩個串行口的計算機,一條SIEMENSS7-2OO PC/PPI電纜,串口分支器(自行制作)等。

軟件條件:Step7 Micro/Win32軟件,帶PPI驅動程序的組態軟件(如MCGS),C++ Builder開發環境,串口監視軟件(可選)。

制作一個串口的分支器,COM1的RX、TX分別接到COM2的TX、RX,即交叉接線,使得COM1發送的數據COM2能收到。PC/PPI編程電纜接在COM1上,這樣,Step7 MiCro/Win32發給PLC的報文就可以在COM2上接收了。我們按S7-200系統手冊設置兩個串口,參數均為9600、8、偶校驗、1位停止位,然后設置Step7軟件,使之能與S7-200CPU正常通信。從Step7軟件中發出一個明確指令,COM2上的監視軟件就能顯示這條報文了(用16進制顯示)。通過類比組態軟件與PLC通信中所得至的數據,我們即可以得到一些關鍵的報文。串口分支器原理如圖1所示。

1.2 協議分析

編寫串口監視程序,對計算機進行底層操作,使計算機的兩個串口互不干擾。程序一開始執行就打開監視串□,監聽并記錄經過串口的所有數據,利用串口接收經過串口的數據,對接收到的大量數據進行分析。

例如:通過Step7 Micro/Win32軟件訪司PLC寄存器VBl00,串口監視程序得到的另一串口發送和接收的數據為:

68 1B lB 68 02 00 6C 32 01 00 00 00 00 00 0E 00 00 04 01 12 0A 10 02 00 01 00 01 84 00 03 20 8B 16

68 16 16 68 00 02 08 32 03 00 00 00 00 00 02 00 05 00 00 04 01 FF 04 00 08 41 97 16

通過Step7 Micro/Win32軟件改寫PTC寄存器 VD2O0,串口監視程序得到的另一串口發送和接收的數據為:

68 20 20 68 02 00 7C 32 01 00 00 00 00 00 0E 00 05 05 01 12 0A 10 02 00 01 00 01 84 00 06 40 00 04 00 08 FF CF 16

E5

10 02 00 5C 5E 16

68 12 12 68 00 02 08 32 03 00 00 00 00 00 02 00 01 00 00 05 0l FF 47 16

上面僅給出兩個讀寫操作的例子,實際中利用這種方法得到大量的數據,進行統計比較分析,總結出協議指令格式。

1.3 協議指令測試

根據上面分析總結出的協議指令,利用C++ Builder編寫測試程序(實現與PLC的通信)逐一對操作進行測試,對測試過程進行詳細的記錄;然后分別利用組態軟件MCGS,以及西門子開發的 OPC軟件PC ACCESS(它們與S7-200通信都是使用PPI協議)再與PLC通信檢驗測試結果的正確性,進而檢驗所總結的協議指令的正確性。測試界面如圖2所 示。

下面給出測試部分用的關鍵程序段:

//發送指令,其中數組rInstr存儲的是指令字

Variant TxBuff;

//聲明一個OleVariant變量

TxBuff=VarArrayCreate(OPENARRAY(int,(0,32)),varByte);

//重置它的大小,為0~n,int為n的類型

//varByte 為TxBuff每一個元素的類型

for(int i=0;i《33;i++)

TxbBuff.PutElement(rInstr[i],i);

//填充元素其中str_read為定義的一個固定數組

//其中有要發的數據

MSComm1-》Output=TxBuff;

//接收返回數據,數據以整形表示

OleVariant BxBuff;

RxBuff=MSComm1-》Input;

//接收數據

int a=RxBuff.ArrayHighBound(1);

//接收數據的字節數

for(int i=0;i《Len;i++)

//提取接收到的數據到接收緩沖數組中得到有用數據

rev_array[i]=RxBuff.GetElement(a-1-Len+i);

for(int i=0;i《Len;i++)

dataTy=dataTy*16*16+rcv_array[i];

……

二、通信控件研究與開發

C++ Builder中提供了相當多的控件供開發人員選用,控件可分為可視化控件與不可視化控件兩種。可視化控件在使用時可以在設計階段和運行階段均見到其外 觀;不可視控件則只能在設計階段看到一個代表的圖標,運行階段是不可見的,但可以看到該控件所提供的服務。除了C++ Builder所提供的控件外,程序開發人員可以針對本身的需要自行組合現有的控件而創建一個新的控件,或是自行開發一個全新的控件,開發完成后便可加入 到C++ Builder的控件面板中,同C++ Builder中自身的控件一樣使用,相當方便。

根據上述對西門子PPI協議的解讀及其測試利用C++ Builder開發PPI通信控件的詳細說明如下。

2.1 控件的創建步驟

本文創建的控件屬不可視控件;從Tcomponent類繼承而來,可在設計期間見到代表的圖標,運行期間見到控件實現的功能。設計步驟具體如下:

①在C++ Builder集成開發環境下,選擇Filel New菜單,調出對象庫,然后選擇New選項卡中的 Component選項,輸入適當的控件類,命名為TS7Comm,定義安裝在自定義標簽7e,如圖3所示。

②窗體出現一個空白的控件單元文件,至此控件的基本架構結束,下面就是實際的程序代碼編寫。

③創建代表控件的代表圖標。

文章所要開發的控件屬于執行期不可見的控件,需要一個代表的圖標放在控件面板上,當在應用程序中使用該控件時,也要在窗口上顯示代表圖標。使用C++ Builder中的Image Edit程序,做一個24x24像素的Bitmap圖像,該Bitmap的名稱要和控件有相同的命名,這里命名為TS7Comm,使用ImageEdit 繪圖工具畫完圖標后,保存為TS7Comm.dcr。

2.2 控件的主要功能

控件要完成的主要功能是讀寫S7-2OO PLC的寄存器(I、Q、M、V、S、SM等),控制S7-2OO PLC的狀態(登錄、啟動、停止),強制I/O操作(強制讀迸數字量輸入和強制寫數字量輸出)。

為了簡化串口程序的設計,本文選用了Microsoft的MSCOmm控件。注冊MSCOmm控件,C++ Builder中不像VB、VC本身提供串行通信控件MSComm,但是我們可以通過注冊后像VB、VC那樣使用它。啟動C++ Builder后,選擇主菜單中的Component菜單項,單擊Import Active Control命令,彈出Import Active窗口,選擇Microsoft Comm Control6.0,在選擇Install按鈕執行安裝命令,系統會自動進行編譯,編譯完成后即完成了MSComm控件的注冊,系統默認安裝在 Active頁,這里安裝在標簽7e下。接下來我們就可以像使用C++ Builder本身提供的控件那樣使用新注冊的MSComm控件了。這樣就不用再像串口監視那樣使用較復雜的API函數,而用MSComm控件可以省去不 少底層程序的編寫,簡單地實現串口通信,在開發控件的Unit文件的頭文件中加入#include “MSCommLib_OCX.h”。

下面給出部分重要屬性、函數的聲明

class PACKAGE TS7Comm:public TComponent

{

PrlVate:

TComPonNumber FConmmPonent;

bool FPortOpen;

void-fastcall SetCommPort ComPortNumber port);

//設置通信端口

void-fastcall SetBaudRate (TBaudRate Rate);

//設置通信速率

void-fastcall SetDataBits (TDataBits Num);

//設置數據位數

void-fastcall SetStopBits (TStopBits Num);

//設置停止位

void -fastcall SetParity (TParity p)

//設置檢驗方式

void -fastcall SetPortOpen (bool b)

//打開通信端口

void OpenPort( ) ;

void ClosePort( ) ;

//關閉通信端口

。..。..

protected

。..。..

public

-fastcall TS7Comm (TComponent* Owner) ;

//構造函數

-property bool PortOpen = {read = FPortOpen, write=SetPortOpen, default=false};

//開關通信端口

long-fastCall ReadData(int plcAddr,TRortOpen,write=SetPortOpen,default=false};

//讀寄存器,plcAddr PLC的地址,默認為02,regTy寄存器地址

//regAddr是寄存器地址

void-fastcall WriteData(int plcAddr,TRegType regTy,int regAddr,long data);

//寫寄存器,最后一個參數為欲寫入的數據

bool-fastcall ForceRead(int plcAddr,int regAddr);

//強制讀數字量輸入

bool-fastcall ForceWrite(int plcAddr,int regAddr);

//強制寫數字量輸出

bool-fastcall PlC(int plcAddr);

//登錄指定的PLC站

bool-fastcall RunPlc(int plcAddr);

//啟動

bool-fastcall StopPlc(int plcAddr) ;

//停止

……

-published:

//加入屬性

-property TComPornNumber CommPort={read=FCommport,write=SetCommPort,default=pnComl};

-property TBaudRate BaudRate = {read=FBaudRate,write=SetBaudRate,default=br9600};

-property TDataBits DataBits = {read=FDataBits,write=SetDataBits,default=DB8};

-Property TParity Parity={read=FParity,write=Setparity,default=None};

-property TStopBits StopBits={read=FStopBits,write=SetStopBits,default=SB1‘;

2.3 控件的安裝調試

以上控件命名為TS7Comm,依照屬性、事件、方法構建了控件的各種服務,也創建了控件的代表圖標,編譯控件的文件S7Comm.Cpp,通過編譯后, 生成目標文件S7Comm.obj,這樣就為控件的安裝做好了準備。控件的安裝過程:首先,將開發的控件文件加大到一個包中,這樣才能把它放到控件面板 里。在菜單Component下選擇Install Component;接下來在unit file name中選擇控件的文件,必須指明完整的路徑,再給定要安裝的包文件名稱(Package file name),然后,點擊OK,在出現的’Package窗口中就包含了控件的名稱和其所屬單元文件的名稱。接下來是進行編譯(Compile)操作,由 C++ Builder的編譯器看看所創建的控件是否可以通過編譯,在Package窗口中點擊左上方的Compile圖標按鈕后,即開始進行編譯。編譯過程中如 果出現問題,C++ Builder會提示程序的錯誤點或警告點。此時必須對程序進行修正,直到所有的錯誤點被更正為止。最后,所有的問題郡修正完畢后,程序即通過了編譯,單 擊install圖標按鈕,系統即為控件在控件面板上設置一個放置位置,這與空間文件中Register函數所指明的標簽一致。一切安裝操作完成后,在 C++ Builder的控件面板的7e控件頁面中就出現了一個S7COmm控件。

至此,控件的安裝已完成,接下來對控件迸行測試。筆者通過在應用程序中做了大量的測試,證明該控件各項功能都能正確實現,且穩定可靠。目前,該控件已經在THJ-2型高級過程控制系統實驗裝置的自主監控平臺上使用,運行良好。

三、結束語

本文利用計算機串口監視技術成功獲得了西門子S7-2OOPPI協議的指令字,并加以解析、總結、測試,并在C++ Builder開發環境集成開發了PPI通信控件。實踐證明,在不使用西門子通信驅動程序或者其它組態軟件的情況下,利用所開發的PPI通信控件實現上位 機對PLC的監控該方法投資少,易于開發,運行穩定可靠,易于小型監控系統使用。另外,本文所述對通信端口進行監測、分析的方法對一些未知協議的測定和通 信錯誤的檢查也具有一定的指導意義。

責任編輯:Gt

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • plc
    plc
    +關注

    關注

    5016

    文章

    13385

    瀏覽量

    464811
  • 西門子
    +關注

    關注

    94

    文章

    3062

    瀏覽量

    116274
  • 現場總線
    +關注

    關注

    3

    文章

    521

    瀏覽量

    38612
收藏 人收藏

    評論

    相關推薦

    S7-200西門子PLC視頻教程大全

    以下是西門子S7-200PLC視頻教程,全文共有36個視頻。詳細介紹了西門子S7-200PL的各種概念,基礎的知識,及各案例的講解。 1、S7-20
    發表于 09-26 09:15 ?12w次閱讀

    西門子PPI協議詳解分析

    大家好:由于前段時間的瘋狂的研究西門子PPI協議解密之故,所以無心插柳的研究出了較實用的西門子S7-200
    的頭像 發表于 10-03 17:59 ?6222次閱讀
    <b class='flag-5'>西門子</b><b class='flag-5'>PPI</b><b class='flag-5'>協議</b>詳解分析

    西門子S7-200 PPI協議獲取及其通信控件研究

    西門子S7-200 PPI協議獲取及其通信控件研究
    發表于 01-10 12:46 ?40次下載
    <b class='flag-5'>西門子</b><b class='flag-5'>S7-200</b> <b class='flag-5'>PPI</b><b class='flag-5'>協議</b><b class='flag-5'>獲取</b>及其<b class='flag-5'>通信</b>控件研究

    西門子S7-200 PLC應用100例

    西門子S7-200 PLC應用100例》主要以西門子S7-200 PLC為主體,按基礎知識、擴
    發表于 09-17 10:02 ?701次下載
    <b class='flag-5'>西門子</b><b class='flag-5'>S7-200</b> <b class='flag-5'>PLC</b>應用100例

    西門子S7-200使用教程

    西門子S7-200 PLC仿真軟件超詳細使用教程西門子S7-200使用教程
    發表于 05-06 16:43 ?0次下載

    西門子S7-200以太網通訊解決方案

    BCNet-S7PPI用于西門子S7-200以太網編程下載、數據監控,同時支持S7-200 SMART、億維、合信等PLC。BCNet-
    發表于 01-16 15:49 ?1.7w次閱讀
    <b class='flag-5'>西門子</b><b class='flag-5'>S7-200</b>以太網通訊解決方案

    西門子PLC S7-200常見的71個故障匯總及解決辦法

    本文介紹了西門子PLC S7-200系列PLC的基本硬件組成與它的優點,最后介紹了71個西門子PLC
    的頭像 發表于 04-18 15:42 ?6.3w次閱讀
    <b class='flag-5'>西門子</b><b class='flag-5'>PLC</b> <b class='flag-5'>S7-200</b>常見的71個故障匯總及解決辦法

    英創信息技術工控主板通過PPI協議連接西門子PLC

    西門子S7-200系列PLC是工業場合應用最廣的現場控制設備之一,S7-200系列PLC支持自由
    的頭像 發表于 02-05 11:21 ?2528次閱讀
    英創信息技術工控主板通過<b class='flag-5'>PPI</b><b class='flag-5'>協議</b>連接<b class='flag-5'>西門子</b><b class='flag-5'>PLC</b>

    西門子S7-200 PLC編程實例精解

    西門子S7-200 PLC編程實例資料免費下載。
    發表于 04-22 10:12 ?446次下載

    西門子PLC教案(S7-200)

    關于西門子PLC教案(S7-200)資料免費下載。
    發表于 04-29 14:50 ?236次下載

    西門子S7-200高級應用

    西門子S7-200高級應用說明。
    發表于 05-06 17:28 ?86次下載

    西門子 S7-200 通過模塊連接易控通訊步驟介紹

    西門子數控840D、840DSL、合信、億維PLCPPI/MPI/PROFIBUS轉以太網。用于西門子S7-200/
    發表于 05-22 14:57 ?3217次閱讀
    <b class='flag-5'>西門子</b> <b class='flag-5'>S7-200</b> 通過模塊連接易控通訊步驟介紹

    西門子S7-200 PLC接入MQTT平臺

    西門子S7-200 PLC接入MQTT平臺
    發表于 11-10 16:52 ?3478次閱讀
    <b class='flag-5'>西門子</b><b class='flag-5'>S7-200</b> <b class='flag-5'>PLC</b>接入MQTT平臺

    西門子PLC S7-200 SMART PID控制功能分享

    S7-200 SMART采用了新型的設計方法,信號板可以擴展通訊接口,數字量接口,模擬量接口,并且能合理的分配空間。西門子PLC S7-200 SMART具有PID控制功能,為用戶
    的頭像 發表于 04-06 14:46 ?9900次閱讀

    S7協議讀取西門子S7-200 Smart PLC數據

    西門子S7-200 Smart PLC因其穩定性和易用性而廣泛應用。通過使用S7協議,可以實現對PLC
    的頭像 發表于 07-11 11:55 ?6452次閱讀
    <b class='flag-5'>S7</b><b class='flag-5'>協議</b>讀取<b class='flag-5'>西門子</b><b class='flag-5'>S7-200</b> Smart <b class='flag-5'>PLC</b>數據
    主站蜘蛛池模板: 三级网站视频在线观看 | 少女10声大哥喊退色狼 | 国内外成人免费在线视频 | 亚洲精品乱码久久久久久直播 | 精品国产福利在线视频 | 男人把女人桶到爽免费看视频 | 午夜性伦鲁啊鲁免费视频 | 亚洲精品视频在线免费 | 日本久久久久亚洲中字幕 | 成人公开免费视频 | 果冻传媒剧情在线观看 | 国产精品女上位在线观看 | 高h 大尺度纯肉 np快穿 | 四虎永久在线精品免费A | 交换:年轻夫妇-HD中文字幕 | 东北嫖妓对白粗口 | 超碰97免费人妻 | 一本到高清视频在线观看三区 | 女人被躁到高潮嗷嗷叫免费 | 国语对白老女人8av 国语对白刺激真实精品 | 久久综合给会久久狠狠狠 | 久久免费看少妇高潮A片JA | 性吧 校园春色 | 成 人 网 站免费观看 | 久爱精品亚洲电影午夜 | 日本性hd| 在线国产a不卡 | 久久99r66热这里只有精品 | 99久久国产综合精品成人影院 | 国产精品久久久久无码AV色戒 | 久久人人爽人人片AV人成 | 超碰人人澡人人胔 | 国产亚洲欧美日韩综合综合二区 | 色内射无码AV | 精品国产手机视频在在线 | 9LPORM原创自拍达人 | 忘忧草在线影院WWW日本动漫 | 成人AV无码一二二区视频免费看 | 97久久国产露脸精品国产 | 国产亚洲精品久久播放 | 久久精品一卡二卡三卡四卡视频版 |