前言

因一项目需要web控制LOGO! PLC,利用西门子自带的免费LOGO!8.2 Web Editor工具可以很完美的做web页面开发。可以参考视频教程。此外西门子还提供数据导出到excel工具——LOGO8.2 Access Tool。

上面两款工具虽然使用起来非常便捷,但还是想结合Snap7、树莓派、Python做一个简单的动态web页面。

由于LOGO!PLC通讯方式与1200 1500PLC完全不同,有很多坑。

PLC 控制逻辑为:
M1=0时,泵Q1启动;而M1=1时,泵Q1关闭。
M2=0时,阀门Q2打开;M2=1时,手阀门Q2关闭。
当NI1=1时,阀门Q3打开,NI1=0时,阀门Q3关闭。
注意:数字量输入LOGO不可以远程更改;NI表示网络输入。

本文仅仅是个人经验总结,并一步步详细记录snap7获取和写入数据的步骤。snap7获取数据后的web页面可以用python flask或php等实现,就不再介绍。

硬件

Logo! PLC: 西门子6ED1052-1MD08-0BAD(8.FS4 固件版本号1.82.01 )

软件

西门子LOGO! 编程软件:LOGO!8.2 Soft Comfort
Python: 3.7.4
Snap7:1.42
python-snap7:0.10

主要参考

1)http://www.ad.siemens.com.cn/club/bbs/post_one_floor.aspx?b_id=28&a_id=1481079
2)https://cache.industry.siemens.com/dl/files/852/109768852/att_990439/v1/Help_zh-CHS.pdf?download=true
3)http://www.ad.siemens.com.cn/productportal/prods/logo/8_communication/Erthenet/S7/logo_1200_S7_logo_client/logo_1200_S7_logo_client.html
4)http://snap7.sourceforge.net/logo.html

PLC编程

新建网路项目

1) 在logo! Soft Comfot中选择工具-》设置,将编辑器变为成LAD和语言可以改为中文状态

2) 新建项目,需要选择网路项目(NWP)
3)添加新设备,注意IP地址和网关

编程

在电路图编辑器中编程(这与1200,200 PLC非常不同,刚开始接触比较难懂)

其中网路输入NI1为V0.0.

本地连接

1)Logo设置IP地址为192.168.0.3
2)设置本地连接网路属性

下载

1)点击工具栏上的下载按钮
2)选择连接方式
3)测试是否可以连接通过
4)刷获取连接信息
5)确定

监控调试

1)下载完成程序后,泵Q1和阀门Q2自动开启(可以听到继电器吸合声音)
2)点击电路图编辑器中的在线测试图标

可以发现M1和M2为灰色,Q1和Q2为黄色亮灯状态,Q3为灰色。表明程序运行正常
3)点击指示灯右侧最后一个图标(数据表)

4)编辑数据监控表
如下图填写数据表

从上图中可以看出QB0的实际二进制值为0000 0011,即泵Q1和阀门Q2都是开启状态,而QB1和QB2均为00000000,QB3输入不了,这是我们需要特别注意——LOGOPLC数据存取方式。

4)修改M1值使得泵Q1关闭
MB0赋予新值为1
结果如下:

5)M2强制赋值为1
在M1为1基础上强制M2为1,因为M1实际存储在M0.0(M0字节中的0号位),而M2存储在M0.1(M0字节中的1号位),所以对应的M0二进制位0000 0011,即数值为3.

5)修改网络输入值NI1
直接在V0.0赋予新值为1即可。

LOGO!VM映射

LOGO! VM数据存储方式比较奇特。
其数据类型有:
I数字量输入;AI模拟量输入;Q数字量输出;M:M标志位;V变量位存储器;VW变量字存储器;AQ模拟量输出;AM模拟量M标志位。
利用S7通信时需要用到VM映射,详细介绍见LOGO!Soft Comfort在线帮助手册。

VM地址和数据类型

I/O 与 LOGO! 0BA8 VM对应关系

LOGO! 与 S7通过 VM 地址分享数据


