欢迎来到西门子工业支持中心网站!
欢迎来到西门子工业支持中心网站!
悬赏:5分 | 解决时间:2009-11-13 13:13
产品版区:
SIMATIC S7-300(F)/S7-400(F/H/FH)
寻找
如题,我在SCL编程中有一段程序只在开始时运行一次,想通过检测启动信号的上升沿来控制,那位大侠能来帮帮我?
小程序:
最佳答案
// Block Parameter
VAR_INPUT // Input Parameter
Start_PB:BOOL; // 1=Start Button
Stop_PB:BOOL; //1=Stop Button
RdyOn_FB:BOOL; //1=Ready On
Fault_FB:BOOL; //1=Fault
END_VAR
VAR_OUTPUT // Output Parameter
ORD_RUN:BOOL; //1=Order Run;0=Order Stop
VAR_VAR
BEGIN // Code Section
IF RdyOn_FB AND (Fault_FB=0) AND (Stop_PB=0) THEN
IF Start_PB THEN
ORD_RUN:=1;
END_IF;
ELSE
ORD_RUN:=0;
END_IF;
END_FUNCTION_BLOCK
四、以上代码是一段电机单向启/停带保护的驱动控制程序功能块。试试看,满足启动条件RdyOn_FB=1、Fault_FB=0后,启动命令按钮Start_PB和停止命令按钮Stop_PB的上升沿信号,能控制输出信号ORD_RUN发生变化吗!
五、另外,SCL工具主要用于编写用户自定义功能块程序,一般不用于将产生的上升沿/下降沿信号外部输出,而外部也极少使用它,所以仅用于内部程序使用。内部程序使用它时,则不必编写一段产生上升沿/下降沿信号的变量程序,而直接使用“IF THEN”和“ELSE”语句就可以了。
回答者:
剑忠
回答时间:2009-11-07 11:45
提问者对于答案的评价:
不错,醍醐灌顶。。。。感谢!!!
参考
http://sqzth.plcjs.cn/archives/2008/200811101772.html
上升沿就是在一个扫描周期有效,你的一段程序只在开始时运行一次,把他直接写在初始化组织块OB100里就行了,不用上升沿
和-(N)-指令一样需要一个暂存位,不难。
见《SCL编程技巧》:其中第4节如何检测脉冲沿)有答案。连接
http://www.gongkong.com/Common/Details.aspx?c=1&m=4&l=6&Type=article&CompanyID=%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20&Id=4-94E6-4733313BE6A1
现赠您1张1847体验会员卡,可免费领取,畅学1847会员内容,是否领取?
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!