7
西门子6ES7231-7PD22-0XA8详解说明
单片机与PLC的程序设计有很大的区别,单片机的全部程序都是用户设计的,PLC的程序包括系统程序(西门子称为操作系统)和用户程序。操作系统用来组织与具体的控制任务无关的所有的CPU功能。操作系统的任务包括处理启动过程,刷新输入/输出过程映像,调用用户程序,检测中断事件和调用中断组织块,检测和处理错误,管理存储器,以及处理通信任务等。PLC的很多功能,例如扫描工作方式、定时器功能和中断处理,是操作系统完成的。在画流程图时,应考虑这个问题。
PLC的开关量控制系统的程序用顺序功能图来描述比较简洁。用流程图来描述PLC的用户程序原则上也是可以的,但是应区分哪些功能是操作系统完成的,哪些是用户程序实现的。
例如有人问是否需要用跳转指令来等待某个信号上升沿的出现,这是一种单片机编程的思维。PLC的扫描工作方式在每一扫描周期开始时读取全部的开关量输入,根据前后两个扫描周期同一输入点状态的变化来判断是否有上升沿出现。所以不需要用往回跳的跳转指令来等待某个输入信号的出现。如果用这种方法来查询信号的状态变化,PLC不能干别的事情,因为它的全部精力都用在查询上了!而这种查询是在一个扫描周期内进行的,将使扫描周期变得很长,很容易造成监控定时器()时的错误。
在PLC的用户程序中,只需要用一条检测上升沿的指令就可单片机与PLC的程序设计有很大的区别,单片机的全部程序都是用户设计的,PLC的程序包括系统程序(西门子称为操作系统)和用户程序。操作系统用来组织与具体的控制任务无关的所有的CPU功能。操作系统的任务包括处理启动过程,刷新输入/输出过程映像,调用用户程序,检测中断事件和调用中断组织块,检测和处理错误,管理存储器,以及处理通信任务等。PLC的很多功能,例如扫描工作方式、定时器功能和中断处理,是操作系统完成的。在画流程图时,应考虑这个问题。
PLC的开关量控制系统的程序用顺序功能图来描述比较简洁。用流程图来描述PLC的用户程序原则上也是可以的,但是应区分哪些功能是操作系统完成的,哪些是用户程序实现的。
例如有人问是否需要用跳转指令来等待某个信号上升沿的出现,这是一种单片机编程的思维。PLC的扫描工作方式在每一扫描周期开始时读取全部的开关量输入,根据前后两个扫描周期同一输入点状态的变化来判断是否有上升沿出现。所以不需要用往回跳的跳转指令来等待某个输入信号的出现。如果用这种方法来查询信号的状态变化,PLC不能干别的事情,因为它的全部精力都用在查询上了!而这种查询是在一个扫描周期内进行的,将使扫描周期变得很长,很容易造成监控定时器()时的错误。
在PLC的用户程序中,只需要用一条检测上升沿的指令就可以捕捉到脉冲信号的上升沿。如果要求快速响应,可以采用中断方式,在脉冲信号的上升沿由系统程序调用用户编写的中断程序。
西门子S7-200PLC的数据装载、传送与移动全部通过移动指令MOV实现。移动指令MOV在梯形图中的指令格式如图10-4.1所示。
指令中的MOV为移动指令代码,B为数据长度,在S7-200中允许的数据范围为:
B:1字节(8位二进制);
W:l字(16位二进制):
DW:2字(32位二进制):
R:浮点数(32位二进制)。
指令中,IN:源数据或数据存储位置;
OUT:移动目标位置。
通过改变移动的源数据位置与移动目标位置,MOV指令可以完成数据的装载、传送与移动功能。当采用MOV BIR、MOV-- BIW时可以将直接输入移动到的位置,或将的数据直接送到输出端。
间接寻址:S7-200的移动指令中的数据源与移动目标不仅可以是常数、存储器地址,还可以采用间接寻址方式。在采用间接寻址时,对指针的建立、操作数的有规定的格式与要求,其使用范围也有一定的限制。如在建立指针时,应在指针地址前加“&”标记;当采用间接寻址时,应在地址指针存储器前加“+”标记等,有关S7-200间接寻址的方法可以参见本书8章。
2.数据块移动
S7-200的数据移动还可以“成块”进行,这时应使用编程指令BLKMOV B(以字节为单位)、BLKMOV-W(以字为单位)、BLKMOV DW(以双字为单位),梯形图程序如图10-4.2所示。
图10-4.2中的N用于移动的“块”大小,执行程序可以将从MB10起的20字节标志寄存器数据(MBIO~MB39) -次性移动到VB10起的20字节变量寄存器中。
当图10-4.2采用BLKMOV—W、BLKMOV_DW指令时,只需要N为10与5,同样可以实现移动20字节的目的。
3.数据装载与传送
所谓装载实质是将的数据移动到累加器的操作,因此可以通过移动指令实现。在S7-200上,只需要在MOV指令中将移动目标位置(OUT)为累加器1(ACl),即可实现数据装载功能。
所谓传送,实质是将累加器的内容移动到位置的操作,因此,同样可以通过移动指令实现。在S7-200上,只需要直接将数据源位置(IN)指令为累加器1(ACl),即可实现数据的传送功能。
编程电缆一端与PCCOM口相连,另一端与PLC编程口相连,PC端COM口均为RS232C接口,DB-9针形插头。而PLC编程口按接口标准一般可分为三种,即RS232、RS485、RS422 。按物理结构可分为五种,即八针圆口(DIN-8),九针D形口(DB-9),二十五针D形口(DB-25),RJ11口以及接口,其中以前两种居多,各接口引脚排列如图一所示。
图一
做好编程电缆,要大概了解一下这三种串行通信接口标准。RS-232、RS-422与RS-485是三种串行数据接口标准,接口标准只对接口电气特性做出规定,而不涉及接插件、电缆或协议,同样一种接口标准可以有不同物理结构,如DB-9 、DB-25等。
RS-232是PC机与通信工业中应用广泛一种串行接口, RS-232C总线标准设有25条信号线,包括一个主通道和一个辅助通道。多数情况下只使用主通道,常用九条信号线(九针D形口),各引脚定义如表一所示。一般双工通信,仅需几条信号线就可实现,如发送数据线 TXD 和接收数据线RXD以及逻辑线GND,RS232C只能点对点通讯,传输距离短,共模抑制能力差。
RS-485采用平衡发送和差分接收,具有抑制共模干扰能力。它使用一对双绞线,将其中一根定义为A(TXD-/RXD-),另一根定义为B(TXD+/RXD+),不需要数字线。速率100kbps及 以下时通信距离达
1200米以上。RS-485 可以联网构成分布式系统,其允许多并联32台驱动器和32台。RS-485只能实现半双工通信。
RS-232接口引脚定义
25 针 9 针 缩 写 描 述
2 3 TXD 发送数据
3 2 RXD 接收数据
4 7 RTS 请求发送
5 8 CTS 允许发送
6 6 DSR 通讯设备准备好
7 5 GND 信号
8 1 CD 载波检测
20 4 DTR 数据终端准备好
22 9 RI 响铃指示器
表一
RS-422接口标准主为克服RS-232接口标准通讯距离短和传输速率慢而建立。RS-422标准是一种以平衡方式传输标准,使用二对双绞线,每个信号以两根信号线来传输,即发送数据TXD+ 、 TXD- ,接收数据RXD+ 、 RXD- ,逻辑电平是由两条传输线之间电位差来决定,采用了双线传输,大大增强了抗共模干扰能力,大数据速率可达10MbPs(传送15m时)。若传输速率降到90kbPs时,则大距离可达1200m,可实现全双工通信。



