可编程序控制器 (PLC),,第3章 CP1H PLC指令系统,参考学时:20,,第 3 章 主 要 内 容,基本指令与规则 定时计数类指令 顺序控制类指令 锁存与微分指令 数据传送类指令 数据比较类指令 数据移位类指令 数制换算类指令 数据运算类指令,,3.1 基本指令与规则,指令系统概述 基本逻辑指令 基本指令编程规则 基本指令编程实例 置位与复位指令,,1. 指令系统概述(1),梯形图逻辑,,编程语言,指令表(助记符),逻辑功能图,高级语言,手编程器 输入指令助记符,适用于编写或调试简单程序编程手段,上位计算机 利用CX-P开发工具输入梯形图 , 适用于编写大型程序和现场调试基本指令:LD、NOT、AND、OR、OUT、NOT、 TIM(H)、CNT、CNTR、SET、RSET、KEEP、DIFU、DIFD,高级指令,数据移位类指令:SFT、SFTR,数据传送类指令:MOV、BSET、MOVD,数据比较类指令:CMP、ZCP,数制换算类指令:BCD、BIN、SDEC,数据运算类指令:++B、--B、+B、-B、+、-,,,指 令 系 统,,1. 指令系统概述(2),,2. 基本逻辑指令(1),,2. 基本逻辑指令(2),,2. 基本逻辑指令(3),,2. 基本逻辑指令(4),OR:并联1个常开触点指令,,,,1.01,,,,TST 1 &2,,,1.02,,,,,,,1.01,,,,,,,2. 基本逻辑指令(5),OR NOT :并联1个常闭触点指令,,,,1.01,,,,TSTN 1 &2,,,1.02,,,,,,,1.01,,,,,,,,2. 基本逻辑指令(6),OR LD:并联串联电路块指令 串联电路块:2个或2个以上触点串联的电路,AND LD:串联并联电路块指令 并联电路块:2个或2个以上触点并联的电路,,2. 基本逻辑指令(7),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,0.01,0.02,0.03,0.04,0.05,0.06,0.07,100.00,W0.00,H0.01,,100.00,OR LD,LD,LD,AND LD,OR,OR,编写以下自锁电路的指令助记符,,END,,,,,,,,运行程序,,,,,,,,,,,,,,,⑴ I/O继电器,内部辅助继电器,定时器,计数器等触点可多次重复使用,无需复杂的程序结构来减少触点使用次数。
⑵ 梯形图每一行均从左母线开始,输出线圈接在最右侧,紧靠右母线触点不能放圈的右侧 ⑶ 线圈不能直接与左母线相连若需要可使用常通触点3. 基本指令编程规则(1),,⑷ 应尽量避免双线圈输出3. 基本指令编程规则(2),⑸ 梯形图必须顺序执行,即从左到右,从上到下地执行每个逻辑行 如果不符合顺序执行的电路不能直接编程(如桥式电路) ⑹ 在梯形图中串联触点和并联触点使用的次数没有限制, 可无限次地使用两个或两个以上的线圈可以并联输出 三人抢答器控制程序,4. 基本指令编程实例,自锁电路应用范例:,,5. 置位与复位指令(1),SET指令:执行条件为ON时,将控制位置位(ON);当执行条件为OFF时,指令不改变控制位的状态例见教材) RSET指令:执行条件为ON时,将控制位复位(OFF);当执行条件为OFF时,指令不改变控制位的状态例见教材),,5. 置位与复位指令(2),混凝土配料控制程序,置位/复位指令应用实例:,,3.2 定时计数类指令,定时器指令 计数器指令 可逆计数器指令,1. 定时器指令(1),,,N是定时器的编号,其取值范围:0000≤N≤4095 SV的取值区域:CIO,W,H,A,T,C,D,*D,@D或#。
若采用通道定时,则通道内容必须是BCD码,否则P_ER置“1”,程序虽能运行,但定时器不准确 功能:实现导通延时操作的指令当定时器的输入条件是OFF或电源断电时,定时器复位时,计时当前值PV等于定时器设定值SV;当输入条件变为ON时,定时器开始定时,计时当前值不断减1,当经过设定时间后当前值变为0000,定时器输出 SV的取值范围是0~9999,系统定时精度是0.1秒,故定时范围是0~999.9秒;,符号:,TIM N SV,,,定时器指令TIM工作示例,,1. 定时器指令(2),定时器指令编程实例,水处理控制程序,,1. 定时器指令(3),,,当通道内容不是BCD码或间接寻址D区不存在时,P_ER置“1” 功能:预置计数器,完成减数操作当计数输入端(CP)信号从OFF变为ON时,计数值减1,当计数器当前值减为0000时,计数器为ON;当计数复位端(R)为ON时,计数器为OFF,且当前值返回到初始设定值 当电源断电时,计数器当前值保持不变,计数器不复位,这是计数器与定时器的不同点 当计数输入(CP)和复位输入(R)同时为ON时,复位输入优先符号:,CNT N SV,,,,CP,R,N是计数器的编号,取值范围:0000≤N≤4095 SV的取值区域:CIO,W,H,A,T,C,D,*D,@D或# SV的取值范围是0~9999,2. 计数器指令(1),,计数器指令CNT工作示例,2. 计数器指令(2),,,① 当递增计数输入端信号从OFF变ON时,可逆计数器将计数当前值加1; 当递减计数输入端信号从OFF变ON时,可逆计数器将计数当前值减1,这两个输入端信号同时从OFF变ON时,可逆计数器不计数。
② 复位输入信号从OFF变ON时,可逆计数器复位,计数当前值被复位成0000复位信号保持为ON时,不能计数 ③ 在电源掉电或CNTR指令位于IL-ILC间而IL条件为OFF时,CNTR的当前值被保持 ④ 当递增计数时, 计数当前值达到设定值时,计数器不输出,当下一个递增计数信号到达时,计数器才有输出;当递减计数时,计数当前值减到0000时,计数器不输出,当下一个递减计数信号到达时,计数器才有输出符号:,CNTR N SV,,ACP,R,N是计数器的编号,取值范围:0000≤N≤4095 SV的取值区域:CIO,W,H,A,T,C,D,*D,@D或# SV的取值范围是0~9999,,SCP,功能:,3. 可逆计数器指令(1),可逆计数器指令CNTR工作示例,,3. 可逆计数器指令(2),,3.3 顺序控制类指令,结束指令 END 连锁与连锁清除指令 跳转与跳转结束指令,,CP1H PLC的程序是采用多任务顺序执行的方式,CPU按任务编号依次扫描各程序段后执行I/O刷新,然后进行下一周期扫描END 指令表示一个循环内的程序段的结束,END指令后面任何指令都不执行,转而执行下一任务程序 END是结束指令的助记符,也是无操作数指令。
它通常作为一个循环程序段的最后一条指令程序中若缺少END指令,将视为错误,程序中止运行,并给出错误信息“NO END INST” 在调试复杂程序时,可将程序分成若干段,每段插入一条END指令,达到逐段调试程序的目的,调通一段就删去插入的END指令,直到整个程序调通为止1. 结束指令 END,,IL(002):表示电路一个新的分支起点 ILC(003):表示电路分支结束 IL和ILC总是分别位于某一段程序的段首和段尾,当IL的条件为ON时(IL前面支路的结果是ON),则IL和ILC之间的程序继续执行,如同没有IL和ILC例见教材),2. 连锁与连锁清除指令(1),,2. 连锁与连锁清除指令(2),当IL的条件为 OFF 时,则IL和ILC之间的程序将不执行,转去执行ILC后面的程序,此时IL和ILC之间的各继电器状态见下表JMP(004):表示电路一个新的分支起点 JME(005):表示电路分支结束 跳转JMP和跳转结束JME指令用于控制程序分支JMP位于程序段首,JME位于段尾当JMP的输入条件为ON时,在JMP和JME之间的程序将按照没有设置JMP和JME指令的情况正常执行例见教材),3. 跳转与跳转结束指令(1),,3. 跳转与跳转结束指令(2),当JMP的输入条件为OFF时,在JMP和JME之间的程序将被跳过,程序将从JME指令后的第一条指令继续执行,此时JMP和JME之间的各继电器状态见下表。
3. 跳转与跳转结束指令(3),JMP和JME指令的要点: ① 在一个程序中可有多组JMP和JME,用跳转号对其进行编号,跳转号的范围是00~FF ② 跳转号00是特殊跳转号当JMP00的输入条件是OFF时,在JMP00和JME00之间的程序将被扫描但是不被执行,因此,它将占用扫描时间而其他跳转号的跳转指令在相同条件下,相应程序段将不被扫描 在一个程序中,JMP00和JME00可多次使用,而其他跳转号的跳转指令只能使用一次,故JMP00和JME00可不成组使用,即“JMP…JMP…JME”格式虽然在程序检查时会提示出错,但程序能够正常执行3.4 锁存与微分指令,锁存指令 KEEP 微分指令 DIFU/DIFD 锁存微分指令编程实例,,1. 锁存指令 KEEP,锁存器指令KEEP工作示例,锁存器KEEP相当于R-S触发器,它有两个输入端:置位输入端S,复位输入端R当置位S 从 OFF变为ON 时,KEEP 将被锁存的位一直保持为 ON,直到复位R 从OFF 变为 ON 时,才使被锁存的位复位OFF置位和复位输入同时为ON,复位端优先2. 微 分 指 令,微分指令DIFU/DIFD工作示例,DIFU(13):输入脉冲的上升沿使指定继电器闭合一个扫描周期, 然后复位。
(功能与UP指令或触点上微分型“↑”相同) DIFD(14):输入脉冲的下降沿使指定继电器闭合一个扫描周期, 然后复位 (功能与DOWN指令或触点下微分型“↓”相同) 在CP1H 指令系统中,某些高级指令具有上微分特性,在指令前加符号@来标识3. 锁存微分指令编程实例,报警器消声控制程序,自动门开关控制程序,,① 传送/求反传送指令: MOV(021)/MVN(022),② 块设置指令:BSET(071),③ 块传送指令:XFER(070),④ 数据交换指令:XCHG(073),⑤ 位传送指令:MOVB(082),⑥ 数传送指令:MOVD(083),3.5 数据传送类指令,,3.6 数据比较类指令(1),① 数据比较指令:CMP(020),② 块比较指令:BCMP(068),③ 表比较指令:TCMP(085),④ 区域比较指令:ZCP(088),,,,,CMP (020),CP1,CP2,,,,CP1 : 比较字1,CIO, W, H, A, T, C, D, *D, @D, #或DR,,,CP2 : 比较字2,CIO, W, H, A, T, C, D, *D, @D, #或DR,,,,,标记 符 号 CP1CP2,,,,> P_GT OFF OFF ON = P_EQ OFF ON OFF < P_LT ON OFF OFF,(执行条件为ON时,执行CMP指令),,符号:,3.6 数据比较类指令(2),,数据比较指令CMP工作示例,3.6 数据比较类指令(3),,3.7 数据移位类指令,数据移位类指令 数据移位指令编程实例,,1. 数据移位类指令(1),① 移位寄存器指令:SFT(010),② 双向移位寄存器指令:SFTR(084),③ 算术左移寄存器指令:ASL(025),④ 算术右移寄存器指令:ASR(026),,1. 数据移位类指令(2),⑤ 循环左移指令:ROL(027),⑥ 循环右移指令:ROR(028),⑦ 数左移指令:SLD(074),⑧ 数右移指令:SRD(075),⑨ 字移位指令:WSFT(016),,霓虹灯控制程序1,霓虹灯控制程序2,2. 数据移位指令编程实例,,① 10进制→2进制指令:BIN(023),② 2进制→10进制指令:BCD(024),③ 4 → 16译码器指令:MLPX(076),。