6ES7 241-1AA22-0XA0
上海西皇电气设备有限公司联系人:江工(销售/维修经理)24小时服务***:18321993475微信与电话号码同步传真(Fax):021-57358110商务(QQ):459170735地址(Add):上海市金山区枫泾镇泾波路375号本司***经营西门子PLC6ES7-200/300/400/1200/6EP/6***/6GK/ET200/6SE变频器/电缆/DP接头/触摸屏/变频器/数控伺服备件全系列产品、拥有***的技术团队,及***的从业人员,长期为客户提供西门子PLC的销售,安装,调试服务欢迎您来电咨询高品质西门子驱动和自动化产品价格用户可以把自己编制程序集成到编程软件Micro/WIN中。这样可以在编程时调用实现相同功能的库指令,而不必同时打开几个项目文件拷贝。指令库也可以方便地在多个编程计算机之间传递。新建库操作步骤:***步:在Micro/WIN的File(文件)菜单中,选择CreatLibrary...(建立库)命令;或者用鼠标右键单击指令树的Libraries(指令库)分支,选择CreatLibrary...第二步:在CreatLibrary对话框中选择哪些子程序要集成为指令库第三步:在Properties(属性)标签中设置指定指令库名称指定要生成的库文件的目录路径指定版本信息第四步:在Protection(保护)标签中设置密码第五步:按OK按钮确定,输出指令库文件指令库文件扩展名为.mwl,缺省情况下存在Micro/WIN安装目录下的lib文件夹中。库文件可以作为单独的文件拷贝、移动。添加指令库***步:在Micro/WIN的File(文件)菜单中选择Add/RemoveLibraries...(添加/删除指令库)命令;或者在指令树的Libraries(指令库)分支上单击鼠标右键,选择Add/RemoveLibraries...第二步:按Add(添加)按钮,选择新定义的库文件路径。用户自定义库将自动添加到Micro/WIN指令树的Libraries分支下。调用用户定义指令库指令库的使用方法与子程序基本一样。在OB1中两次调用上一个日志中的子程序SBR_0,在运行程序时发现,接通I0.0外接的小开关,Q0.0和Q0.1同时变为ON。这是因为分配给SBR_0的输出参数“电动机”的地址为L0.2,***次调用SBR_0之后,L0.2的值为ON。第二次调用SBR_0时,虽然起动按钮I0.2为OFF,但是因为两次调用SBR_0时局部变量区是公用的,此时输出参数“电动机”(L0.2)仍然为ON,所以第二次调用SBR_0之后,由于执行图4-40中的程序,输出参数“电动机”使Q0.1为ON。子程序的局部变量一定要遵循“先赋值后使用”的原则。S7-200的子程序使用临时变量来传递参数,OUT类型的参数不会把实参读入形参,所以这里使用OUT形参的触点就出现了临时变量未赋值先使用的情况。将输出参数“电动机”的变量类型改为IN_OUT就可以解决上述问题。这是因为两次调用子程序,参数“电动机”返回的运算结果分别用Q0.0和Q0.1保存,在第二次调用子程序SBR_0,执行“O#电动机”指令时,因为“电动机”是IN_OUT参数,使用的是前一个扫描周期保存到Q0.1的值,与本扫描周期***次调用子程序后参数“电动机”的值无关。简单地说,对于有记忆功能的电路,需要用存储单元来保存要记忆的变量值。S7-300的FB可以用静态变量来保存,而S7-200的子程序没有静态变量,只有用IN_OUT变量的实参(本例中的Q0.1)来保存变量值。某日,客户打进电话来:“麻烦工程师,给一个编程的思路。我用的S7-200PLC,我想实时采集数据,如何才能实现永远记录***新的几条数据。”答曰:“运用表指令,就能够实现。”那么表指令怎么实现,下面我们来细说一下。首先,需要将实时采集的数据,建立一个指定长度的表格(ATT填表指令)。实时记录***新数据,那么就要求这个表格具有***先出的功能(FIFO)。1.ATT填表指令:向表格(TBL)中加入字值(DATA)。表格中的***个数值是表格的***大长度(TL)。第二个数值是表格的实际条目数。每次向表格中增加新数据后,条目计数加1。新数据被增加至表格中的***后一个条目之后,即无法再向表格中添加数据,报溢出。表格***多可包含100个条目,不包括指定***大条目数和实际条目数的参数。2.FIFO***先出指令:从表(TBL)中移走***个数据,并将此数输出到DATA。剩余数据依次上移一个位置。每执行一条本指令,表中的数据数减1。3.将这两个指令结合起来,先通过数据建表,当表格满了之后,再移出老的数据,填入***新数据。如下图所示:注意:所有的表格读取和表格写入指令必须用边缘触发器指令***。好啦,如果您需要实现实时记录***新数据,请参考吧。用PTO怎么才能让步进电机走完一段距离后自动反转回来?外部没有开关答:1、主程序先正转,等到正转完了就中断,中断中接通个辅助触点(M0.X),当M.0X闭合,住程序中的反转开始运做.这样子就OK了。2、用PTO指令让Q0.0ORQ0.1高速脉冲,另一个点如Q0.2做方向信号,就可以控制正反转了,速度快慢就要控制输出脉冲周期了,周期越短速度越快,如果你速度很快的话请考虑缓慢加速,不然它是启动不了的,如果方向也变的快的话就要还做一个缓慢减速,不然它振动会蛮厉害,而且也会失步。3、程NETWORK1//用于单段脉冲串操作的主程序(PTO)//***扫描时,将映像寄存器位设为低//并调用子程序0LD***0.1RQ0.01CALLSBR_0NETWORK1//子程序0开始LD***0.0MOVB16#8D***B67//设置控制字节://-选择PTO操作//-选择单段操作//-选择毫秒增加//-设置脉冲计数和周期数值//-启用PTO功能MOVW+500***W68//将周期设为500毫秒。MOVD+4***D72//将脉冲计数设为4次脉冲。ATCHINT_019//将中断例行程序0定义为//处理PTO完成中断的中断。ENI//全局中断启用PLS0//***PTO操作,PLS0=>Q0.0MOVB16#89***B67//预载控制字节,用于随后的//周期改动。NETWORK1//中断0开始//如果当前周期为500毫秒://将周期设为1000毫秒,并生成4次脉冲LDW=***W68+500MOVW+1000***W68PLS0CRETINETWORK2//如果当前周期为1000毫秒://将周期设为500毫秒,并生成4次脉冲LDW=***W68+1000MOVW+500***W68PLS0序注释分块式结构体系的PLC用户程序由多个不同的“程序块”所组成,执行PLC程序时,需要根据外部输入条件与程序中规定的控制要求,由负责管理的主程序通过对不同程序块的调用与选择,决定每次循环扫描实际需要执行的程序块。对于控制复杂、程序容量大的大中型PLC系统,出于方便设计、检查、调试等方面的考虑,通常采用分块式结构。PLC用户程序的两种结构体系各有其特点,实际使用时采用何种程序结构体系,一方面决定于PLC所具备的功能,另一方面取决于程序设计者的选择。2.线性化结构按照线性化结构体系设计时,程序常见的形式有“普通线性化结构”与“分时管理线性化结构”两种。(1)普通线性化结构普通的线性结构程序***为简单,设计者只需要将由基本指令组成的全部网络与功能程序段,进行逐网络、逐段排列即可。只要程序中没有特定的次序要求(如为了产生边沿脉冲的需要等),组成程序的各网络与功能程序段就可以在PLC程序中任意排列,其位置与程序的执行结果无关。CPU执行普通的线性结构程序时,总是对全部程序指令按照输入采样、执行程序、输出刷新三个阶段不断循环,全部输入、输出信号的采样与刷新时间统一,每次处理的时间(循环扫描时间)固定。在S7-200/300/400系列PLC中,如果将全部PLC用户程序都编制在***块OB1中,即属于此结构。(2)分时管理线性化结构在部分PLC中,为了满足控制系统中需要高速处理的信号特殊控制要求,线性结构的程序也可以采用“分时管理线性化结构”的结构形式(见图11-1.1)。采用“分时管理线性化结构”时,设计者可以根据控制系统的需要,将线性化结构的PLC用户程序划分为“高速扫描循环”与“普通扫描循环”两部分。程序中的高速扫描部分可以由设计者定义扫描时间间隔,在执行过程中这一时间间隔保持固定不变。即:对于高速扫描程序段,设计者可以人为地规定程序的执行时间,CPU必须在规定的时间内完成高速扫描程序段的输入采样、执行程序、输出刷新循环过程,因此,PLC对“高速扫描循环”程序中输入/输出信号的处理速度,可以远远高于正常PLC循环程序中对输入/输出信号的处理速度。程序中的其他部分为普通扫描部分,执行正常速度的扫描。在程序的执行过程中,如果普通扫描部分的程序执行时间已经到达高速扫描时时间间隔,CPU立即中断普通扫描,保存执行状态,并转入对高速程序段的扫描:等到高速段程序执行结束后,再继续***对普通程序的扫描(见图11-1.1)。这样的过程在整个PLC程序执行中需要进行多次。由于高速扫描的多次中断,普通PLC程序段的扫描时间将比正常执行的情况更长。采用这种方式的特点是:在线性结构体系的程序可以处理PLC的高速输入/输出信号,以满足特殊的控制要求。当然,根据实际系统的需要,程序中也可以没有高速扫描的程序段,但是,不可以将全部程序都作为高速程序。3.分块式结构分块式结构体系的PLC程序由多个程序块组成,由统一的程序“***块”对各程序块进行***与调度,“***块”根据规定的条件与顺序依次调用各程序块。采用了分块式结构体系的PLC程序,在实际处理过程中可以根据不同的外部输入条件与控制要求,每次循环扫描可以跳过某些程序块,仅对需要处理的程序块进行扫描,从而加快PLC程序的执行速度,缩短扫描时间。根据PLC的不同,分块式结构体系的PLC程序可以采用主、子程序结构、功能调用式结构与结构化编程等形式实现。(1)主、子程序结构采用主、子程序结构的PLC用户程序,一般可以由主程序、子程序、中断程序等不同的程序块所组成,并且按照规定的顺序排列(如在S7-200中,程序块按照主程序、子程序、中断程序的顺序依次排列)。在主、子程序结构程序中,主程序为PLC每次扫描都必须执行的程序块,必须予以编制;而子程序、中断程序可以根据实际需要进行编写与调用。主、子程序结构的PLC程序与线性化结构相类似,如果程序中没有编制子程序、中断程序,它便成了线性结构的程序。(2)功能调用式结构功能调用式结构的PLC程序执行过程与主、子程序结构类似,但组成程序的各逻辑块按照不同的功能进行编排,无主、子之分。组成功能调用式结构的每一程序块都代表着控制对象的一组相对***动作,逻辑块由特定的“块”进行统一的管理与调用。在S7-300/400系列PLC中,以上用于管理与调用的程序块称为***块(OBl),其余逻辑块分别称程序块(FC)、功能块(FB)、数据块(DB)等。一般而言,功能调用式PLC程序在CPU的一个扫描周期内,对同一程序块的调用次数不会超过一次;当超过一次时则称为“结构化编程”。(3)结构化编程结构化编程的程序结构形式与调用式完全相同,程序同样由多个程序块组成,并通过“***块”对其进行***与管理,但它采用了“参数化编程”的方法。采用结构化编程的程序,在同-PLC扫描周期内可以多次重复调用程序中的同一程序块,因此,对于动作相同或相似的程序,可以通过在PLC程序中编写一个“公用程序块”,利用重复调用来实现。为了保证“公用程序块”能控制不同的对象,必须将组成程序的各种操作数进行“参数化”,即:①“公用程序块”中的所有信号的地址必须是可以变化的,即“公用程序块”中一般不能使用“***地址”,而应采用“程序变量”(形式参数)进行编程。②调用“公用程序块”前,为了使得程序中的所有信号有明确的含义,必须对“程序变量”(形式参数)进行赋值,即将“程序变量”定义成有明确含义的***地址。因此,CPU必须划分一个专门的存储器区域用于存储这些赋值参数。S7-300/400中的“局部变量堆栈L”与“即时数据块DI”就是为了实现这一目的而专门设定的存储区域。)