用户库是利用STEP 7-Micro/WIN项目的子程序生成的。可以使用任何包含子程序的现有项目生成用户库。但是,编程中会发现建立一个库源码加简便。如果希望用于 建立指令库的现有子程序(可能在几个项目中),可使用导出/导入或在项目之间复制和粘贴POU的方法将这些子程序以及任何从属子程序和中断例行程序纳入一 个项目。
1)处理V内存
要解决可能出现库和现有有项目之间内存使用冲突,用户库不应当使用全局PLC资源。但应用中可能无法排除用户库使用全局资源的状况。但是,应尽量减少使用全局资源。
尽量用子程序参数代替全局内存,
使用子程序参数,尽量减少库对全局内存的依赖性。可以库指令使用的内存。例如,您可以有一个计算四个数加法的子程序,并将该输出存储在一个V内存 位置。程序的其余部分则会读取该V内存位置,以便确定计算的结果。如果您希望将该子程序放入库,考虑在子程序中增加一个输出参数,并将计算结果存储在该参 数中。这样就无须V内存位置,并允许您决定存储结果的位置。
使用临时变量进行计算,将临时变量用于计算和临时结果可尽量减少用户库对全局内存的使用。临时变量(在局部变量表中对子程序和中断例行程序进行定义) 从局部内存分配,不与项目发生冲突。局部内存并非持久性内存,无法用于在指令调用之间保存数据。其使用期是说明局部内存的子程序或中断例行程序的执行阶 段。
需要使用V内存时,有时在包括在指令库中的子程序和中断例行程序中使用全局V内存。此时,为在这些POU中使用的所有V内存说明符号,并在程序中使用符号。当库被编译后,这些符号被用于决定库需要的内存量。
需要I/O地址时,有时在包括在指令库中的子程序和中断例行程序中使用实际I/O地址。必要时,这些POU中使用的所有I/O地址符号,并在应用程序中使用这些符号。
2)将POU注释用于文档编制
如果选择用密码保护库指令,库用户则无法看到指令中的源码。但是,他们能够看到构成库的每个子程序和中断例行程序的POU指令。POU注释是记录每条指令功能的位置。请考虑使用POU注释提供下列详细信息:
1.该指令具体执行什么功能?POU注释是给出指令功能说明的位置。
2.如何调用指令?例如,如果指令在扫描时调用,或者如果指令依赖于成功地完成另一条指令,应当使用POU注释记录这些指令的详细用法。
3.指令使用何种全局内存?如果指令直接参考全局内存,POU内存应当提醒用户这一用法,以便用户对程序进行设计,以避免内存访问冲突。
4.指令如何指示错误?很多指令需要通过输出参数或全局内存位置指示错误条件。向用户提供可能产生的错误说明以及如何纠正这些错误的说明会很有帮助。
3)分发用户库
库编译输出是一个磁盘文件(mwl文件),该文件包含STEP 7-Micro/WIN识别和使用指令库所需的所有内容。如果希望向其他STEP 7-Micro/WIN用户分发用户库,可以将该文件复制,为用户提供一份文件的拷贝。
4)星角起动用户指令库的例子
TITLE=子程序注释
Network 1 // 网络标题
//星角起动
LD SM0.0
A L0.0//运行标志
A L0.1 //热保护
LPS
LD L0.2 //转换时间到
O L0.7 //角运行标志
ALD
= L0.7 //角运行标志
AN L0.7 //角运行标志
AN L0.4 //角接接触器
= L0.5 //星接接触器
LPP
LD L0.5 //星接接触器
O L0.3 //主接触器
ALD
= L0.3 //主接触器
AN L0.5 //星接接触器
= L0.4 //角接接触器
Network 2
LD SM0.0
A SM0.5
= L0.6 //故障指示
西门子S7-300与S7-200PLC编程有何区别 ?
1、先从两者总体应用而言,S7-300与S7-200分别为中、小规模的PLC系统。
2、S7-200原是非西门子产品,其后被归入西门子产品。所以,与西门子嫡传产品S7-300并没有可比性。
3、S7-300与S7-200各有自己的指令系统与程序结构。S7-300与S7-400、S7-1200为一个编程体系。而S7-200比较特殊。
S7-300的编程语言较为丰富,除了梯形图、语句表和功能块图以外,还支持结构化语言(SCL)、顺序功能图(SFC)等。 S7-200的指令简单,通常用梯形图就可以完成工控所需要的功能。
大的不同编程中S7-300出现了子程序块FB,FC,丰富和优化了编程环境,提高了对具备类似功能自动化对象的编程与开发效率,对多款其他的PLC提供了通信接口模块。而S7-200就只支持梯形图,程序设计不灵活,PPI的点对点得通信方式,导致它的在有通信需要的应用范围比较狭小,通常它可以作为子站挂到主站上面,或者上位机上面。
1.有一定的电工基础---掌握传感器、接近开关、编马器、气动元件等常用器件的使用及继电器控制原理。
2.再学数制及数制转换---掌握二进制、八进制、十六进制、BCD码、ASCI码的概念。
3.选择你所在地区流型的PLC做为学习的机种.-----学会后可以好的与实际工作对接。
4.买台手提电脑(配制不CPU是双核或以上 ,1G内存,硬盘80G,带串口)--学习及外出干活的工具。
5. 学会电脑的基本操作,如开机关机、文件保存以及WORD、EXCEL办公软件的基本应用(电脑使用者必会);常用软件的安装与卸载(如编程软件的安装和卸载);打字(用于程序及加注释)。
6.寻找PLC编程软件及软件、教学软件(当然还要学会使用它们)。---学习用具。
7. 买相关书及视频教材。---学习资料。
8. 找齐该PLC编程手册、使用手册、使用案例,可从网上收集或参加产品推广会获得。--工作中肯定会用到的资料.
9. 以上准备好后,您可以自学PLC了,一般来说PLC梯形图的基本指令好学,其逻辑关系与继电器控制原理图相通。但功能指令就难很多了。
10.是到有实力口碑好的学校培训.---比起自学可缩短学习时间,学得系统,还可多交恩师、学友以利于今后发展。
11. 用一切办法多结识周围的**、PLC厂家、代理商,以便于得到他们的帮助及有用的信息。
12. 坚持学习,多与**交流,多动手实践.---编程是理论与技能高度结合的,应多看书多实践才能提高编程技术。
13. 当外出包工程时,还要准备该类型PLC程序软件---因为有时你会忘记自己程序中已加的密码,还有时是别人加密的程序,客户要你将它再优化、增加新功能、修改参数、将原来定时停机的程序删除。这也是很多人找解码软件的原因。
说的简单一点,FB是有背景数据块的,而FC没有。如果你有几套一样的或者相似的参数要处理的话,用FB会方便一点。
例如,计算A同学和B同学的成绩,其实每个同学的成绩都是有数学,语文,英语组成,那么在计算每个同学的数据时都是三个科目成绩相加,算法是一样的,那么我们就可以做一个功能块,把这个算法写进去,在块里面定义变量数学,语文,英语,然后把算法写好,再去为A,B同学分别创建一个数据块,也就是FB的背景数据块,你会发现,你打开北京数据块后,里面的变量和FB里面的变量名称,个数是一样的,那么把数据块1,2分别分配给A,B的话,就可以把AB同学的成绩分别写到数据块里,然后由FB调用不通的数据块就可以计算A,B的成绩了,这样每组数据都有自己的数据块,不容易造成数据混乱如果用功能FC来做的话,也可以,但是你要自己去每个数据块里面定义变量,比较麻烦,或者也可以直接把所有同学的成绩的数据全写到一个块里面,但这样容易数据混乱
还有就是FB里面是有静态变量的,而FC没有,FC有return,FB没有至于这两的用法。