
一丶西门子PLC的分类1)S7-200系列小型机,和S7-200SMART为同一系列,因价格便宜,主要供应于中国及一些发展中国家,欧洲已被淘汰。2)S7-1200系列1200PLC比200PLC更紧凑......
一丶西门子PLC的分类

1)S7-200系列小型机,和S7-200SMART为同一系列,因价格便宜,主要供应于中国及一些发展中国家,欧洲已被淘汰。
2)S7-1200系列1200PLC比200PLC更紧凑,支持的点数更多,功能更全面。编程风格与200PLC差距很大,和300PLC、400PLC类似。所以200PLC消失后,西门子的PLC编程风格即将统一。
3)S7-300系列中型机
4)S7-1500系列S7-1500PLC相对与300PLC来讲比300PLC高一个档次,无论是从速度、处理能力、处理时间都不错,不过由于价格较300PLC高,所以应用不是很广泛。
5)S7-400系列大型机



二丶S7-200PLC面板介绍


三丶S7-200PLC数字量输入/输出口的内部结构
1)S7-200PLC数字量输入输出口的表示方法

DI输入地址编号:。。。。。。。。。
DO输出地址编号:。。。。。。。。。
2)数字量输入接口(DI)的内部结构
数字量(开关量)输入口是把现场的开关量信号变成PLC内部处理的标准信号。数字量输入口有直流输入型、交流输入型和交流/直流输入型。其中直流输入型内部结构如图所示:

直流、交流为外接电源的类型。数字量输入接口中都有滤波电路及耦合隔离电路,滤波有抗干扰的作用,耦合有抗干扰及产生标准信号的作用。
3)数字量输出接口(DO)的内部结构
作用:把PLC内部的标淮信号转换成现场执行机构所需的开关量信号。
分类:继电器型(交/直流)、晶体管型(直流型)、晶闸管型(交流型)


数字量输出接口(DO)几点说明:
①各类输出接口中也都具有隔离耦合电路。
②特别注意:输出接口本身都不带电源,而且在考虑外驱动电源时,还需考虑输出器件的类型。
③继电器型的输出接口可用于交流及直流两种电源,但通断频率低。
④晶体管型的输出接口有较高的通断频率,但只适用于直流驱动的场合。
⑤晶闸管型的输出接口仅适用于交流驱动场合。
(5)PLC接线端子介绍
1)CPU226接线端子
CPU226AC/DC/RLY的含义:
AC含义为电源为交流
DC含义为数字量输入为直流输入
RLY(继电器)含义为输出为继电器类型,负载既可以是交流也可以是直流型

2)CPU224接线端子
CPU224DC/DC/DC的含义:
第一个DC含义为电源为直流
第二个DC含义为数字量输入为直流输入
第三个DC含义为输出为直流型,即负载是直流负载

3)S7-200扩展模块




1.S7-200系列PLC编程语言
梯形图编程(Ladder)
语句表编程(StatementList)
功能图编程(FunctionBlock)

2.PLC工作原理
采用循环扫描工作方式:
系统周而复始地依一定的顺序完成一系列的具体的工作,这种工作方式叫做循环扫描工作方式。
其中,用户程序的完成可分为以下三个阶段


1.输入继电器(I)
输入继电器用于接收外部开关信号,一般都有个PLC的输入端子与之对应。当外部开关闭合时,其对应存储单元里面的数为1,该存储单元在程序中作输入继电器使用,相当于输入继电器的线圈通电,常开触点闭合,常闭触点断开。这些触点可以在编程时使用次数不受限制。S7-200提供的输入继电器的地址范围是:~,共128个
举例分析:作为一个输入继电器(实际上仅仅是存储单元),包括抽象意义上的线圈、常开触点和常闭触点。
当与口相连的开关闭合时,存储单元里面的数为1,程序中把作为继电器使用,其线圈通电(状态变为ON),其常开触点闭合,常闭触点断开。当与口相连的开关断开时,存储单元里面的数为0,程序中把作为继电器使用,其继电器线圈断电(状态变为OFF),常开触点恢复到断开,常闭触点恢复到闭合。

