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->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的通信库 简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php 自动创建目录
- 下一篇: 结对开发Ⅴ——循环一维数组求和最大的子数