LOGO! 主机模块也可通过 VM 地址(991 至 1002)与 SIEMENS SIMATIC S7/Modbus
兼容设备及 HMI 设备共享时间和日期信息。

监控测试VM区

1)对泵Q1启动M1标志位和阀门Q2启动标志位M2的VM修改,根据VM和I/O对应表,M起始位置为1104,故只需在“数据表中”输入VB1104,选择二进制数据类型,此时数值为2#0000 0011


将其赋予新值为0(M1、M2均为0)或1(M1为1,M2为0)或2(M1为0,M2为1)
① VB1104为0时

②VB1104为1时

③VB1104为2时

2)NI1网络输入值得修改
NI网络输入块类型对应的VM地址1246-1261。

NI1强制为0,具体如下图。

注意:这里VB1246为红色表明这个地址没有激活或者赋值,而我们在网路输入设置时试将NT1保持到V0.0中,所以用VB0。

Snap7读写数据

S7连接设置

S7连接设置折腾了很久,具体参考以下链接或文本:
1)softComfort 说明书2.8。5.37
2)http://snap7.sourceforge.net/logo.html
3)http://www.ad.siemens.com.cn/club/bbs/post_one_floor.aspx?b_id=28&a_id=1481079
4)http://www.ad.siemens.com.cn/productportal/prods/logo/8_communication/Erthenet/S7/logo_1200_S7_logo_client/logo_1200_S7_logo_client.html
才略知一二。
1)在网路视图中的logoPLC上点击右键
2)选择添加客户端连接中的S7连接

3)在服务器端填写IP地址和TSAP值
其中若编程电脑作为服务器,IP地址为本机的(例如192.168.0.10);TSAP:03.00(TSAP是通信连接地址)。

4)填写传输数据
备注说明:Snap7读取时可以不用写传输数据表。下面操作均没有填写此表。

5)重新下载程序

Snap7连接PLC


这与Snap7官方输入方式不同,而且按照官方输入不能成功,非常感谢cen827在西门子论坛提供的解决方法。

读取PLC值

Snap7 读取PLC各块值编号如下:

1)读取Q1,Q2,Q3值
①QB区读取

②DB区读取

对比实际值,完全一致(二进制11就是十进制3)。

2)读取M位
将阀门Q2标志位M2赋予新值为1,即MB0=2#0000 0010

获取值如下图:

写入PLC值

注意:
①LOGO!PLC中数字量输入DI是不能被写入,
②当外部强制赋值时,可能不会改变是因为程序原因,即修改后,程序在下一个周期马上复位到原来值,不是没有修改成功。

1)将M2赋值为0,M0赋值为1,即MB0值由2#0000 0010变为为2#00001
初始值:

写入

结果

2)通过VM数据块写入

将阀门Q3网络输入NI1赋值为1
未赋值前状态图:

写入

运行结果

总结

Snap7连接LOGO! PLC主要步骤:
1)设置S7连接IP地址和通信连接地址TSAP
2)参数VM,Q,M变量变量范围,尤其是VM地址范围
3)读取最小的都是一个字节不是一个位,读取和赋值时都需要进行相应的处理