一句话概括:有输入时,常开触点通,常闭触点断。无输入时,二者相反。
2.输出继电器(Q)
输出继电器一般都有一个PLC上的输出端子与之对应。当通过程序使得输出继电器线圈通电时(如图1所示),PLC上的输出端开关闭合,它可以作为控制外部负载的开关信号。同时在程序中其常开触点闭合,常闭触点断开。这些触点在编程时使用次数不受限制。S7-200提供的输入继电器的地址范围是:~,共128个


举例分析:作为一个继电器,包括抽象意义上的线圈、常开触点和常闭触点。当该继电器线圈通电时(状态变为ON),存储单元里面的数变为1,同时其常开触点闭合,常闭触点断开。该继电器线圈断电时,存储单元里面的数变为0,其常开触点恢复到断开,常闭触点恢复到闭合。在PLC电源中断后,状态将变为OFF。当电源恢复后,除因程序使其变为ON外,其它仍保持OFF。在梯形图程序中存储单元的使用如下所示。

上图中,当常开触点通时,线圈通电(状态变为ON),其所对应的存储单元里面的数变成1,同时其常开触点闭合常闭触点断开。
线圈通电后,对应口输出有效。
输入/输出继电器的几点说明
①输入继电器位于PLC存储器的输入映像寄存器区域。在每次扫描周期的开始,CPU对输入点进行采样,并将采样值存于输入映像寄存器中,PLC在接下来的本周期各阶段不再改变输入映像寄存器中的值,直到下一个扫描周期的输入采样阶段。
②输出继电器位于PLC存储器的输出映像寄存器区域。输出继电器线圈只能使用程序指令驱动。
在扫描周期的结尾,CPU将输出映像寄存器的数值复制到物理输出点上,也就是把程序执行的结果传递给负载。
作为继电器,先存储单元里面的数为1,然后线圈通电,而相反。
1.复位、置位指令的应用

2.上升沿、下降沿的应用

3.中间继电器(M)
又称为辅助继电器,主要来存储信息,如图。S7-200提供的中间继电器的地址范围是:~,共256个,分为两类:
①普通中间继电器(~),在PLC电源中断后,状态变为OFF。当电源恢复后,除因程序使其变为ON外,其它仍保持OFF。
②停电保持型中间继电器(~),在PLC电源中断后,它具有保持断电前的瞬间状态的功能,并在恢复供电后继续断电前的状态。
中间继电器线圈由程序指令驱动,每个中间继电器都有无限多对常开常闭触点,供编程使用。

4.特殊继电器(SM)
它提供了CPU和用户程序之间传递信息的方法,可用于存储系统的状态变量、有关控制参数和信息等。用户可以使用这些位选择和控制CPU的一些特殊功能。
处于RUN状态时,它始终为“1”或处于导通状态。
初始化脉冲。PLC开始运行时,接通一个扫描周期。
该位提供时钟脉冲,该脉冲在1秒钟的周期时间内OFF(断开)0.5秒,ON(接通)0.5秒。

计数器(C)
(1)CTU-加计数器
地址编号范围:C0~C255,计数范围:0~32767
当R=0(断开)时,计数器可以计数;
当CU端有上升沿输入时,计数器当前值加1;
当计数器当前值等于设定值(PV)时,状态位置1,即其触点动作;
当计数器当前值大于设定值(PV)时计数器仍计数,不影响计数器的状态位,直至计数达到最大值(32767);
当R=1(接通)时,计数器复位,即当前值清零,状态位也清零。

(2)CTUD-加/减计数器
地址编号范围:C0~C255,计数范围:-32767~32767
当R=0(断开)时,计数脉冲有效;
当CU端有上升沿输入时,计数器当前值加1,当计数器当前值大于或等于设定值时,状态位置1,即其触点动作;
当CD端有上升沿输入时,计数器当前值减1,当当前值刚好小于设定值时,状态位清0,其触点复位;
当R=1(接通)时,计数器复位,即当前值清零,状态位也清零。

(3)CTD-减计数器
地址编号范围:C0~C255,计数范围:0~32767
LD=0(断开)时,计数器有效,CD端每来一个脉冲的上升沿,当前值减1计数,当前值从预置值开始减至0时,计数器的状态位置1,其触点动作,此时,CD端再有脉冲到来时,当前值保持0不变;
LD=1(接通)时,当前值等于预置值,计数器的状态位置0。

