设为首页
收藏本站
PLC技术网
开启辅助访问
切换到宽版
登录
注册哦
只需一步,快速开始
微信扫码登录
门户
Portal
论坛
BBS
导读
Guide
排行榜
Ranklist
搜索
搜索
本版
文章
帖子
用户
PLC论坛-全力打造可编程控制器专业技术论坛
»
论坛
›
工控技术交流区
›
『国外:三菱/西门子/欧姆龙/松下』
›
照猫画虎-----学习SMART 200 V2.4自带的Modbus_TCP例子_ ...
返回列表
发新帖
[西门子]
照猫画虎-----学习SMART 200 V2.4自带的Modbus_TCP例子_1
[复制链接]
15773
|
0
|
2024-8-23 18:29:54
|
显示全部楼层
|
阅读模式
先说一下,学习这个例子程序过程是痛苦的。但是我还是挺愿意把这个学习过程再翻出来,因为大部分的事情都是先苦后甜。
大部分时候,我们主动学习新功能,大概率是因为有实际应用在等待。比如我学习SMART 200 的Modbus_TCP ,是因为实际的项目中经常要用到SMART 200PLC 与SIEMENS WP231 秤模块进行MODBUS TCP 通信。先简单介绍下与秤模块通信的几个简单需求,方便大家了解我后面要干什么
1 读取秤的毛重,净重。
2 读取秤的状态信息。
3 能够对称进行清零操作。
4 能够进行校秤工作。
其他更复杂的功能,我个人认为不是必须的,最起码可以不用做在程序里,调试时完成即可。但清零、校秤这些工作,当调试完成交给客户后,总归是要让客户能通过触摸屏进行操作。总不至于留给客户个秤软件,让客户自己去学习秤软件的使用吧。不要笑,我是见过,有人这么干过。给客户电脑上装了校秤软件SIWATOOL 。
学习是带着目的和需求的,否则没有具体的应用,大概率的要走向从
入门到放弃
。当然,我也不是从0开始,上述功能,我在2.2版本的时候已经实现了。西门子SMART PLC ,从2.2版本的时候就已经开始支持MODBUS TCP 通信,但软件没有自带库指令,如果需要,需要花钱购买库指令,我大约是花了250RMB ,买了个支持4个客户端的库程序。一经购买,永久免费。软件到了2.4版本之后,软件直接继承了Modbus TCP 库指令。新出的库指令,和购买的库指令版本不一致了。不可能一直用旧的库指令写程序,万一那天新的软件不支持了,咋整。或者人家的新的库指令,功能已经很先进了,你还在守着自己的老爷车,也不现实。况且,我项目上也面临着用2个秤的应用。旧程序也要升级,是在原库上升级,还是新指令库上升级,经过考虑,学习新的库指令,就成了必经之路。
官方在S7-200 SMART PLUS 里面 和软件的帮助里各有一个例子程序。本来我还懂一点,看完了这两个例子程序,真的有点懵。
先来看第一个例子:
例子程序打开后,只有三行。这个例子程序说实话,只介绍了2点有用的信息,
1,报警故障因为库的原因,要单独另存。
2 ,如果判断连接已经建立,靠的是库存储区中的某个位,不是靠DONE。
关于如何启动,如何循环,如何读写(这其实是我原本想了解的内容)都没有介绍。这个例子太入门了。属于那种收藏到放弃类型的。弄不明白编写文档的专家,是不愿意介绍,还是打算在别的地方详细介绍。
还好又在软件的帮助文档里,找到了个Modbus TCP 的 应用程序。这个例子共7段,太长,无法一次性截图。有条件的自己去帮助文档里面看。
//
以下示例为两个 Modbus TCP 客户端与两个 Modbus TCP 服务器进行通信的项目。
唯一的 IP 地址可标识每个服务器。
程序逻辑可监视 MBUS_CLIENT 指令的“完成”输出,以确保程序不会中断正在进行的通信请求。
该示例程序可执行下列功能:
写入输出位
读取输出位
写入保持寄存器
读取保持寄存器
程序、程序段和符号注释描述了下表中 Modbus TCP 示例程序的功能。
此示例的基本描述:
两个 Modbus 客户端与两个 Modbus 服务器设备建立连接。
Modbus 服务器 01:
IP 地址 192.168.2.10,端口 502
Modbus 服务器 02:
IP 地址 192.168.2.66,端口 502
当 CPU 输入 0 转换为 TRUE 时,将启动一个序列,在该序列中 Modbus 客户端向两个 Modbus 服务器发送写入和读取请求,CPU 输入 0 设置为 False 时将关闭该序列。
//
刚看到这段介绍的时候,稍微有点疑惑,为啥不介绍一个客户端,为啥是2个客户端的通信。(我的目标是和2个WP231进行通信,与我的需求一致)
看到程序段2的时候(上图),看到 JMP ,真的,想疯。因为之前没有用到这个指令。更疑惑的是2个Done 位为啥是串到一起的。按照以前学习的modbus 通信,一个DONE 位完成后,驱动下一个启动指令。这样保证了同一时刻只有一个读写命令,做到轮训。莫非,现在可以同时读,同时写了?
往下看,也没看出个所以然来。时间大约持续了二个周,也没看懂这个程序在干啥。差不多,这个例子也几乎要被判为垃圾例子。这样的例子程序,如果你无法搭建硬件,无法仿真。特别是遇到不熟悉的指令,更是一头雾水。
deng ,我的WP231模块来了,终于可以测试了。
赶紧连上,建立一个读操作,先确认下链接是否建立,读是否成功。
读成功后,通过程序监控,终于开始明白这个Done 是如何工作的。赶紧回来看看帮助文档,关于DONE 的描述。
当我建立2个客户端,第二个客户端未有效建立连接或者发送请求。监控程序发现第二个客户端的DONE 同第一个客户端的DONE 同时为ON .
我们再来看下面一段话:
这段话的的大体意思,就是发送了请求指令,直到DONE 为1之前,不能改变读写的内容,否则会报错误。错误参数44 。看到这里,是不是开始对例子程序的JMP 指令,感兴趣了。越来越明白它在干啥了。对,就是通过JMP 指令,保证每一个扫描周期,只进行读或者写操作。
说多了,可能有些人会迷糊,有兴趣的同学,可以先看看帮助。或许就什么都明白了。我们下一次再讲如何实现最终的目标,读写双秤(WP231)。可以先贴一个最终效果图:
我们看看真正的照猫画虎:(名画)
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
注册哦
x
回复
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册哦
本版积分规则
发表回复
回帖后跳转到最后一页
水煮PLC
回复楼主
返回列表
『国外:三菱/西门子/欧姆龙/松下』
『国产:台达/汇川/信捷产品交流区』