技术论坛

Snap7,Eel与S7-1200简单组态

作者 主题
侠士

经验值: 1589
发帖数: 162
精华帖: 3
主题:【分享】Snap7,Eel与S7-1200简单组态
推荐帖


只看楼主 楼主 2020-06-28 17:25:04

Snap7,Eel与S7-1200简单组态『1』

简介

Snap7是一个开源的,可以多平台运行的能与西门子S7系列PLC进行以太网通信的组件,之前的文章有两篇我介绍过这个组件,但是只是简单实现了对PLC的控制和数据读取,但是没有任何图形界面,只能通过命令行实现,这在实际应用中没有太大的意义,当然通过Python也可以实现图形界面,这里介绍一个比较好用的界面组件叫做Eel,说它好用,是因为它能通过前端语言JavaScript,Html,css实现多样的图形界面,前面两篇文章分别介绍过这个组件,今天我通过Snap7和Eel的结合,实现一个带有控制,曲线显示的简单组态界面


界面设计

这里界面是下载Bootstrap网站上现成的例子修改了一下,曲线功能是由Highchart实现

HighChart[1]

切换开关通过一个叫switchery的Js脚本实现

switchery[2]

启动后,点击右上角的连接按钮后会连接PLC,之后状态栏显示设备已经连接,之后表格处的数值会按1s的周期进行更新,曲线会自动更新,点击每个切换开关会触发PLC内开关量的动作。


重要代码分析

测量值显示

表格里面Value栏是PLC的数据实时更新过来的,所以此处的Html代码中需要为这一列指定一个相同的class,之后在js脚本中,可以将Python获得PLC数据打包成一个列表,之后循环的填充到表格中,可以看到td标签有个 real_value 的class,可以通过这个class将所有td标签迭代出来


切换开关是通过Input实现,指定不同的class,在脚本中对其进行数理化,即生成对应传感器的切换开关,可以看到 通过DOM选择temp_switch对应的单元格,之后使用Switchery实例化,即生成切换开关


表中中的数值是通过Python传递过来的列表迭代出来的,通过getElementsByClassName选择所有real_value的class,之后通过for语句循环对其内部内容赋值列表valueList


切换开关控制

切换开关的开和关状态改变可以对应一个函数,此函数内部判断切换开关的状态,然后对应不同的状态赋值给Python,Python获取该值后,进而控制PLC


tempToggle是Python传递过来的函数,js中可以对其赋值,之后Python中获取该值,进而控制PLC


victim.tempOn是类的方法,TempOn方法即通过Snap7控制对应的布尔量打开


曲线的生成

曲线功能是通过HighChart实现,实现静态的曲线很简单,HighChart采用固定的格式设置来定义曲线的样式,其中数据可以是一个列表,有时间和数据,HighChart可以自动将时间和数据按照设置正确的显示出来,数据我们可以通过js的push方法将Python传过来的PLC数据放进去。 通过新建一个values的数组,初始化数组里面的数据,这里我采用了moment的脚本来实现时间序列,y初始化了一个sin序列

momentjs[3]


初始化values数组后,可以通过动态更新里面的数据,x的值是时间,y的值是valueList列表中的第一个数值,即温度值,使用shift方法可以保证values的数组中始终是固定数量的数据


使用update方法将这个数据更新到HighChart中


按钮控制PLC连接

点击按钮后实现PLC的连接其实很简单,按钮按下后js代码会输出一个数值到Python中


Python使用这个数值判断是否实例化PLC,之后进行连接


引用链接

[1] HighChart: https://www.highcharts.com/
[2] switchery: https://abpetkov.github.io/switchery/
[3] momentjs: https://momentjs.com/
[4] 打通Python与JavaScript『2』: http://mp.weixin.qq.com/s?__biz=MzI4NDY1MjY4Nw==&mid=2247484406&idx=1&sn=a05424ca42f09a16cc9ac2e047eba7d8&chksm=ebf96616dc8eef00c6b3a37333749443ddadd655a66b53418cfb0f1dcbb8d3a71287ea6daff7#rd



个人微信公众号 "iLearning爱学习",头像就是公众号二维码
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1629777&b_id=50&s_id=0&num=5

至圣

经验值: 13749
发帖数: 2032
精华帖: 16
回复:Snap7,Eel与S7-1200简单组态


只看楼主 1楼 2020-06-29 11:03:33

应用到web,都不容易。


工控毁我青春!
以下网友喜欢您的帖子:

  
至圣

经验值: 18410
发帖数: 2409
精华帖: 1
回复:Snap7,Eel与S7-1200简单组态


只看楼主 2楼 2020-06-30 10:24:33

感谢分享!学习


 
以下网友喜欢您的帖子:

  
奇侠

经验值: 5523
发帖数: 642
精华帖: 0
回复:Snap7,Eel与S7-1200简单组态


只看楼主 3楼 2020-06-30 10:44:09

 感谢分享,高手


业精于勤荒于嬉
以下网友喜欢您的帖子:

  
至圣

经验值: 18920
发帖数: 2108
精华帖: 0
回复:Snap7,Eel与S7-1200简单组态


只看楼主 4楼 2020-06-30 11:31:22


链接很有用!


 
以下网友喜欢您的帖子:

  
至圣

经验值: 10583
发帖数: 1796
精华帖: 0
回复:Snap7,Eel与S7-1200简单组态


只看楼主 5楼 2020-09-07 17:58:24


值得学习,谢谢分享。


 
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
Snap7,Eel与S7-1200简单组态
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。