定时器(T)
PLC的定时器相当于电器系统中的时间继电器,S7-200系列PLC的定时器是对内部时钟脉冲计数来完成定时的。有1ms、10ms、100ms三种脉冲。PLC中一个完整的定时器包括:
一个16位的当前值寄存器用以存放当前值;1~32767
一个16位的

预置值寄存器用以存放时间的设定值;1~32767
一位状态位。
定时器的工作原理是:使能输入有效后,对PLC内部的脉冲进行增1计数,当计数值大于或等于定时器的预置值后,状态位置1,其常开触点闭合,常闭触点断开。

T37为其状态位,当计数达20次后,状态位变为1,常开触点闭合。
定时时间为20×100ms=2s

(1)通电延时定时器TON
通电延时定时器含义?
使能端(IN)接通时工作,当计数值大于或等于定时器的预置值后,状态位置1;断开时复位,状态位和计数值均复位。
通电延时定时器工作时,其使能端接通的时间一定要大于其预置值时间(定时时间)。


(2)记忆型通电延时定时器TONR
使能端接通时,定时器开始计时,当前值递增,当前值大于或等于预置值(PT)时,输出状态位置1。使能端断开时,当前值保持(记忆),使能端再次接通有效时,在原记忆值的基础上递增计时。
注意:TONR记忆型通电延时型定时器采用线圈复位指令R进行复位操作,
当复位线圈有效时,定时器当前值清0,输出状态位清0。


(3)断电延时定时器TOF
使能端接通时,定时器输出状态位立即置1,当前值复位为0。
使能端断开时,定时器开始计时,当前值从0递增,当前值达到预置值时,
定时器状态位复位为0,并停止计时,当前值保持。
如果输入断开的时间小于预定时间,定时器仍保持接通。IN再接通时,定时器当前值仍设为0。

TOF和TON共享同一组定时器,不能重复使用。
即不能把一个定时器同时用作TOF和TON。例如,不能既有TONT37,又有TOFT37。
高速计数器(HC)
Siemens编程器S7-200系列带有高速计数器。常用于各种步进,伺服脉冲定位控制。在设备的控制系统中,有关运动控制是很重要的,下面我们来看一看西门子S7-200系列PLC怎样来实现这个功能。


(1)高速计数器的符号
高速计数器在程序中使用时的地址编号用HCn表示,HC为高速计数器名称,n为编号。HCn除了表示高速计数器的编号外,还代表两方面的含义:高速计数器位和高速计数器当前值。编程时,从所用的指令可以看出是位还是当前值。

(2)高速计数器的工作模式
高速计数器的工作模式共12种,选用某个高速计数器在某种工作模式下工作,高速计数器的输入端不是任意选择,必须按系统指定的输入点。


(3)高速计数器控制指令

(4)高速计数器的特殊寄存器
在了解高速计数器特殊寄存器之前应该先了解
常用的数制有二进制、十进制、十六进制(H字母结尾)等进制之间的转换。
三种数制之间的转换关系如下:

B为Byte(字节),一个字节称为一个单元,由8位二进制组成。例:SMB37是由、——共8位组成。
W为word(字),一个字由2个字节,16位二进制组成。例:SMW38由SMB38和SMB39组成。
D为Doubleword(双字),即两个字,一个双字由4个字节组成,SMD38是由SMB38、SMB39、SMB40和SMB41组成。

注:①在程序中不可同时出现SMW38和SMW39;
②SMD38和SMD42是相邻的两个双字。
(4)高速计数器的特殊寄存器
每个高速计数器都有固定的特殊功能存储器与之配合。


(5)高速计数器的编程
高速计数器的编程方法有两种,一是采用梯形图或语句表进行正常编程,二是通过STEP7-Micro/WIN编程软件进行引导式编程。不论那一种方法,都先要根据计数输入信号的形式与要求确定计数模式;然后选择计数器编号,确定输入地址。
高速计数器的编程使用向导。







