0727 【万泉河】一条PLC编程标准倡议
注意, 不是一整套的编程标准, 而只是编程标准中的一个技术点。
同时,也不是指我所创新的PLC标准化编程烟台方法, 彼方法是实现非标设备和自动化系统设计标准化的方法,与PLC本身的编程标准无关。 从字数上看, 那是标准化。 而这里只是标准。
所以,也不一样。 标准化是动词, 标准是名词, 是一系列条条框框的规定(或者叫约定俗成的约定)组成的。 我这里提出的只是一条规则。提出来,可以作为我们PLC工程师在做PLC程序和HMI画面程序时的接口标准,然后未来, 如果能被写入国家或者国际标准, 比如作为IEC61131-3标准的补充,那么陆续有更多的PLC厂家, 触摸屏厂家, 上位机软件的厂家都支持,统一作为标准,可以极大方便自动化系统的设计过程。
这条规则的内容也很简单,一句话表述:
PLC 中IEC定时器的设定值和运行值的格式采用浮点数,其单位采用秒(s)。
其实这一观点,我以前已经多次表达过了。 好多次写文章提及。 在《PLC标准化编程原理与方法》中提及过,在后面尚未出版的《三菱PLC标准化编程烟台方法》和《倍福PLC标准化编程烟台方法》的书稿中,也都做了表述。
实现的过程也很简单,即在原有的IEC定时器TON外面套一层, 做一个TON_YT,而其接口PT和ET的数据类型由原本的TIME改为REAL。 当然前后还分别要做一次数据格式的运算改变:
OO.PT:= ROUND(PT * 1000);
ET := DINT_TO_REAL(TIME_TO_DINT(OO.ET)) / 1000.0;
将外部的以秒为单位的数值转变为毫秒ms为单位的DINT数值。
我们知道TIME这个数据类型的本质是毫秒计数的DINT。 比如T#5s,其数值就是5000 。
然而当这个数值需要与HMI对接的时候,就可以发现其相当糟糕。 我们的设备参数, 延时启动或者超时的参数,如果以ms为单位,就是普通的1,5,10的数值,倒还可以接受。 但如果实质设备参数为5S, 10S,20S, 体现出来的结果就是5000,10000, 20000了,数值太大, 对用户使用体验来说就非常不方便。 所以通常还需要再折算一次,到S位单位。 这就导致了同一类型的参数,设计时还需要分别不同处理,给标准化工作带来了麻烦。而如果能统一用S单位来表示, 即便小一点的时间,表达为0.01S, 0.001S, 也丝毫没有违和。 就方便多了。
而TIME的糟糕, 还不仅仅在此。 我们在不同的上位机系统中,读取TIME数据的时候结果都是千差万别的。 我这里是指符号寻址的自动数据格式映射。比如用KEPSERVER 的S7PLUS驱动直接读取这些符号数据时,TIME格式被自动映射为了STRING字符串格式。而在WINCC 7.5中,在使用AS直接读取,或者EXPORT TO SIMATIC SCADA工具导出后再文件导入WINCC时, TIME变量被自动转换为了“日期/时间”格式 !
然后,可能因为有时区的关系, PLC中的T#0S, 被调整成显示8:00:00,如果用完整的日期+时间表示, 会显示为1899/12/30 08:00:00 。如果PLC中的时间为T#10S,它会显示8:00:10吗?并不会!它仍然显示8:00:00。 这就非常无厘头且莫名其妙了。
我没有兴致研究是不是哪一步出了bug, 还不如索性从根源做起,按照我以往的习惯建议,程序中修改接口数据类型为浮点数,就彻底解决了。
所以由此想到, 如果能真的统一标准,那么上位机可以直接使用,就方便多了。
使用浮点数表达的缺点在于它有精度限制。即只能表达最多7位小数的精度,即如果某个设备的时间参数为10000000S+1S, 或者10000s+1ms, 分别为115天和2.77小时, 如果时间要增加一个1S和1ms的分度,数据的表达精度会开始出现问题。
到目前为止,我没有听说过什么样的设备需要这样级别的延时精度。 况且即便偶尔有这样的需求,再自己去定制时间格式也很容易很合算啊!总归不至于因为这样一个所有人一辈子都遇不到的潜在需求,而绑架了整个行业,降低了整个行业设备的通用性了吧?
所以,现在想征求下广大PLC工程师的意见,对这种的标准升级,你是否可以认同接受呢?
扫码可以投票
而且,也确实是各位PLC工程师切身相关可以做出的选择。 每个人都有这样的权利。 如果支持人够多,又有相关组织关注到,并操作运作,那么说不定就可以成为现实。
当然,即便不能成功, 或者成功也需要在未来数年十几年的时间后才能达成,也不影响现在的我,我只不过是需要每次都套壳自己做一个TON函数。仅此而已。
关于认同和不认同,有一些同行的认知非常有意思,且有代表性。 在一次关于编程方法的讨论中,就有人借机会表达观点,表示对烟台方法的不认同。 可能是因为定价过高,或者我平常写文章发表观点等对他不够重视不够尊敬,导致他的不满, 所以几乎明说的他对烟台方法不认同。
嘿,我就觉得有点意思了。 关于烟台方法,是一种技能方法,我不需要你认同,相反,你才是需要获得我的认同的呢!就好比, 陈真一开始没有获得霍元甲的认同,霍元甲不收陈真为徒,陈真没有资格跟霍元甲学习迷踪拳,只好偷偷躲在大门外,从门缝里偷看,偷学。 直到后来人品才慢慢获得了霍元甲的认同,收之为徒。
我们也看过陈家沟太极拳的故事,有人要上门拜师学习陈氏太极拳,往复多次而不得。陈家入门门槛卡得紧得很。
所以,即便有人要学习烟台方法, 也是我来挑学习对象,而不是学习对象来挑我,对于心术不正,以及尚未入门的新手,我都是不会收的。 而如果你认为你的投票意见能改变些什么的话,今天这个关于定时器标准的投票,你才确实有那个权利。
投票吧!
投票结果10年后见分晓。