• {{item.name}}
{{item.name}}
{{item2.name}}
更多

编程

star star star star star
0 分
  • 参数设置
  • 硬件组态与安装
  • 安装调试
  • S7-300
发布时间:2024年04月24日
  • 0
  • 1
CPU31XC工作在计数和测量两种不同模式下编程介绍

编程

CPU31XC工作在计数和测量两种不同模式下调用的SFB系统功能块也不相同,计数模式下调用SFB47,测量模式下调用SFB48。

1. 计数模式

在程序编辑窗口中,Library-->Standard Library-->System Function Blocks 中可以找到SFB47:

SFB47可以实现以下功能:

● 通过软件门 SW_GATE 启动/停止计数器
● 启用/控制输出 DO
● 读出状态位
● 读取当前计数值和锁存器值
● 用于读/写内部计数寄存器的作业
● 读出当前周期(不与块互连,但仅在背景数据块中可用)

输入参数
数据类型
在背景数据块中的地址
说明
值的有效范围
缺省值
LADDR
WORD
0
在“HW Config”中指定的子模块 I/O 地址。
如果输入和输出地址不相同,则必须指定两者
中较低的地址。

16#300
CHANNEL
INT
2
通道号:
CPU 312C:0~1
CPU 313C CPU或313C-2 DP/PtP:0~2
CPU 314C-2 DP/PtP:0~3
0
SW_GATE
BOOL
4.0
软件门, 用于计数器启动/停止
TRUE/FALSE
FALSE
CTRL_DO
BOOL
4.1
启用输出控制
TRUE/FALSE
FALSE
SET_DO
BOOL
4.2
输出置位
TRUE/FALSE
FALSE






JOB_REQ
BOOL
4.3
作业请求(正跳沿)
TRUE/FALSE
FALSE
JOB_ID
WORD
6
作业号
不带有功能的作业: 16#00
写入计数值: 16#01
写装载值: 16#02
写入比较值: 16#04
写入滞后: 16#08
写入脉冲持续时间: 16#10
读装载值: 16#82
读比较值: 16#84
读取滞后: 16#88
读取脉冲持续时间: 16#90
0
JOB_VAL
DINT
8
写作业的值
-2^31 到 +2^31-1
0







输出STS_GATE
BOOL
12.0
内部门状态
TRUE/FALSE
FALSE
STS_STRT
BOOL
12.1
硬件门状态(启动输入)
TRUE/FALSE
FALSE
STS_LTCH
BOOL
12.2
锁存器输入状态
TRUE/FALSE
FALSE
STS_DO
BOOL
12.3
输出状态
TRUE/FALSE
FALSE
STS_C_DN
BOOL
12.4
向下计数的状态。
始终指示最后的计数方向。在第一次调用 SFB 之 后,STS_C_DN 的值为 FALSE。
TRUE/FALSE
FALSE
STS_C_UP
BOOL
12.5
向上计数的状态。
始终指示最后的计数方向。在第一次调用 SFB 之 后,STS_C_UP 的值为 TRUE。
TRUE/FALSE
FALSE
COUNTVAL
DINT
14
当前计数值
-2^31 到 2^31 - 1
0
LATCHVAL
DINT
18
当前锁存器值
-2^31 到 2^31 - 1
0






JOB_DONE
BOOL
22.0
作业已完成,可启动新作业
TRUE/FALSE
TRUE
JOB_ERR
BOOL
22.1
错误作业
TRUE/FALSE
FALSE
JOB_STAT
WORD
24
作业错误编号
0 到 FFFF (十六进制)
0

2. 测量模式

在程序编辑窗口中,Library-->Standard Library-->System Function Blocks 中可以找到SFB48:

SFB48可以实现如下功能:

● 通过软件门 SW_GATE 启动/停止
● 启用/控制输出 DO
● 读出状态位
● 读出当前测量值
● 用于读取和写入内部频率计数寄存器的作业

输入参数
数据类型
在背景数据块中的地址
说明
值的有效范围
缺省值
LADDR
WORD
0
在“HW Config”中指定的子模块 I/O 地址。
如果输入和输出地址不相同,则必须指定两者
中较低的地址。

16#300
CHANNEL
INT
2
通道号:
CPU 312C:0~1
CPU 313C CPU或313C-2 DP/PtP:0~2
CPU 314C-2 DP/PtP:0~3
0
SW_GATE
BOOL
4.0
软件门, 用于计数器启动/停止
TRUE/FALSE
FALSE
MAN_DO
BOOL
4.1
启用输出手动控制
TRUE/FALSE
FALSE
SET_DO
BOOL
4.2
输出置位
TRUE/FALSE
FALSE






JOB_REQ
BOOL
4.3
作业请求(正跳沿)
TRUE/FALSE
FALSE
JOB_ID
WORD
6
作业号
不带有功能的作业: 16#00
写入下限: 16#01
写入上限: 16#02
写入积分时间: 16#04
读下限: 16#81
读上限: 16#82
读积分时间: 16#84
0
JOB_VAL
DINT
8
写作业的值
-2^31 到 +2^31-1
0







