step7中频率计的问题,

在step7中条用sfb48后,怎么样才能知道读到的是哪个点的频率呢?
 请各路大侠不吝赐教!

最佳答案

使用S7 CPU 31xC的内置功能“频率测量” 
  
 隐藏订货号显示订货号订货号:
 6ES7312-5BD00-0AB0   SIMATIC S7-300, CPU 312C 
 6ES7312-5BD01-0AB0   CPU312C, 10DI, 6DO, 16KB 
 6ES7313-5BE00-0AB0   SIMATIC S7-300, CPU 313C 
 6ES7313-5BE01-0AB0   CPU313C, 16DO, 4AI, 2AO, 32KB 
 6ES7313-6BE00-0AB0   SIMATIC S7-300, CPU 313C-2 PTP 
 6ES7313-6BE01-0AB0   CPU313C-2 PTP, 16DI/16DO, 32KB 
 6ES7313-6CE00-0AB0   SIMATIC S7-300, CPU 313C-2DP 
 6ES7313-6CE01-0AB0   CPU313C-2 DP, 16DI/16DO, 32KB 
 6ES7314-6BF00-0AB0   SIMATIC S7-300, CPU 314C-2 PTP 
 6ES7314-6BF01-0AB0   SIMATIC S7-300, CPU 314C-2 PTP 
 6ES7314-6BF02-0AB0   CPU314C-2PTP, 24DI, 16DO, 4AI, 2AA 
 6ES7314-6CF00-0AB0   SIMATIC S7-300, CPU 314C-2DP 
 6ES7314-6CF01-0AB0   CPU314C-2DP, 24DI, 16DO, 4AI, 2AO 
 6ES7314-6CF02-0AB0   CPU314C-2DP, 24DI, 16DO, 4AI, 2AA 
  
  
  

 

 问题:
 有关于使用S7 CPU 31xC的内置频率计的示例程序吗? 

 解答:
 S7 CPU 31xC的内置频率计是由系统功能块SFB 48控制的。除了控制频率计的输入外,用户也可以通过SFB 48参数化频率计(例如,积分时间、上限/下限)或查询参数化的数据。 

 频率计通过作业(“JOB_ID”输入中的作业号)和相关值(“JOB_VAL”输入中的参数)进行参数化,以此激活作业。只有当上一个作业完成后,才能设置新作业或新参数。而作业的完成情况将在状态寄存器上加以显示。 

 此处可用的功能块(FB 2)使得通过SFB 48给频率计分配参数变得更容易。通过触发位开始写和读作业,此处所需的“JOB_ID”由 程序提供给SFB 48。当作业完成时,触发位会自动重设。 

 功能块内部调用SFB 48。调用SFB 48所需的参数可以从FB 2的调用参数得到。 

 为FB 2提供下列调用接口: 输入参数
  类型
  说明
  
 Modul_adress WORD 模块的I/O地址,十六进制,如同在HW Configuration中的设置(缺省值:W #16#300) 
 Channel_number INT
  使用通道的数目。
 可用的通道数目由CPU决定。
  
 SW_Gate BOOL
  控制软件门。
  
 Enable_output BOOL
  激活手动控制的输出
  
 Control_output BOOL
  直接控制数字输出
  
 输出参数 类型
  说明
  
 STS_Gate BOOL 内部门的状态显示 
 STS_Up BOOL
  向前计数
  
 STS_Down BOOL
  向后计数
  
 STS_Hardwaregate BOOL
  硬件门的状态显示
  
 STS_Output BOOL
  数字输出的状态显示
  
 STS_Measurement BOOL
  测量的状态显示
  
 STS_Overflow BOOL
  发生上溢
  
 STS_Underflow BOOL
  发生下溢
  
 Frequency_value BOOL
  当前频率值
  
 Countervalue DINT
  当前计数器值,每次打开内部门时,从“0”值处重启。
  
 Job_error BOOL
  显示读或写作业中的错误
  
 Error_number WORD
  作业出错号(对Job_error = “1”)
  
 输入/输出参数 类型
  说明
  
 Reset_status BOOL 重设下限、上限和测量的状态位。 
 WR_Lower_limit BOOL
  作业触发“写下限”。
  
 WR_Upper_limit BOOL
  作业触发“写上限”。
  
 WR_Integration_time BOOL
  作业触发“写积分时间”。
  
 WR_Job_value DINT
  相关写作业的值。
  
 RD_Lower_limit BOOL
  作业触发“读当前下限”。
  
 RD_Upper_Limit BOOL
  作业触发“读当前上限”。
  
 RD_Integration_time BOOL
  作业触发“读当前积分时间”。
  
 RD_Read_value DINT
  相关写作业的返回值。
  

 
 表1:FB2的接口说明 

 使用读写作业:
 在相关的触发位(WR_)由“1”触发写作业。已激活作业的要写入的值在“ WR_Job_value”输入中传送。一旦写作业完成,将重设触发位,并且作业值为“0”。一次只能有一个写作业。 

 读作业的处理方法与写作业相同。 触发作业的置位和结束作业的复位都是通过块来完成的。 读入的值在“RD_Read_value”参数中输出。
 返回值组态为输入/输出参数,使得该值也可以由调用程序重置为“0”。 

 重设状态位:
 “Reset_Status”参数上的“1”用于重设状态显示(例如:上溢、下溢)。一旦重设了所有的状态位,块也将重设激活位。 

 错误处理:
 如果在读写作业期间出错,将重设触发位,并且设置“Job_error”位。在“Error number”输出端显示出错代码,以用于进一步的诊断。这依赖于操作模式。出错代码与由SFB 48输出的出错代码相同。出错代码的含义可以从在线帮助或下面提到的手册中找到。& amp; amp; lt; br> 如果正确地完成作业,将会重设作业出错和出错代码。 

 更多信息/手册:
 “S7-300 Automation System CPU 31xC Technological Functions”是文件包中的一部分,
 订货号:6ES7 398-8FA10-8AA,条目号:12429336。 

 下载:
 附上的下载链接包含一个STEP 7项目,它 带有用于调用SFB 48的FB1功能块。采用STL语言对块进行了编程,并 进行了注释。然而,m 对标准应用没有必要改变程序代码。可 以在LAD/FBD/STL程序中直接使用该块。另外,用 户需做的事情只是从标准库中加载块SFB 48。 
 http://support.automation.siemens.com/CN/llisapi.dll?func=cslib.csinfo&lang=zh&siteid=cseus&objid=18475558
  
  
 

提问者对于答案的评价:
??
 

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc352394.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月5日 上午1:09
下一篇 2021年7月5日 上午1:09

相关推荐

发表回复

登录后才能评论