quote:以下是引用Queen_35在2014-01-03 00:13:29的发言:
一直以来,纠结很多关于编程方面的问题。这里先列出几个。后面慢慢再想。
1,FC功能与FB功能的区别,见过很多程序,真的还是没有领悟到区别的精髓在于哪里?
2,西门子的数据结构,觉得用处不是很大呢,还是没会用啊;
3,程序到底做多大够好,越丰富,越不通俗,通俗没有内涵,怎样做的看着简单,实现功能,考虑问题又全面。如何把复杂的东西,变简单。
4,OB,一堆OB,用还是不用呢,给个建议吧。
5.,执行速度,如何做到最快?这里不是指一条语句,而是整体程序,如何让程序更高效,更可靠。
6,变量表,导入,导出,对于已知的变量,未知的呢,如何更快速的组建。
7,关于M点,用还是不用,用多少为好?如果全用DB块数据,是否比用M点更占内存或者其他存储区域,如果用M点,会不会让程序更快执行。
8,语句表,实现更复杂的逻辑,那么缺点是啥?
先这些吧,待续。
针对自身的理解说几句吧
首先感觉自控领域不同行业间的程序差异是非常大的。我自己是做机床行业的,主要面向车厂,程序标准化程度应该比较高。
1:通常如果只完成某个功能的话一般用FC(尤其体现在DB块内部数据的处理等等),把他理解成C语言里的一个函数。而涉及到数据的多用FB,比如伺服电机,以及上位机通讯等等需要通讯的。(通讯方式可以有许多)
2:UDT还是非常有用的,比如做上位机的通讯,公共数据块如果用UDT建立,那么写FB的时候引脚就可以定义为UDT,方便数据的导入。另外比如某一段功能结构需要在好多的DB或者FB中使用,往往定义为UDT,调用起来方便。
3:总体理解可以理解为高级语言的方式,一个主函数,里面调用不同的功能。但是一般有个原则,能解决问题的程序往往实际用的最多。而且我感觉有时候没必要追求过于技巧性的程序。举个简单的例子,给一段数据赋值,如果数据量不是非常大的情况下我一般用move就够了。虽然看起来比较笨吧,但是一定可以保证其他人也能看懂。同时也不容易出错。当然如果用的很多,就要考虑指针编程等等了。楼主始终要记住,内涵只是给别人看的,真正能解决问题满足客户要求的程序才是有用的程序。
4:自己对OB研究的不多,一般也就用OB121,OB122主要用来做故障中断处理的。还有OB35,主要用来做周期扫描计时的。其他的还有待学习。
5:速度方面自己考虑的不多,还真没有什么经验。
6:变量表如果不是非常多的情况下还是喜欢自己手动更改,至少可以保证不会出错。同时方便增减。
7:速度方面没有做过比较。不过M点还是要用的。最简单的比如0和1,如果用DB的话很难保证程序开始就把所有的点都考虑到。M点使用的时候建议楼主符号表命名要按照统一的规律,同时M区最好连续使用。我一般是用之前先看一下交叉参考。
8:其实我始终认为如果只是逻辑信号,LAD是最好的。STL一般都用来做地址寻址。或者使用特殊的数据类型。比如Any或者Pointer的时候。详细的还要说好多,楼主只能自己体会了。