通过Snap7与 LOGO!8PLC通信相关推荐

  1. esp32/arduino使用snap7与SIMENS plc通信

    需求:通过esp32+W5100连接200smart PLC,使用snap7 1-准备 材料: 1-1PLC:s7-200smart: 1-2控制器:esp32 1-3网络模块:W5100 平台 1- ...

  2. 基于snap7在vs上通信

    这是个已有的snap7通信示例: 首先你得有visual studio,然后 1.在snap7官网上下载文件snap7-full-1.4.2 2.打开snap7-full-1.4.2\examples ...

  3. 西门子 PLC TCP 通信协议

    flexmanager PLC 通信协议 http://www.flexem.cn/Index.html PLC与PC网络通信实验 https://blog.csdn.net/loblab/artic ...

  4. hugo个人博客 修改主题:颜色,字体,布局

    查看全文 http://www.taodudu.cc/news/show-5144855.html 相关文章: ubuntu下安装雅黑和华文黑体 macOS 10.12/10.13 字体美化(华文黑体 ...

  5. 信捷plc485通信上位机_基于Snap7实现与西门子PLC通信

    如果你对西门子PLC通信或者上位机开发稍微有一点研究的话,应该对Snap7有所耳闻. Snap7是一个基于以太网与西门子S7系列PLC通信的开源库,在世界领域应用很广.但也许是因为资料比较少,而且很多 ...

  6. 在VS中配置snap7并用snap7与PLC通信

    前言 之前实验室的小车使用OPC与上位机通信,但由于年代已久,师兄们写的代码已看不懂加上OPC配置比较麻烦,故现在现在采用snap7进行开发. snap7介绍 Snap7是一个基于以太网与西门子S7系 ...

  7. 如何使用 Python 构建 西门子PLC Snap7通信

    如何使用 Python 构建西门子 PLC Snap7通信 PLC(Programmable Logic Controller)即可编程逻辑控制器,可以理解为一个微型计算机,广泛应用于工业控制领域中, ...

  8. 西门子smartclient怎么用_基于Snap7使用C#编程访问西门子PLC系列教程(3)-Snap7Client(建立连接)...

    本文是Snap7软件包系列教程的第3篇. 在上一篇文章中,我们介绍了S7通信协议中有三种角色:客户端/服务器/伙伴:有两种通信模式:客户端/服务器(Client/Server)模式和伙伴/伙伴(Par ...

  9. mipi屏在内核可以显示logo但是u-boot无法显示的问题【转】

    本文转载自:http://blog.csdn.net/fulinus/article/details/45071721 平台:瑞芯的rk3288 u-boot版本:u-boot-2014.10 ker ...

  10. 三菱的触摸屏usb驱动_资深工程师一步一步教你PLC与西门子触摸屏的RS485通信

    点击上方"蓝字"关注我们 今天为大家带来的是PLC与西门子触摸屏的RS485通信,RS-485又名TIA-485-A, ANSI/TIA/EIA-485或TIA/EIA-485.R ...

最新文章

  1. 【VB】学生信息管理系统2——窗体设计
  2. IP地址转化为数字,charindex ,SUBSTRING
  3. 麦克纳姆轮运动原理_光是怎样被证明是电磁波的?麦克斯韦超凡的数学统一电学和磁学!...
  4. mysql blob图片_显示存储在mysql blob中的图像
  5. Docker-Docker-file构建Redis5.0.3镜像
  6. Windows核心编程_代码段共享_LocalAlloc/GlobalAlloc区别
  7. javaagent技术专利申请
  8. 遗传算法matlab_遗传算法简单介绍与MATLAB实现
  9. Manacher算法(马拉车算法)
  10. 基于MFC和c++的销售管理系统,课程设计,实训
  11. [转]centos安装oracle
  12. 敏捷开发“松结对编程”系列之十五:L型代码结构(编程篇之一)
  13. 一些chrome调试
  14. Kubernetes(k8s)CNI(Calico)网络模型原理
  15. 惊魂,我的23个密码被泄露,快看看你的有没有泄露
  16. jdk-6u45-linux-x64.bin
  17. 尝试添加 --skip-broken 来跳过无法安装的软件包 或 --nobest 来不只使用最佳选择的软件包
  18. 美联储“缩表”背后真实意图是什么?
  19. Migrate DB data using expdp/impdp
  20. 女人的这三个“动作”,才更加让男人心动

热门文章

  1. php libiconv close_PHP 5.2.17 编译安装时出现 undefined reference to `libiconv_open’ 错误的解决方法...
  2. 通信技术专业技术人员考试 动力与环境_中级通信工程师动力与环境考试大纲...
  3. iso是什么意思/iso9001质量管理体系认证有哪些标准
  4. java excel图表_Java 创建Excel图表
  5. Oracle数据库 查询所有表
  6. IMX8基于FFT的GPU和CPU的性能测试
  7. esri开发大赛项目总结
  8. OC Gen X:一键制作黑苹果OpenCore EFI文件
  9. MAC 下shell工具推荐 zentermlite
  10. 读《About Face 4 交互设计精髓》4