输出STS_GATE
BOOL
12.0
内部门状态
TRUE/FALSE
FALSE
STS_STRT
BOOL
12.1
硬件门状态(启动输入)
TRUE/FALSE
FALSE
STS_LTCH
BOOL
12.2
锁存器输入状态
TRUE/FALSE
FALSE
STS_DO
BOOL
12.3
输出状态
TRUE/FALSE
FALSE
STS_C_DN
BOOL
12.4
向下计数的状态。
始终指示最后的计数方向。在第一次调用 SFB 之 后,STS_C_DN 的值为 FALSE。
TRUE/FALSE
FALSE
STS_C_UP
BOOL
12.5
向上计数的状态。
始终指示最后的计数方向。在第一次调用 SFB 之 后,STS_C_UP 的值为 TRUE。
TRUE/FALSE
FALSE
MEAS_VAL
DINT
14
当前频率值
0 到 2^31 - 1
0
COUNTVAL
DINT
18
当前锁存器值
-2^31 到 2^31 - 1
0






JOB_DONE
BOOL
22.0
作业已完成,可启动新作业
TRUE/FALSE
TRUE
JOB_ERR
BOOL
22.1
错误作业
TRUE/FALSE
FALSE
JOB_STAT
WORD
24
作业错误编号
0 到 FFFF (十六进制)
0

3. 开始计数(频率测量)

当硬件门和软件门打开时(使用软件门控制则仅须软件门打开),计数功能开始进行。用户通过调用SFB47(48)开始计数(频率测量),例如:

CALL "COUNT" , DB47
LADDR :=W#16#300
CHANNEL :=0
SW_GATE :=M0.0
CTRL_DO :=
SET_DO :=
JOB_REQ :=
JOB_ID :=
JOB_VAL :=
STS_GATE:=
STS_STRT:=
STS_LTCH:=
STS_DO :=
STS_C_DN:=
STS_C_UP:=
COUNTVAL:=MD10
LATCHVAL:=
JOB_DONE:=
JOB_ERR :=
JOB_STAT:=

当M0.0 为“1” 时,通道0开始计数。

"LADDR "是通道的逻辑地址,见下图,选择输入、输出地址 中较小的值:

4. 置位计数通道的输出点:

只有当CTRL_DO(频率测量:MAN_DO)和SET_DO同时为‘1’时,对用通道的输出点才会被置位,例如:

L 16#07
T MB0 //将M0.0,M0.1,M0.2置1

CALL "COUNT" , DB47
LADDR :=W#16#300
CHANNEL :=0
SW_GATE :=M0.0
CTRL_DO :=M0.1
SET_DO :=M0.2
JOB_REQ :=
JOB_ID :=
JOB_VAL :=
STS_GATE:=
STS_STRT:=
STS_LTCH:=
STS_DO :=
STS_C_DN:=
STS_C_UP:=
COUNTVAL:=MD10
LATCHVAL:=
JOB_DONE:=
JOB_ERR :=
JOB_STAT:=

此时,通道0对应的输出点DO0会被置位。不同CPU输出点对应的接线端子请参考接线部分

5. 在计数模式下,锁存当前计数值

  • 当锁存器输入点从‘0’变为‘1’时,该瞬间的计数值会被锁存,并由SFB的‘LATCHVAL’输出,这样便使您能实现与事件相关的计数值判断功能。
  • CPU 进行 STOP-RUN 转换后,会将 LATCHVAL 重置为计数器的开始值。
  • 当有锁存信号输入时,SFB的STS_LTCH置位
  • 锁存信号的上升沿变化触发锁存动作

6. 执行作业操作

首先要年个作业号写入JOB_ID,作业值写入JOB_VAL中,再将一个上升沿信号送到JOB_REQ输入。作业操作完成后JOB_DONE会被置1。

下面是一个在计数模式下更新装载时额例子:

L 16#02
T MW2 //将写装载值的任务号16#02写入MW2

L 200
T MD4 //将写新的装载值200写入MD4

L 16#09
T MW2 //置位M0.0, M0.3

CALL "COUNT" , DB47
LADDR :=W#16#300
CHANNEL :=0
SW_GATE :=M0.0
CTRL_DO :=
SET_DO :=
JOB_REQ :=M0.3
JOB_ID :=MW2
JOB_VAL :=MD4
STS_GATE:=
STS_STRT:=
STS_LTCH:=
STS_DO :=
STS_C_DN:=
STS_C_UP:=
COUNTVAL:=MD10
LATCHVAL:=
JOB_DONE:=M20.0
JOB_ERR :=
JOB_STAT:=




剩余80%未阅读,请登录查看大全章节内容

  • 评论
更多
  • 分享

    扫码分享

扫码进入移动端

信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。