找答案的高端用户(找答案钻石及双钻级别的用户)将尽可能从此问题下的所有回
答中,为您推荐最佳答案。届时您可以根据推荐数采纳答案。
如果自提问时间起7天内您仍无法选出最佳答案,您可以选择“无满意答案”关闭此问题。
一、SCL工具是一种高级语言,对于“置位(SET)”和“复位(RESET)”的称呼,以及“上升沿(—|P|—)”、“下降沿(—|N|—)”这类指令是针对STL和LAD等这些低级的汇编语言而言的。所以“置位(SET)”、“复位(RESET)”、“上升沿(—|P|—)”、“下降沿(—|N|—)”这类指令也是为这些低级语言而设置的。你见过C、C++、C#、VB等这些高级语言有这些指令语句吗!
二、关于SCL工具编程中这些指令功能的实现主要是依靠“IF THEN”和“ELSE”语句实现的。
三、别看“IF THEN”和“ELSE”语句简练,但它可比““置位(SET)”、“复位(RESET)”、“上升沿(—|P|—)”、“下降沿(—|N|—)”这些指令指令功能更强大。举例如下:
FUNCTION_BLOCK FB3
TITLE='MOTO DRIVE'
VERSION:'3.0'
AUTHOR :XYZ
NAME :M_DRV
FAMILY :MOTO
// 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”语句就可以了。
首次回答问题,获得
双倍西币积分!
立即成为技术知识分享的一员!
找答案微信小程序
提问
搜索
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!