高速脉冲发生器PTO
S7-200有两个内置PTO/PWM发生器,用以建立高速脉冲串(PTO)或脉宽调节(PWM)信号波形。一个发生器指定给数字量输出口,另一个发生器指定给数字量输出口。当组态一个输出为PTO操作时,生成一个50%占空比脉冲串用于步进电机或伺服电机的速度和位置的开环控制。内置PTO功能提供了脉冲串输出,脉冲周期和数量可由用户控制。但应用程序必须通过PLC内置I/O口提供方向和限位控制。为了简化用户应用程序中位控功能的使用,STEP7--Micro/WIN提供的位控向导可以帮助用户在很短的时间内全部完成PWM、PTO或位控模块的组态。向导可以生成位置指令,用户可以用这些指令在其应用程序中为速度和位置提供动态控制。
在了解PTO指令之前让我们先了解一下伺服电机
伺服电机
1.认知伺服驱动器

2.伺服驱动器外部接线

(1)XA:电源输入接口,AC220V电源连接到L1、L3主电源端子,同时连接到控制电源端子L1C、L2C上。断开该电源,伺服驱动器便可断电。
(2)XB:电机接口和外置再生放电电阻器接口。U、V、W端子用于连接电机。必须注意,电源电压务必按照驱动器铭牌上的指示,电机接线端子(U、V、W)不可以接地或短路,交流伺服电机的旋转方向不像感应电动机可以通过交换三相相序来改变,必须保证驱动器上的U、V、W接线端子与电机主回路接线端子按规定的次序一一对应,否则可能造成驱动器的损坏。电机的接地端子、驱动器的接地端子以及滤波器的接地端子必须保证可靠的连接到同一个接地点上。机身也必须接地。B1、B3、B2端子是外接放电电阻,本设备中没有使用外接放电电阻。
(3)X6:连接到电机编码器信号接口,连接电缆应选用带有屏蔽层的双绞电缆,屏蔽层应接到电机侧的接地端子上,并且应确保将编码器电缆屏蔽层连接到插头的外壳(FG)上。
(4)X4:I/O控制信号端口,其部分引脚信号定义与选择的控制模式有关,不同模式下的接线请参考《松下A5系列伺服电机手册》。本设备中,伺服电机用于定位控制,选用位置控制模式。
1.高速脉冲发生器PTO的建立
借助位控向导组态PTO输出时,需要用户提供一些基本信息,逐项介绍如下:
(1)最大速度(MAX_SPEED)和起动/停止速度(SS_SPEED)MAX_SPEED是允许的操作速度的最大值,它应在电机力矩能力的范围内。驱动负载所需的力矩由摩擦力、惯性以及加速/减速时间决定。SS_SPEED的数值应满足电机在低速时驱动负载的能力,如果SS_SPEED的数值过低,电机和负载在运动的开始和结束时可能会摇摆或颤动。如果SS_SPEED的数值过高,电机会在启动时丢失脉冲,并且负载在试图停止时会使电机超速。通常,SS_SPEED值是MAX_SPEED值的5%至15%。
(2)加速和减速时间加速时间ACCEL_TIME:电机从SS_SPEED速度加速MAX_SPEED速度所需的时间。减速时间DECEL_TIME:电机从MAX_SPEED速度减速SS_SPEED速度所需要的时间。加速时间和减速时间的缺省设置都是1000毫秒。通常,电机可在小于1000毫秒的时间内工作。这2个值设定时要以毫秒为单位。电机的加速和失速时间通常要经过测试来确定。开始时,应输入一个较大的值。逐渐减少这个时间值直至电机开始失速,从而优化应用中的这些设置。
(3)移动包络一个包络是一个预先定义的移动描述,它包括一个或多个速度,影响着从起点到终点的移动。一个包络由多段组成,每段包含一个达到目标速度的加速/减速过程和以目标速度匀速运行的一串固定数量的脉冲。PTO支持最大100个包络。定义一个包络,包括如下几点:选择操作模式、为包络的各步定义指标、为包络定义一个符号名。
①选择包络的操作模式PTO支持相对位置和单一速度的连续转动两种模式,相对位置模式指的是运动的终点位置是从起点侧开始计算的脉冲数量。单速连续转动则不需要提供终点位置,PTO一直持续输出脉冲,直至有其他命令发出,例如到达原点要求停发脉冲。
②包络中的步一个步是工件运动的一个固定距离,包括加速和减速时间内的距离。PTO每一包络最大允许29个步。每一步包括目标速度和结束位置或脉冲数目等几个指标。注意一步包络只有一个常速段,两步包络有两个常速段,依次类推。步的数目与包络中常速段的数目一致。
2.认知PTO各功能块
(1)PTO0_CTRL功能块:
(控制)启用和初始化PTO输出。请在用户程序中只使用一次,并且请确定在每次扫描时得到执行。即始终使用作为EN的输入,如图所示。

