0929 【万泉河】TIA PORTAL 优化模式的S7通讯实现
我在前一篇文章《0923 【万泉河】换个视角看TIA PORTAL 数据块的优化和非优化
》中,立了一个断言:
PORTAL系统中, 所有要实现的计算功能,都可以用优化方法可以实现,而可以完全避开不用各种非优化方法。未来,优秀的PLC程序的标志就是全程序中全都是优化方法的优化数据块,而不再有非优化的数据块。
这是给我自己,也是给全部的西门子PLC工程师树立的一个目标。
下断言当然是有风险的。 然而,风险的同时,也代表了我自己对这个技术观点的独占性。不可能有人,在刚遇到观点的前几年里反对这个观点,然后过了三五年后,又宣称自己早就掌握了这项技术这些观点,被我抢了他们的风头。
所以当有人以抬杠的姿态来质问我, 为啥不反思下自己, 为啥发表的技术观点总有那么多人质疑反对的时候,我都笑嘻嘻地告诉他。 有人质疑才证明独特性和先进性,反对的人越多才越先进。 如果人人支持的观点,没有任何独特性先进性,也就没有任何必要发表了。
就好比哥伦布发现新大陆的时候, 面对那些质疑他发现新大陆的反对者,是应该高兴还是恼怒?他当然是高兴了, 每多一个反对者,就少了一个跟他争头功的竞争者。 反对者最终要想证明哥伦布的贡献不如他们,那除非把美洲大陆给沉到大西洋洋底。
2016年,我在全行业首次提出PLC编程可以不用全局变量的M和时间继电器T的时候,掀起滔天巨浪,引来泼天的质疑反对,然而也还有一小部分的支持者表示理解, 也表示在践行中。 然而这次发表关于全优化的观点,反对声音不够多的同时,支持的声音也很少。看来,这个题目太过超前了, 有太多的同行暂时还没有能力掌握和看懂这样的话题。
不过,我自己的内心,还是有些忐忑的。 生怕掉入了自己给自己埋下的坑。 如果有人搬出来这样那样的功能场景,证实了只能用非优化方式实现,而优化方式完全做不到的时候, 那我的脸可是要被打肿的。
所以,还是主动些,自己先行一步把自己挖的坑能埋一个埋一个。 同时,也可以印证理论的正确性。
我有记得PORTAL中的S7通讯, 通讯数据缓冲区需要非优化的数据。所以决定亲自验证一下用优化数据的可行性。但我手里只有一台S7-1214和一台SMART 200 PLC,所以,从网上搜索了《S7-200 SMART CPU与S7-1200进行S7通信》,搜索结果很多, 其中也包含官方文档:S7-200 SMART Communicate with S7-1200 (siemens.com.cn)
https://www.ad.siemens.com.cn/productportal/Prods/s7-200-smart-portal/200SmartTop/communication/Ethernet/S7/S7_1200_S7/S7.htm
官方文档中要求的软件版本还是V13SP1,是够老的了。 而我现在拿V16来实现。 于是先参考文档中的说明,一步步先按照非优化的模式实现了。
当然,即便在V16的帮助中, 在PUT/GET指令的相关条目下,也同样是要求把数据区设置为非优化。 而我现在要用优化的数据实现,有没有违背手册,有没有倒反天罡呢?
BUFF中的数据格式为Array[0..49] of DWord,数据块改为优化之后,原本的PUT指令的SD-1管脚报错,改为直接符号名:
然后通讯可以成功。ADDR管脚仍然是绝对地址的格式,当然啦,那里指向的是通讯伙伴的地址,我现在对方是SMART 200,根本不支持符号寻址,也无所谓了。 而相信即便对方是同样的S7-1200,也需要用绝对地址格式。 我也相信无关乎对方是否优化,即便优化数据,应该也能访问到。 但这一点需要有条件者帮我试验验证。
在PUT送出的同时,又用GET指令把数据读回来了,放在了接收缓冲区中:
这样不需要SMART中有程序,就可以只在S7-1200中观察到了数据的同步更新。
更进一步,还测试了把BUFF的数据区定义成UDT的场景,发送数据区和接收区使用同一格式的UDT, 证实了数据通讯也可以正常。
然而,这一点是需要带有疑点的。
帮助系统中对数据格式的描述没看懂什么意思。
帮助文件中提示:
必须禁用优化块访问,看来也过时了。并不是必须的。
而另外的章节:《使用结构化数据类型时填充字节》
明确提到了PUT 、GET指令有可能会受到的影响。我在测试时定义的UDT数据格式故意够乱,但也没能测试出问题。 但仍不可掉以轻心, 以后实际应用时需要谨慎。
最后表达对时下一种流行观点的反对。
有一种观点认为,官方提供的手册和帮助系统是最好的学习资料。我们可以有限度地表示支持。 啥时候支持?在入门学习的时候,以及作为辅导老师,面对的只是入门级的新手的时候。 在有机会有时间富裕的情况下,多翻翻帮助手册,当然是大有裨益的。然而也局限于入门级别的学习。
而如果还要提高, 还要掌握更新更先进的技术方法和理念,仅通过学习手册是万万不能的了。手册中所能提供的只是基本功能的实现。 要以为世上最优秀的程序案例方法都在手册里,读懂手册,把所有技术方法都搬回家,应用到自己的设计中,自己的设计自然就是最优秀了, 那恐怕是要失算的。
就好比,如果有人跟你建议,学习中文,最好的资料是康熙词典, 学习英文写作,最好的资料是牛津英文词典,学好了这两部巨作,就可以掌握最优秀的中英文写作的技能,就可以写出足以获得各种文学奖的作品,显然是眼光狭隘了。
所以,当再遇到有老师跟你反复强调手册是最好的老师的时候, 你可以相信他,跟他好好学习,学习其严谨治学的求知精神。 但一定要清醒地认识到,他的顶级水平可能就是个入门辅导员,相当于小学三年级语文老师。
关注视频号,收看本厂内容讲解演示的直播和回放。