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

编程

star star star star star
0 分
  • 软件编程
  • S7-300
发布时间:2024年04月24日
  • 0
  • 2
介绍FM350-1程序块编程介绍

编程

块编号
块名称
功能
是否必须
FC2
CNT2_CTR
控制FM 350-2模块做简单计数

FC3
CNT2_WR
更新模块装载值、高低限值、比较值

FC4
CNT2_RD
可一次读取4个通道的当前计数值或测量值

FC5
DIAG_RD
在诊断中断中读取FM 350-2模板诊断信息

DB*
Counter DB
包含所有FM 350-2模板相关数据,UDT1格式


1. 控制计数器开始计数。调用FC2,计数器即开始依据DB中的控制字工作。

FC2"CNT2_CTR"功能块:

名称
行参类型
数据类型
含义
DB_NO
输入

FM350-2模板对应的Counter_DB块编号


例程:

CALL "CNT2_CTR" //调用FC2
DB_NO :=W#16#1 //这里以DB1为例

注意:

  • 每个程序循环周期都必须调用FC2,用户可将上述程序添加到OB1中,如果有多个FM350-2模块,FC2需要被多次调用,每个FC2对用不同的DB块。
  • FC2可以完成CPU与FM350-2模板之间的数据传递,即将Counter DB中的控制字(CONTROL_SIGNALS)传送至模板,并将FM350-2模板的状态(CHECKBACK_SIGNALS)读取到Counter DB。CONTROL_SIGNALS 与 CHECKBACK_SIGNALS的详细信息参考附录。

2. 打开软件门

Counter DB中软件门控制位如下表所示:

地址
名称
数据类型
初始值
含义
23.0-23.7
SW_GATE0 - 7
BOOL
False
依次为计数器通道0-7的软件门控制位


将上述地址位置‘1’,随着FC2的周期调用,即打开了对应计数器通道的软件门。置‘0’即为关闭软件门,计数器停止计数。

3. 使用CNT2_WR Function (FC3),更新模块装载值、高低限值、比较值。

首先要将新的装载值、预备装载值、高低限值、比较值和JOB_WR.NO存放入Counter_DB。写操作任务号应写入DBB0中。详细信息见下表:

JOB_WR.No (注1)
Counter_DB地址(DBD)
Counter_DB名称
数据类型
初始值
含义
0




无写操作。
10、11、12、13、14、15、16、17
52、56、60、64、68、72、76
LOAD_VAL0-7
DINT
L#0
    •  在计数模式下,依次为更新计数器通道0至7的装载值
    •  在频率(周期、转速)测量模式下,依次为更新计数器通道0至7的低限值
20、21、22、23、24、25、26、27
84、88、92、96、100、104、108、112
LOAD_PREPARE_VAL0-7
DINT
L#0
    •  在计数模式下,依次为更新计数器通道0至7的预备装载值 (注2)
    •  在频率(周期、转速)测量模式下,依次为更新计数器通道0至7的高限值
30、31、32、33、34、35、36、37
116、120、124、128、132、136、140、144
CMP_VAL0-7
DINT
L#0
依次为更新计数器0至7的比较值
40
52至64
LOAD_VAL0 to LOAD_VAL3
DINT
L#0
    •  在计数模式下,为同时更新计数器通道0至3的装载值
    •  在频率(周期、转速)测量模式下,为同时更新计数器通道0至3的低限值
41
68至80
LOAD_VAL4 to LOAD_VAL7
DINT
L#0
    •  在计数模式下,为同时更新计数器通道4至7的装载值
    •  在频率(周期、转速)测量模式下,为同时更新计数器通道4至7的低限值
42
52至80
LOAD_VAL0 to LOAD_VAL7
DINT
L#0
    •  在计数模式下,为同时更新计数器通道0至7的装载值
    •  在频率(周期、转速)测量模式下,为同时更新计数器通道0至7的低限值
50
84至96
LOAD_PREPARE_VAL0 to
LOAD_PREPARE_VAL3
DINT
L#0
    •  在计数模式下,为同时更新计数器通道0至3的预备装载值
    •  在频率(周期、转速)测量模式下,为同时更新计数器通道0至3的高限值
