Snap7 西门子S7系列PLC的通信库 简介
目錄
- 簡(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->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)題。
- 上一篇: php 自动创建目录
- 下一篇: 结对开发Ⅴ——循环一维数组求和最大的子数