[西门子] GxWork2结构化编程三 写一个继电器检测FB 及模拟运行

[复制链接]
查看115 | 回复1 | 2024-1-29 19:42:54 | 显示全部楼层 |阅读模式
GxWorks2的结构化编程,使用两种编程方式,LAD/FBD梯形图和功能块方式,以及ST文本语言方式。

实验内容:1,用ST语言写一个继电器检测FB块,根据继电器线圈和常开触点状态分别计时,超出设定限值,认为继电器故障。2,主程序使用LAD/FBD方式,调用上述FB块,分别对两个时间继电器实现检测,3,使用模拟运行方式,对上述程序进行模拟运行。

一,ST文本编写继电器检测FB

1,在左侧导航 >工程>程序部件>FB/FUN,在"FB/FUN"上打开右键菜单,选“新建数据”。



2,在左侧导航"FB/FUN"下增加了KtCheck条目,打开"局部标签",在局部标签中新建变量表。



VAR_INPUT:输入变量;

VAR_OUTPUT:输出变量;

VAR_IN_OUT:输入/输出变量;

VAR:  私有变量,其他程序调用(实例化)后,作为该实例的专有变量。

3,打开"程序本体",在编辑器中输入代码。

主要逻辑:

1,根据外部信号自检,外部输入自检信号,信号上升沿复位各计时器,和错误标志。先对线圈供电,收到常开触点闭合信号后,停止线圈供电;对两种情况分别计时,线圈得电和触点打开,线圈失电和触点闭合,若计时时间超出输入的限值,即置位故障标志。期间外部自检信号保持为ON;

2,正常运行时检测,外部线圈指令输入,根据指令状态对线圈供电,分别计时,若计时时间超出输入的限值,即置位故障标志。

3,计时通过特殊寄存器D8010实现,D8010=程序扫描时间,单位0.1ms,FB输入变量中的时间限值单位0.1s(100ms)。







二,在主程序中调用FB

1,在左侧导航 >工程>程序部件>main,其默认是“结构化梯形图/FBD”,打开编辑窗口,添加程序。



1),启动脉冲信号置位自检标志.



2),在导航栏“FB/FUN"下,选择“KtCheck”,右键菜单打开属性,可以选择是否“使用EN/ENO”,若不勾选,拖入到程序编辑器中时,块中没有EN输入点和ENO输出点。



3),在全局标签表中,新建变量“Kt1Check”和“Kt2Check”,类型为“KtCheck”.



4),将左侧FB/FUN下的KtCheck拖入编辑窗,或者点任务条上的图标,打开右侧部件选择窗,在FB栏下,将KtCheck拖入编辑窗。



5),为KtCheck的FB块,选择实例化变量,并连接各输入/输出变量。





6),复位自检标志。每个继电器线圈on时间限值和off时间限值相加,取其大者,再加20*0.1ms,经过上述时间后自检标志复位。



三,模拟运行

两个时间继电器的软元件地址:

1#线圈bCoilKt1>Y21 、1#常开触点bSignKt1>X30 ;

iTmKt1Pon>D1104、iTmKt1Poff>D1105;

2#线圈bCoilKt1>Y22、1#常开触点bSignKt2>X31 ;

iTmKt2Pon>D1110、iTmKt2Poff>D1111;

菜单>调试>模拟开始/停止:



工具>I/O系统设置:

建立软元件值输入的关系图表,保存执行I/O系统设定。



在仿真器中点“RUN”运行程序。



(完)


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
loveplc | 2024-1-30 22:44:24 | 显示全部楼层
总结的不错
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则