PLCSIM及真实的PLC之间的不同.docx
《PLCSIM及真实的PLC之间的不同.docx》由会员分享,可在线阅读,更多相关《PLCSIM及真实的PLC之间的不同.docx(10页珍藏版)》请在冰豆网上搜索。
![PLCSIM及真实的PLC之间的不同.docx](https://file1.bdocx.com/fileroot1/2023-2/4/de2ba7f2-0c63-4bf9-ae09-8d45cdbb2618/de2ba7f2-0c63-4bf9-ae09-8d45cdbb26181.gif)
PLCSIM及真实的PLC之间的不同
一、PLCSIM与真实的PLC之间的不同
PLCSIM提供了方便,壮大的仿真模拟功能。
与真实的PLC相较,它的灵活性更高,提供了许多PLC硬件无法实现的功能利用也更方便。
可是,软件毕竟无法完全取代真实的硬件,不可能实现全数的仿真。
在利用PLCSIM进行模拟调试时,必需了解其与真实PLC系统的不同
PLCSIM的以下功能在实际的PLC上无法实现
1、程序的暂停、继续功能
2、单循环执行模式。
3、模拟CPU转为STOP状态时,可不能改变输出。
4、通过显示窗口修改变量值,会当即生效,而可不能等到下一个循环。
5、按时器手动设置。
6、进程映像区和直接外设是同步动作的,进程映像I/O会当即传送到外设I/O。
PLCSIM无法实现以下PLC具有的功能
1、少数实际系统中的诊断信息PLCSIM无法仿真,例如电池错误
2、当从RUN变成STOP模式时,I/O可不能进入平安状态。
3、不支持特殊功能模块。
4、PLCSIM只模拟单机系统,不支持CPU的网络通信模拟功能。
二、STEP7软件中要紧有哪几种类型的块
组织块OB(Organizationblock)
功能FC(Functionblock)
功能块FB(Functionblock)
系统功能SFC(SystemFunction)
系统功能块SFB(SystemFunctionBlock)
背景数据块DB(InstanceDataBlock)
共享数据块DB(ShareDataBlock)
三、组织块OB可分为几大类型
1、启动组织块、2循环执行的程序组织块、3按期执行的程序组织块
4、事件驱动执行的程序组织块。
四、启动组织块的利用方式
S7系列PLC的启动组织块有3个,别离为OB100,OB101,OB102
这3个启动组织块对应不同的启动方式,至于PLC采取哪一种启动方式,是与PLC的型号及启动模式有关的。
1、OB100为完全再启动类型(暖启动),进程映像区和不维持的标存储器,按时器和计数器都被清零,维持的标志存储器、按时器和计数器和数据块的当前值维持原状态,执行OB100,然后开始执行OB1.一样的PLC都采纳此种启动方式。
2、OB101为再启动类型(热启动)。
启动时,所有数据(不管是维持或非维持型)都将维持原有状态,而且将OB101中程序执行一次。
然后程序从断点处开始执行。
剩余循环执行完以后开始执行循环程序。
热启动一样只有S7-400具有此功能。
3、OB102为冷启动方式,CPU318-2和CPU41704具有冷启动型的启动方式。
冷启动时,所有进程映像区和标志存储器,按时器,计数器(不管维持,非维持)都将被清,而且数据块的当前值被装载存储器的原始值覆盖。
然后将OB102中的程序执行一次后执行循环程序。
五、循环执行的程序组织块
OB1是循环执行的组织块,其优先级最高PLC在运行时将反复循环执行OB1中的程序,当有优先级较高的事件发生时,CPU将中断当前的任务,去执行优先级较高的组织块执行完成以后,CPU将回到断点处继续执行OB1中的程序,并反复循环下去,直到停机或是下一个中断发生。
六、按期执行程序组织块
按期执行的组织块将依照预先设定的日期时刻或执行一次,或循环执行。
按期执行程序组织块有日期中断组织块和循环中断组织块。
OB10,OB11~OB17为日期中断组织块。
通过日期中断组织块能够在指定的日期时刻执行一次程序,或从某个特定的日期时刻开始,距离指定的时刻(如一天,一个礼拜,一个月等)执行一次程序。
OB30,OB31~OB38为循环中断组织块,通过循环中断组织块能够每隔一段预定的时刻执行一次程序。
循环中断组织块的距离时刻较短,最长为1分钟,最短为1毫秒。
在利用循环中断组织块时,应保设定的循环距离时不大于执行该程序块的时刻,不然CPU将犯错。
七、事件驱动执行的程序组织块
延时中断组织块、硬件中断组织块、异步错误组织块、同步错误组织块
PLC程序家族的故事
时刻:
2020-07-25来源:
中华工控网廖长初教师博客编辑:
电气自动化技术网点击:
5934次字体设置:
-
1.程序家族有哪些成员?
的操纵程序一样由主程序、子程序和中断程序组成。
西门子的S7-300/400将子程序分为功能(Function,或称为函数)和功能块(FunctionBlock)。
在每一个扫描循环周期,CPU都要挪用一次主程序,用户程序必需有一个而且只能有一个主程序。
小型操纵系统能够只有主程序。
中断程序用于快速响应中断事件。
在中断事件发生时,CPU将停止执行那时正在处置的程序或任务,去执行用户编写的中断程序。
执行完中断程序后,继续执行被暂停执行的程序或任务。
2.哪些情形需要利用子程序?
当系统规模专门大、操纵要求复杂时,若是将全数操纵任务放在主程序中,主程序将会超级复杂,既难以调试,也难以阅读。
利用子程序能够将程序分成容易治理的小块,使程序结构简单清楚,易于调试、查错和保护。
子程序也能够用于需要多次反复执行相同任务的地址,只需要编写一次子程序,别的程序在需要的时候多次挪用它,而无需重写该程序。
3.如何挪用子程序?
主程序能够挪用子程序,子程序也能够嵌套挪用别的子程序。
嵌套挪用的层数是有限制的,例如S7-200的最大嵌套深度为8级。
执行完子程序后,返回挪用它的程序中的挪用指令的下一条指令。
4.每一个扫描周期都会执行子程序吗 子程序的挪用能够是有条件的,在被挪用期间,每一个扫描周期都要执行一次被挪用的子程序。
挪用条件不知足时可不能执行子程序中的指令,因此利用子程序能够减少扫描循环时刻。
5.停止挪用子程序后,子程序中的线圈处于什么状态?
停止挪用子程序后,再也不执行子程序中的指令。
子程序中线圈对应的编程元件若是没有受到别的程序的操纵,将维持子程序最后一次执行后的状态不变。
即便操纵这些线圈的触点的状态转变,该线圈对应的元件的状态也可不能转变,因为这时全然就没有执行子程序中的指令。
6.如何实现子程序的无条件挪用?
有的PLC的子程序挪用指令不能直接接到左侧的垂直“”线上,需要通过触点电路来操纵是不是挪用子程序,即子程序的挪用是有条件的。
能够用一直为ON的特殊位元件(例如S7-200的或FX系列的M8000)的常开触点来实现子程序的无条件挪用。
不同品牌的PLC的子程序大致能够分为两种,一种子程序没有输入、输出参数和局部变量,另一种那么有。
1.什么是全局变量和局部变量?
以西门子的S7-200为例,输入I、输出Q、变量存储器V、内部存储器位M、按时器T、计数器C等属于全局变量,能够在符号表中为全局变量概念符号名。
程序组织单元(ProgramOrganizationalUnit)简称为POU,包括主程序、子程序和中断程序。
每一个POU均有自己的64字节局部变量,局部变量用L(Local)来表示,局部变量只能在它所在的POU中利用。
与此相反,全局变量能够在各POU中利用。
2.局部变量有哪些类型?
子程序能够利用以下局部变量:
1)TEMP(临时变量)是临时保留在局部数据区中的变量。
只有在执行该POU时,概念的临时变量才被利用,POU执行完后,再也不保留临时变量的数值。
主程序和中断程序的局部变量表中只有TEMP变量。
2)IN(输入参数)由挪用它的POU提供的传入子程序的输入参数。
3)OUT(输出参数)是子程序的执行结果,它被返回给挪用它的POU。
4)IN_OUT(输入_输出参数)的初始值由挪用它的POU传送给子程序,并用同一变量将子程序的执行结果返回给挪用它的POU。
主程序和中断程序的局部变量表中只有临时变量TEMP。
3.子程序的输入、输出参数有什么作用?
具有输入、输出参数和局部变量的子程序易于实现结构化编程,关于长期生产同类设备或生产线的厂家尤其有效。
编程人员为设备的各部件或工艺功能编写了大量的通用的子程序。
即便不明白子程序的内部代码,只要明白子程序的功能和输入、输出参数的意义,就能够够用它们快速“组装”出知足不同的用户要求的操纵程序。
就仿佛能够用数字芯片组成复杂的数字电路一样。
若是子程序没有输入、输出参数,这种子程序没有明确的软件接口,利用起来很不方便。
4.局部变量有什么优势?
1)子程序若是没有局部变量,它和挪用它的程序之间只能通过全局变量来互换数据,子程序内部也只能利用全局变量。
将它移植到别的项目时,需要对各POU利用的全局变量作统一安排,以保证可不能显现地址冲突。
当程序很复杂,子程序很多时,这种地址分派是很花时刻的。
若是子程序有局部变量,而且在子程序中只利用局部变量,不利用全局变量,因为与其他POU没有地址冲突,不作任何改动,就能够够将子程序移植到别的项目中去。
为了减少移植子程序的工作量,在子程序中应尽可能幸免利用全局变量和全局符号。
2)若是利用局部变量表中的临时变量(TEMP),同一片物理存储器能够在不同的程序中重复利用。
下面以S7-200为例,介绍子程序的编程和挪用的进程。
1.创建子程序 生成项目时,自动生成一个子程序。
打开程序编辑器,执行“编辑”菜单中的命令“插入”→“子程序”,将自动生成和打开新的子程序。
2.生成局部变量 名为“模拟量计算”的子程序如以下图所示,在该子程序的局部变量表中,概念了3个输入(IN)参数,一个输出(OUT)参数,和名为“暂存1”的临时(TEMP)变量。
局部变量表最左侧的一列是自动分派的每一个变量在局部存储器(L)中的地址。
3.编写子程序的梯形图 局部变量表的下面是程序区(见上图),输入参数“转换值”是来自模拟量输入模块的与模拟量成正比的转换值,输出参数“模拟值”是计算出的对应的模拟量(例如压力、温度等)的工程值。
子程序中变量名称前的“#”表示该变量是局部变量,它是编程软件自动添加的,输入局部变量时不用输入“#”号。
特殊存储器位的常开触点老是闭合。
4.子程序的挪用 能够在主程序、其他子程序或中断程序中挪用子程序,挪用子程序时将执行子程序中的指令,直至子程序终止,然后返回挪用它的程序中该子程序挪用指令的下一条指令的地方。
创建子程序后,在上图左侧指令树最下面的“挪用子程序”文件夹中自动生成刚创建的子程序“模拟量计算”对应的图标。
在梯形图程序中插入子程序挪用指令时,第一打开主程序,显示出需要挪用子程序的网络。
打开指令树最下面的“挪用子程序”文件夹,用鼠标左键按住需要挪用的子程序图标,将它“拖”到程序编辑器中需要的位置。
放开左键,子程序块便被放置在该位置。
子程序方框中左侧的“转换值”等是在子程序“模拟量计算”的变量声明表中概念的输入参数,右边的“模拟值”是输出参数。
它们被称为子程序的形式参数,简称为形参,形参在子程序内部的程序中利用。
挪用子程序时,需要为每一个形参指定实际的参数(简称为实参),例如为形参“转换值”指定的实参为模拟量输入字AIW2(见上图)。
子程序挪用指令中的实参的有效操作数为存储器地址、常量、全局符号和挪用指令所在的POU中的局部变量,不能指定被挪用子程序中的局部变量。
CPU挪用子程序时,输入参数被复制到子程序的局部存储器,子程序执行完后,从局部存储器复制输出参数到指定的输出参数地址。
西门子S7-300/400的子程序分为功能(Function)和功能块(FunctionBlock)。
1.功能(FC) 功能是用户编写的没有固定的存储区的程序块,其临时变量存储在局部数据堆栈中,功能执行终止后,再也不保留这些数据。
能够用共享数据区来存储那些在功能执行终止后需要保留的数据。
功能与S7-200的子程序的局部变量大体上相同(见以下图)。
与S7-200的子程序相较,其局部变量多了个返回值(RET_VAL)。
返回值事实上属于输出参数。
2.参数类型 用于块之间传送数据的形式参数能够概念为12种大体数据类型、5种复杂数据类型(见上图),也能够为块之间传送数据的形式参数概念以下的参数类型:
1)Timer或Counter:
指定执行块时要利用的按时器或计数器。
例如概念功能中的输入变量TON1的数据类型为Timer,两次挪用功能时别离设置TON1的实参为T5和T6。
2)块:
指定用作输入或输出的特定块。
例如概念某个输入变量的数据类型为Block_FB,在挪用块时指定块地址(例如FB3)作为实参。
3)POINTER:
指针是变量的地址而不是变量的值。
POINTER参数类型的形参应为地址,例如P#。
在STEP7中,指针也能够用地址作实参(例如M。
4)ANY:
用于将任意的数据类型传递给声明的形参。
ANY可用于实参的数据类型未知,或实参能够利用任意数据类型的情形。
例如P#BYTE10表示DB2中的DBB50~DBB59。
ANY也能够用地址作实参,例如和,可是只能指向一个变量。
5)UDT:
用户自概念的数据类型。
3.功能块(FB) 功能块是用户编写的有自己的存储区(背景数据块)的程序块,功能块的输入、输出变量和静态变量(STAT)寄存在指定的背景数据块(DI)中,临时变量存储在局部数据堆栈中。
功能块执行完后,背景数据块中的数据可不能丢失,可是可不能保留局部数据堆栈中的数据。
4.背景数据块背景数据块是专门指定给某个功能块(FB)利用的数据块,它是FB专用的工作存储区。
背景数据块用来保留FB的实参和静态数据,背景数据块中的数据是自动生成的。
它们是功能块的变量声明表中的数据(不包括临时变量)。
挪用功能块时应指定对应的背景数据块。
5.功能与功能块的区别 FB和FC均为用户编写的子程序,局部变量表中均有IN、OUT、IN_OUT和TEMP变量。
FC的返回值Ret_Val事实上属于输出参数。
下面是FC和FB的区别:
1) 功能块有背景数据块,功能没有背景数据块。
2)只能在功能内部访问它的局部变量。
其他逻辑块能够访问功能块的背景数据块中的变量。
3)功能没有静态变量(STAT),功能块有保留在背景数据块中的静态变量。
功能若是有执行完后需要保留的数据,只能寄存在全局变量(例如共享数据块和M区)中,可是如此会阻碍功能的可移植性。
若是功能或功能块的内部不利用全局变量,只利用局部变量,不需要作任何修改,就能够够将它们移植到其他项目。
若是块的内部利用了全局变量,在移植时需要考虑每一个块利用的全局变量是不是会与别的块产生地址冲突。
4)功能块的局部变量(不包括TEMP)有初始值,功能的局部变量没有初始值。
挪用功能时应给所有的形参指定实参。
挪用功能块时能够不设置某些输入、输出参数的实参,现在这些参数将利用背景数据块中的初始值。
1.中断与中断程序 有很多PLC内部或外部的事件是随机发生的,例如外部开关量输入信号的上升沿或下降沿、通信事件、高速计数器的当前值等于设定值和按时中断等,事前并非明白这些事件何时发生,可是它们显现时需要尽快地处置它们,PLC用中断来快速处置上述事件。
例如系统显现故障时,可能引发多个断路器接踵跳闸。
为了分析故障的起因,需要及时准确记录事故发生的时刻。
能够用硬件中断来完成这一任务。
由于PLC的扫描工作方式,一般按时器的按时误差专门大,定不时刻到了也不能马上去向理要作的情形。
能够用按时中断来实现高精度按时,在定不时刻到时CPU自动挪用按时中断程序。
在显现一个中断事件时,当前正在执行的程序在当前指令执行完后被停止执行(被中断),操作系统将会挪用一个用户编写的分派给该事件的中断程序(S7-300/400称为组织块)。
中断程序被执行完后,被暂停执行的程序将从被中断的地址开始继续执行。
这一进程不受PLC扫描工作方式的阻碍,因此使PLC能迅速响应中断事件。
换句话说,中断程序不是在每次扫描循环中处置,而是在需要时才被及时地处置。
2.中断的优先级 中断事件有不同的优先级,高优先级的中断程序能够中断低优先级的中断程序。
若是在执行中断程序时,又检测到一个中断请求,CPU将比较两个中断源的中断优先级。
若是优先级相同,依照产生中断请求的前后顺序进行处置。
若是后者的优先级比正在执行的中断源的优先级高,将中止当前正在处置的中断程序,改成挪用较高优先级的中断源的中断程序,这种处置方式称为中断程序的嵌套挪用。
3.中断的操纵 不是所有的用户都需要PLC的中断功能,用户一样也不需要处置所有的中断事件,因此许诺用户用指令来操纵是不是需要中断和需要哪些中断。
S7-200的中断许诺指令EI许诺处置中断事件。
至于需要处置哪些中断事件,需要单独设置。
禁止中断指令DI禁止处置所有的中断事件。
S7-200进入RUN模式时自动禁止中断,在RUN模式执行中断许诺指令后,各中断事件发生时是不是会执行中断程序,取决于是不是执行了该中断事件的中断连接指令ATCH。
中断分离指令DTCH用来断开某个中断事件与中断程序之间的联系,从而禁止单个中断事件。
4.编写中断程序应注意的问题 因为不能预知系统何时挪用中断程序,为了幸免在中断程序中改写其他程序利用的存储器,在中断程序中应尽可能利用局部变量。
应优化中断程序,使中断程序尽可能短小,以减少中断程序的执行时刻,减少对其他处置的延迟,不然可能引发主程序操纵的设备操作异样。
设计中断程序时应遵循“越短越好”的格言。
为了减少中断程序的执行时刻,能够在中断程序设置一个软件标志,在主程序中依照标志处置关于快速性要求不是很高、执行时刻很长的任务。
5.中断程序什么缘故没有输入、输出变量?
中断程序不像子程序那样,被用户程序挪用,而是在中断事件发生时,由操作系统挪用,因此S7系列PLC的中断程序不需要输入参数和输出参数,它的局部变量表中只有临时变量。
S7-300/400的中断程序称为组织块,它有自动生成的20字节的临时局部变量,包括了与触发组织块的事件有关的信息,它们由操作系统提供。