厦门理工学院学报
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
・