plc-variables-deferences-between-ge-and-siemens-plc
由于工作的需要使用了GE的PAC Rx3i系列PLC,发现其梯形图编程方式与西门子有些许区别。最大的不同点是GE的 PLC 中数组索引支持动态变量,这为PLC实现复杂高效、复杂算法提供了极大的帮助,下面就两者的使用区别做个笔记。
变量是已命名的存储数据值的存储空间。他代表了目标PAC CPU 内的存储位置。变量可以映射到变量地址(例如, %R00001),如果没有将变量映射到变量地址,则将这个变量看作符号变量。
符号变量是没有分配确定地址的变量(与典型高级语言的变量类似) 。除了这部分所述的,你可以象使用映射变量一样使用符号变量。在编程软件中,符号变量的地址栏空置。在变量属性栏中删除变量地址就可以将映射变量转化为符号变量。同样的,在符号变量的变量地址栏输入地址就可以将符号变量转换为映射变量。符号变量所需的存储空间根据用户空间计算。为这些变量预留的空间大小在CPU 硬件配置下的存储器键内配置。
变量种类
西门子
GE
绝对地址(M、PIW、PQW、I、Q)
绝对地址(%M、%R、AI、AQ、I、Q)
符号变量(类似高级语言中的变量,无关联绝对地址)
位(布尔量)的定义
西门子
GE
M0.0、I0.0、DB10.DBX0.0等
离散型变量%M00001
字(寄存器)变量 %R.X[0]
变量类型
西门子
GE
位数
BYTE
字(寄存器)变量(%R、%AI、%AO、%W、%P)
8
WORD
字(寄存器)变量(%R、%AI、%AO、%W、%P)
16
DWORD
字(寄存器)变量(%R、%AI、%AO、%W、%P)
32
UINT
字(寄存器)变量(%R、%AI、%AO、%W、%P)
32
INT
字(寄存器)变量(%R、%AI、%AO、%W、%P)
16
DINT
字(寄存器)变量(%R、%AI、%AO、%W、%P)
32
REAL
字(寄存器)变量(%R、%AI、%AO、%W、%P)
32
BOOL
离散型变量%M
1
指针地址操作
GE中的指针和地址操作和高级语言更加类似,使用@符号为取地址的意思。
例如:
%R00001 中的值为11。则@R00001的意思是读取地址%R00011寄存器中存储的值。
西门子的指针略为复杂,主要通过类似汇编语言的语句表来实现,常用+AR1, -AR1等。
数组操作
GE中的数组定义和操作也更加类似高级语言。最大支持二维数组[x,y],其中x,y的数组第一维和第二维。
数组中的数据类型可以为基础类型(Byte、Word等),也可以是结构变量等高级数据类型,且数组的索引可以为变量。因此,在GE的梯形图编程中可方便的使用数组来完成一些高级功能。
如定义Data[10]数组,可存储10个布尔量,可以通过Data[0]、Data[2]…来访问;可以设定自定义类型如Flow类型,包含三个布尔量和两个整型数据。
序号
起始地址
符号名称
说明
1
0.0
Start
启动
2
0.1
Stop
停止
3
0.2
Reset
复位
4
2.0
Status
状态字
5
4.0
Refer
参考值
对于单个自定义类型数据,我们可以通过FlowA.Start等方式访问内部数值,如果需要多个Flow类型,则可以建立Flows数组,通过索引来逐一调用。
例如:新建包含10个Flow类型的数组Flows,使用时带上索引号即可,Flows[0].Start。
GE的梯形图编程中允许动态索引,我们可以把索引定义成变量,大大扩展了梯形图的功能,如Flows[index].Start;而西门子plc编程中需要使用SCL编程才能实现动态索引;对于工程人员来说,梯形图无疑是最好的选择。