產品分類

      當前位置: 首頁 > 工業控制產品 > 自動化控制 > PLC可編程控制器

      類型分類:
      科普知識
      數據分類:
      PLC可編程控制器

      西門子S7200 PLC PPI通訊協議詳解

      發布日期:2022-04-26 點擊率:2149 品牌:組態王_Kingview

      西門子S7200 PLC PPI通訊協議詳解
      西門子S7-200 PLC之間或許PLC與PC之間通訊有許多種辦法:安閑口,PPI辦法,MPI辦法,Profibus辦法。運用安閑口辦法進行編程時,在上位機和PLC中都要編寫數據通訊程序。運用PPI協議進行通訊時,PLC能夠不必編程,并且可讀寫悉數數據區,便當便當。可是西門子公司沒有發布PPI協議的格局。用戶假定想運用PPI協議監控,有必要收購其監控商品或第三方廠家的組態軟件。這么給用戶自立開發帶來推重艱難,分外是自行開發的現場設備就不能經過PPI協議接入PLC。其它通訊辦法編程也存在編程雜亂,需求收購軟件和授權等局限性(1)。經過數據監督、剖析的辦法,咱們找出了PPI協議的要害報文格局,可用于上位機、現場設備與S7-200 CPU之間通訊。
      2 剖析辦法
      西門子的Step 7 Micro/Win32 是用于S7-200系列PLC的開發東西,它運用PC機上的COM口經過一條PC/PPI編程電纜連到PLC的編程口上。這闡明,PC實習上是能夠經過串口同S7-200 CPU通訊。僅僅咱們不知道通訊協議算了。經過截獲PC機串口上的收發數據,對照Step 7軟件宣告的指令,咱們就有或許剖析出有關指令的報文和通訊辦法;然后,直接經過串口向PLC發送報文,以驗證這些指令報文是不是精確。本著這一思維,咱們選用以下進程取得這些報文。
      首要制造一個串口的分支器,COM1的RX、TX別離接到COM2的TX、RX,即穿插接線,使得COM1發的數據COM2能收到。PC/PPI編程電纜接在COM1上,這么,Step7 Micro/Win32發給PLC的報文就能夠在COM2上接納了。咱們按S7-200體系手冊設置好兩個串口,參數要準則,均為9600,8,偶校驗,1位中止位。然后設置好Step7軟件,使之能與S7-200 CPU正常通訊。從Step7軟件中宣告一個明晰指令,COM2上的監督軟件就能顯現這條報文了(用16進制顯現)。經過與Profibus規范的類推(2)咱們就能夠得到一些要害的報文了。這種辦法比剖析PLC中NETR,NETW指令要直接、悉數(3)。
      3 PPI協議剖析
      PC與PLC選用主從辦法通訊,PC按如下的格局發讀寫指令,PLC作出接納精確的照料(回來應對數據E5H或F9H見下文剖析),上位機接到此照料則宣告供認指令(10 02 5C 5E 16),PLC再回來給上位機相應數據。
      SD LE LEr SD DA SA FC DSAP SSAP DU FCS ED
      SD:開端符(68H)
      LE、Ler:長度(從DA到DU)
      DA:意圖地址
      SA:源地址
      FC:功用碼 (6CH)
      DSAP:意圖效勞存取點
      SSAP:源效勞存取點
      DU:數據單元
      FCS:校驗和
      ED:完畢符(16H)
      3.1 讀指令剖析
      一次讀一條數據
      關于一次讀取一個數據,讀指令都是33個字節。前面的0—21字節是準則的,為:
      68 1B 1B 68 02 00 6C 32 01 00 00 00 00 00 0E 00 00 04 01 12 0A 10
      由所以PC上發的讀PLC數據的指令,SA=00,DA=02,假定有多個站,DA要改成相應的站號。讀指令中從DA到DU的長度為1B即27個字節。從22字節開端依據讀取數據的類型、方位禁絕則而禁絕則。表一是讀禁絕則存儲器指令的Byte22—32。
      字節 22 23 24 25 26 27 28 29 30 31 32
      功用 讀取長度 數據個數 存儲器類型 存儲器偏移量指針 校驗和 完畢
      讀q0.0 01 00 01 00 00 82 00 00 00 64 16
      讀m0.0 01 00 01 00 00 83 00 00 00 65 16
      讀M0.1 01 00 01 00 00 83 00 00 01 66 16
      讀SMB34 02 00 01 00 00 05 00 01 10 F9 16
      讀VB100 02 00 01 00 01 84 00 03 20 8B 16
      讀VW100 04 00 01 00 01 84 00 03 20 8D 16
      讀vd100 06 00 01 00 01 84 00 03 20 8F 16
      讀i0.5 01 00 01 00 00 81 00 00 05 68 16
      讀i0.7 01 00 01 00 00 81 00 00 07 6A 16
      表一 讀指令的Byte22-32
      從表中咱們能夠得出以下效果:
      Byte 22 讀取數據的長度
      01:1 Bit 02:1 Byte 04:1 Word 06:Double Word
      Byte 24數據個數
      這兒是01 ,一次讀多個數據時見下面的闡明。
      Byte 26 存儲器類型
      01:V存儲器 00:其它
      Byte 27 存儲器類型
      04:S 05:SM 06:AI 07:AQ 1E: C 81:I 82:Q
      83:M 84:V 1F: T
      Byte 28,29,30存儲器偏移量指針(存儲器地址*8),如:VB100,存儲器地址為100,偏移量指針為800,改換成16進制便是320H,則Byte 28—29這三個字節便是:00 03 20。
      Byte 31 校驗和,前面已提到這是從(DA+SA+DSAP+SSAP+DU) Mod 256 。
      一次讀多條數據
      關于一次讀多個數據的狀況,前21Byte與上面類似僅僅長度LD,LDr及Byte 14禁絕則:
      Byte 14 數據塊占位字節,它指明數據塊占用的字節數。與數據塊數量有關,長度=4+數據塊數*10,如:一條數據時為4+10=0E(H);一同讀M,V,Q三個禁絕則的數據塊時為4+3*10=22(H)。
      Byte 22 老是02 即以Byte為單位。
      Byte 24 以字節為單位,接連讀取的字節數。如讀2個VD則Byte24=8
      Byte 19---30 按上述一次讀一個數據的格局順次列出,
      Byte 31---42 另一類型的數據,也是按上述格局給出。
      以此類推,一次最多讀取222個字節的數據。
      3.2 寫指令剖析
      一次寫一個Double Word類型的數據,寫指令是40個字節,別的為38個字節。
      寫一個Double Word類型的數據,前面的0—21字節為 :
      68 23 23 68 02 00 6C 32 01 00 00 00 00 00 0E 00 00 04 01 12 0A 10
      寫一個其它類型的數據,前面的0—21字節為:(與上面比照,僅僅長度字節發作改動)
      68 21 21 68 02 00 6C 32 01 00 00 00 00 00 0E 00 00 04 01 12 0A 10
      從22字節開端依據寫入數據的值和方位禁絕則而改動。表二是幾個寫指令的Byte22—40。
      字節 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
      寫入方位及值 長度 數據個數 存儲器類型 存儲器偏移量指針 位數 值、校驗碼、完畢符
      M0.0=1 01 00 01 00 00 83 00 00 00 00 03 00 01 01 00 71 16
      M0.0=0 01 00 01 00 00 83 00 00 00 00 03 00 01 00 00 70 16
      M0.1=1 01 00 01 00 00 83 00 00 01 00 03 00 01 01 00 72 16
      vb100=10 02 00 01 00 01 84 00 03 20 00 04 00 08 10 00 AE 16
      vb100=FF 02 00 01 00 01 84 00 03 20 00 04 00 08 FF 00 9D 16
      VW100=FFFF 04 00 01 00 01 84 00 03 20 00 04 00 10 FF FF A6 16
      VD100=FFFFFFFF 06 00 01 00 01 84 00 03 20 00 04 00 20 FF FF FF FF B8 16
      表二 寫指令的Byte22—40
      經剖析咱們能夠得出以下效果:
      Byte 22-- Byte 30 寫入數據的長度、存儲器類型、存儲器偏移量與讀指令準則。T,C等不能用寫指令寫入。
      Byte 32 假定寫入的是位數據這一字節為03,其它則為04
      Byte 34 寫入數據的位數
      01: 1 Bit 08: 1 Byte 10H: 1 Word 20H: 1 Double Word
      Byte 35--40值、校驗碼、完畢符
      假定寫入的是位、字節數據,Byte35便是寫入的值,Byte36=00,Byte37=查驗碼,Byte38=16H,完畢。假定寫個的是字數據(雙字節),Byte35,Byte36便是寫入的值, Byte37=查驗碼,Byte38=16H,完畢。假定寫個的是雙字數據(四字節),Byte35—38便是寫入的值, Byte39=查驗碼,Byte40=16H,完畢。
      3.3 其它指令剖析
      強行寫入
      I、Q、S 等不能運用上述的寫指令寫入數據,只能用強行寫入的辦法。
      前0—35字節值如下(長度字段要依據實習狀況而定),需求留心的是Byte8=07,
      68 2B 2B 68 02 00 6C 32 07 00 00 00 00 00 0C 00 12 00 01 12 08 12 48 0B 00 00 00 00 00 FF 09 00 0E 00 01 10
      后邊的內容如下:
      Byte 32 占位字節,從下一字節開端到校驗和前的字節數。闡明同讀數據的Byte 14.
      Byte 36 強行寫入數據的長度
      01:1 Bit 02:1 Byte
      04:1 Word 06:Double Word
      Byte 38 數據個數,這兒是01 ,一次強行寫多個數據時見下面的闡明。
      Byte 40 存儲器類型
      Byte 41 存儲器類型,見讀指令的闡明。
      Byte 42、43、44存儲器偏移量指針(存儲器地址*8)
      Byte 45、46、47、48 值、校驗碼、完畢符
      撤銷強行寫
      強行寫入I、Q 等后,這些值就不能被程序改動,除非運用”撤銷強行指令”。撤銷強行指令的格局與強行寫入類似,改動的有以下幾點:(1)是沒有”值”這一段,即沒有Byte45—48。這影響到長度字節LE,LEr;占位字節Byte 32.(2)Byte16=10H, (3) Byte32=0CH,也便是榜首條,沒有”值”這一段,數據塊長度變短了。
      關于一次強行寫入或撤銷多個數據的狀況能夠參照寫入指令寫出相應的報文,這兒不再給出。
      STOP指令
      STOP指令使得S7-200 CPU從RUN狀況改換到STOP狀況(此刻CPU模塊上的辦法開關開應打在RUN或TERM方位)。PC宣告如下指令,PLC回來F9,此刻PLC已進入等候狀況,PC再發供認報文(10 02 5C 5E 16),完結一個指令進程。
      68 1D 1D 68 02 00 6C 32 01 00 00 00 00 00 10 00 00 29 00 00 00 00 00 09 50 5F 50 52 4F 47 52 41 4D AA 16
      RUN 指令
      RUN指令使得S7-200 CPU從STOP狀況改換到RUN狀況(此刻CPU模塊上的辦法開關開應打在RUN或TERM方位)。PC宣告下指令,PLC回來F9,此刻PLC已進入作業狀況,PC再發供認報文(10 02 5C 5E 16),完結一個指令進程。
      68 21 21 68 02 00 6C 32 01 00 00 00 00 00 14 00 00 28 00 00 00 00 00 00 FD 00 00 09 50 5F 50 52 4F 47 52 41 4D AA 16
      3.4 讀出數據剖析
      一次讀出一條數據
      PLC照料的數據也是用PPI封裝的。假定用一次讀一條數據指令,照料的報文中就只包含一條數據,此照料報文的Byte16<=8。
      Byte 04:DA=00 Byte 05:SA=02 即從02 PLC站發往PC。
      Byte 16:數據塊占位字節,從Byte21到校驗和前的字節數。
      一條數據時:Word=06 Double Word=08 其它為 05。
      Byte 22:數據類型,位=3,其它=4。
      Byte 24:數據寬度,Bit=01,Byte=08,Word=10H,Double Word=20H
      Byte 25—28:值。
      假定網絡上只或許有一個站會發回照料報文,那么能夠簡略的依據LE長度字節區分回來值的方位:LE=16H,回來值是字節,或位類型的值,照料報文的Byte 25便是回來值;LE=17H,回來值是字(雙字節)類型的值,照料報文的Byte 25,26便是回來值;LE=19H,回來值是雙字(四字節)類型的值,照料報文的Byte 25—28便是回來值。更精確的辦法是要依據回來報文的SA,DA,及存儲器方位等信息辨認方針地址和源地址,供認是這次懇求的回來數據,然后經過校驗查看,得到精確的數據。
      一次讀出多條數據
      假定用的是一次讀多條數據的指令,照料的報文中就包富含多條數據。這些數據只需類型參數,沒有偏移量參數,所以要留心依據讀指令的次序將其逐個對應起來。
      Byte 16:數據塊占位字節,從Byte21到校驗和前的字節數,與數據塊數量和類型有關。
      Byte 20:數據塊的個數。
      Byte 21 開端為數據塊,每一個數據塊都以FF 04開端,接下來的兩個字節標明這一數據塊的長度,以位核算,然后順次是接連的數據。下一個數據塊也是以FF 04開端,重復上述格局,直到完畢。
      4 運用
      PC與與PLC通訊
      在選用PC機與PLC通訊時,核算機選用PPI電纜或通常的485串口卡與PLC的編程口聯接, PC機選用VB編程,遵照PPI協議,主從式的通訊辦法,一次讀寫操作的進程包含:首要上位機宣告讀寫指令,PLC作出接納精確的照料(回來應對數據E5H),上位機接到此照料則宣告供認指令(10 02 5C 5E 16),PLC完結精確的讀寫照料,回來給上位機相應數據。這么收發兩次數據,完結一次數據的讀寫。那么咱們就能夠運用上述PPI協議,讀寫S7-200PLC中的各種類型數據,包含I、Q、SM、M、V、T、C、S等數據類型,能夠直接讀出以上變量中的位、字節、字、雙字等,(其間讀位變量時,實習是讀取該位地址的字節值)。能夠改動PLC的作業狀況(RUN/STOP)。在編程時,最好將讀取的查看值、輸出值等數據,寄存在PLC的一個接連的變量區中,當上位機讀取PLC的數據時,就能夠一次讀出這組接連的數據,削減數據的分次頻頻讀取。當修正設定值等數據時,進行寫數據的通訊操作。
      現場設備與PLC通訊
      運用PPI協議除了能與上位機(PC)通訊外,更首要的是為現場設備與S7-200CPU之間的通訊供應了捷徑。自行開發的設備能夠便當的運用PPI協議經過485/232接口接入S7-200CPU,聯入PLC的網絡,包含操控面板,搜集器等。
      5 總結
      經過剖析STEP7 Micro/win32軟件與S7-200CPU的通訊數據,咱們得到了西門子PPI協議的要害報文格局,這一效果對工程實習具有較高的參閱價值。在不運用西門子或其它組態軟件的狀況下,運用剖析得到的PPI協議完結了上位機對PLC的監控。現場設備與PLC通訊方面的作業正在進行中。別的這種對通訊端口進行監測、剖析的辦法也對一些不知道協議的測定和通訊過錯的查看具有輔導含義。

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

      上一篇: MATLAB和Simulink在航

      推薦產品

      更多
      主站蜘蛛池模板: 后入内射国产一区二区| 国产精品一区视频| 在线观看免费视频一区| 国产福利电影一区二区三区| 一本岛一区在线观看不卡| 国产精品亚洲综合一区在线观看 | 精品国产亚洲一区二区在线观看 | 久久久久人妻一区二区三区vr| 国产伦精品一区二区三区| 日本一区二区视频| 国产视频一区二区在线观看| 丰满人妻一区二区三区视频53| 蜜桃无码AV一区二区| 亚洲国产精品一区二区九九| 无码视频一区二区三区在线观看 | 97久久精品无码一区二区天美| 国产成人av一区二区三区在线 | 亚洲AV无码第一区二区三区| 亚洲AV成人精品日韩一区| 日韩欧国产精品一区综合无码| 亚洲日韩一区二区一无码| 国产精品熟女一区二区| 人妻无码一区二区视频| 欧美日本精品一区二区三区| 日本不卡在线一区二区三区视频| 激情无码亚洲一区二区三区 | 国产香蕉一区二区三区在线视频| 精品福利一区二区三| 视频在线观看一区二区三区| 精品国产鲁一鲁一区二区| 亚洲国产精品乱码一区二区| 爆乳熟妇一区二区三区| 无码人妻一区二区三区在线水卜樱 | 无码精品一区二区三区免费视频| 一区二区三区视频网站| 国产福利一区二区在线视频 | 午夜在线视频一区二区三区| 一区国产传媒国产精品| 加勒比无码一区二区三区| 亚洲熟女乱色一区二区三区| 蜜桃AV抽搐高潮一区二区|