西门子S120控制单元6SL3040-0PA01-0AA0
西门子S120控制单元6SL3040-0PA01-0AA0
1.ramp_p块概述
在pcs 7中, ramp_p实现了模拟量的斜坡函数功能。
(注:在pcs 7 v7.1 **过程库 (advanced process library, apl)中,很多功能块,例如pid控制块,已经集成了更为丰富的斜坡控制功能,详情请参考文档:“pcs 7 v7.1 apl库中的斜坡(ramp)功能”
ramp_p的块号是fb52,通过cfc进行调用,安装在循环中断ob(ob30~ob38)中。以pcs 7 v7.0 sp3为例,如图1,在pcs 7 library v70中,blocks+templates\blocks下control中找到ramp_p,拖入相应cfc中即可。
2.ramp_p块调用及基本管脚介绍
ramp_p功能块管脚如图2。更详细内容可选中ramp_p块,按f1键参考在线帮助信息。
图 2 ramp_p块管脚
管脚说明:
bbbm: 斜坡上升斜率
drlm: 斜坡下降斜率
u: 模拟量输入
rate_off: 关闭斜坡功能
qlim_u: 斜坡上升标志位
qlim_d: 斜坡下降标志位
v: 模拟量的斜坡输出
3.ramp_p功能块工作方式
rate_off=1时, 关闭斜坡功能,v=u。
rate_off=0时, 输出v会以bbbm或者drlm为斜率上升或下降。以ramp_p与ctrl_pid的sp_ext连接为例,当前sp_ext=100;
图 3 ramp_p连接实例
如果新的sp_ext=200,则ramp_p的u=200, v输出会以bbbm=3为斜率上升,qlm_u=1;如果新的sp_ext=0, 则ramp_p的u=0, v输出会以drlm=3为斜率下降, qlm_d=1。
下面的实例描述了共享设备的*简单配置:两台io控制器共享一个io设备的子模块。两台io控制器位于同一个step 7项目中,优点是一致性检查自动完成。
步骤
为了能够使用共享设备功能,需要在simatic管理器和hw config中执行某些组态步骤。
准备事项
1.在simatic管理器中创建名称为"共享设备项目"的项目。
2.插入两个站(simatic 300)。
3.在hw config中打开站,然后组态带profinet接口的cpu(在此例中为cpu 319-3 pn/dp)。
4.为刚刚创建的站的profinet接口设置参数。
5."保存并编译"各个站。
创建共享的设备
1.在hw config中打开所创建的其中一个站。
2.如屏幕截图所示,使用几个子模块配置分布式i/o系统et 200s(im151-3pn)。
3.使用快捷菜单(鼠标右键)复制刚刚创建的分布式i/o系统。
4.保存硬件配置,然后关闭已配置的站。
5.在hw config中打开早先创建的其它站。
6.若要将分布式i/o系统作为共享设备插入,右击profinet线路。在快捷菜单中选择"粘贴共享"命令。
7.保存硬件配置,然后关闭已配置的站。
已经成功创建了共享设备;现在设置将子模块分配给已配置的站。
分配子模块
必须单独为每个站分配子模块。请牢记对站的更改也将影响其它站!只能将子模块分配给一个站!
1.打开第1个站中分布式i/o系统的属性对话框。
2.跳转到"访问"选项卡。
3.组态对各个子模块的访问。从"数值"列的下拉列表中选择访问的类型。可以在以下两者之间选择:
.不访问子模块:"- - -"
.完全访问子模块:"完全"
4.请注意:设置"完全"自动会导致其它站的设置为"- - -";另一方面,设置"- - -"并不会自动地导致其它站的设置为"完全"。
5.保存并关闭站。
6.对第2个站重复步骤1-4。
7.然后将组态下载至站。
用户程序中的共享设备
共享设备在用户程序中不充当特殊角色。如平常一样对站中分配的子模块进行寻址,其它子模块不接收地址
在实际的项目应用中,某些关键数据的输入需要提示操作人员确认无误后才能进行。如下图所示:
图1
当在输入/输出域中输入数值99并回车后,数据并不立即输入到变量里,而是弹出一个确认的信息窗口。这时候如果选择“是”那么数据将输入到相应的变量,如果选择“否”相应的变量会保持原来的值不变。下面就介绍如何使用wincc的输入/输出域实现这种功能。
1. 前提条件
创建两个数据类型相同的变量 displayvalue和tempvalue,其中displayvalue是实际需要控制的变量,tempvalue作为临时变量使用。如下图所示:
图2
2. 输入/输出域的属性设置
在画面中新建一个输入/输出域,打开属性对话框。选择属性?输出/输入?输出值,在动态部分点击鼠标右键,如下图所示:
图3
打开动态对话框。选择需要控制的变量(本例中变量为:displayvalue),并配置数据类型。如下图所示:
图4
3. 输入/输出域的事件设置
3.1更改动作设置
选择同一个输入/输出域,打开属性对话框。选择事件?属性主题?输出/输入?输入值,在更改动作部分点击鼠标右键,如下图所示:
图5
打开直接连接对话框。来源部分保持默认设置,目标部分选择直接连接到临时变量(本例中为:tempvalue )。如下图所示:
图6
3.2键盘释放动作设置
选择同一个输入/输出域,打开属性对话框。选择事件?键盘?释放,在动作部分点击鼠标右键,如下图所示:
图7
打开c动作编辑器。编写用于判断操作人员是否输入完毕并按下回车的代码。如下图所示:
图8
详细代码如下:
int tempvalue=gettagword("tempvalue");
char szbuffer[20];
sprintf( szbuffer,"bbbbb number:%d",tempvalue);
if ( nchar==13 )//if press enter
{
int xret = messagebox(null,szbuffer,"确认窗口",mb_yesno|mb_iconquestion|mb_systemmodal);//message
if ( xret == idyes )//confirm operate
settagword("displayvalue",tempvalue);// set data
}
当系统运行后,一旦在该输入/输出域中检测到回车信号,系统就会弹出如图1所示的确认窗口。
4.附加说明:
以上内容的测试环境:bbbbbbs xp professional sp2+wincc v 7.0 sp1 asia。关于messagebox函数的详细说明请参考microsoft的相关文档