最近在写.net后端代码的时候,有个类需要重写父类中的属性,要用到new关键字。作为程序员,你知道在 C # 中,new 关键字还有其他的用法吗?
1)new 运算符:用于创建对象和调用构造函数。这种大家都比较熟悉,没什么好说的了。
2)new 修饰符:在用作修饰符时,new 关键字可以显式隐藏从基类继承的成员。
3)new 约束:用于在泛型声明中约束可能用作类型参数的参数的类型。
特此说明:子类重写父类的变量其实是重新定义了一个新的变量,变量名相同是把父类的变量隐藏了,会增加内存。
#程序员# #IT# #编程#
#学习# #知识# #计算机#
CODESYS 是一个比较有名的PLC软件平台,据说被很多PLC厂家采用,但是,我工作中很少接触到相关的产品,最近在研究录波软件时,才开始学习它。
首先研究的是倍福的数据采集,倍福提供了一个ADS的通讯库,在其环境下可以通过变量名,非常高效地进行数据采集(首先为变量确定内部地址,随后就可以通过内部地址批量采集)。由于倍福是基于CODESYS系统,因此,对其初始印象还不错。
随后,接触到了汇川的AM600PLC,它更接近CODESYS原始生态,编程软件与CODESYS开发系统几乎一样,其变量类型与高级语言一样丰富,且不需要明确的地址,但是,作为一个PLC系统,也提供硬件存储区域,内部变量可以使用I、Q、M存储器,这些存储器的寻址非常灵活,可以按照位、字节、字、双字进行寻址。与西门子不同的是,西门子各种类型都是按照字节的编号进行编号,但是,CODESYS则是各种类型独立编号(相互关系见下图),这样,外部访问时,必须进行地址的变换和反变换,并注意字节的顺序。
CODESYS对于运行系统保护严密,不允许外部直接访问其内部变量,号称都是要通过其gateway软件才能进行访问(见下面的架构),那么,为什么PLC-ANALYZER和IBA PDA都能直接按照变量名进行数据采集呢?[what](一个事实:他们都是德国的公司)
好在用户可以开放自己的通讯协议,比如汇川PLC提供MODBUS TCP协议,且默认开启从站模式,外部用户可以直接通过该协议访问其I、Q、M区域。话说,现在的PLC没有一个开放的以太网协议,真的会被用户直接嫌弃的。[呲牙]
通过MODBUS TCP协议,经过各种地址、表达方式的转化,打包,采集,拆分,PLC-Recorder软件实现了汇川AM系列的高速、批量采集,支持bool、byte、int、dint、lint、Uint、Udint、Ulint、real、Lreal、string、wstring等类型。应该可以适用到其他支持MODBUS TCP的CODESYS系统,大家有机会时可以试用。
CODESYS介绍说可以通过plchandler按照变量名进行采集(应该是类似于倍福的ADS的通讯,或者反过来),有相关经验的朋友请不吝赐教,我看看能否实现通过变量名进行内部变量的批量采集。
顺祝大家牛气冲天、大吉大利![谢谢]