SPS-VISU配合STEP7仿真西门子PLC程序 – 乒乓电路

话说前段时间,在东家的培训课上,培训老师介绍了一个 S5/S7 仿真程序 SPS-VISU,这个软件可以仿真按钮、灯、气缸、升降机、传感器等众多工业自动化元素,如果用 STEP7 进行 PLC 编程并与之配合仿真,更加形象生动,比如气缸、升降机等元素是可以动作的,而 STEP7 中的  PLCSIM 组件就没有这种直观效果。所以用途呢,应该是定位于培训和演示以及临时仿真使用。具体如何,就让我们用个小程序来看看吧。

我们以设计一个乒乓电路(即单按钮起停)为例。一个输入按钮 I 0.0 ,一个输出指示灯 Q 4.0 ,按动一次按钮,灯泡亮,再按一次按钮,灯泡灭,如此反复。这个例子在《西门子PLC编程技术及工程应用》一书第79页可以找到(注* 这本书是 LT 买的第一本关于PLC工程应用的书,虽然此书内容上有些许错漏的地方,但是经过 LT 读后感受,书本的后几章偏重于PLC编程思路的介绍,与实际应用是很接近的。这本书,总体说了,值得一读),不过原书只是给出了梯形图 ( LAD ) 的表达方式,并且原书并没有解释设计思路,而仅仅分析了给出的梯形图所完成的功能。梯形图虽然逻辑上不易理解,但是表达清楚,在某些工业元素如电机、阀门等处,易于监控,与好友雪野苍狼交流时,他告诉我这样子。不过,现在让 LT 用 STL 语句表的思路来考虑如何设计这个电路:如果要满足按钮按一下一种状态,需要使用边沿检测并将之存储,然后设置两个中间状态,并将之异或(  XOR 即相同出0不同出1),间断改变两个中间的状态,就可以实现一合一开的输出效果。

STL 语句实现如下:

A    I0.0          //输入按钮
FP  M0.0        //正跳沿检测
=    M0.1

X   M0.1          //异或中间状态
X   M0.2          //两者不同输出1
=   M0.2

A   M0.2
=   Q4.0

过程分析:

  • 当I0.0由0变为1时,正跳沿被检测到,M0.0在一个扫描周期内被设为1, M0.2为0,两者异或结果为1,并将结果赋值给M0.2 。M0.2为1,与结果RLO为1,Q4.0赋值为1,灯泡点亮;
  • 第一个扫描周期结束后,M0.0变为0,故M0.1变为0,而M0.2为1,异或结果为1,Q4.0保持为1,灯泡常亮;
  • 当I0.0再次由0变为1时,M0.1变为1,而M0.2已为1,异或结果为0,然后M0.2被赋值为0,Q4.0变为0,灯泡熄灭;
  • 这个扫描周期结束后,M0.0变为0,M0.1变为0,而M0.2已为0,异或结果为0,Q4.0保持为0,灯泡常灭。

是很简单吧?呵呵,不要见笑。读者可以按自己的方式来验证程序是否正确。

也许对于西门子 PLC 高手来说,上文的程序就属于非常入门级的水平了。但是 LT 是想借此介绍下 SPS-VISU 这个软件与西门子STEP7联合仿真的初体验,抛砖引玉~~哈。

虽然 LT 以前非常不喜欢 PLC,但是艺多不压身,特别是从事自动化行业,不懂PLC是万万不行的。为什么 LT 以前讨厌 PLC 呢,主要是梯形图 LAD 和 语句表 STL 给害的,还有前东家 LGPD工作时的分工所致。LT 喜欢高级语言,但是接触 PLC 教材一开始就是梯形图什么的,一点意思都没有,还有这个STL语句表,分明就是汇编语言的风格,所以尽管 LT 的 C语言不错,但是对PLC 却是一点兴趣没有,谁说过“兴趣是最好的老师”么,习惯了IF and THEN,FOR以及DO and WHILE的思维模式,看梯形图是丑陋无比,看 STL 又深感太过于简洁不具有好的可读性。而在前东家 LPGD 呢,专门从事ABB机器人方面的 RAPID 编程,而当时的ABB机器人系统根本没有集成 PLC 功能(后来 IRC5 集成了,参看以前的文章  Integrated PLC AC500 in IRC5 介绍),所以也没搭理PLC,故 LT 在PLC 方面略显稚嫩。而现在的东家RRCN的机器人系统,与 PLC 结合十分紧密,令 LT 不得不奋起直追,苦学PLC。最近 LT 又对西门子的 SCL 结构化编程语言非常向往,前东家 LGPD 的西门子 PLC 程序都是用SCL编写的,LT准备再学习之,学海无涯阿~~据说这本书《西门子S7-300/400 PLC编程–语句表和结构化控制语言描述(第3版)》非常不错,不过价钱么,不便宜!

