2.在 MW4 小于等于 1247 时,令 M0.1 为 ON 并保持,反之将 M0.1 复位为 OFF。
LDW<= MW4, 1247
S
M0.1, 1
M0.1, 1
I0.0
LDW> MW4, 1247
R
3.编写程序,在 I0.0 的上升沿将 VW10~VW58 清零。
LD
EU
FILL
5.编写程序,将 VW0 中以 0.01Hz 为单位的 0~99.99Hz 的整数格式的频率值,转换为
0, VW10, 25
4 位 BCD 码,送给 QW0,通过 4 片译码芯片和七段显示器显示频率值(见图 3-6)。
SM0.0
LD
MOVW VW0, QW0
IBCD
6.用 I0.0 控制接在 QB0 上的 8 个彩灯是否移位,每 1s 移 1 位。用 I0.1 控制左移或右
移,首次扫描时将彩灯的初始值设置为十六进制数 16#0E(仅 Q0.1~Q0.3 为 ON),设计出
梯形图程序。
QW0
7.用 I1.0 控制接在 QB0 上的 8 个彩灯是否移位,每 1s 移 1 位。用 IB0 设置彩灯的初
始值,在 I1.1 的上升沿将 IB0 的值传送到 QB0,设计出梯形图程序。
8.用实时时钟指令设计控制路灯的程序,20:00 时开灯,06:00 时关灯。
LD
TODR
LDB>=
OB<
=
SM0.0
VB0
VB3, 16#20
VB3, 16#06
Q0.0
// 读实时钟,小时值在 VB3
// 20 点~0 点(日期、时间值用 BCD 码表示)
// 0 点~6 点
// 点亮路灯
9.用实时时钟指令设计控制路灯的程序,在 5 月 1 日~10 月 31 日的 20:00 开灯,06:00
关灯;在 11 月 1 日~下一年 4 月 30 号的 19:00 开灯,7:00 关灯。
LD
TODR
SM0.0
VB0
LDW>= VW1, 16#1031
OW<
VW1, 16#0501
=
M0.0
LDB>= VB3, 16#20
VB3, 16#06
OB<
AN
M0.0
LDB>= VB3, 16#19
VB3, 16#07
OB<
A
M0.0
OLD
=
Q0.1
// 读实时钟,小时值在 VB3,月日在 VW1
//冬季 ON
// 20 点~6 点开灯
//夏季
// 19 点~7 点开灯
//冬季
10.半径(<10000 的整数)在 VW10 中,取圆周率为 3.1416。编写程序,用浮点数运
算指令计算圆周长,运算结果四舍五入转换为整数后,存放在 VW20 中。
SM0.0
VW10, AC1
AC1, AC1
3.1416, AC1
LD
ITD
DTR
*R
ROUND AC1, AC1
MOVW AC1, VW20
// 整数转换为双整数
// 双整数转换为实数
// 乘以 3.1416
// 乘积四舍五入转换为双整数
// 低 16 位送 VW20
第 11 题 编写语句表程序,实现运算 VW2–VW4 = VW6。
I0.2
LD
MOVW VW2, VW6
-I
VW4, VW6
12.AIW2 中 A/D 转换得到的数值 0~32000 正比于温度值 0~1200C。在 I0.0 的上升
沿,将 AIW2 的值转换为对应的温度值存放在 VW10 中,设计出梯形图程序。
公式: T = 1200*N/32000
I0.3
1200, AC0
LD
MOVW AIW2, AC0
AENO
MUL
AENO
/D
AENO
MOVW AC0, VW10
27648, AC0
13.以 0.1 度为单位的整数格式的角度值在 VW0 中,在 I0.0 的上升沿,求出该角度的
正弦值,运算结果转换为以 610 为单位的双整数,存放在 VD2 中,设计出程序。
LD
I0.0
VW0, AC0
AC0, AC0
10.0, AC0
EU
LPS
ITD
AENO
DTR
AENO
/R
LRD
*R
AENO
SIN
LPP
*R
AENO
ROUND AC0, VD2
AC0, AC0
0.01745329, AC0
1000000.0, AC0
V0.4
16.编写程序,用字节逻辑运算指令,将 VB0 的高 4 位置为 2#1001,低 4 位不变。
LD
MOVB VB0, LB0
AENO
ANDB
AENO
MOVB
ORB
LB0, VB0
16#90, VB0
16#0F, LB0
I0.4
17.编写程序,前后两个扫描周期 VW4 的值不变将 M0.2 复位,反之将 M0.2 置位。
LD
MOVW VW4, AC0
AENO
XORW VW6, AC0
AENO
LPS
AW=
R
LRD
AW<> AC0, 0
S
M0.2, 1
LPP
MOVW VW4, VW6
18.设计循环程序,求 VD20 开始连续存放的 5 个浮点数的平均值。
AC0, 0
M0.2, 1
19.在 I0.0 的上升沿,用循环程序求 VW100~VW108 的累加和。为了防止溢出,将被
累加的整数转换为双整数后再累加。用 VD10 保存累加和。
20.编写程序,求出 VW10~VW28 中最大的数,存放在 VW30 中。
21.用子程序调用编写图 5-3 中两条运输带的控制程序,分别设置自动程序和手动程
序,用 I0.4 作自动/手动切换开关。手动时用 I0.0 和 I0.1 对应的按钮分别点动控制两条运
输带。
主程序
自动程序
手动程序
22.设计程序,用子程序求圆的面积,输入参数为直径(小于 32767 的整数),输出量
为圆的面积(双整数)。在 I0.0 的上升沿调用该子程序,直径为 10000mm,运算结果存放
在 VD10 中。
主程序
子程序
23.用定时中断,每 1s 将 VW8 的值加 1,在 I0.0 的上升沿禁止该定时中断,在 I0.2 的
上升沿重新启用该定时中断。设计出主程序和中断子程序。
主程序
定时中断程序
24.第一次扫描时将 VB0 清零,用定时中断 0,每 100ms 将 VB0 加 1,VB0 等于 100
时关闭定时中断,并将 Q0.0 立即置 1。设计出主程序和中断子程序。
主程序
定时中断程序
5 章习题答案
I0.0
T37
Q0.0
I0.0
T37
Q0.0
Q0.0
40
T37
I0.1
T37
TON
IN
100ms
PT
Q0.1
Q0.1
Q0.0
I0.1
T37
Q0.1
Q0.1
T37
TON
IN
70
PT
100ms
题 3 的答案
题 4 的答案
SM0.1
初始化脉冲
M0.0
起动
I0.0
.
I0.4 I0.3
.
M0.1
S
Q0.0
夹紧
T37
2s
T37
M0.2
Q0.1
工件右行
I0.1
右限位
M0.3
Q0.3
冲头下行
I0.2
下限位
M0.4
Q0.4
冲头上行
I0.3
上限位
M0.5
I0.4
Q0.2
.
左限位
M0.6
R
Q0.0
T38
已松开
工件左行
松开
T38
2s
题 6 的答案
SM0.1
M0.0
I0.3
.
I0.0
M0.1
Q0.0
I0.1
M0.2
Q0.1
I0.2
M0.3
Q0.0
I0.0
题 7 的答案
SM0.1
M0.0
I0.2
M0.1
Q0.0
I0.0
M0.2
Q0.0
I0.1
M0.3
Q0.2
I0.3
题 5 的答案
Q0.1
Q0.2
SM0.1
M0.0
起动
I0.0
.
I0.1
M0.1
Q0.0
Q0.2
快进
I0.2
中限位
M0.2
Q0.0
工进
I0.3
右限位
M0.3
T37
暂停5s
T37
M0.4
Q0.1
I0.1
左限位
Q0.2
快退
题 9 的答案
题 8 的答案:初始步应为双线框;最上面的转换旁边没有转换条件;步 M0.2 和 M0.0
之间无转换;转换 I0.0 与最上面的转换之间没有步,最上面的水平有向连线应放在最上面的
转换之下。输入 I0.5 不能作为动作;一般用输入、定时器和计数器的触点和它们的逻辑组合
作转换条件,不用输出位(Q)作转换条件;步 M0.3 的后面没有转换和步,系统运行到步
M0.3 时会“死机”。
SM0.1
M0.0
I0.0
Q0.0
M0.1
Q0.0
T37
T37
M0.2
Q0.1
T38
T38
4s
6s
M0.3
Q0.1
Q0.2
T39
5s
T39
题 10 的答案
SM0.1
M0.0
I0.0
. I0.2
M0.1
Q0.0
I0.1
M0.2
Q0.0
T37
T37
M0.3
Q0.1
I0.2
题 11 的答案
题 12 的答案