西门子s71500用ob20延时2秒中断的梯形图程序,用LAD语言写
时间: 2023-06-24 18:08:55 浏览: 93
以下是用 LAD 语言编写的西门子S71500梯形图程序,实现了一个延时2秒中断的功能:
```
网络1:
OB20:延时2秒
LD 2S // 延时2秒
TON // 计时器开始
LD I0.0 // 中断触发条件
JP P I0.0 // 中断跳转
END_OB
网络2:
// 中断处理程序
LD M100.0 // 执行中断处理程序
RST // 清除计时器
END_NETWORK
```
其中,OB20 为一个延时器块,使用 LD 2S 指令设置延时时间为 2 秒,并使用 TON 指令启动计时器。在计时器计时期间,使用 LD I0.0 指令判断中断触发条件是否成立,如果成立则使用 JP P I0.0 指令跳转到中断处理程序。中断处理程序中使用 LD M100.0 指令执行中断处理程序,并使用 RST 指令清除计时器,以结束中断处理并返回主程序。
相关问题
帮我用西门子LAD语言写一个电梯程序
好的,以下是一个简单的电梯程序,使用西门子LAD语言编写:
```
NETWORK ELEVATOR
TITLE "Elevator Control"
// Inputs
I0.0: Floor 1 button
I0.1: Floor 2 button
I0.2: Floor 3 button
I0.3: Floor 4 button
I0.4: Elevator call button (up)
I0.5: Elevator call button (down)
I0.6: Door closed limit switch
I0.7: Door open limit switch
// Outputs
Q0.0: Elevator motor up
Q0.1: Elevator motor down
Q0.2: Door motor open
Q0.3: Door motor close
Q0.4: Floor 1 indicator light
Q0.5: Floor 2 indicator light
Q0.6: Floor 3 indicator light
Q0.7: Floor 4 indicator light
// Internal variables
M0.0: Elevator motor direction
M0.1: Door motor direction
M0.2: Door open timer
M0.3: Floor 1 button pressed
M0.4: Floor 2 button pressed
M0.5: Floor 3 button pressed
M0.6: Floor 4 button pressed
M0.7: Elevator call button pressed
M1.0: Elevator stopped at floor 1
M1.1: Elevator stopped at floor 2
M1.2: Elevator stopped at floor 3
M1.3: Elevator stopped at floor 4
// Main program
LD I0.0 // Check if floor 1 button is pressed
AN M0.3 // Check if floor 1 button has not already been pressed
TO M0.3 // Store floor 1 button pressed status
SET Q0.4 // Turn on floor 1 indicator light
SET M1.0 // Set elevator stopped at floor 1 status
LD I0.1 // Check if floor 2 button is pressed
AN M0.4 // Check if floor 2 button has not already been pressed
TO M0.4 // Store floor 2 button pressed status
SET Q0.5 // Turn on floor 2 indicator light
SET M1.1 // Set elevator stopped at floor 2 status
LD I0.2 // Check if floor 3 button is pressed
AN M0.5 // Check if floor 3 button has not already been pressed
TO M0.5 // Store floor 3 button pressed status
SET Q0.6 // Turn on floor 3 indicator light
SET M1.2 // Set elevator stopped at floor 3 status
LD I0.3 // Check if floor 4 button is pressed
AN M0.6 // Check if floor 4 button has not already been pressed
TO M0.6 // Store floor 4 button pressed status
SET Q0.7 // Turn on floor 4 indicator light
SET M1.3 // Set elevator stopped at floor 4 status
LD I0.4 // Check if elevator call button (up) is pressed
AN M0.7 // Check if elevator call button (up) has not already been pressed
TO M0.7 // Store elevator call button (up) pressed status
SET Q0.0 // Turn on elevator motor up
LD I0.5 // Check if elevator call button (down) is pressed
AN M0.7 // Check if elevator call button (down) has not already been pressed
TO M0.7 // Store elevator call button (down) pressed status
SET Q0.1 // Turn on elevator motor down
LD M1.0 // Check if elevator stopped at floor 1
AN M0.7 // Check if elevator call button (up) is pressed
TO M0.7 // Store elevator call button (up) pressed status
SET Q0.0 // Turn on elevator motor up
LD M1.3 // Check if elevator stopped at floor 4
AN M0.7 // Check if elevator call button (down) is pressed
TO M0.7 // Store elevator call button (down) pressed status
SET Q0.1 // Turn on elevator motor down
LD M1.0 // Check if elevator stopped at floor 1
AN M1.1 // Check if elevator stopped at floor 2
AN M0.7 // Check if elevator call button (up) is pressed
TO M0.7 // Store elevator call button (up) pressed status
SET Q0.0 // Turn on elevator motor up
LD M1.1 // Check if elevator stopped at floor 2
AN M1.2 // Check if elevator stopped at floor 3
AN M0.7 // Check if elevator call button (up) is pressed
TO M0.7 // Store elevator call button (up) pressed status
SET Q0.0 // Turn on elevator motor up
LD M1.2 // Check if elevator stopped at floor 3
AN M1.3 // Check if elevator stopped at floor 4
AN M0.7 // Check if elevator call button (up) is pressed
TO M0.7 // Store elevator call button (up) pressed status
SET Q0.0 // Turn on elevator motor up
LD M1.1 // Check if elevator stopped at floor 2
AN M1.0 // Check if elevator stopped at floor 1
AN M0.7 // Check if elevator call button (down) is pressed
TO M0.7 // Store elevator call button (down) pressed status
SET Q0.1 // Turn on elevator motor down
LD M1.2 // Check if elevator stopped at floor 3
AN M1.1 // Check if elevator stopped at floor 2
AN M0.7 // Check if elevator call button (down) is pressed
TO M0.7 // Store elevator call button (down) pressed status
SET Q0.1 // Turn on elevator motor down
LD M1.3 // Check if elevator stopped at floor 4
AN M1.2 // Check if elevator stopped at floor 3
AN M0.7 // Check if elevator call button (down) is pressed
TO M0.7 // Store elevator call button (down) pressed status
SET Q0.1 // Turn on elevator motor down
LD M1.0 // Check if elevator stopped at floor 1
AN I0.6 // Check if door closed limit switch is not triggered
TO M0.2 // Start door open timer
SET Q0.2 // Turn on door motor open
LD M1.1 // Check if elevator stopped at floor 2
AN I0.6 // Check if door closed limit switch is not triggered
TO M0.2 // Start door open timer
SET Q0.2 // Turn on door motor open
LD M1.2 // Check if elevator stopped at floor 3
AN I0.6 // Check if door closed limit switch is not triggered
TO M0.2 // Start door open timer
SET Q0.2 // Turn on door motor open
LD M1.3 // Check if elevator stopped at floor 4
AN I0.6 // Check if door closed limit switch is not triggered
TO M0.2 // Start door open timer
SET Q0.2 // Turn on door motor open
LD M0.2 // Check if door open timer has expired
AN I0.7 // Check if door open limit switch is not triggered
TO M0.2 // Reset door open timer
SET Q0.3 // Turn on door motor close
// End of program
```
以上程序仅供参考,具体实现方式可能因电梯类型和控制系统而异。请在实际应用中根据需要进行修改。
博图V17用LAD语言编写一段星三角启动程序
好的,下面是用博图V17的LAD语言编写的星三角启动程序:
```
ORG 0
LDI R0, 5
LDI R1, 1
LOOP1:
LDI R2, 1
LDI R3, 32
LOOP2:
OUT R3, 0
LDI R3, 42
ADD R2, 1
CMP R2, R1
JL LOOP2
OUT CR, 0
OUT LF, 0
ADD R1, 1
CMP R1, R0
JLE LOOP1
END
```
这段程序也可以输出一个星三角启动梯形图,图形如下:
```
*
* *
* * *
* * * *
* * * * *
```
这段程序的实现和前面的汇编程序类似,但使用了LAD语言。程序的思路是:
1. 用 R0 存储行数(5 行)和 R1 存储当前行正在输出的星号数。
2. 进入 LOOP1,输出当前行的星号图案。
3. 进入 LOOP2,输出当前行正在输出的星号,并在每个星号之间输出一个空格。
4. 每输出完一行后,换行并将当前正在输出的星号数加 1。
5. 如果当前行数小于总行数,则回到 LOOP1 继续输出下一行。
6. 如果当前行数已经等于总行数,则程序结束。