S7-200PLC指令系统指令分类——按形式分2.功能块1.继电器触点线圈——()Enable输入参数IN1IN2N输出参数OUT功能数据类型地址条件长度EN指令分类——按功能分1。位操作功能2。定时器3。计数器4。算术运算功能(整数与浮点数)5。关系运算功能6。数据传送功能7。转换功能8。控制功能一、位逻辑指令逻辑关系梯形图助记符I0.0I0.1LDI0.0AI0.1=Q0.0LDI0.0OI0.1=Q0.0LDNI0.1=Q0.0与或非ANDORNOT当I0.0与I0.1都“ON”时,则输出Q0.0“ON”(1)。当I0.0或I0.0“ON”时,则输出Q0.0“ON”(1)当I0.1“OFF”时则输出Q0.0“ON”(1)Q0.0I0.0I0.1Q0.0Q0.0I0.1注意:与、或、非运算均是对从该指令前面的指令到该指令的前一个指令处的结果进行运算。AI0.2是与图中A点处的结果(即I0.0与I0.1的结果)相或,而不是与I0.1相或。I0.0I0.2I0.1LDI0.0AI0.1OI0.2=Q0.0例:Q0.0常开触点与常闭触点的用法1.常开触点读输入映象寄存器的值,在右接线图中,按钮未动时I0.0=1,I0.1=02.常闭触点读输入映象寄存器的非值,在右接线图中,按钮未动时I0.0=0,I0.1=11LQ0.0Q0.1Q0.2Q0.31MI0.0I0.1I0.2I0.3KMFRSB1SB2I0.0I0.0I0.1I0.1Q0.0I0.0Q0.0I0.0Q0.0I0.0I0.1Q0.0例1:直接启动停车控制继电器控制电路图I/O分配:I0.0:停车I0.1:启动Q0.1:KM梯形图:语句表LDI0.1OQ0.1AI0.0=Q0.11LQ0.0Q0.1Q0.2Q0.31MI0.0I0.1I0.2I0.3KMFRSB1SB2L3KMM3~L1L2FRQS3PEKMKMSB2SB1FRFU2FU1停止优先Q0.1I0.0Q0.1I0.1启动优先I/O分配决定PLC的端子接线图PLC的端子接线方式又决定编程语言1LQ0.0Q0.1Q0.2Q0.31MI0.0I0.1I0.2I0.3KMFRSB1SB2I/O分配:I0.0:停车I0.1:启动Q0.1:KMQ0.1I0.0Q0.1I0.1Q0.1I0.0Q0.1I0.11LQ0.0Q0.1Q0.2Q0.31MI0.0I0.1I0.2I0.3KMFRSB1SB2置位、复位指令I0.0Q0.1S1I0.1Q0.11RI0.0Q0.1I0.0Q0.1I0.0Q0.1I0.1ExampleNETWORK1LDI0.0=Q0.0SQ0.1,1RQ0.2,2一个扫描周期输出映象寄存器Q1.1执行指令执行指令一个扫描周期输入映象寄存器I2.1输入端子I2.1立即I/O指令—立即输入I2.1Q1.2I2.3Q1.1II直接读取物理输入点的值,输入映象寄存器内容不更新。指令操作数仅限于输入物理点的值。一个扫描周期输出映象寄存器Q1.1执行指令执行指令一个扫描周期输入映象寄存器I2.1输入端子I2.1LDII2.1=Q1.1LDNII2.3=Q1.2立即I/O指令—立即输出执行立即输出指令时,则将结果同时立即复制到物理输出点和相应的输出映象寄存器I2.1Q1.2I2.3Q1.1III一个扫描周期输出映象寄存器Q1.1执行指令执行指令一个扫描周期输入映象寄存器I2.1输入端子I2.1输出端子Q1.1输入端子I2.3输出映象存器Q1.2输出端子Q1.2立即I/O指令—立即置位和复位指令I0.1I0.22Q2.0Q2.0SIRI2注意:立即I/O指令是直接访问物理输入输出点的,比一般指令访问输入输出映象寄存器占用CPU时间要长,因而不能盲目地使用立即指令,否则,会加长扫描周期时间,反而对系统造成不利影响。LDI0.1SIQ2.0,2LDI0.2RIQ2.0,2空操作正跳变负跳变能流到达取非触点时,能流就停止;能流未到达取非触点时,能流就通过。检测到每一次正跳变(信号后,让能流通过一个扫描周期的时间检测到每一次负跳变信号后,让能流通过一个扫描周期的时间取非NOTPNI0.0I0.1()NOTI0.0()NI0.0()PQ0.0Q0.1Q0.2输入映象寄存器I0.0输出映象寄存器Q0.0输出映象寄存器Q0.1输出映象寄存器Q0.2一个周期一个周期空操作指令(NOPN)不影响程序的执行。操作数N是常数0~255()NOPNExampleNETWORK1LDI0.0AI0.1=Q0.0NETWORK2LDI0.0NOT=Q0.1NETWORK3LDI0.1ED=Q0.2Example:抢答器设计1LQ0.0Q0.1Q0.2Q0.31MI0.0I0.1I0.2I0.3KM2SB1SB2KM3KM1复位SB3SB4限流电阻KM4I0.4SB5Q0.1Q0.2M0.0Q0.0Q0.0I0.0Example:抢答器设计Q0.0Q0.2M0.0Q0.1Q0.1I0.1LDI0.0OQ0.0ANQ0.1ANQ0.2AM0.0=Q0.0LDI0.1OQ0.1ANQ0.0ANQ0.2ANM0.0=Q0.1I0.3M0.0M0.0I0.4LDI0.4OM0.0AI0.3=M0.0LDI0.1OQ0.1ANQ0.0ANQ0.2AM0.0=Q0.1T38TONPTIN300Example:抢答器设计Q0.3T38LDT38=Q0.3I0.3M0.0M0.0I0.4LDI0.4OM0.0AI0.3=M0.0TONT38,+300LDI0.2OQ0.2ANQ0.0ANQ0.1AM0.0=Q0.2Q0.0Q0.1M0.0Q0.2Q0.2I0.2T38TONPTIN300逻辑堆栈指令•逻辑堆栈指令只用于语句表(STL)编程,在使用LAD和FBD编程时,LAD和FBD编辑器会自动插入相关的指令来处理堆栈操作.•堆栈指令包括六条指令:–ALD栈装载”与”–OLD栈装载”或”–LPS逻辑入栈–LRD逻辑读栈–LPP逻辑出栈–LDS装入堆栈逻辑关系梯形图助记符LDI0.0OI0.1LDI0.2OI0.3ALD=Q0.0LDI0.0AI0.1LDI0.2ANI0.3OLD=Q0.0当“I0.0或I0.1”与“I0.2或I0.3”都“ON”时,则输出Q0.0“ON”。区块与ALD(AndStack)区块或OLD(OrStack)当“I0.0与I0.1”或“I0.2与I0.3非”“ON”时,则输出Q0.0“ON”。I0.0I0.1I0.2I0.3Q0.0I0.0I0.2I0.1I0.3Q0.0逻辑关系梯形图助记符LDI0.0LPSLDI0.1OI0.2ALD=Q0.0LRDLDI0.3OI0.4ALD=Q0.2LPPLDI0.5ONI0.6ALD=Q0.3将中间有用值压入堆栈逻辑入栈LPS(LogicPush)逻辑读栈LRD(LogicRead)读出先前存入的值I0.0I0.1I0.2Q0.3I0.3I0.4I0.5I0.6Q0.0逻辑出栈LPP(LogicPop)将压入堆栈的中间有用值弹出堆栈Q0.2LDI0.0OT40LPSLDI0.1OI0.2AC40ALD=Q0.0LRDLDI0.3AI0.4ALD=Q0.1LPPLDI0.5ANI0.6ALD=Q0.2Q0.2Q0.0Q0.1LogicOperationLADSTLLPSLRDLPPLDI0.0OT40LPSLDI0.1OI0.2ALDAC40=Q0.0LRDAI0.3AI0.4=Q0.1LPPAI0.5ANI0.6=Q0.2LDI0.0OT40LPSLDI0.1OI0.2ALD=Q0.0LRDLDI0.3OI0.4ALD=Q0.2LPPLDI0.5ONI0.6ALD=Q0.3I0.0I0.1I0.2Q0.3I0.3I0.4I0.5I0.6Q0.0Q0.2LogicOperationLADSTLLPSLRDLPPT40LDI0.0OT40LPSLDI0.1OI0.2ALD=Q0.0LRDLDI0.3OI0.4ALD=Q0.2LPPLDI0.5ONI0.6ALD=Q0.3LDI0.0OT40=M0.0LDI0.1OI0.2AM0.0=Q0.0LDI0.3OI0.4AM0.0=Q0.2LDI0.5ONI0.6AM0.0=Q0.3Better!!!逻辑关系梯形图助记符LDI0.0LDI0.1NOTAQ0.0OLD=Q0.0LDI0.0LDI0.1NOTLPSAQ0.1=Q0.1LPPALDOQ0.1=Q0.1当置位指令和复位指令都为“1”时,输出为“1”置位优先SRI0.0I0.1Q0.1I0.0I0.1Q0.0S1OUTSRRSOUTRSR1复位优先RS当置位指令和复位指令都为“1”时,输出为“0”时序图I0.0I0.1Q0.1I0.0I0.1Q0.0S1OUTSRRSOUTRSR1编程中应注意的几个问题I0.0Q0.0I0.1Q0.0I0.1Q0.0I0.0Q0.01、用电路变换简化程序(减少指令的条数)LDI0.0LDI0.1OQ0.0ALD=Q0.0LDI0.1OQ0.0AI0.1=Q0.02、逻辑关系应尽量清楚(避免左轻右重)I0.3LDI0.2ANI0.3AI0.4LDI0.2AI0.5ANI0.6AI0.7LDI0.2AI0.5ANI0.6AI1.0ANI1.1OLD=Q0.0ENDI0.2I0.5I0.4I0.6I1.0I0.7Q0.0I1.1I0.3I0.2I0.5I0.4I0.6I1.0I0.7Q0.0I1.1I0.5I0.6I0.2I0.23、避免出现无法编程的梯形图I0.5I0.1I0.3I0.2Q0.1I0.4Q0.2LDI0.3AI0.5OI0.1AI0.2=Q0.1LDI0.1AI0.5OI0.3AI0.4=Q0.2ENDI0.3I0.2Q0.1I0.5I0.1I0.3I0.1I0.4Q0.2I0.5例子:小车自动往返控制要求:当左行或右行按钮接通时,小车在限位开关I0.1和I0.0之间自动往返运动,当按停止按钮I0.2时立即停止。I0.0Q0.0I0.1I0.2Q0.1I0.3I0.4停止按钮左行接触器KM1右行按钮左行按钮左限位开关右限位开关KM2右行接触器I0.1I0.0Q0.0Q0.1DesignbasedonexperienceI0.1Q0.0I0.3Q0.1I0.0I0.2右启Q0.0I0.4Left左启Right左限位stopQ0.1I0.0Q0.1I0.4I0.3Q0.0I0.1I0.2Right左启右启Left右限位stop左限位开关右限位开关可逆电动机起动器电路电动机电压电动机电路断路器三相交流感应电动机电动机起动器顺时针方向旋转左右停电动机起动器逆时针方向旋转CPU221•当与输入点I0.0相连的左转点动开关闭合时,电动机逆时针方向旋转,当与输入点I0.1相连的右转点动开关闭合时,电动机顺时针方向旋转。•但这要有一个前题,即与输入点I0.3相连的电动机电路断路器和与输入点I0.2相连的停机开关都没有动作。•如果需要电动机反转的话。只有按下停机开关,并等待5秒钟之后,才可以改变电动机的旋转方向。这样做是为了让电动机有足够的时间刹车停转,然后再反向起动。•如果与I0.0和I0.1相连的点动开关同时按下,电动机停转,并且不起动。程序Network1//逆时针方向旋转使能LDI0.2//如果无停机命令(OFF),AI0.3//且电路断路器未动作ANM1.1//且顺时针方向旋转状态位未置位,=M2.1//则逆时针方向旋转使能位M2.1=1。Network2//顺时针方向旋转使能LDI0.2//如果无停机命令(OFF),AI0.3//且电路断路器未动作ANM1.0//且逆时针方向旋转状态位未置位,=M2.2//则顺时针方向旋转使能位M2.2=1。Network3//逆时针方向旋转LDI0.0//如果命令电动机左转OM1.0//或逆时针方向状态位,AM2.1//且逆时针方向旋转使能,=M1.0//置逆时针方向旋转状态位M1.0=1。=Q0.0//置电