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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/9 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Snap7 西门子S7系列PLC的通信库 简介 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 簡介
  • 參考
  • Snap7 簡介
    • Snap7 用途
    • 適用系統
    • 支持語言
    • 西門子S7通信介紹
    • Snap7 組件
    • Sanp7 API
    • 源碼、手冊、樣例下載

簡介

最近在開發一個項目,作為技術帝,已經完成工藝、機械設計的設計,項目過多,也是為了讓自己更加?叉,就開始嘗試做電氣制圖和PLC編程。結合物聯網的發展,有一種想法,將數據傳輸到Linux的數據庫中保存,從而實現內網或者外網的遠程監控,以及集合AI技術,將工藝參數進行分析,從而優化工藝與報警。

在問度娘PLC與樹莓派連接時,發現了Snap 7。從而PLC數據傳輸到Linux下能搞定。

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

以下做個總結,便于大家學習。

參考

Snap7 官方網站: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 簡介

Snap7 用途

Snap7 是一個基于以太網與S7系列的西門子PLC通訊的開源庫。

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

適用系統

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

支持語言

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

其中介紹比較多的是Python。

西門子S7通信介紹

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

這兩者的傳輸報文是不一樣的,如下圖:


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

PC

所以數據需要進行轉換

Snap7 組件

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

Sanp7 API

如果我們需要讀取192.168.10.100 S7-300PLC 中DB32的16位數據,需要:
1)創建Snap7 Client連接;
2) 連接到PLC;
3) 讀取DB數據;
4) 關閉Client(連接會自動銷毀)

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語言

#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;
}

源碼、手冊、樣例下載

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

后續將根據個人學習操作過程,逐步記錄下來。

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。