Snap7 西门子S7系列PLC的通信库 简介[通俗易懂]

Snap7 西门子S7系列PLC的通信库 简介[通俗易懂]目录简介参考Snap7简介Snap7用途适用系统支持语言西门子S7通信介绍Snap7组件Sanp7APISnap7PythonSnap7安装PLC设置连接PLC读取数据发送数据Sanp7C/C++node.js简介最近在开发一个项目,作为技术帝,已经完成工艺、机械设计的设计,项目过多,也是为了让自己更加????叉,就开始尝试做电气制图和PLC编程。结合物联网的发展,有一种想法,将数据传…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

简介

最近在开发一个项目,作为技术帝,已经完成工艺、机械设计的设计,项目过多,也是为了让自己更加?叉,就开始尝试做电气制图和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.h
    TS7Client *Client;
   
  void SymplyGet()
  {
   
    MyClient = new TS7Client();
   
  MyClient->ConnectTo(“192.168.10.100”,0,2);
   
  MyClient->DBRead(32, 0, 16, &MyDB32);
    delete MyClient;
  }
   

Jetbrains全家桶1年46,售后保障稳定

C语言

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

#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

后续将根据个人学习操作过程,逐步记录下来。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/203721.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java子窗口获取父窗口句柄_java获得窗口句柄[通俗易懂]

    java子窗口获取父窗口句柄_java获得窗口句柄[通俗易懂]学会用按键精灵获取子窗口句柄来源:按键学院【按键精灵】电脑的桌面是最顶级的…Windows通过句柄(Handle)识别每个窗体、控件、菜单和菜单项,当程序运行时,它所包含的每个部件都有一个惟一确定的句柄同其他的部件相区别句柄在WindowsAPI中具有举足……其实呢,“抓抓”抓句柄的功能,实现起来是很容易的,我们一起来操作看看。实现功能点击图片控件之后鼠标不松开,到了需要…

    2022年7月14日
    17
  • 原则与执着:暴雪王牌总结游戏研发得失成败「建议收藏」

    原则与执着:暴雪王牌总结游戏研发得失成败「建议收藏」暴雪执行副总裁、diablo3设计师RobPardo在本年度GDC上详细讲述了暴雪在游戏设计理念的主要原则,总结暴雪过去十余年中的经验教训。  RobPardo在暴雪长期负责游戏设计方面的工作,具有极其丰富的成功经验。他曾是《星际争霸》、《星际争霸:母巢之战》、《魔兽争霸3:混乱之治》、《魔兽争霸3:冰封王座》、《魔兽世界》、《魔兽世界:燃烧远征》的主要设计者,2006年他以《魔兽世界》

    2022年5月7日
    75
  • Go学习——密码学

    Go学习——密码学

    2021年8月30日
    362
  • CCS软件下载安装教程

    CCS软件下载安装教程关于CCSCCS是CodeComposerStudio的缩写。是美国德州仪器公司推出的代码开发和调试软件。单片机设计会经常用到这个软件。文章目录CCS软件下载安装教程1.下载1.1主要步骤2.安装1.下载CCS是一款免费的软件。可以去官网下载:http://www.ti.com.cn/tool/cn/CCSTUDIO1.1主要步骤登录网页成功后,出现如下界面:如果觉得英文看着不适应,可以在右上角更改网页语言为“简体中文”。注册TI新用户,如实填写各项信

    2022年4月6日
    440
  • AD域的搭建

    AD域的搭建AD域1——肯定是先添加AD域服务器开始—》所有程序—》管理你的服务器—》添加删除程序—》选择添加AD域然后一系列设置,记得搭建了好几次,每次搭建的时候还是要看文档问别人,这次索性就记录每一个步骤,到了检测DNS服务器那里了。2——打开DNS服务管理器,修改一下SOA的属性3——AD的作用是把用户添加到一个组中进行统一管理…

    2022年5月13日
    164
  • 警告:为了安全请不要随意将ASP.Net的validateRequest=”false” .

    警告:为了安全请不要随意将ASP.Net的validateRequest=”false” .ASP.Net1.1后引入了对提交表单自动检查是否存在XSS(跨站脚本攻击)的能力。当用户试图用之类的输入影响页面返回结果的时候,ASP.Net的引擎会引发一个HttpRequestValidationExceptioin。默认情况下会返回如下文字的页面:ServerErrorin’/YourApplicationPath’ApplicationApot

    2022年6月5日
    26

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号