日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Snap7 西门子S7系列PLC的通信库 简介

發(fā)布時(shí)間:2023/12/9 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Snap7 西门子S7系列PLC的通信库 简介 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

  • 簡(jiǎn)介
  • 參考
  • Snap7 簡(jiǎn)介
    • Snap7 用途
    • 適用系統(tǒng)
    • 支持語(yǔ)言
    • 西門子S7通信介紹
    • Snap7 組件
    • Sanp7 API
    • 源碼、手冊(cè)、樣例下載

簡(jiǎn)介

最近在開發(fā)一個(gè)項(xiàng)目,作為技術(shù)帝,已經(jīng)完成工藝、機(jī)械設(shè)計(jì)的設(shè)計(jì),項(xiàng)目過(guò)多,也是為了讓自己更加?叉,就開始嘗試做電氣制圖和PLC編程。結(jié)合物聯(lián)網(wǎng)的發(fā)展,有一種想法,將數(shù)據(jù)傳輸?shù)絃inux的數(shù)據(jù)庫(kù)中保存,從而實(shí)現(xiàn)內(nèi)網(wǎng)或者外網(wǎng)的遠(yuǎn)程監(jiān)控,以及集合AI技術(shù),將工藝參數(shù)進(jìn)行分析,從而優(yōu)化工藝與報(bào)警。

在問(wèn)度娘PLC與樹莓派連接時(shí),發(fā)現(xiàn)了Snap 7。從而PLC數(shù)據(jù)傳輸?shù)絃inux下能搞定。

Snap7 資料比較少,并且均為英文的。

以下做個(gè)總結(jié),便于大家學(xué)習(xí)。

參考

Snap7 官方網(wǎng)站:http://snap7.sourceforge.net/
https://pypi.org/project/python-snap7/
http://www.6dm.club/index.php/2018/04/07/
https://blog.csdn.net/zxpbuct/article/details/80079698

Snap7 簡(jiǎn)介

Snap7 用途

Snap7 是一個(gè)基于以太網(wǎng)與S7系列的西門子PLC通訊的開源庫(kù)。

支持包括S7系列的S7-200、S7-200 Smart、S7-300、S7-400、S7-1200以及S7-1500的以太網(wǎng)通信。

適用系統(tǒng)

支持32/64位英特爾/ AMD的所有平臺(tái)。
例如:
Windows ( 除了 windows Me和95);
Linux和類Linux(樹莓派,UBeagleBone Black,DOO 等),
BSD;
Oracle Solaris ;
Apple OSX

支持語(yǔ)言

支持語(yǔ)言比較廣
Pascal;
C#;
C++;
C;
LabVIEW
Python;
Node.js
Java.

其中介紹比較多的是Python。

西門子S7通信介紹

西門子S7系列PLC采用以下兩種通訊方式:
1)開放式的TCP\IP,可以用于連接PLC與其他非西門子硬件
2) 西門子自己開發(fā)的S7 Protocol以太網(wǎng)通訊協(xié)議,用于西門子內(nèi)部硬件通訊

這兩者的傳輸報(bào)文是不一樣的,如下圖:


西門子數(shù)存儲(chǔ)到二進(jìn)制時(shí)方式是大端模式(BIG-Endian),而我們的普通電腦常常為小端模式(Liitle-Endian)。
大端模式是指數(shù)據(jù)的低位保存在內(nèi)存的高地址中,而數(shù)據(jù)的高位保存在內(nèi)存的低地址中.
小端模式是指數(shù)據(jù)的低位保存在內(nèi)存的低地址中,而數(shù)據(jù)的高位保存在內(nèi)存的高地址中。
例如:雙字 DWORD 0X2F11214C
PLC

PC

所以數(shù)據(jù)需要進(jìn)行轉(zhuǎn)換

Snap7 組件

Snap7 時(shí)將PC站點(diǎn)與PLC網(wǎng)路完全連接到一起,所以它也要和S7一樣包含三個(gè)對(duì)象組件:
1)客戶端
2)服務(wù)器
3)協(xié)作者
注意:三個(gè)對(duì)象可以在同一個(gè)應(yīng)用程序中同時(shí)使用;許多相同類型的對(duì)象可以同時(shí)實(shí)例化;許多應(yīng)用程序可以同時(shí)使用Snap7。
關(guān)于這個(gè)三個(gè)對(duì)象組件,不是很理解,可以參考http://www.6dm.club/index.php/2018/04/07和http://snap7.sourceforge.net/。

Sanp7 API

如果我們需要讀取192.168.10.100 S7-300PLC 中DB32的16位數(shù)據(jù),需要:
1)創(chuàng)建Snap7 Client連接;
2) 連接到PLC;
3) 讀取DB數(shù)據(jù);
4) 關(guān)閉Client(連接會(huì)自動(dòng)銷毀)

C++源碼

#include “snap7.h”;byte MyDB32[256]; //byte is a portable type of snap7.hTS7Client *Client;void SymplyGet(){MyClient = new TS7Client();MyClient->ConnectTo(“192.168.10.100”,0,2);MyClient->DBRead(32, 0, 16, &MyDB32);delete MyClient;}

C語(yǔ)言

#include “snap7.h”;byte MyDB32[256]; S7Object Client; // It’s a native integervoid SymplyGet(){MyClient =Cli_Create();Cli_ConnectTo(MyClient, “192.168.10.100”,0,2);Cli_DBRead(MyClient, 32, 0, 16, &MyDB32);Cli_Destroy(&MyClient); // passed byref}

#include “snap7.h”;

byte MyDB32[256]; //

byte is a portable type of snap7.h
TS7Client *Client;

void SymplyGet()
{

MyClient = new TS7Client();

MyClient->ConnectTo(“192.168.10.100”,0,2);

MyClient->DBRead(32, 0, 16, &MyDB32);
delete MyClient;
}

源碼、手冊(cè)、樣例下載

源碼下載:https://sourceforge.net/projects/snap7/files/1.4.2/snap7-full-1.4.2.7z/download
源碼下載非常慢:可以在百度云中下載:https://pan.baidu.com/s/1pZPmijUQdYN-xia6Ll4VYg,密碼:6eo8

后續(xù)將根據(jù)個(gè)人學(xué)習(xí)操作過(guò)程,逐步記錄下來(lái)。

總結(jié)

以上是生活随笔為你收集整理的Snap7 西门子S7系列PLC的通信库 简介的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。