西门子S7-400中央处理器CPU412-2西门子代理商 西门子总代理
西门子S7-400中央处理器CPU412-2西门子代理商 西门子总代理
西门子S7-400中央处理器CPU412-2西门子代理商 西门子总代理
西门子S7-400中央处理器CPU412-2西门子代理商 西门子总代理
PLC程序变量
(1) 变量与参数。“变量”与“参数”是S7中常用的名词,在不同的使用场合有不同的含义。为了防止概念的混淆,可根据不同的用途,将S7中的变量分为“程序变量”与“诊断变量”两大类;将参数分为"程序参数"与"配置参数(组态参数)"两大类。
“诊断变量”用于PLC调试阶段,如“变量表调试”所指的就是“诊断变量”。诊断变量包括的范围很广、凡是PLC中可以赋值或进行显示的信号与数据统称为诊断变量(Varlable),它包括输入、输出、内部标志寄存器、定时器、计数器、数据块中的内容等。
“配置参数(组态参数)”用于PLC硬件的配置(组态),通过“配置参数(组态参数)”的设定,可以定义PLC的组成模块、I/O地址、通信接口等。
“程序变量”与“程序参数”是在PLC程序设计阶段需要使用的“变量”与“参数”。因此,除非特别说明,这里所讲的“变量”均是指“程序变量”,“参数”均是指“程序参数”;而在调试部分,硬件组态(配置)部分所述的“变量”均是指“诊断变量”,“参数”均是指“配置参数”。
S7可以使用的"程序变量"包括程序参数、局部变量(又称临时变量Temporary)、静态变量(Static)3 种基本类型,并且有规定的使用范围。
(2) 变量的作用。在PLC程序中可以使用变量,是S7系列PLC的特点之一。在S7中使用变量可以实现以下功能:
1) 增加程序的通用性。在PLC程序设计阶段,为了提高程序的通用性,可以通过变量使得同一逻辑块用在不同的控制场合。
例如:对于图5-35所示的逻辑块,假设其功能为实现逻辑运算C=B·A;D=D 1,并且采用变量进行编程。
调用该逻辑块时,若对变量A赋值为I0.1、变量B 赋值为I0.2、变量D赋值为MW10、变量C赋值为Q01 时,程序的执行结果为:
Q0.1=I02·I0.1:MW10=MW10 1。
图5-35 变量的作用
2) 便于程序检查。使用了变量后,在调用该逻辑块时,在调用指令中可以显示该逻辑块所需要的相应输入、输出信号(见图5-36),以方便程序设计与检查。
由于S7对变量与符号地址有规定的格式要求(不可以使用S7关键词,有关S7的关键词可以参见附录),因此,在图5-36中已经将图5-35所对应的逻辑块变量A、B、C、D、分别采用了符号地址IN_A、IN_B、OUT_C、INOUT_D进行编程。
图5-36 调用变量编程的块
(3) 变量的分类与使用范围。S7可以使用的"程序变量"包括程序参数、局部变量(又称临时变量Temp)、静态变量(Stat)3种基本类型。
1) 程序参数。S7的程序参数用于传递逻辑块之间的数据。当采用调用式结构时,应通过参数定义执行被调用的逻辑块所需要的数据;也可以通过参数将被调用的逻辑块的执行结果返回给调用的块。
在S7中,从参数的用途与功能上,程序参数可以分为输入参数(IN)、输出参数(OUT)、输入/输出参数(IN_OUT)3种;从参数的性质上可以分为形式参数(Format Parameter)与实际参数(Actual Parameter)2种。
● 输入参数(IN):它是逻辑块执行所需要的基本输入参数,在逻辑块中只能进行"读"操作,必须由调用它的其他逻辑块予以赋值。
例如,在图5-35中,信号A、B在逻辑块中为"触点"信号,它必须由调用它的块将其定义为I0.1、10.2或11.1、11.2等具体而明确的输入地址(可以是juedui地址或符号地址,参见图5-36)。
● 输出参数(OUT):它是逻辑块执行结果存储所需要的基本输出参数,在逻辑块中只能进行"与"操作,必须由调用它的其他逻辑块定义地址,执行结果可以用于其他逻辑块。
例如,在图5-35中的信号C在逻辑块中为输出"线圈"信号,同样必须由调用它的逻辑块将其定义为Q0.1或Q1.1等具体而明确的输出地址(可以是juedui地址或符号地址,参见图5-36)。
● 输入/输出参数(IN_OUT):它是逻辑块执行所需要的基本输入/输出参数,在逻辑块中可以进行“读/写”操作。在逻辑块中一方面要求有“初始值”输入(初始值可以在变量表中设定),另一方面又可以进行结果输出。因此,必须由调用它的其他逻辑块或变量表给定"初始值";但在逻辑块的执行过程中将改变参数值,改变后的输入/输出参数同样可以用于其他逻辑块。
例如,在图5-35中的D在逻辑块需要进行加"1"运算,它必须由调用它的块给定初始值(MW10),运算结果同时又保存在MW10中(参见图5-36)。
● 形式参数与实际参数:在使用了变量后,功能块中所使用的信号与数据只能以“符号”的形式出现,如图5-35中的A、B、C、D等,这些“符号”称为形式参数(Format Parameter)。而在调用块中对“符号”所赋予的实际地址或实际数值,如图5-36中的10.1、10.2、00.1、MW10等称为实际参数(Aetual Parameter)。
2) 局部变量。S7中的局部变量又称为"临时变量(Temporary)",它用于存储逻辑块内中间状态暂存的寄存器(堆栈L),堆栈的状态仅在所在的逻辑块内生效,不可以用于其他逻辑块。
3) 静态变量。静态变量(Static)只能用于功能块FB,它存储在与功能块配套的即时数据块DI中,仅对所调用的FB块有效,结果可以记忆,但只能与FB配套使用,不能用于其他逻辑块。
4) 变量的使用范围。程序变量在逻辑块中的使用有规定的范围,具体如下。
●组织块OB:只能使用临时变量(Temp);
● 程序块FC;可以使用临时变量(Temp)与程序参数输入(IN)、输出(OUT)与输入/输出(IN/out);
● 功能块FB:可以使用全部变量。
PTO发生器输出高速度脉冲串单段多段操作
下列PTO初始化和操作顺序使用“首次扫描”内存位SM0.1以初始化脉冲输出。使用“首次扫描”位调用初始化子程序减少扫描时间,因为随后的扫描不调用此子程序(“首次扫描”位只在转变为RUN模式后在首次扫描时设置)。然而,在应用当中可能有其他限制需要初始化(或重新初始化)脉冲输出。在那种情况下,可以使用另一个条件调用初始化程序。
1.初始化单段操作的PTO输出
一般地,使用子程序为脉冲输出配置和初始化PTO。从主程序调用初始化子程序。使用首次扫描内存位SM0.1初始化被PTO使用的输出为0,并调用子程序完成初始化操作。当使用子程序调用时,随后的扫描不调用子程序,这减少了扫描执行时间,并优化了程序的结构。
在从主程序创建对初始化子程序的调用后,使用下列步骤在初始化子程序中创建对配置脉冲输出Q0.0的控制逻辑:
(1)载入16#85(选择微秒增量)或16#8D(选择毫秒增量)到SMB67设置控制字节。这两个数值都启用PTO/PWM功能,选择PTO操作,设置更新脉冲计数和周期时间数值,选择时基(us 或ms)
(2)将数值载入SMW68,设置周期时间。
(3)将脉冲计数的双字数值载入SMD72中
(4)一旦脉冲串输出完成,要完成相应功能,可以通过将脉冲串完成事件(中断事件19)连接到中断子程序设置一个中断。使用ATCH指令和执行全局中断启用指令ENI来调用此中断程序。
(5)执行PLS指令。
(6)退出子程序。
2.调整单段操作的PTO周期时间
对于单段PTO操作,可以使用中断程序或子程序改变周期时间。当使用单段PTO操作时,要改变中断程序或子程序中的PTO周期时间,可按下列步骤进行:
(l)载入16#81(μs)或16#89(ms)到SMB67,设置控制字节(启用PTOPWM功能、选择PTO操作、选择时基和设置更新周期时间数值)。
(2)将新数值载入SMW68,设置周期时间。
(3)执行PLS指令。在启动新的周期时间的PTO波形前,S7-200先完成现有的PTO操作。
(4)退出中断程序或子程序。
3.改变单段操作的PTO脉冲计数
对于单段PTO操作,可以使用中断程序或子程序改变脉冲计数。当使用单段PTO操作时,要改变中断程序或子程序中的PTO脉冲计数,可按下列步骤进行:
(l)载入16#84(us)或16#8C(ms)到SMB67,设置控制字节(启用PTO/PWM功能、选择PTO操作、选择时基和设置更新脉冲计数数值)。
(2)将新脉冲计数的双字数值载入SMD72。
(3)执行PLS指令。在启动新的周期时间的PTO波形前,S7-200先完成现有的PTO操作。
(4)退出中断程序或子程序。
单段PTO操作示例如图5-77所示。
4.改变单段操作的PTO周期时间和脉冲计数
对于单段PTO操作,可以使用中断程序或子程序改变周期时间和脉冲计数。当使用单段PTO操作时,要改变中断程序或子程序中的PTO周期时间和脉冲计数,可按下列步骤进行:
(1)载入16#85(us)或16#8D(ms)到SMB67,设置控制字节(启用PTO/PWM功能、选择PTO操作、选择时基和设置更新周期时间和脉冲计数数值)。
(2)将新数值载入SMW68,设置周期时间。
(3)将新脉冲计数的双字数值载入SMC72中。
(4)执行PLS指令。在启动带有新的脉冲计数和周期时间的波形前,S7-200先完成现有的PTO操作。
(5)退出中断程序或子程序。
单段PTO操作示例波形图如图5-78所示。
图5-78单段PTO操作示例波形图
5.初始化多段操作的PTO输出
一般地,使用子程序为多段PTO操作的脉冲输出配置和初始化PTO。从主程序调用初始化子程序。使用首次扫描内存位SM0.1初始化被PTO使用的输出为0,并调用子程序完成初始化操作。当使用“首次扫描”调用初始化子程序,随后的扫描不调用子程序,这减少了扫描执行时间。
(1)通过载入下列数值之一到SMB67配置控制字节:16#A0(选择微秒增量)或16#A8(选择毫秒增量)。这些数值都启用PTO/PWM功能、选择PTO操作、选择多段PTO操作和选择时基(微秒或毫秒)。
(2)在SMW168中,载入字大小数值用于启动概要表的V内存偏移量。
(3)使用V内存在概要表中设置段数值。确保段域数(表格的第一个字节)是正确的。
(4)如果在PTO概要图完成后要执行相应的功能,可以通过将脉冲串完成事件(中断事件19)连接到中断子程序来对一个中断进行编程。使用ATCH指令和执行全局中断启用指令ENI(供选用)。
(5)执行PLS指令。
(6)退出子程序。
多段PTO操作示例如图 5-79所示。
联系方式
- 地址:上海松江 上海市松江区石湖荡镇塔汇路755弄29号1幢一层A区213室
- 邮编:201600
- 联系电话:未提供
- 经理:吴悦
- 手机:19514718569
- QQ:2810544350
- Email:2810544350@qq.com