51
100至112
LOAD_PREPARE_VAL4 to
LOAD_PREPARE_VAL7
DINT
L#0
    •  在计数模式下,为同时更新计数器通道4至7的预备装载值
    •  在频率(周期、转速)测量模式下,为同时更新计数器通道4至7的高限值
52
84至112
LOAD_PREPARE_VAL0 to
LOAD_PREPARE_VAL7
DINT
L#0
    •  在计数模式下,为同时更新计数器通道0至7的预备装载值
    •  在频率(周期、转速)测量模式下,为同时更新计数器通道0至7的高限值
60
116至128
CMP_VAL0 to CMP_VAL3
DINT
L#0
为同时更新计数器0至3的比较值
61
128至144
CMP_VAL4 to CMP_VAL7
DINT
L#0
为同时更新计数器4至7的比较值
62
116至144
CMP_VAL0 to CMP_VAL7
DINT
L#0
为同时更新计数器0至7的比较值

注释:

  1. JOB_WR.NO是写操作的工作任务号,初始值为B#16#0,数据类型为“BYTE”,在Counter_DB中的地址为DBB0。用户不光需要将新的数值写入Counter_DB,还应将工作任务号送入JOB_WR.NO以控制FC3执行不同操作。工作任务号的具体含义查看上表。
  2. 预备装载值是指当计数值超过高/低限后,再从预备装载值开始计数。

FC3"CNT2_WR"功能块:

名称
行参类型
数据类型
含义
DB_NO
输入

FM350-2模板对应的Counter_DB块编号
RET_VAL
输出
INT
SFC58(WR_REC)的返回值


例程:更新计数器0的比较值

OPN DB1 //打开Counter_DB, 本例子中Counter_DB为DB1
L D#16#100 //新的比较值为16进制100
T DBD116
L 30 //装载写操作的工作任务号码,‘30’表示更新计数器0比较值
T DBB0

CALL "CNT2_WR" //调用FC3
DB_NO :=W#16#1
RET_VAL := MW0

Counter_DB的JOB_WR(DBB1)是写操作状态字,详细参考下表:

地址
名称
数据类型
初始值
含义
1.0
JOB_WR.BUSY
BOOL
FALSE
1: 有写操作正在执行
1.1
JOB_WR.DONE
BOOL
FALSE
1:写操作已经完成
1.2
JOB_WR.IMPOSS
BOOL
FALSE
1:写操作无法被完成
1.3
JOB_WR.UNKNOW
BOOL
FALSE
1:无法识别的写操作


4. 使用FC4(CNT2_RD)读取通道的当前计数值或测量值。

首先要写入读操作的工作任务号,JOB_RD.NO即为读操作工作任务号,在Counter_DB中的地址为DBB2,字节类型。详见下表:

JOB_WR.No (注1)
Counter_DB地址(DBD)
Counter_DB名称
数据类型
初始值
含义
0




无读操作。
100
148 至 176
ACT_CNTV0
ACT_MSRV0
ACT_CNTV1
ACT_MSRV1
ACT_CNTV2
ACT_MSRV2
ACT_CNTV3
ACT_MSRV3
DINT
L#0
    •  在计数模式下,读取计数器通道0至3的计数值
    •  在频率(周期、转速)测量模式下,读取计数器通道0至3的测量值
101
180 至 208
ACT_CNTV4
ACT_MSRV4
ACT_CNTV5
ACT_MSRV5
ACT_CNTV6
ACT_MSRV6
ACT_CNTV7
ACT_MSRV7
DINT
L#0
    •  在计数模式下,读取计数器通道4至7的计数值
    •  在频率(周期、转速)测量模式下,读取计数器通道4至7的测量值

其次,调用FC4"CNT2_RD"功能块:

名称
行参类型
数据类型
含义
DB_NO
输入

FM350-2模板对应的Counter_DB块编号
RET_VAL
输出
INT
SFC59(WR_REC)的返回值


例程:读取计数器0-3的计数值

L 100
T DB1.DBB2

CALL "CNT2_RD" //调用FC4
DB_NO :=W#16#1
//在本例子中Counter_DB为DB1
RET_VAL := MW2

之后,可在Counter_DB对应地址中读取计数值或测量值。



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

  • 评论
更多
  • 分享

    扫码分享

扫码进入移动端

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