以下是引用万泉河.在2019/7/24 7:07:52的发言:
其实我都是闲的,跟你去扯这些蛋。
你说不可能不用M和T,而我分明都已经做出来标准项目了。
还跟你扯算啥呀!
你理论就扯到天上去,我都做出来了,是事实!
因为不使用全局变量M,一方面程序中不需要调度分配M的使用,更重要的一点是,做新项目的时候,要使用分别几个旧项目的程序块的时候直接复制来使用即可。 从此以后不必担心变量用重复带来bug。
不信你和我打个赌吧,5000元,我把我程序给你检查一下,如果你从中找到了一个M量的使用,或者全局DB的使用,我倒赔给你5000元。 如果你没找到呢, 也不亏,我本来现在培训费就是这个价格。 你也就付费参加了一场学习。
这种打赌有什么意义呢?
人家并没有质疑不能使用全局变量,人家只是说很多场合不可避免使用全局变量,例如:国产触摸屏与西门子PLC的通讯就是通过地址进行的,这种情况下你如何避免使用全局变量?全部写在I,Q里?众所周知,西门子中可以将不被硬件分配的I,Q作为内部寄存器使用,那么这种算不算在使用全局变量?西门子通过OPN可以打开背景数据块,那么此时背景数据块算不算全局变量呢?
反过来说,人家如果写了一个不使用全局变量的程序给您,您愿意付他5000元并参加他的培训吗?
我个人认为很多人并不局限于使用一种PLC,但是他们更多的需求是不需要在不同的品牌的PLC中重复编写相同功能的程序,也就是使得现有程序可以被简单的复用,而所谓的不使用全局变量这种需求可能在早期IEC标准还没有普及的时候有些市场,但是在IEC标准中,FB,FC中使用全局变量必须通过声明类型VAR_EXTERNAL引脚来导入到FB或者FC中。
而您提到现在提到的:
PLC标准化编程的思想是一种通用框架, 不局限于某一个品牌,某一个型号的PLC。
不就是人家说的 标准化程序是什么,是在目前软件平台未统一的情况下可以实现在不同的硬件环境下尽可能减少重复代码 这个意思么。
你为什么非要去扯到标准就是不使用M或者T呢?
人家也没有说不可能不用M,T,人家只是抛开地址,因为都是全局变量,无论你建立在栈还是堆上,都是全局地址,无非我写M还是DBX的区别而已,就如同其他品牌中当不给与M地址,那么系统会进行分配地址,它仍然会优先分配在M区域,因为栈上的访问速度快。
最后,我想问一下,您的程序有没有转到其他厂牌的PLC上去过呢?我常常使用西门子进行程序的编制,不过我不追求M或者T,标签化编程本身和地址无关,我在使用西门子的程序编制过程中会充分考虑其他品牌特性,目前有移植到多个品牌的PLC上,如果在程序编写过程中单单的考虑西门子写的时候方便,这种程序必然会在移植过程中花极大的力气修改。
总结:标准是什么?就是避免反复造轮子。
Good Luck~