background image

厦门理工学院学报

2006

通常情况下指针用作跳转 、中断等程序的入口地址 , 和子程序及跳转等指令一起使用可以增加编

程的灵活性 , 但在应用时必须处理好指令的位置 , 否则将给调试带来不少的麻烦. 由于电梯控制的随
机性特点 , 以及在软件设计中采用模块化的编程模式 , 跳转等指令的运用将增强程序结构的逻辑性和
可读性.

图 3所示的程序结构是系统出现故障时的处

理过程.

程序设计说明 :

1) “CJ ”为跳转指令 ; “FEND ”为主程序结

束指令 ; “END ”为程序结束指令 ; “P”为指针.

2) 第 “0 ”步程序到 “FEND ”之间是主程

序段 , 从 “P10”到 “END ”是各子程序段.

3) 其 中 “P10 ~ P20 ”是 故 障 处 理 程 序 段.

主程序中第 “305”步语句是 “故障处理子程序 ”
调用的入口 , 而 P10所指向的是 “故障处理子程
序 ”的入口地址.

4) 当 出 现 故 障 时 , 执 行 跳 转 指 令 “CJ  

P10”, 程序将跳到指针 “P10 ”所指向的语句开

始故障的处理 , 之后将执行 “CJ  P120 ”, 跳到

“P120”所指向的 “END ”语句 , 结束所有控制.

3

12 指针与变址寄存器的组合

电梯的运行涉及到楼层的控制 , 当电梯响应某

一楼层的呼叫信号后将做相应的处理. 如果按照传
统的 “自顶而下 ”的设计思路 , 以及 PLC 特有的

“自上而下 ”的扫描方式 , PLC会将所有楼层的语

句段都扫描一遍 , 而不管电梯是否处于该楼层.

但是结合变址元件 “V ”或 “Z”和指针 “P”,

编制一个具有 “多分支选择 ”结构的语句段 , 就会
有不同的效果 , 如图 4 所示. 这种 “多分支选择 ”
结构的设计思路类似于单片机中 “基址寄存器 ”

“PC”指针以及 “变址值 ”配合使用的情况.

3

1211 程序设计说明

1) 该段程序的作用是清除某个楼层已经完成

的任务的状态标志位.

2) “D ”为数据寄存器 ; “MOV ”为传输指令.

3) “D100”中存放电梯当前所在的楼层数 , 通过 “MOV ”指令传给变址寄存器 “V ”

.

4) “分支选择 ”的关键是 “CJ  P30V ”指令 , 通过 “P30V ”中的 “V ”的数据决定指针 “P”

的实际地址. 例如 “V ”中的数据为 “1”, 则指针 “P30V ”的真正地址是 “P31”

.

5) 对于不同楼层的呼叫信号 , 将分别跳到 “P31”~ “P35”相应程序段进行处理.

3

1212 程序执行举例

例如当前楼层为 1楼 , 则 “D100”中存放的数据为 “1”, 变址寄存器 “V ”中的数据也为 “1”

.

通过 “P30V ”将程序的入口地址指向 “P31”, 执行 “CJ P30V ”后 , 程序跳到 “P31”所指向的语
句段 , 进入 “一楼状态标志处理 ”, 结束后通过 “CJ P40”跳出 “清除某个楼层状态标志位 ”程序
模块.

6

4