一起创业网-为互联网创业者服务

正传反转程序怎么写好看

编写一个好看的电动机正反转程序,不仅需要考虑程序的功能性,还需要考虑代码的可读性和可维护性。以下是一个基于STEP 7开发平台的正反转程序设计的示例,该程序实现了正转10秒、停止10秒、反转10秒、停止10秒的循环。

基于步进指令风格的程序设计

这种风格便于调试和维护,通过监控状态编号MW10的值可以找到当前运行的代码。每一步运行完成后置位下一步对应的MW10状态。状态触点接通后,与其相连的电路动作;状态触点断开,相连的电路停止工作。

```pascal

PROGRAM MotorControl

VAR

MW10: BOOL; // 状态编号,用于跟踪当前运行的代码

t: TIME;// 计时变量

BEGIN

WHILE TRUE DO

CASE MW10 OF

TRUE:

IF t = 0 THEN

// 正转10秒

MW10 := FALSE;

t := T10s;

END_IF;

IF t = T10s THEN

// 停止10秒

MW10 := FALSE;

t := T10s;

END_IF;

IF t = T10s THEN

// 反转10秒

MW10 := FALSE;

t := T10s;

END_IF;

IF t = T10s THEN

// 停止10秒

MW10 := FALSE;

t := T0s;

END_IF;

FALSE:

// 初始化计时变量

t := T0s;

END_CASE;

END_WHILE;

END_PROGRAM;

```

基于传统起保停风格的程序设计

这种风格遵循前级步已生效、本级步转换条件满足且后级步未生效时,本级步输出线圈并自锁,直至后级步生效的原则。

```pascal

PROGRAM MotorControl

VAR

MW10: BOOL; // 状态编号,用于跟踪当前运行的代码

t: TIME;// 计时变量

BEGIN

MW10 := FALSE;

WHILE TRUE DO

IF MW10 = FALSE AND t = T0s THEN

// 正转

MW10 := TRUE;

t := T10s;

ELSEIF MW10 = TRUE AND t = T10s THEN

// 停止

MW10 := FALSE;

t := T10s;

ELSEIF MW10 = FALSE AND t = T10s THEN

// 反转

MW10 := TRUE;

t := T10s;

ELSEIF MW10 = TRUE AND t = T10s THEN

// 停止

MW10 := FALSE;

t := T0s;

END_IF;

END_WHILE;

END_PROGRAM;

```

基于置位复位风格的程序设计

这种风格通过置位本级步,同时复位前级步,然后执行本级步对应的动作并停止前级步的动作。

```pascal

PROGRAM MotorControl

VAR

MW10: BOOL; // 状态编号,用于跟踪当前运行的代码

t: TIME;// 计时变量

BEGIN

MW10 := FALSE;

WHILE TRUE DO

IF MW10 = FALSE AND t = T0s THEN

// 正转

MW10 := TRUE;

t := T10s;

ELSEIF MW10 = TRUE AND t = T10s THEN

// 停止

MW10 := FALSE;

t := T10s;

ELSEIF MW10 = FALSE AND t = T10s THEN

// 反转

MW10 := TRUE;

t := T10s;

ELSEIF MW10 = TRUE AND t = T10s THEN

// 停止

MW10 := FALSE;

t := T0s;

END_IF;

END_WHILE;

END_PROGRAM;

```

基于移位风格的程序设计

这种风格通过同时满足前级步及转换条件,对状态编号进行移位,所用的状态编号需连续。