对比一下AB control logix的任务实现
control logix项目分为任务(task),程序(program)和例程(routine)。
任务(task):每个control logix控制器最多32个任务,仅有一个continuous任务,其余为Periodic或者event任务。
任务命名包括任务功能,优先级和执行周期
任务的三种类型:
1. 连续型任务,指的是周而复始连续执行的任务,一个项目只允许定义1个,亦可以不定义,等同于codesys中的PLC_PRG(POU)。
2. 周期型任务,定时中断执行的逻辑程序,需定义周期时间,设定优先级别,最多可以定义31个
3. 事件触发型任务,事件触发引起的任务调度,事件触发可以是外部输入点引起(如同PLC5/SLC),也可以由consumed tag引起或者直接指令调用引起,还可以由运动控制状态引起,需要设定优先级别,最多定义31个。
Control logix中的producer/consumer的概念非常好,体现在其组网能力上。比如某一个模块是消息的生产者,产生消息存放在消息块中,其他需要此变量的功能块,定义一个消息consumer即可。有兴趣的朋友可以自己看看相关资料。
CoDeSys的编程工具
IL 、ST、 FBD 、LD、 CFC、 SFC六种语言,我个人比较钟爱ST,CFC。
CodesysV2.3还是强调过程编程,到了V3.5则强调面向对象,C 的影子更多了。
言归正传,应用者也不需要关心那么多技巧,能实现功能,并且代码具有可维护性就是一个合格的工程师。
1.高级语言中的struct,union。
Stuct在西门子SCL语言中被称为UDT(user defined type),AB RSLogix 5000中也被称为UDT
TYPE TRAFFIC :
(RED, YELLOW:=1, GREEN:=10);
END_TYPE
TYPE STRUCT1 :
STRUCT
P1:INT;
P2:INT;
P3:INT;
END_STRUCT
END_TYPE
2.指针,c,c 中的顶级利器,在codesys中也可以使用
Example in ST:
pt:POINTER TO INT;
var_int1:INT;
var_int2:INT;
pt := ADR(var_int1);
var_int2:=pt^;
对比一下AB control logix的任务实现
control logix项目分为任务(task),程序(program)和例程(routine)。
任务(task):每个control logix控制器最多32个任务,仅有一个continuous任务,其余为Periodic或者event任务。
任务命名包括任务功能,优先级和执行周期
任务的三种类型:
1. 连续型任务,指的是周而复始连续执行的任务,一个项目只允许定义1个,亦可以不定义,等同于codesys中的PLC_PRG(POU)。
2. 周期型任务,定时中断执行的逻辑程序,需定义周期时间,设定优先级别,最多可以定义31个
3. 事件触发型任务,事件触发引起的任务调度,事件触发可以是外部输入点引起(如同PLC5/SLC),也可以由consumed tag引起或者直接指令调用引起,还可以由运动控制状态引起,需要设定优先级别,最多定义31个。
Control logix中的producer/consumer的概念非常好,体现在其组网能力上。比如某一个模块是消息的生产者,产生消息存放在消息块中,其他需要此变量的功能块,定义一个消息consumer即可。有兴趣的朋友可以自己看看相关资料。
CoDeSys的编程工具
IL 、ST、 FBD 、LD、 CFC、 SFC六种语言,我个人比较钟爱ST,CFC。
CodesysV2.3还是强调过程编程,到了V3.5则强调面向对象,C 的影子更多了。
言归正传,应用者也不需要关心那么多技巧,能实现功能,并且代码具有可维护性就是一个合格的工程师。
1.高级语言中的struct,union。
Stuct在西门子SCL语言中被称为UDT(user defined type),AB RSLogix 5000中也被称为UDT
TYPE TRAFFIC :
(RED, YELLOW:=1, GREEN:=10);
END_TYPE
TYPE STRUCT1 :
STRUCT
P1:INT;
P2:INT;
P3:INT;
END_STRUCT
END_TYPE
2.指针,c,c 中的顶级利器,在codesys中也可以使用
Example in ST:
pt:POINTER TO INT;
var_int1:INT;
var_int2:INT;
pt := ADR(var_int1);
var_int2:=pt^;