①输入参数:
■I_STOP(立即停止)输入(BOOL型):当此输入为低时,PTO功能会正常工作。当此输入变为高时,PTO立即终止脉冲的发出。
■D_STOP(减速停止)输入(BOOL型):当此输入为低时,PTO功能会正常工作。当此输入变为高时,PTO会产生将电机减速至停止的脉冲串。②输出参数
■Done(“完成”)输出(BOOL型):当“完成”位被设置为高时,它表明上一个指令也已执行。
■Error(错误)参数(BYTE型):包含本子程序的结果。当“完成”位为高时,错误字节会报告无错误或有错误代码的正常完成。
■C_Pos(DWORD型):如果PTO向导的HSC计数器功能已启用,此参数包含以脉冲数表示的模块当前位置。否则,当前位置将一直为0。
命令PLC执行存储于配置/包络表的指定包络运动操作。运行这一功能块的梯形图如图所示。

(2)PTO0_RUN功能块(运行包络):
①输入参数:
■EN位:子程序的使能位。在“完成”(Done)位发出子程序执行已经完成的信号前,应使EN位保持开启。
■START参数(BOOL型):包络的执行的启动信号。对于在START参数已开启,且PTO当前不活动时的每次扫描,此子程序会激活PTO。为了确保仅发送一个命令,一般用上升沿以脉冲方式开启START参数。
■Abort(终止)命令(BOOL型):命令为ON时PTO停止当前包络,并减速至电机停止。
■Profile(包络)(BYTE型):输入为此运动包络指定的编号或符号名。
②输出参数
■Done(完成)(BOOL型):本子程序执行完成时。输出ON。
■Error(错误)(BYTE型):输出本子程序执行的结果的错误信息。无错误时输出0。
■C_Profile(BYTE型):输出位控模块当前执行的包络。
■C_Step(BYTE型):输出目前正在执行的包络的步。
■C_Pos(DINT型):如果PTO向导的HSC计数器功能已启用,则此参数包含以脉冲数作为模块的当前位置。否则,当前位置将一直为0。
(3)PTO0_LDPOS功能块(装载位置):
改变PTO脉冲计数器的当前位置值为一个新值。可用该指令为任何一个运动命令建立一个新的零位置。图是一个使用PTO0_LDPOS指令实现返回原点完成后清零功能的梯形图。

①输入参数:
■EN位:子程序的使能位。在“完成”(Done)位发出子程序执行已经完成的信号前,应使EN位保持开启。
■START(BOOL型):装载启动。接通此参数,以装载一个新的位置值到PTO脉冲计数器。在每一循环周期,只要START参数接通且PTO当前不忙,该指令装载一个新的位置给PTO脉冲计数器。若要保证该命令只发一次,使用边沿检测指令以脉冲触发START参数接通。
■New_Pos参数(DINT型):输入一个新的值替代C_Pos报告的当前位置值。位置值用脉冲数表示。②输出参数
■Done(完成)(BOOL型):模块完成该指令时,参数DoneON。
■Error(错误)(BYTE型):输出本子程序执行的结果的错误信息。无错误时输出0。
■C_Pos(DINT型):此参数包含以脉冲数作为模块的当前位置。
PTO指令错误代码
错误代码描述
0无错误,正常完成
1在运行中立即发出STOP指令。STOP命令成功完成
2在运行中执行减速STOP命令。STOP命令成功完成
3在脉冲发生器中或PTO表的格式化中检测到的执行错误
127发生ENO错误。检查PLC信息以获取关于非致命错误的描述128忙碌。已有其它PTO操作在运行
129立即STOP和减速STOP命令已同时启用,导致的结果是立即停止
130PTO指令当前正被命令为STOP
132所请求的包络编号超出范围S7-200开环运动控制
注意:
PTO的建立,要明白当PTO报错时显示错误代码的含义,伺服电机错误代码的含义,伺服电机所接在端子排上的每一根线的意义,若线没接好或者虚接会出现什么结果,需要清楚,当电机不动时,要会排除是程序原因还是伺服原因,查看方法:监控程序,看看有没有调用PTOO_CTRL,如果已经调用了,看看D_STOP是否已导通,如果以上两步都没问题需要查看电机运行所在的子程序是否已调用,如果存在网络读写指令的话,查看两者存储地址是否存在包含关系,两者存储地址应为两个不同的地址,不能有任何的牵连关系。倘若以上都是正常的话,则需要查看伺服与相连的线是否接好,24V、0V是否接好。伺服电机方向不正确存在三个原因,其一没置位方向,其二伺服方向线没接好,其三伺服参数设置错误。
1.西门子PPI通信概述
SPPI协议是S7-200CPU最基本的通信方式,通过原来自身的端口(PORT0或PORT1)就可以实现通信,是S7-200默认的通信方式。PPI是一种主—从协议通信,主—从站在一个令牌环网中,主站发送要求到从站,从站响应;从站不发信息,只是等待主站的要求并对要求作出响应。如果在用户程序中使能PPI主站模式,就可以在主站程序中使用网络读写指令来读写从站信息。而从站程序没有必要使用网络读写指令。
2.实现PPI通信的步骤
(1)对每一台PLC,设置其系统块中的通信端口参数,对用作通信的端口(PORT0或PORT1),指定其地址(站号)和波特率。设置后把系统块下载到该PLC。具体设置如下:把CPU226端口0设为1,波特率为了19.2,CPU224端口0设为2,波特率为了19.2。

