前言
因一项目需要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)读取最小的都是一个字节不是一个位,读取和赋值时都需要进行相应的处理