PLC教程理论篇之PLC-的位移与步进指令及其应用一
- 格式:doc
- 大小:175.50 KB
- 文档页数:5
PLC步进指令的编程技巧与注意事项一、plc步进指令的编程技巧运用步进指令编写挨次掌握程序时,首先应确定整个掌握系统的流程,然后将简单的任务或过程分解成若干个工序(状态),最终弄清各工序成立的条件、工序转移的条件和转移的方向,这样就可画出挨次功能图。
依据掌握要求,采纳STL、RET指令的步进挨次掌握可以有多种方式。
如图1所示是单流程挨次功能图,图中M8002是特别帮助继电器,仅在运行开头时瞬间接通,产生初始脉冲。
如图2所示是选择性分支与汇合状态转移方式。
如图3所示是并行分支与汇合状态转移方式。
二、在使用步进指令编写挨次掌握程序时,要留意以下事项:1、初始状态(S0)应预先驱动,否则程序不能向下执行,驱动初始状态通常用掌握系统的初始条件,若无初始条件,可用M8002或M8000触点进行驱动。
2、不同步程序的状态继电器编号不要重复3、当上一个步程序结束,转移到下一个步程序时,上一个步程序中的元件会自动复位(SET、RST指令作用的元件除外)。
4、在步进挨次掌握梯形图中可使用双线圈功能,即在不同步程序中可以使用同一个输出线圈,这是由于CPU只执行当前处于活动步的步程序。
5、同一编号的定时器不要在相邻的步程序中使用,不是相邻的步程序中则可以使用6、不能同时动作的输出线圈尽量不要设在相邻的步程序中,由于可能消失下一步程序开头执行时上一步程序未完全复位,这样会消失不能同时动作的两个输出线圈同时动作。
假如必需要这样做,可以在相邻的步程序中采纳软联锁爱护,即给一个线圈串联另一个线圈的常闭触点。
7、在步程序中可以使用跳转指令。
在中断程序和子程序中也不能存在步程序,在步程序中最多可以有4级FORいNEXT指令嵌套。
8、在选择分支和并行分支程序中,分支数最多不能超过8条,总的支路数不能超过16条。
9、假如盼望在停电恢复后连续维持停电前的运行状态,可使用S500~S89停电保持型状态继电器。
第4章步进指令各大公司生产的PLC都开发有步进指令,主要是用来完成顺序控制,三菱FX系列的PLC有两条步进指令,STL(步进开始)和RET(步进结束)。
4.1 状态转移(SFC)图在顺序控制中,我们把每一个工序叫做一个状态,当一道工序完成做下一道工序,可以表达成从一个状态转移到另一个状态。
如有四个广告灯,每个灯亮1秒,循环进行。
则状态转移图如图4-1所示。
每个灯亮表示一个状态,用一个状态器S,相应的负载和定时器连在状态器上,相邻两个状态器之间有一条短线,表示转移条件。
当转移条件满足时,则会从上一个状态转移到下一个状态,而上一个状态自动复位,如要使输出负载能保持,则应用SET来驱动负载。
每一个状态转移图应有一个初始状态器(S0~S9)在最前面。
初始状态器要通过外部条件或其他状态器来驱动,如图中是通过M8002驱动。
而对于一般的状态器一定要通过来自其他状态的STL指令驱动,不能从状态以外驱动。
下面通过一个具体例子来说明状态转移图的画法。
例4-1有一送料小车,初始位置在A点,按下启动按钮,在A点装料,装料时间5s,装完料后驶向B点卸料,卸料时间是7s,卸完后又返回A点装料,装完后驶向C点卸料,按如此规律分别给B、C两点送料,循环进行。
当按下停止按钮时,一定要送完一个周期后停在A点。
写出状态转移初始状态器图。
分析:从状态转移图中可以看出以下几点: (1) 同一个负载可以在不同的状态器中多次输出。
(2) 按下起动按钮X4,M0接通,状态可以向下转移,按下停止按钮,M0断开,当状态转移到S0时,由于M0是断开的,不能往下转移,所以小车停在原点位置。
(3) 要在步进控制程序前添加一段梯形图(见图4-3b )(b ) 梯形图(a ) 状态转移图图4-3 控制送料小车状态转移图M0 启动辅助继电器X1 原点条件M8002T3X1S23S22X3S23T2S21S24X1X2T1S22S21T0S20S0打开卸料阀小车左行Y4A点Y2T3C点K70小车左行Y4小车右行打开装料阀原点指示Y1Y3T2K50Y0A点打开卸料阀小车右行B点Y2T1K70Y3打开装料阀Y1T0 K504.2 步进指令4.2.1步进指令步进指令有两条:STL和RET。
《可编程控制器与变频器》教案编号:09教案续页《可编程控制器与变频器》教案编号:10教案续页(1)可编程控制器实训装置1台(2)PLC主机模块1个(3)开关、按钮板模块一个(4) 交流接触器模块1个(5) 交流接触器、热继电器模块1个(6) 三相电动机1台(7) 指示灯模块1个(8)计算机1台(9) 电工常用工具1条(10) 导线若干5、系统调试《可编程控制器与变频器》教案编号:11教案续页3.2步进顺控指令及其编程方法3.2.1步进顺控指令仅有两条步进顺控指令,其中STL ( Step Ladder)是步进开始指令,已是该状态的负载可以被驱动,RET是步进返回指令,也叫步进结束指令,使步进顺控程序执行完毕时,非步进顺控程序的操作在主母线上完成。
3.2.2状态转移图的编程方法对状态转移图进行编程,就是如何使用STL和RET指令的问题,编程原则是:先进行负载的驱动处理,然后进行状态的转移处理。
负载驱动及转移处理必须在STL指令之后进行,负载的驱动通常使用OUT指令;状态的转移必须使用SET指令。
但是若是向上转移,向非相邻的下游转移或向其他流程转移,一般不能使用SET指令,而用OUT指令。
3.2.3编程注意事项(1)与STL指令相连的触点使用LD或LDI指令,下一条STL指令的出现意味着当前STL程序区的结束和新的STL程序区的开始,最后一个STL程序区结束时,一定要使用RET指令,这就意味着整个STL程序区的结束,否则将出现“程序语法错误”信息,PLC不能执行用户程序。
(2)初始状态必须预先做好驱动,否则状态流程不可能向下进行。
一般用控制系统的初始条件,若无初始条件,可用M8002或M8000进行驱动。
M8002是一个初始脉冲辅助继电器,它只在PLC运行开关由STOP-》RUN时其动合触点闭合一个周期,股初始状态S0就只被它激活一次,初始状态S0就只有初始位置和复位功能。
(3)STL指令后可以直接驱动或通过别的触点来驱动Y、M、S、T、C等原件的线圈和功能指令。
PLC步进顺控指令的应用-1虽然该类的题目见的很多,可是好象讲清楚的并没见到。
就是本人来讲,也是看了很久都无法清楚。
故才下决心搞懂它。
差不多花了一天多时间才明白它的道理,它并不复杂,而且很好画梯形图和编程。
顺控实际是按照生产工艺要求而规定的一定操作顺序而已。
首先要根据生产工艺要求,画出顺序功能图,然后根据功能图再画出梯形图。
上图即为顺序功能图:图中双框S0表示为初始步,单框中的S20、S21、S22、S23依次根据工艺顺序要求而设置的各活动步。
我们来看S0初始步上方垂线上设有M8002其为初始步激活的条件(该步的意思不妨可以理解为自动合上空开?),在S0步与S20步之间有X1、X3,它说明只有符合这二条件要求后,步才能从S0步转移到S20步,而当S20步处于活动状态时Y002、T0处于动作状态。
而S20步与S21步之间的T0,它受时间控制,只要时间一到,S21步被激活投入,使Y001处于工作,同时S20步则处于关闭(其控制的Y002、T0则停止)以下各步中的X2、T1、X1含意均同(均为转换条件),但要注意下一步被激活,其相应控制元件则动作,意味着上一步被停止。
而各步之间均插入了X4其箭头均指向初始步S0,即恢复处于初始状态,X4在这地方的作用是急停。
而步S23下的X1条件一符合,可转入步S20,即处于循环状态。
根据顺序功能图就可很方便地将它转换成梯形图。
梯形图如上图所示,其工作过程如下:第一梯级中的0、LD M8002:M8002为特殊辅助继电器的常开触点,其作用仅在PLC通电瞬间接通。
1、SET S0: SET为置位指令,功能是驱动线圈,并使其具有自保功能。
也就是说在PLC通电的瞬间M8002产生一脉冲,将状态元件S0激活(并自保持)。
第二梯级中最左侧的3、STL S0:STL为步进触点指令,功能为步进触点驱动,当上一步(1、SET S0)为置位时该接点闭合,4、LD X001为小车停止位置的必要条件,也就是说小车开始时必须停在X1位置(该接点才能闭合),此时按外部的按钮(SB1)从而驱动(5、AND X003)的闭合,程序才能执行,这就是所说的条件。
一、顺控指令1 触点指令00 LD 逻辑操作开始01 LDI 逻辑非操作开始02 AND 逻辑乘03 ANI 逻辑乘非04 OR 逻辑加05 ORI 逻辑加非2 连接指令06 ANB AND逻辑块与07 ORB OR逻辑块或08 MPS 存储操作结果09 MRD 从MPS读取操作结果10 MPP 从MPS读取操作结果并清除结果3 输出指令11 OUT 软元件输出12 SET 软元件置位13 RST 软元件复位14 PLS 在输入信号的上升沿15 PLF 在输入信号的下降沿16 CHK 软元件输出翻转4 移位指令17 SFT 元件移1位18 SFTP 元件移1位5 主控指令19 MC 主控开始20 MCR 主控复位6 结束指令21 FEND 结束主程序22 END 总的程序末尾,返回第0步7 其它指令23 STOP 停止24 NOP 空操作二基本指令1 比较指令16位数据比较25 LD= 当S1=S2, 接通,当S1≠S2, 断开26 AND=27 OR=28 LD<> 当S1≠S2, 接通,当S1=S2, 断开29 AND<>30 OR<>31 LD> 当S1>S2, 接通,当S1≤S2, 断开32 AND>33 OR>34 LD<= 当S1≤S2, 接通,当S1>S2, 断开35 AND<=36 OR<=37 LD< 当S1<S2, 接通,当S1≥S2, 断开38 AND<39 OR<40 LD>= 当S1≥S2, 接通,当S1<S2, 断开41 AND>=42 OR>=32位数据比较43 LDD= 当(S1+1,S1)=(S2+1,S2), 接通44 ANDD=45 ORD=46 LDD<> 当(S1+1,S1)≠(S2+1,S2),接通47 ANDD<>48 ORD<>49 LDD> 当(S1+1,S1)>(S2+1,S2), 接通50 ANDD>51 ORD>52 LDD<= 当(S1+1,S1)≤(S2+1,S2),接通53 ANDD<=54 ORD<=55 LDD< 当(S1+1,S1)<(S2+1,S2), 接通56 ANDD<57 ORD<58 LDD>= 当(S1+1,S1)≥(S2+1,S2),接通59 ANDD>=60 ORD>=2 算术运算指令二进制16位加/减61 + (D)+(S)→(D)62 +P63 + (S1)+(S2)→(D)64 +P65 - (D)-(S)→(D)66 -P67 - (S1)-(S2)→(D)68 -P二进制32位加/减69 D+ (D+1,D)+(S+1,S)→(D+1,D)70 D+P71 D+ (S1+1,S1)+(S2+1,S2)→(D+1,D)72 D+P73 D- (D+1,D)-(S+1,S)→(D+1,D)74 D-P75 D- (S1+1,S1)-(S2+1,S2)→(D+1,D)76 D-P 77 * (S1)×(S2)→(D+1,D)78 *P79 / (S1)/(S2)→商(D), 余数(D+1)80 /P81 D* (S1+1,S1)×(S2+1,S2)→(D+3,D+2,D+1,D)82 D*P83 D/ (S1+1,S1)/(S2+1,S2)→商(D+1,D),余数(D+3,D+2)84 D/P85 B+ (D)+(S)→(D)86 B+P87 B+ (S1)+(S2)→(D)88 B+P89 B- (D)-(S)→(D)90 B-P91 B- (S1)-(S2)→(D)92 B-P93 DB+ (D+1,D)+(S+1,S) →(D+1,D)94 DB+P95 DB+ (S1+1,S1)+(S2+1,S2)→(D+1,D)96 DB+P97 DB- (D+1,D)-(S+1,S)→(D+1,D)98 DB-P99 DB- (S1+1,S1)-(S2+1,S2)→(D+1,D)100 DB-P101 B* (S1)×(S2)→(D+1,D)102 B*P103 B/ (S1)/(S2)→商(D),余数(D+1)104 B/P105 DB* (S1+1,S1)×(S2+1,S2)→(D+3,D+2,D+1,D)106 DB*P107 DB/ (S1+1,S1)/(S2+1,S2)→商(D+1,D),余数(D+3,D+2)108 DB/P109 INC (D)+1→(D)110 INCP111 DINC (D+1,D)+1→(D+1,D)112 DINCP113 DEC (D)-1→(D)114 DECP115 DDEC (D+1,D)-1→(D+1,D)116 DDECP3 BCD—二进制转换117 BCD (S)→(D)BCD转换118 BCDP119 DBCD (S+1,S)→(D+1,D)120 DBCDP121 BIN (S)→(D)二进制转换122 BINP123 DBIN (S+1,S)→(D+1,D)124 DBINP4 数据传送指令125 MOV (S)→(D)126 MOVP127 DMOV (S+1,S)→(D+1,D)128 DMOVP129 CML (S)→(D)130 CMLP131 DCML (S+1,S)→(D+1,D)132 DCML133 DCMLP134 BMOV (S)→(D)n个135 BMOVP136 FMOV (S)→(D)n个137 FMOVP138 XCH (D1)←→(D2)139 XCHP140 DXCH (D1+1,D1)←→(D2+1,D2) 141 DXCHP5 程序分支指令142 CJ 条件满足,跳转到P**处143 SCJ 条件满足后紧接的扫描周期,跳转到P**处144 JMP 无条件跳转到P**处145 CALL 执行P**处子程序146 CALLP147 RET 从子程序返回148 EI 允许中断149 DI 禁止中断150 IRET 从中断程序返回151 SUB 执行n指定的程序152 SUBP6 程序切换指令153 CHG 在主副程序间切换7 刷新指令154 COM 执行通讯刷新155 EI 允许通讯刷新156 DI 禁止通讯刷新157 SEG 对应软元件的刷新,仅执行1个扫描周期,M9052 ON时有效三应用指令1 逻辑运算指令158 WAND (D) AND (S)→(D)159 WANDP160 WAND (S1) AND (S2)→(D)161 WANDP162 DAND (D+1,D) AND (S+1,S)→(D+1,D)163 DANDP164 WOR (D) OR (S)→(D)165 WORP166 WOR (S1) OR (S2)→(D)167 WORP168 DOR (D+1,D) OR (S+1,S)→(D+1,D)169 DORP170 WXOR (D) XOR (S)→(D)异或171 WXORP172 WXOR (S1) XOR (S2)→(D)173 WXORP174 DXOR (D+1,D) XOR (S+1,S)→(D+1,D)175 DXORP176 WXNR (D) XOR (S)→(D)177 WXNRP178 WXNR (S1) XOR (S2)→(D)179 WXNRP180 DXNR (D+1,D) XOR (S+1,S)→(D+1,D)181 DXNRP182 NEG 0-(D)→(D)补码183 NEGP2 旋转指令184 ROR n位右转185 RORP186 RCR n位右转(带进位)187 RCRP188 ROL n位左转189 ROLP190 RCL n位左转(带进位)191 RCLP192 DROR n位右转193 DRORP194 DRCR n位右转(带进位)195 DRCRP196 DROL n位左转197 DROLP198 DRCL n位左转(带进位)199 DRCLP3 移位指令200 SFR n位右移201 SFRP202 SFL n位左移203 SFLP204 BSFR 1位右移205 BSFRP206 BSFL 1位左移207 BSFLP208 DSFR 1位右移209 DSFRP210 DSFL 1位左移211 DSFLP4 数据处理指令212 SER 数据搜索213 SERP214 SUM 位检查215 SUMP216 DSUM217 DSUMP218 DECO 译码编码219 DECOP220 ENCO221 ENCOP222 SEG 7段编码223 BSET 对字中n位置位224 BSETP225 BRST 对字中n位复位226 BRSTP227 DIS 组合分离228 DISP229 UNI230 UNIP231 ASC ASCII转化5 先进先出指令232 FIFW FIFO写233 FIFWP234 FIFR FIFO读235 FIFRP6 内存缓冲区存取指令236 FROM 从特殊功能模块读取数据237 FROMP238 DFRO239 DFROP240 TO 向特殊功能模块写数据241 TOP242 DTO243 FROM 从远程I/O站读数据244 FROMP245 DFRO246 DFROP247 TO 向远程站写数据248 TOP249 DTO250 DTOP7 FOR/NEXT指令251 FOR 重复n次252 NEXT8 本地站、远程I/O站存取指令253 LRDP 从本地站读数据254 LWTP 向本地站写数据255 RFRP 从远程特殊功能模块读数据256 RTOP 向远程特殊功能模块写数据9 显示指令257 PR 从指定的8点字软元件输出16个字符的ASCII码258 PR 顺序向输出模块输出ASCII码, 直到结束符NUL(00H)259 PRC 将字软元件的注释转换成ASCII码,并输出260 LED 将指定的8点字软元件显示16个字符的ASCII码261 LEDA 显示指定的英文数字字符262 LEDB263 LEDC 显示软元件S的注释264 LEDR 显示复位10 其它指令265 WDT WDT复位266 WDTP267 CHK 故障检测268 SLT 按参数设定的条件,数据被锁定269 SLTR 状态锁存复位,且执行SLT270 STRA 按参数设定的条件,采样数据存入271 STRAR 采样跟踪复位,且允许执行272 STC 进位标志(M9012)ON 273 CLC 进位标志(M9012)OFF 274 DUTY 用户定义时钟11 伺服指令275 DSFRP 请求启动伺服程序276 PSFLP 数据修改特殊继电器和特殊寄存器一特殊继电器M清单M9000 熔丝断M9002 I/O组件校验出错M9004 MINI网通讯出错M9005 AC电源掉电检测M9006 电池电压低M9007 电池电压低锁存M9008 自诊断出错M9009 信号报警器检测M9010 运算出错标志M9011 运算出错标志锁存M9012 进位标志M9016 数据存储区清零标志M9017 数据存储区清零标志M9018 数据通讯监控切换M9020 0号用户定时时钟M9021 1号用户定时时钟M9022 2号用户定时时钟M9023 3号用户定时时钟M9024 4号用户定时时钟M9025 时钟数据设置请求M9026 时钟数据出错M9027 时钟数据显示M9028 时钟数据读请求M9030 0.1秒时钟M9031 0.2秒时钟M9032 1秒时钟M9033 2秒时钟M9034 1分钟时钟M9036 常开M9037 常闭M9038 RUN后第一个扫描周期ONM9039 运行标志M9040 暂停PAUSE允许线圈M9041 PAUSE状态触点M9042 停止状态触点M9043 采样跟踪完成M9044 采样跟踪M9046 采样跟踪M9047 采样跟踪准备M9048 RUN LED闪烁标志M9049 切换输出字符数目M9050 存放操作结果的存储区交换触点M9051 CHG指令执行禁止M9052 SEG指令切换M9053 EI/DI指令切换M9054 单步运行标志M9055 状态锁存完成标志M9056 主程序P, I设置请求M9057 副程序P, I设置程序M9060 副程序2P, I设置程序M9061 副程序3P, I设置程序M9060 远程终端出错M9061 通讯出错M9065 分离传送状态M9066 传送处理切换M9067 I/O组件出错检测M9068 测试模式M9069 线路故障时的输出M9073 WDT出错标志M9074 PCPU准备完成标志M9075 测试模式标志M9076 外部急停输入标志M9077 手动脉冲发生器轴设置错误标志M9078 测试模式请求出错标志M9079 伺复程序设置出错标志M9081 对远程模块的通讯请求M9082 最终站数不一致M9084 出错检测M9086 运行标志BASIC程序M9087 暂停(PAUSE)标志M9091 操作运行出错细节标志M9091 微机子程序调用出错标志M9092 双电源模块过热M9093 双工电源模块出错M9094 I/O改变标志M9095 双工运行校验出错M9096 A3VCPU A自校出错M9097 A3VCPU B自校出错M9098 A3VCPU C自校出错M9099 A3VTU自校出错M9100 SFC程序登记M9101 SFC程序起/停M9102 SFC启动状态M9103 连续步转移有效/失效M9104 连续转移防止标志M9108 步转移监控定时器起始(对应D9108)M9109 步转移监控定时器起始(对应D9109)M9110 步转移监控定时器起始(对应D9110) M9111 步转移监控定时器起始(对应D9111)M9112 步转移监控定时器起始(对应D9112)M9113 步转移监控定时器起始(对应D9113)M9114 步转移监控定时器起始(对应D9114)M9180 激活步采样跟踪完成标志M9181 激活步采样跟踪执行标志M9182 激活步采样跟踪有效M9196 在块停止时控制输出M9197~9198 保险丝熔断,I/O校核出错显示切换二特殊寄存器D9000 保险丝断D9001 保险丝断D9002 I/O组件校验出错D9003 SUM指令检测位数D9004 MINI网主通讯组件出错D9005 AC掉电计数D9006 电池不足D9008 自诊断出错D9009 信号报警器检测D9010 出错步D9011 出错步D9014 I/O控制模式D9015 CPU运行状态D9016 ROM/RAM设置D9017 最小扫描时间D9018 当前扫描时间D9019 最大扫描时间D9020 恒定扫描D9021 扫描时间D9022 1秒计数器D9025 时钟数据(年,月)D9026 时钟数据(日,时)D9027 时钟数据(分,秒)D9028 时钟数据(星期)D9021~D9034 远程终端组件参数设置D9035 远程I/O组件的通讯属性D9035 扩展文件寄存器D9036 总的站数D9036~9037 供指定扩展文件寄存器软件地址D9038~9039 LED显示优先级D9044 采样跟踪D9050 SFC程序出错代码D9051 出错块D9052 出错步D9053 转移出错D9054 出错顺控步D9055 状态锁存步序号D9061 通讯出错代码D9072 PC通讯检测D9081 对远程终端模块的已执行的通讯请求数D9082 最后的站号D9090 微机子程序输入数据区首软元件号D9091 指令出错D9094 待更换的I/O组件的首地址D9095 A3VTS系统和A3VCPU的运行状态D9096 A3VCPU A自检出错D9097 A3VCPU B自检出错D9098 A3VCPU C自检出错D9099 A3VTU 自检测出错D9100~D9107 断保险丝的组件D9100 保险丝熔断的组件D9108~D9114 步转移监控定时器设置D9116~D9123 I/O组件校验出错D9124 信号器报警数量检测D9125~D9132 信号报警器地址号D9133~D9140 远程终端卡信息D9141~D9172 通讯重发次数D9173 模式设置D9174 设置重发次数D9175 线缆出错模块出错代码D9180~9193远程终端模块出错代码D9180 轴1和轴2的限位开关输出状态存储区D9181 轴3和轴4的限位开关输出状态存储区D9182 轴5和轴6的限位开关输出状态存储区D9183 轴7和轴8的限位开关输出状态存储区D9184 CPU出错的原因D9185 伺服放大器接线数据D9187 手动脉冲发生器轴设置出错D9188 在TEST模式下启动轴号请求出错D9189 出错程序号D9190 数据设置出错D9191 伺服放大器类型D9196~9199 故障站检测D9200 LRDP处理结果D9201 LWTP处理结果D9204 通讯状态D9205 执行回送的站D9206 执行回送的站D9207 通讯扫描时间(最大值)D9208 通讯扫描时间(最小值)D9209 通讯扫描时间(当前值)D9210 重发次数D9211 环路切换计数D9212 就地站运行状态(1~16)D9213 就地站运行状态(17~32)D9214 就地站运行状态(33~48)D9215 就地站运行状态(49~64)D9216 就地站出错检测(1~16)D9217 就地站出错检测(17~32)D9218 就地站出错检测(33~48)D9219 就地站出错检测(49~64)D9220 就地站参数不匹配或(1~16)远程站I/O分配出错D9221 就地站参数不匹配或(17~32)远程站I/O分配出错D9222 就地站参数不匹配或(33~48)远程站I/O分配出错D9223 就地站参数不匹配或(49~64)远程站I/O分配出错D9224 主站与从站和远程I/O站之间的初始通讯(1~16)D9225 主站与从站和远程I/O站之间的初始通讯(17~32)D9226 主站与从站和远程I/O站之间的初始通讯(33~48)D9227 主站与从站和远程I/O站之间的初始通讯(49~64)D9228 就地站或远程I/O站出错(1~16)D9229 就地站或远程I/O站出错(17~32)D9230 就地站或远程I/O站出错(33~48)D9231 就地站或远程I/O站出错(49~64)D9232 就地站或远程I/O站环路出错D9233 就地站或远程I/O站环路出错D9234 就地站或远程I/O站环路出错D9235 就地站或远程I/O站环路出错D9236 就地站或远程I/O站环路出错D9237 就地站或远程I/O站环路出错D9238 就地站或远程I/O站环路出错D9239 就地站或远程I/O站环路出错D9240 检测到接收出错的次数D9243 本站站号检测D9244 从站的总数D9245 检测到的接收出错次数D9248 就地站运行状态D9249 就地站运行状态D9250 就地站运行状态D9251 就地站运行状态D9252 就地站出错检测D9253 就地站出错检测D9254 就地站出错检测D9255 就地站出错检测各种软元件一览表项目A1,A1NA1S A2,A2NA2C A2-S1A2N-S1 A3,A3NA3A A2U,A3UA4UI/O软元件点256 512 1024 2048 8192输入继电器X 0~FF 0~1FF 0~3FF 0~7FF0~FFF输出继电器Y 0~FF 0~1FF 0~3FF 0~7FF0~FFF辅助继电器内部继电器(1000点)M0~M999 M0~M999, M2048~8191特殊继电器(256点)M9000~M9255锁存继电器(1048点)L1000~L2048通讯用继电器(2048点)B0~B3FF B0~BFFF定时器100ms定时器(200点)T0~T19910ms定时器(56点)T200~T255100ms记忆定时器(0点)计数器(256点)C0~C255寄存器数据寄存器(1024点)D0~D1023 D0~D6143特殊寄存器(256点)D9000~D9255通讯寄存器(1024点)W0~W3FF W0~WFFF累加器(2点)A0,A1变址寄存器(2点)Z, V Z,Z1~Z6(7点), V,V1~V6(7点)嵌套(8点)N0~ N7指针(256点)P0~P255中断指针(32点)I0~I31常数十进制K (16位)-32768~+32767(32位)-2147483648 ~+2147483647十六进制H (16位)0~FFFF(32位)0~FFFFFFFF分类指令助记符功能说明对应不同型号的PLCFX0S FX0N FX1S FX1N FX2NFX2NC程序流程00 CJ 条件跳转 P P P P P01 CALL 子程序调用Î Î P P P02 SRET 子程序返回Î Î P P P03 IRET 中断返回 P P P P P04 EI 开中断 P P P P P05 DI 关中断 P P P P P06 FEND 主程序结束 P P P P P07 WDT 监视定时器刷新 P P P P P08 FOR 循环的起点与次数 P P P P P09 NEXT 循环的终点 P P P P P传送与比较10 CMP 比较 P P P P P11 ZCP 区间比较 P P P P P12 MOV 传送 P P P P P13 SMOV 位传送Î Î Î Î P14 CML 取反传送Î Î Î Î P15 BMOV 成批传送Î P P P P16 FMOV 多点传送Î Î Î Î P17 XCH 交换Î Î Î Î P18 BCD 二进制转换成BCD码 P P P PP19 BIN BCD码转换成二进制 P P P PP 算术与逻辑运算20 ADD 二进制加法运算 P P P P P21 SUB 二进制减法运算 P P P P P22 MUL 二进制乘法运算 P P P P P23 DIV 二进制除法运算 P P P P P24 INC 二进制加1运算 P P P P P25 DEC 二进制减1运算 P P P P P26 WAND 字逻辑与 P P P P P27 WOR 字逻辑或 P P P P P28 WXOR 字逻辑异或 P P P P P29 NEG 求二进制补码Î Î Î Î P循环与移位30 ROR 循环右移Î Î Î Î P31 ROL 循环左移Î Î Î Î P32 RCR 带进位右移Î Î Î Î P33 RCL 带进位左移Î Î Î Î P34 SFTR 位右移 P P P P P35 SFTL 位左移 P P P P P36 WSFR 字右移Î Î Î Î P37 WSFL 字左移Î Î Î Î P38 SFWR FIFO(先入先出)写入Î Î P PP39 SFRD FIFO(先入先出)读出Î Î P PP数据处理40 ZRST 区间复位 P P P P P41 DECO 解码 P P P P P42 ENCO 编码 P P P P P43 SUM 统计ON位数Î Î Î Î P44 BON 查询位某状态Î Î Î Î P45 MEAN 求平均值Î Î Î Î P46 ANS 报警器置位Î Î Î Î P47 ANR 报警器复位Î Î Î Î P48 SQR 求平方根Î Î Î Î P49 FLT 整数与浮点数转换Î Î Î Î P高速处理50 REF 输入输出刷新 P P P P P51 REFF 输入滤波时间调整Î Î Î Î P52 MTR 矩阵输入Î Î P P P53 HSCS 比较置位(高速计数用)Î PP P P54 HSCR 比较复位(高速计数用)Î PP P P55 HSZ 区间比较(高速计数用)Î ÎÎ Î P56 SPD 脉冲密度Î Î P P P57 PLSY 指定频率脉冲输出 P P P P P58 PWM 脉宽调制输出 P P P P P59 PLSR 带加减速脉冲输出Î Î P P P方便指令60 IST 状态初始化 P P P P P61 SER 数据查找Î Î Î Î P62 ABSD 凸轮控制(绝对式)Î Î P PP63 INCD 凸轮控制(增量式)Î Î P PP64 TTMR 示教定时器Î Î Î Î P65 STMR 非凡定时器Î Î Î Î P66 ALT 交替输出 P P P P P67 RAMP 斜波信号 P P P P P68 ROTC 旋转工作台控制Î Î Î Î P69 SORT 列表数据排序Î Î Î Î P外部设备70 TKY 10键输入Î Î Î Î P71 HKY 16键输入Î Î Î Î P72 DSW BCD数字开关输入Î Î P P P73 SEGD 七段码译码Î Î Î Î P74 SEGL 七段码分时显示Î Î P P P75 ARWS 方向开关Î Î Î Î P76 ASC ASCI码转换Î Î Î Î P77 PR ASCI码打印输出Î Î Î Î P78 FROM BFM读出Î P Î P P79 TO BFM写入Î P Î P P外围设备80 RS 串行数据传送Î P P P P81 PRUN 八进制位传送(#) Î Î P P P82 ASCI 16进制数转换成ASCI码Î PP P P 83 HEX ASCI码转换成16进制数Î P PP P84 CCD 校验Î P P P P85 VRRD 电位器变量输入Î Î P P P86 VRSC 电位器变量区间Î Î P P P87 - -88 PID PID运算Î Î P P P89 - -浮点数运算110 ECMP 二进制浮点数比较Î Î Î ÎP111 EZCP 二进制浮点数区间比较Î ÎÎ Î P118 EBCD 二进制浮点数→十进制浮点数Î Î Î Î P119 EBIN 十进制浮点数→二进制浮点数Î Î Î Î P120 EADD 二进制浮点数加法Î Î Î ÎP121 EUSB 二进制浮点数减法Î Î Î ÎP122 EMUL 二进制浮点数乘法Î Î Î ÎP123 EDIV 二进制浮点数除法Î Î Î ÎP127 ESQR 二进制浮点数开平方Î Î ÎÎ P129 INT 二进制浮点数→二进制整数Î Î Î Î P130 SIN 二进制浮点数Sin运算Î Î ÎÎ P131 COS 二进制浮点数Cos运算Î Î ÎÎ P132 TAN 二进制浮点数Tan运算Î Î ÎÎ P147 SWAP 高低字节交换Î Î Î Î P定位155 ABS ABS当前值读取Î Î P P Î156 ZRN 原点回归Î Î P P Î157 PLSY 可变速的脉冲输出Î Î P PÎ158 DRVI 相对位置控制Î Î P P Î159 DRVA 绝对位置控制Î Î P P Î时钟运算160 TCMP 时钟数据比较Î Î P P P161 TZCP 时钟数据区间比较Î Î P PP162 TADD 时钟数据加法Î Î P P P163 TSUB 时钟数据减法Î Î P P P166 TRD 时钟数据读出Î Î P P P167 TWR 时钟数据写入Î Î P P P169 HOUR 计时仪Î Î P P外围设备170 GRY 二进制数→格雷码Î Î Î Î P171 GBIN 格雷码→二进制数Î176 RD3A 模拟量模块(FX0N-3A)读出ÎP Î P Î177 WR3A 模拟量模块(FX0N-3A)写入Î P Î P Î触点比较224 LD= (S1)= (S2)时起始触点接通Î Î P P P225 LD> (S1)> (S2)时起始触点接通Î Î P P P226 LD< (S1)< (S2)时起始触点接通Î Î P P P228 LD<> (S1)<> (S2)时起始触点接通Î Î P P P229 LD≦ (S1)≦ (S2)时起始触点接通Î Î P P P230 LD≧ (S1)≧ (S2)时起始触点接通Î Î P P P232 AND= (S1)= (S2)时串联触点接通Î Î P P P233 AND> (S1)> (S2)时串联触点接通Î Î P P P234 AND< (S1)< (S2)时串联触点接通Î Î P P P236 AND<> (S1)<> (S2)时串联触点接通Î Î P P P237 AND≦ (S1)≦ (S2)时串联触点接通Î Î P P P238 AND≧ (S1)≧ (S2)时串联触点接通Î Î P P P240 OR= (S1)= (S2)时并联触点接通Î Î P P P241 OR> (S1)> (S2)时并联触点接通Î Î P P P242 OR< (S1)< (S2)时并联触点接通Î Î P P P244 OR<> (S1)<> (S2)时并联触点接通Î Î P P P245 OR≦ (S1)≦ (S2)时并联触点接通Î Î P P P246 OR≧ (S1)≧ (S2)时并联触点接通Î Î P P P。
PLC教程理论篇之PLC 的位移与步进指令及其应用一一、移位指令简介移位指令用于字或多个位(BIT)字中二进制位依次顺序左移或右移。
有多种多样的移位指令:简单左移:执行一次本指令移一次位。
移位时用0移入最低位。
原最低位的内容,移入次低位……依次类推,最高位的内容移出,或移入进位位(而原进位位的内容丢失)。
有的PLC可设为,每次可移多个位。
简单右移:与左移不同的只是它为右移,先把进位位的内容移入字的最高位,原最高位的内容移入次高位……依次类推,原最低位的内容丢失,或移入进位位(而原进位位的内容丢失)。
有的PLC可设为,每次可移多个位。
循环左移:它与简单左移不同的只是它的进位位的内容不丢失,要传给00位,以实现循环。
循环右移:与循环左移不同的是00的内容不丢失,传给进位位,原进位的值传给第15 位,以实现循环右移。
还有可设定输入值的移位,如左移,不是都用0输入给最低位,而是可设定这个输入的值。
还有可逆移位指令,由用控制字,控制左还是右移,并可实现多字移位。
除了二进制的位(bit)移位,还有数位(digit)移位,可左移,也可右移SRD。
移位的对象可以多个字。
还有字移位,以字为单位的移,执行一次本指令移一个字。
移时0000移入起始地址(最小地址),起始地址的原内容移入相邻的较高地址,……最高地址(结束地址)的内容丢失。
多次执行本指令,可对从起始到结束地址的内容清零。
等等。
图8-1示的为三家PLC左移指令梯形图符号。
图a中St是移位开始通道,Ed是移位终了通道,P是移位脉冲输入,R是复位输入,S 是移位信号输入。
当P从OFF到ON时,而R又为OFF,则从St到Ed间的各个位(BIT),依次左移一位,并把S的值(OFF或ON)赋值给St的最低(00)位,Ed的最高(15)位溢出;但如R复位输入ON,移位禁止,并St到Ed各通道清零。
图b中SHL之后加DW为双字,即4个字节移位,EN为此指令执行条件。
其输入为ON,才能执行本指令,否则,不执行。
IN是进行移位的双字,OUT是移位结果输出的双字,N是每执行一次本指令将移位的位(BIT)数。
每次移位时,除了移位双字各位值相应左移,并用0填入移入的位。
图c中S是移位源,D是移位的输出,n1为指定源及输出位(BIT)数。
n2是指定执行一次本指令将移位的位(BIT)数。
本指令的输入为ON,才能执行本指令,否则,不执行。
每次移位时,除了移位指定的各位值相应左移,并用移位源的值填入移入的位。
图8-2示的为使用PLC左移指令梯形图程序。
本程序的功能是,当0.02、I0.2及X002 OFF时,而0.01、I0.1及X001从OFF到ON,则使输出(从10通道开始到11通道、QD04双字及从Y000到Y37共32个位)左移一位。
对图b、c,为了能把I0.0及X000的值赋值给这里的“输入位”,即Q3.00及Y000,以及能对移位用的双字、或各个位清零,这里增加了两组指令。
目的是使其也具有图a的功能。
提示:西门子数据存贮格式(顺序)与OMTRON、三菱不同,是高字节存低位数,低字节存高位数。
故上述输入位用QB3.0,而不像OMRON用10.00,也不像三菱用Y000。
西门子PLC 字节间的移位,以图8-2 b为例,是:Q 3.7移给Q2.0;Q 2.7移给Q1.0;Q 1.7移给Q0.0。
各字节中的移位,则也是从低位到高位移,即Q0.6移给Q0.7,Q0.5移给Q0.6,等等。
三菱PLC的移位,以图8-2c为例,是:Y0.7移给Y1.0;Y 1.7移给Y2.0;Q 2.7移给Y3.0。
各8位中的移位,则也是从低位到高位移,即Y0.6移给Y0.7,Y0.5移给Y0.6,等等。
OMRON PLC的移位,以图8-2a为例,是:10.15移给11.00。
各字中的移位,则也是从低位到高位移,即10.06移给10.07,10.05移给10.06,等等。
二、移位指令应用移位指令是很有用的。
不仅在数据处理时,要用到它,而且在逻辑量控制时,也常用到它。
当然,以上讲的也还不是移位指令的全部,也不是所有PLC都有以上讲的这些移位指令。
具体使用此类指令,也可能还有一些细节,故使用时可参阅有关帮助。
1.广告灯程序图8-3示的为广告灯程序。
它每经一秒,使用输出通道10、QW0及Y000到Y017控制的16个广告灯,先是逐一点亮。
全亮后,又逐一变灭。
并周而复始重复着。
图a为OMRON PLC程序。
图中10是移位开始通道,10也是移位终了通道,10.15的“非”是移位输入,P-OFF是复位输入(即永远不复位),P_1S是移位脉冲信号输入。
即每隔1秒,则通道10的各个位(BIT),依次左移一位,并把10.15的“非”的值赋值给10.00。
可知,当10.15为0时,移入的都是1,可使灯逐步亮。
但当10.15为1后,即全亮后,则移入的都是0,可使灯逐步灭。
而到了全灭后,又将从头开始。
图b为西门子PLC程序。
图中SHL之后加W为字移位,即2个字节移位,EN的输入为SM0.5(为秒脉冲)加微分处理P。
这可做到每隔1秒可使QW0执行一次移位。
N为1,故每次移移1位。
每次移位时,用0填入移入的位,即使Q1.0置0。
故本程序,在使用移位指令后,还执行两组指令,把M0.0赋值给Q1.0,Q0.7赋值给M0.0。
目的是,当Q1.0为0时,移入的都是1,可使灯逐步亮。
而当Q1.0为1后,即全亮后,则移入的都是0,可使灯逐步灭。
而到了全灭后,又将从头开始。
图c中Y000是移位源,Y000到Y017是移位的输出,n1为16,指定源及输出位(BIT)数为16。
n2为1,指定执行一次本指令将移位的位(BIT)数为1位。
本指令的输入为M8013 秒脉冲信号,并为微分执行,即每隔1秒执行一次本指令。
故本程序,在使用移位指令后,还执行两组指令,把M0.0的“非”赋值给Y000,Y017赋值给M0。
目的是,当Y017为0 时,移入的都是1,可使灯逐步亮。
而当Y017为1后,即全亮后,则移入的都是0,可使灯逐步灭。
而到了全灭后,又将从头开始。
2.移位步进图8-4为“移位步进“梯形图程序,操作数也是用符号地址。
三种PLC都是用左移位指令实现。
图a用SFT,图b用SHL-W,图c用SFTLP。
从图知,此程序由四个梯级组成。
对图a:有4个梯级。
第一梯级,用以产生“移位脉冲”信号。
第二梯级,在程序初始化及步进完成时(这里设了4步,如需要,可增多),把0传给“移位通道”。
P-First-Cycle为特殊继电器,在PLC运行时ON一个扫描周期。
第三梯级,用以产生“移位通道等零”信号。
在“移位通道”字的内容为零时,“移位通道等零”为1。
第四梯级,用以实现移位步进。
这里的复位信号为“p_off”(常OFF),故只要“移位脉冲”从0转到1,则把“移位通道等零”的状态(0,或1)移入“移位通道”的第0位,而原“移位通道”的第0位状态,移给“移位通道”的第1位...依次移位,直到“移位通道“的第15位溢出。
它与第三梯级配合将是,当“移位通道“为0时,“移位脉冲”从0转到1,向“移位通道”移入1;而当“移位通道”移入1后,移入0;直到复位。
这里,只要把“移位通道”0位对应于“步1”,1位对应于“步2”...则这个移位过程,也就是步进过程。
对图b:也有4个梯级。
第一梯级,也用以产生“移位脉冲”信号。
但它由指令P产生。
第二梯级,在程序初始化及步进完成时(这里设了4步,如需要,可增多),把0传给VW0,即“移位通道”。
这里,SM0.1为特殊继电器,在PLC运行时ON一个扫描周期。
第三梯级,用以实现移位步进。
每有一个“移位脉冲”,则把0移入“移位通道”,即VW0中的VB1的第0位,而原VB1的第0位状态,移给VB1的第1位...而原VB1的第7位状态,移给VW0中的VB0的第0位,原VB0的第0位状态,移给VB0的第1位...依次移位,直到VB0的第7位溢出。
第四梯级,用以产生第一步工作信号。
在“移位通道”字的内容为零时,使VW0,即“移位通道”为1,产生第一步输出。
这里,只要把VB1的0位对应于“步1”,1位对应于“步2”...VB0的0位对应于“步8”,1位对应于“步9”...则这个移位过程,也就是步进过程。
对图c:有5个梯级。
第一梯级,也用以产生“移位脉冲”信号。
方法同图a。
第二梯级,在程序初始化及步进完成时(这里设了4步,如需要,可增多),把0传给K1M11,即移位用的M11、M12、M13及M14组成的各个位。
这里,M8002为PLC运行时ON一个扫描周期。
第三、四梯级,用以产生第一步工作信号。
当M11到M14间的内容为0时,将使“移位值”置1。
为使“开始”产生的“移位脉冲”时,把为1的“移位值”,移入M11,以产生第一步输出。
第五梯级,用以实现移位步进。
每有一个“移位脉冲”,则把“移位值”移入M11,而M11位状态,移给M12...而原M14状态溢出。
这里,只要把M11对应于“步1”,M12位对应于“步2”...则这个移位过程,也就是步进过程。
图中还有“自动工作”控制。
它ON 时,将实现自动工作,即完成最后一步时,会产生“移位脉冲”,起动第一步。
提示:西门子PLC 数据存贮器V,可按位使用。
故图b用VW0作“移位通道”。
只是,它的最低位是V1.0,而不是V0.0,最高位是V0.7,而不是V1.7。