9
①STL形式的打开主控继电器指令“MCR(”。使用“MCR(”打开一个MCR区域指令,可以将RLO保存在MCR堆栈中,并打开一个MCR区域。MCR区域是编程在指令“MCR(”和相应指令“)MCR”之间的指令。指令“MCR(”和“)MCR”必须总是组合使用。
如果RLO =1,则MCR激活。而在该MCR区中的MCR相关指令正常执行。如果RLO =0,则MCR去激活。而在该MCR区中的MCR相关指令根据表3-79执行。
表3-79 MCR的信号状态
MCR的信号状态
MCR的信号状态
②LAD形式的主控继电器接通指令-(MCR>)。“-(MCR<)”(主控继电器区打开指令)用于将RLO保存在MCR堆栈中。以下元素与MCR有关,并在打开一个MCR区时,受保存在MCR堆栈中的RLO状态的影响:
-(#) 中间输出
-( ) 输出
-(s) 输出置位
-(R) 输出复位
RS 复位触发器
SR 置位触发器
MOVE 赋值
①STL形式的主控制继电器断开指令“)MCR”。
如果RLO =1,则MCR激活。而在该MCR区中的MCR相关指令正常执行。
如果RLO =0,则MCR去激活。
“MCR(”:开始MCR区域;“)MCR”:结束MCR区域。
MCR由一个1位宽、8位深的堆栈控制。当所有8个输入项都为“1”时,MCR激活。使用“MCR(”指令,可以将RLO位复制到MCR堆栈中。使用“)MCR”指令,可以删除堆栈中的最后一个输入项,并总是空出*1层。
块调用指令( CALL)用来调用功能块(FB)、功能(FC)、系统功能块(SFB)或系统功能( SFC),或调用西门子预先编好的其他标准块。
在CALL指令中,FC、SFC、FB和SFB是作为地址输入的,逻辑块的地址可以是**地址或符号地址。CALL指令与RLO和其他任何条件无关。在调用FB和SFB时,应提供与它们配套的背景数据块(Instance DB)。而调用FC和SFC时,则不需要背景数据块。处理完被调用的块后,调用它的程序继续其逻辑处理。在调用SFB和SFC后,寄存器的内容被。恢复。
使用CALL指令时,应将实参(Actual Parameter)赋给被调用的功能块中的形参(Formal Parameter),并**实参与形参的数据类型一致。
使用语句表编程时,CALL指令中被调用的块应是已经存在的块,其符号名也应该是已经定义过的。
在调用块时可以通过变量表交换参数,用编程软件编写语句表程序时,如果被调用的逻辑块的变量声明表中有IN、OUT和IN_OUT类型的变量,则输入CALL指令后编程软件会自动地打开变量表,只需对各形参填写对应的实参即可。
在调用FC和SFC时,必须为所有的形参*实参。调用FB和SFB时,只需*上次调用后必须改变的实参。由于FB被处理后,实参储存在背景数据块中。如果实参是数据块中的地址,必须*完整的**地址,如DB1. DBW2。
逻辑块的IN(输入)参数可以*为常数、**地址或符号地址。OUT(输出)和IN_OUT(输入_输出)参数必须*为**地址或符号地址。
CALL指令保存被停止执行的块的编号和返回地址及当时打开的数据块的编号。此外,CALL指令关闭MCR区,生成被调用的块的局域数据区。
①CALL块调用指令:CALL<逻辑块标识符>。使用该指令,可以调用功能(FC)或功能块( SFB)、系统功能(SFC)或系统功能块(SFB),或调用由西门子公司提供的标准预编程块。使用CALL块指令,可以调用作为地址输入的FC和SFC或FB和SFB,与RLO或其他条件无关。如果使用该指令调用一个FB或SFB,必须提供具有相关背景数据块的程序块。在被调用块处理完后,调用块程序继续逻辑处理。逻辑块的地址可以***,也可相对*。在SFB、SFC调用后,保存寄存器的内容。
调用块可通过一个变量表与被调用块交换参数。
如果调用一个功能块(FB)、系统功能块(SFB)、功能(FC)或系统功能(SFC),并且被调用块的变量声明表中有IN、OUT和IN_OUT声明,则这些变量作为一个形式参数表被添加到调用块中。如果调用的是一个功能(FC)和系统功能(SFC),则必须在调用逻辑块中为声明的形式参数赋予实际参数。
如果调用的是功能块( FB)和系统功能块(SFB),只需定义与以前调用相比必须进行修改的实际参数。在处理完功能块后,实际参数保存在背景数据块中。如果实际参数是一个数据块,则必须*完整的**地址,如DB1、KBW2。
IN参数可作为常数、**地址或符号地址定义。OUT和IN_OUT参数必须作为**地址或符号地址定义。必须**所有地址和常数与要传送的数据类型相符。
调用指令可将返回地址(选择符和相对地址)、两个当前数据块的选择符及MA位保存在B(块)堆栈中。此外,调用指令还可去激活MCR的相关性,然后生成被调用块的本地数据范围。
编程示例1:为FC6调用赋值参数
CALL FC6
形式参数 实际参数
NO OF TOOL :=MW100
TIMEOUT :=MW110
FOUND :=Q0.1
ERROR :=Q100.0
编程示例2:无参数调用一个系统功能( SFC)
CALL SFC43 说明:调用SFC43,重新触发看门狗定时器(无参数)
编程示例3:使用背景数据块DB1调用FB99
CALL FB99.DB1
形式参数 实际参数
MAX_RPM :=#RPM1_MAX
MIN_RPM :=#RPM1
MAX_ POWER :=#POWER1
MAX_TEMP :=#TEMP1
每一次功能块(FB)或系统功能块(SFB)调用都必须有一个背景数据块。在上述举例中,数据块DB1必须在调用之前已存在。
②调用功能块指令:CALL FB nl、DB nl。使用该指令,可调用用户定义的功能块(FB)。调用指令能够调用作为地址输入的功能块,与RLO或其他条件无关。如果使用调用指令调用一个功能块,必须为它提供一个背景数据块。在处理完被调用块后,调用块程序继续处理。逻辑块的地址可以是**地址,也可以是符号地址。
调用块可通过一个变量表与被调用的块交换参数。
如果调用一个功能,并且调用块的变量声明表中有IN、OUT和IN_OUT声明,则这些变量作为一个形式参数表被添加到用于调用块的程序中。
由于在功能块处理完之后,实际参数保存在背景数据块中,当调用功能块时,只需定义与以前调用相比必须修改的实际参数。如果实际参数是一个数据块,则必须*完整的**地址,如DB1、DBW2。
IN参数可作为常数、**地址或符号地址定义。OUT和IN_OUT参数必须作为**地址或符号地址定义。必须**所有地址和常数与要传送的数据类型相符。
调用指令可将返回地址(选择符和相对地址)、两个当前数据块的选择符及MA位保存在B(块)堆栈中。此外,调用指令还可去激活MCR的相关性,然后生成被调用块的本地数据范围。
编程示例:使用背景数据块DB1调用FB99
CALL FB99,DB1
形式参数 实际参数
MAX_RPM :=#RPM1_MAX
MIN_RPM :=#RPM1
MAX_POWER :=#POWER1
MAX_TEMP :=#TEMP1
每一次功能块( FB)调用都必须有一个背景数据块。在上述举例中,数据块DB1必须在调用之前已存在。
③调用功能指令:CALL FCn。如果使用的是语句表编辑器(STL Editor),则n必须指向现有有效块。在使用之前,还必须定义符号名。
使用该指令,可调用功能( FC)。调用指令能够调用作为地址输入的功能(FC),与RLO或其他条件无关。在处理完被调用块后,调用块程序继续处理。逻辑块的地址可以***,也可相对*。
调用块可通过一个变量表与被调用的块交换参数。
如果调用一个功能,并且调用块的变量声明表中有IN、OUT和IN_OUT声明,则这些变量作为一个形式参数表被添加到用于调用块的程序中。
在调用功能时,必须在调用逻辑块中为声明的形式参数赋予实际参数。
IN参数可作为常数、**地址或符号地址定义。OUT和IN_OUT参数必须作为**地址或符号地址定义。必须**所有地址和常数与要传送的数据类型相符。
调用指令可将返回地址(选择符和相对地址)、两个当前数据块的选择符及MA位保存在B(块)堆栈中。除此之外,调用指令还可去激活MCR的相关性,然后生成被调用块的本地数据范围。
编程示例:为FC6调用赋值参数
CALL FC6
形式参数 实际参数
NO OF TOOL :=MW100
TIMEOUT :=MW110
FOUND :=Q0.1
FRROR :=Q100.0
④调用多背景块指令:CALL#变量名。通过使用一个功能块的数据类型声明一个静态变量,可以生成一个多背景块。在程序元素目录中只包含已声明的多背景块。
⑤条件调用指令:CC<逻辑块标识符>。使用该指令,可以在RLO =1时调用一个逻辑块。该指令用于无参数调用FC或FB类型的逻辑块。除了不能使用调用程序传送参数之外,CC指令与CALL指令的用法相同。该指令可将返回地址(选择符和相对地址)、两个当前数据块的选择符及MA位保存在B(块)堆栈中,去激活MCR相关性,生成被调用块的本地数据范围,并开始执行调用的程序代码。
逻辑块的地址可以***,也可相对*。
编程示例1:
A I 2.0 说明:检查输入I2.0的信号状态
CC FC6 如果I2.0为“1”,调用功能FC6
A M 3.0 如果I2.0=1,从调用功能返回处执行;如果I2.0=0,直接在A I2.0语句后执行
如果CALL指令调用的是一个功能块(FB)或一个系统功能块(SFB),必须在语句中*一个背景数据块(数据块号)。对于使用CC指令的调用,不能将一个数据块分配给语句中的地址。
根据所使用的程序段,程序编辑器( Program Editor)可以在从梯形逻辑编程语言转换为语句表编程语言过程中,生成UC指令或CC指令。
编程示例2(功能块FB1的背景数据块是DB1,“:=”前面是用符号地址表示的形参,“:=”后面是实参):
CALL FB1,DB1
Switch_On :=I20.0 说明:将实参I20.0赋给形参Switch_On
Switch_Off :=I20.1
Failure :=I20.2
ActuaLSpeed :=MW2
Engine_On :=Q5.0
Preset_Speed_Reached:=Q5.1
CALL SFC43 调用SFC43,重新触发监控定时器(无参数)
每一个FB和SFB都必须有一个背景数据块,上例中在调用FB1之前,FB1和背景数据块DB1必须是已经存在的。
⑥无条件调用指令UC( Unconditional Block Call)和条件调用指令CC( Conditional Block Call)。用于调用没有参数的FC和SFC。其使用方法与CALL指令相同,只是在调用时不能传递参数。CC指令在逻辑运算结果RLO =1时才调用块。用CC指令和UC指令调用块时,不能使用背景数据块。下面是使用CC指令和UC指令的例子。
A I0.1 说明:刷新RLO
CC FC6 如果RLO=1,调用没有参数的功能FC6
L IW4 从FC6返回后执行,或在I0.1=0时不调用FC6,直接执行本指令
UC FC2 无条件调用没有参数的功能FC2
在CALL指令中,FC、FB、SFC和SFB是作为地址输入的,其地址可以是**地址,或者是符号地址。在调用FB和SFB时,必须提供与之相对应的背景数据块;而调用FC和SFC时,不需调用背景数据块。
在调用时,应将实参赋予被调用功能中的形参,并确保实参和形参数据类型相同,并且在FC和SFC的调用中,必须为所有形参*实参,而调用FB和SFB,则只需*上次调用后必须改变的实参。
FB功能块的具体调用(指令表程序)如下。
CALL FB1,DB1 说明:调用FB1,其背景数据块为DB1
MAX :=MW10 MAX为FB1定义的参数,将MW10的值赋予MAX
MIN :=MW20 将MW20的值赋予FB1参数MIN
POWER_ON :=I 0.0 将I0.0赋予FB1参数POWER_ON
POWER_OFF:=I 0.1 将I0.1赋予FB1参数POWER_OFF
程序中调用了背景数据块DB1,并将实参(“;=”之后的变量)赋予形参(“;”之前的变量)。
规格化(个人感觉不是必须要规格化,整个FB41功能块统一量纲就行了)
PID参数中重要的3个变量,给定值(SP_INT),反馈值(PV_IN)和输出值(LMN)都是用0.0~100.0之间的实数表示。
因此,需要将模拟输入转换为0.0~100.0的数据,或将0.0~100.0的数据转换为模拟输出,这个过程称为规格化
规格化的方法:(即变量相对所占整个值域范围内的百分比 对应与27648数字量范围内的量)
对于给定值(SP_INT)和反馈值(PV_IN),执行:变量*100/27648,然后将结果传送到PV-IN和SP-INT
对于输出变量 ,执行:LMN*27648/100,然后将结果取整传送给PQW即可。
3、一般使用循环中断组织块调用FB41,一般不用OB1,因为OB1的扫描周期不是确定的。
4、FB41的输入输出参数
In
<1、COM_RST:BOOL,初始化FB41。设置为1时,积分微分的累计清零。不会自动复位,需要程序复位COM_RST。一般使用如下:
可以在OB100、OB101、OB102里面写两句话
AN “COM_RST” //如果初始化标志位是0
S “COM_RST” //将初始化标志位置1
在OB1的最后写上两句话,复位初始化标志位
A “COM_RST” //如果初始化标志位1
R “COM_RST” //将初始化标志位复位
PID的初始化可以通过在OB100中调用一次,将参数COM-RST置位,当然也可在别的地方初始化它,关键的是看程序需要;
<2、MAN_ON:BOOL,设置为0为自动调整;设置为1为手动调整;这里会涉及到一个自动和手动模式的切换问题:无扰动切换
PID调节器在自动→手动、或手动→自动的瞬间,PID的输出是不变化的。
从手动切换到自动,自不用说,但是从自动到手动会出现明显跳动,一般可以这样处理:从自动切换到手动增加一个斜坡处理。将自动时的输出换算成比例值,一直加载在MAN口上,切换后,通过斜坡,将MAN口上的值由原来的值过度到手动比例设定值。
此端口和<11处的MAN口配合使用。
<3、PVPER_ON:BOOL,过程值选择,此值与PV_IN和PV_PER有关系
设置为1时,直接将PIW(监测实际值端口)输入PV_PER口
设置为0时:将转化后、滤波后且规格化后(等处理过的)数据输出PV_IN口
<4、P_SEL、I_SEL以及D_SEL:BOOL,比例、积分、微分作用的选择,设置为0,相应部分不起作用。
<5、INT_HOLD:BOOL,积分保持,设置为1时,积分不累加,一般不设置。
<6、I_ITL_ON:BOOL,积分初值给定;
I-ITLVAL:REAL,积分初值。
当I_ITL_ON设置为1时,使用I-ITLVAL变量积分初值;当I_ITL_ON设置为0时,积分初始值为0。一般当发现PID功能的积分值增长比较慢或系统反应不够时可以考虑使用积分初值;此功能很少用到。
<7、CYCLE:TIME,PID采样周期。
<8、SP_INT:REAL,PID的设定值。
<9、PV_IN :REAL,PID的反馈值。数据类型为Real,显然是处理后的数值,见<3。
<10、PV_PER:WORD,PID的反馈值。数据类型为Word,显然直接PIW输入,见<3。
<11、MAN:Real,手动模式的输入端口。
<12、GAIN:REAL,比例增益。
<13、TI:TIME,积分时间。
<14、TD:TIME,微分时间。
<15、TM_LAG:TIME,多长时间开启微分,由于微分会削弱达到稳定值时间,可以延时启动微分。通常不设置。
<16、DEADB_W:REAL,死区宽度。现场监控达到设定值后,并不稳定到设定值,如果出现小范围浮动,会出现执行器来回动作问题,可以考虑用死区来降低灵敏度。此值为百分数。
<17、LMN_HLM、LMN_LLM:REAL,输出值上下极限。此处需要搭配<19处使用,即**LMN_HLM*LMN_FAC=100,程序中默认LMN_HLM为100.0,LMN_FAC为1.0,所以可以不用去设置。如果想设置,需要**上面的公式。
<18、PV_FAC、PV_OFF:REAL,PV_FAC=
传感器
的量程/100。只有在PVPER_ON为1时起作用,目的为统一单位;为零时,需要规格化,单位已经统一,所以此处无用。
<19、LMN_FAC、LMN_OFF:REAL,输出值的量程。
<20、DISV:REAL,允许的扰动量,串级系统使用,一般不设置;
OUT
<1、LMN:REAL,输出实际值占满量程的百分比。
<2、LMN_PER:WORD,PQW输出
<3、QLMN_HLM、QLMN_LLM:BOOL,QLMN_HLM:输出较大值时输出1;QLMN_LLM:输出较小值时输出1,可以作为工、变频切换(例如一台泵工频,一台泵要求变频,调节恒压时)的点位来用。
<4、LMN_P、LMN_I、LMN_D:REAL,PID输出中P、I、D的分量。三者的和为输出值。
<5、PV:REAL,实际压力值
<6、ER:REAL,偏离值,设定值与实际值之差。
以上部分加入了自己的想法,如有错误望各位大侠批评指导。
SIMATIC S7-200 是西门子公司收购的一款
plc
产品,所以其编程语言与其他西门子产品差异较大,但是它自成一体:特别紧凑但是具有惊人的能力-特别是有关它的实时性能-它速度快,功能强大的通讯方案,并且具有操作简便的硬件和软件。而且还有更多特点:SIMATIC S7-200 Micro PLC具有统一的模块化设计-目前不是很大,但是未来不可**的定制解决方案。这一切都使得SIMATIC S7-200 Micro PLC在一个紧凑的性能范围内为自动化控制提供一个非常有效和经济的解决方案。后来西门子公司推出一体化的控制方案200PLC逐渐被1200PLC替代,而且国外的西门子200PLC已经完全停产了。但是不可否认的是这款PLC曾经的辉煌,而且国内还在生产使用,如西门子226cn,后面带cn的都是国内生产,而且现在只有国内还在生产了。
西门子200除了PLC本身的4层加密以外还有一个子程序单独加密功能,即pou密码。灵活运用pou密码可以将部分重要子程序加密而非重要程序部分公开方面维护人员查找故障,而且用指令向导创建的功能其原始子程序也是加密状态的,如下图:
如上图是用PID向导创建的PID程序,而PID所包含的几个功能子程序都是加密的,看不到里面内容,现在我们使用工具破解一下。而破解过程非常简单,去网上下载破解工具如下:
如上图是用PID向导创建的PID程序,而PID所包含的几个功能子程序都是加密的,看不到里面内容,现在我们使用工具破解一下。而破解过程非常简单,去网上下载破解工具如下:
注意破解程序对应你软件的版本号找到你所使用软件的版本对应的破解程序,将里面的内容复制替换到软件安装根目录下的bin文件夹下即可。
注意破解程序对应你软件的版本号找到你所使用软件的版本对应的破解程序,将里面的内容复制替换到软件安装根目录下的bin文件夹下即可。
注意破解程序对应你软件的版本号
找到你所使用软件的版本对应的破解程序,将里面的内容复制替换到软件安装根目录下的bin文件夹下即可。
注意在复制替换的过程中要关闭软件,不然会报程序正在使用中无权操作。替换完成后打开软件,找到查看——属性——保护点击验证便可以了。如下图
注意在复制替换的过程中要关闭软件,不然会报程序正在使用中无权操作。替换完成后打开软件,找到查看——属性——保护点击验证便可以了。如下图
点击验证,破解成功后可以看到显示此POU现已有查看和编辑的授权了,点击确定就可以查看被加密的子程序本身了
点击验证,破解成功后可以看到显示此POU现已有查看和编辑的授权了,点击确定就可以查看被加密的子程序本身了
现在已经可以查看PID子程序了使用本破解功能你可以查看程序自带的PID,高速HSC,网络组态的子程序了,学习这些子程序可以加深你对这些功能的使用和调用,以提高自己的编程技能。
现在已经可以查看PID子程序了使用本破解功能你可以查看程序自带的PID,高速HSC,网络组态的子程序了,学习这些子程序可以加深你对这些功能的使用和调用,以提高自己的编程技能。
现在已经可以查看PID子程序了
使用本破解功能你可以查看程序自带的PID,高速HSC,网络组态的子程序了,学习这些子程序可以加深你对这些功能的使用和调用,以提高自己的编程技能。
后记:本破解教程适合西门子200的学习使用者,方便大家交流学习,切不可以破解别人的程序为自己牟利,这样是不道德的。
后记:本破解教程适合西门子200的学习使用者,方便大家交流学习,切不可以破解别人的程序为自己牟利,这样是不道德的。