下面  LT  来介绍如何用 SPS_VISU 来做这个仿真。首先,从 SPS-VISU 官方网站下载最新版本(下载页面  link), v4.8 版本未注册的demo 版本有100个元素的限制,超过就不能正常工作。下载并完成安装后,就是跟随 LT 的 Step by Step  时间了。

  1. 打开 西门子 SIMATIC Manager 软件(以下步骤只是为完整起见,熟手可直接跳到第9步),菜单 File->New…新建一个项目,命名为pingpang
  2. 在此项目中插入一个”S7 Program”,我们并不需要硬件组态
  3. 在“Blocks”中,我们继续插入一个function块:FC1
  4. 双击 块 FC1,打开LAD/STL/FBD编辑界面,把之前我们的STL语句输入并保存。
  5. 同样打开  OB1,添加调用 CALL FC1,并保存关闭。
  6. 设置PG界面,菜单 Options->Set PG/PC Interface…,选中 SPS-VISU(WinPLC-Engine),并点击打开属性按钮
  7. 在打开的属性窗口中,需要设置欲连接的  SPS-VISU的IP地址和端口,因为我们是本机测试,故而是127.0.0.1,端口默认的 102端口容易冲突(为什么是102端口呢,因为因为STEP7软件通过以太网下载程序会使用102端口),改为1002,设置完成,确认各窗口保存。
  8. 回到SIMATIC manager主界面,注意状态栏里已改变为 “SPS-VISU(WinPLC-Engine)”
  9. 至此,STEP7里面的工作告一段落,保存此项目。下面我们打开SPS-VISU这个软件,因为未注册,所以会显示demo,但并不妨碍测试。因为软件是德文的,所以有些单词就需要我们来猜测了。菜单 Datei->Neu 或者点击按钮Neu新建一个空白模板。<SPS-VISU V4.9x 已经有英文界面了,欢喜! 20130603  >
  10. 我们需要画出一个按钮和一个灯泡。先做按钮,点击第二行工具栏第4个按钮Schalter,并在下面方格界面用鼠标拉出一个合适大小的按钮。
  11. 然后会自动跳出此按钮的属性,我们需要设置他的行为以及和 PLC相连接的地址。注意德文的输入用E表示,输出用A表示。结合前面的代码,按钮设置为点动Taster,并将Operand设置为E0.0,修改按钮上的文字标识,如button,然后点击OK确认,就可以生成一个按钮。
  12. 下一步添加一个灯泡,点击第二行工具栏第12个按钮Lampe,在方格界面拉出灯炮的位置,在弹出的属性界面中设置地址为 A4.0,至此,界面完成。
  13. 下面进行 SPS-VISU的一些设置。菜单 Software-SPS->WinPLC-Engine Einstellungen 设置端口为1002,与第7步保持一致。点击OK确认。这个端口就是SPS监听的端口,IP地址 0.0.0.0 表示可以接受任何 IP地址的连接。
  14. 菜单 Software-SPS->Software-SPS steuern,会弹出一个窗口,点击按钮STEP7 Projekt laden加载我们刚才保存的项目pingpang.s7p
  15. 加载完成后,点击按钮Start使之运行。点击 OK确认关闭窗口。
  16. 下一步,需要在SIMATIC Manager里把程序下载到SPS-VISU里面。切换到SIMATIC Manager界面,选中OB1和FC1块,用菜单PLC->Download或使用工具栏上的下载按钮,将程序下载。
  17. OK,切换到SPS-VISU窗口,用鼠标点击按钮,看看是否是我们期待的效果。
  18. 实际运行效果如下面动画所示。关于SPS-VISU其他的仿真,  LT就不献丑了,读者可自行研究。希望对你的PLC学习有所帮助。

下载试用

P.S. 什么是 SPS 呢?  原来是 Speicherprogrammierbare Steuerung 的德语缩写,即“可编程逻辑控制器”。

扩展阅读:
SCL与STL:哪个是方向呢?
http://www.ad.siemens.com.cn/club/bbs/post.asp?b_id=4&a_id=764909

怎么用一个按钮控制电机起停 http://www.ad.siemens.com.cn/club/bbs/post.asp?b_id=4&a_id=876178

 

 

2 thoughts on “SPS-VISU配合STEP7仿真西门子PLC程序 – 乒乓电路

  1. “LT 喜欢高级语言,但是接触 PLC 教材一开始就是梯形图什么的,一点意思都没有,还有这个STL语句表,分明就是汇编语言的风格,所以尽管 LT 的 C语言不错,但是对PLC 却是一点兴趣没有,谁说过“兴趣是最好的老师”么,习惯了IF and THEN,FOR以及DO and WHILE的思维模式,看梯形图是丑陋无比”
    哈哈,深有同感…LZ对贝加莱了解吗?貌似他们的PLC很是高大上,而且…居然支持C…
    LZ果然是非同凡响的实力派啊,居然还有自己的wiki 。。。

    • 高级语言是趋势呢,不过对贝加莱不是很熟悉,只用过他们的一些can总线IO端子

Leave a Reply

Your email address will not be published. Required fields are marked *