设为首页
收藏本站
PLC技术网
开启辅助访问
切换到宽版
登录
注册哦
只需一步,快速开始
微信扫码登录
门户
Portal
论坛
BBS
导读
Guide
排行榜
Ranklist
搜索
搜索
本版
文章
帖子
用户
PLC论坛-全力打造可编程控制器专业技术论坛
»
论坛
›
工控技术交流区
›
『国外:三菱/西门子/欧姆龙/松下』
›
照猫画虎-----学习SMART 200 V2.4自带的Modbus_TCP例子_ ...
返回列表
发新帖
[西门子]
照猫画虎-----学习SMART 200 V2.4自带的Modbus_TCP例子_2
[复制链接]
57662
|
0
|
2024-8-23 18:09:28
|
显示全部楼层
|
阅读模式
前面一篇文章给大家描述了学习的需求,大体介绍了西门子给出的2个例子。不知道大家有没有看看帮助,大体了解下那2个例子。
关于前文提到的如何启动,如何循环读写,到底是如何实现的呢?
1 如何启动?
在2.2版本的时候,用了SM0.1 ,去触发一个位,建立连接。当连接建立成功后,ConnectDone 为1 ,利用这个连接建立的信号,去启动读写指令。每一个读写块的Done 为1后,依次启动下一个块,形成循环。
2.4版本呢?在第一个例子里面,我们看到,外部的管脚,没有ConnectDone ,这个连接成功的标志,在库分配的存储区的V中,也就是说,不分配库存储区,是无法利用这个地址的。对于要封装的程序,这个就难处理。
这个图,我们再贴一次。
Connect 指令用了SM0.0指令,一直为ON。在监控模式下,可以看到,系统上电后,如果客户端与服务器建立了链接,尽管Req指令未触发,Done 为1 。那么这个Done位,用来启动循环。(实际有可能已经断开链接,不是特别的严谨)
2 如何读写操作及循环
循环是逻辑的要点和难点。
例子程序是用JMP 和Done 形成了个循环。上一篇文章的结尾,给大家提醒了JMP 的使用。我们通过例子程序看到,例子程序已经进行了读写处理。但写指令处理的距离实际使用还有一段距离, 例如,我们要执行一个清零动作。我们要保证写清零执行顺利执行,同时又要确保当指令完成后,不再重复执行。我们就在读循环中,做个条件判断,当发现要执行写指令时,程序去进行写指令,写指令执行完毕后,复位标志位,开启读指令。如下图所示:
图中的P3 即写指令的判断条件。当写指令完成后,进行了复位,如图所示
例子程序学习完毕后,我们根据自己的需求,封装成所需的程序块,如下图所示:
这是对于一个秤的读写。那么2个秤呢,或者更多秤呢?一开始想歪了,觉得只要满足自己的需求,就可以了。自己的应用环境里,最多也就2个秤。没有搞定重复调用的问题,即指针在子程序中如何处理。于是2个秤,合并成了一个块,如下图所示:
因为这个事,被万老师一顿熊。
另外,关于循环,我后来又用步程序做了个循环。
小结一下:
1、关于西门子提供的2个例子,我学习了JMP 指令如何使用。
2、在如何封装的问题上,有了深刻的认识。
对于万老师说的垃圾程序举例,我由100%的赞成到30%的赞成再到80%赞成,经历了一个过山车。毕竟不是一点知识没学习到。
原文的链接地址:【万泉河】PLC垃圾程序解读赏析(一)
程序经过万老师的修改,终于实现了重复调用。如下图所示:
上图是模拟测试的。
例子程序的学习,暂时到这。等遇到项目的时候,实际测试和修改。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
注册哦
x
回复
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册哦
本版积分规则
发表回复
回帖后跳转到最后一页
水煮PLC
回复楼主
返回列表
『国外:三菱/西门子/欧姆龙/松下』
『国产:台达/汇川/信捷产品交流区』