西门子 S7-200 SMART 系列九:一文搞懂s7-200 smart 做客户端与s7-1200/1500的S7通信
在上期文章中,与大家分享如何使用向导实现s7-200 smart 与 s7-200 smart cpu 之间的S7单边通信,相信有不少小伙伴已经动手实践过了,学习PLC就是需要不断的实践,才能不断发现问题,解决问题,提升技能,所以还没有行动的小伙伴赶快行动起来吧。(文章结尾有往期文章链接)
还有小伙伴可能会问,那s7-200 smart 能否实现与s7-甚至s7-300/400通讯呢?答案是肯定的。
经过测试s7-200 smart 能够实现与s7-1200 /1500的s7通信,s7-200 smart 即可以作为客户端也可以作为服务端使用,但是在与s7-300/400的通信中,s7-200 smart只能作为服务端使用,必须由s7-300/400侧发起PUT/GET通讯(原因可能与TSAP有关,有兴趣的小伙伴可以研究下)s7-300/400侧的PUT/GET通讯将在s7-300/400专题中分享,本期主要分享s7-200 smart 作为客户端与s7-1200/1500 之间的单边通讯;
注:在工业通讯中,通常把发起请求的一端称为“客户端”,提供数据的一端称为“服务端”;例如:s7-200 smart 与 s7-1200 通讯,如果s7-200 smart发起PUT/GET请求,我们就称s7-200 smart 为客户端,s7-1200 为服务端;同样,如果由s7-1200发起PUT/GET,我们就称s7-1200为客户端,s7-200 smart为服务端;
一 | s7-200 smart 作客户端 与 S7-1200/1500的S7单边通讯 |
上期文章中讲到,在s7通信中,只需要在客户端组态相应通讯参数和通讯程序,在服务端仅需把数据放入相应的存储区即可。因此接回上篇文章,我们保持s7-200 smart 侧通讯程序不变(没看过的小伙伴,可先查看上篇文章),只是把远端plc(服务端)由s7-200 smart 更换为s7-1200/1500来为大家分享。
有的小伙伴可能有疑惑,前面不是说服务端仅需要把数据放入相应存储区(上篇文章组态的远端存储区VB100~VB107)就可以了,还需要讲什么?对了,本期就是讲讲怎么把s7-1200/1500的数据放入VB100~VB107里面;
有使用过s7-1200或者s7-1500的小伙伴都知道,在s7-1200和s7-1500中没有V存储区,只有M存储区和DB块,那该怎么办呢?这个问题西门子研发人员已经考虑过了,即在S7-1200/1500中使用DB1作为对应的V区使用,即VB100~VB07对应s7-1200/1500中DB1.DB100~DB1.DBB107,以S7-1200 CPU 1214C来讲解,步骤如下:
打开TIA Portal创建新项目,并打开项目视图
image-2024032添加新设备
image-2024032为控制器分配IP地址()与 s7-200 smart plc 同网段
image-2024032在DB1中创建8个Byte变量,此处以VB100~VB107命名;注:建议大家在DB块中使用结构体来新建变量,能够保持程序的模块化和可读性;
image-2024032有小伙伴发现我们新建的DB块里面没有地址,那要怎么对应呢?接下来需要开启取消勾选块“优化访问”,即出来便移量列,对应地址;
点击编译,即可看到地址;
注意:优化块访问和取消优化块访问的区别在与寻址方式不一样;
优化块访问:通过符号寻址 例如:"Test_Data".SendToSmart.VB100
取消优化块访问:通过地址 例如:DB1.DBB100
由于我们需要的是DB1.dbb100~DB1.Dbb107,所以需要在数据块前面插入占位符(实际应用中,可用作其它用途)用数组代替;
image-2024032很多小伙伴做到这一步,就结束了,但往往在实际应用的时候总是连接不上,又找不到问题。实际上是少了一步修改连接机制;S7-1200 作为服务器进行 S7 通信,对于 CPU V4.0以后的固件版本,需要勾选“允许来自远程对象的PUT/GET通信访问”,否者,无法建立通信
image-2024032注:s7-1200/1500 与 西门子 精简(smart系列)触摸屏通讯时,同样需要勾选“允许来自远程对象的PUT/GET通信访问”,否则无法建立连接;
二 | s7-200 smart 单边S7通讯总结 |
至些s7-200 smart 做为客户端(client)的s7单边通信及s7-200 smart / s7-1200/1500作为服务端的配置都已经分享完毕,看似挺复杂,其实只要抓住关键点大部分都可以成功通讯;总结如下:
- 谁发起请求,谁就是客户端;谁提供数据,谁就是服务端;
- 客户端需要编写通讯请求程序,服务端不需要编写通讯请求程序;
- s7-200 smart 通讯V存储区,对应s7-300/400/1200/1500都是DB1
- s7-1200/1500 块的优化访问需取消,用地址访问;
- s7-1200/1500 连接机制勾选不要忘记允许请求;
三 | 结语 |