(2)编写主站网络读写程序段,如前所述,在PPI网络中,只有主站程序中使用网络读写指令来读写从站信息。而从站程序没有必要使用网络读写指令。在编写主站的网络读写程序前,应预先规划好下面数据:
①主站向从站发送数据的长度(字节数)。
②发送的数据位于主站何处。
③数据发送到从站的何处。
④主站从各从站接收数据的长度(字节数)。
⑤主站从从站的何处读取数据。
⑥接收到的数据放在主站何处。
以上数据,应根据系统工作要求,信息交换量等统一筹划。考虑本设备中,工作站PLC所需交换的信息量不大,发送和接收的数据均1个字节已经足够。
编制主站的网络读写程序简便的方法是借助网络读写向导。这一向导程序可以快速简单地配置复杂的网络读写指令操作,为所需的功能提供一系列选项。一旦完成,向导将为所选配置生成程序代码。并初始化指定的PLC为PPI主站模式,同时使能网络读写操作。
网络读写编程大致有如下几个步骤:
规划本地和远程通信站的数据缓冲区
写控制字SMB30(或SMB130)将通信口设置为PPI主站
装入远程站(通信对象)地址
装入远程站相应的数据缓冲区(无论是要读入的或者是写出的)地址
装入数据字节数
执行网络读写(NetR/NetW)指令
各CPU的通信口地址在各自项目的SystemBlock(系统块)中设置,下载之后起作用。
调用NetR/NetW指令
多数网络读写的不正常现象,除了硬件设备和软件设置的问题外,与在用户程序中调用网络读写指令的方式有关。包括看起来通信正常,但经过一段时间(可能是几天)后也会出现故障的现象。
使用用NetR/NetW时,应当注意:
避免简单地定时激活NetR/NetW:由于串行通信的特点,无法得知何时真正结束。如果定时进行网络读写通信,必须判断此次通信是否正常结束同时有效的NetR/NetW指令不能超过8个,否则通信请求队列会超出操作系统的管理能力使用调用网络读写指令,虽然能长期工作,但不能超过8个指令,而且会出现监控时指令块变为红色的现象,最好还是加上必要的读写状态判断条件。最简单可靠的方法,是使用Micro/WIN中的NetR/NetWWizard(网络读写指令向导)。
使用NetR/NetW向导可以编辑最多24条网络读写指令,其核心是使用顺序控制指令,这样在任一时刻只有一条NetR/NetW指令有效。如果要求超出24条网络读写指令,可以自己按照此方法编程。清除网络读写指令数据缓冲区中的(故障)状态字节可以恢复“死掉”的通信。但还是建议用户采用比较正规的编程方法。NETR/NETWWizard-网络读写指令向导只有在PPI通信中做主站的CPU才需要用NETR/NETW向导编程。
配置NETR/NETW向导:





