西门子官网的程序是用德文书写的。必须将语言给位德文才可以使用。现将内部的程序转发。
建立一个FB块
IN中建立
名称 VALUE 数据类型 real
名称 Interval 数据类型 time 计量单位的时间例如:30M3/H 则输入 T#1H
名称 Cycle 数据类型 time 扫描循环的时间 放在OB35中则是T#100ms OB36则是T#50ms
名称 Com_RST 数据类型 bool 复位开关,ON时清零,需要在扫描时间内,需要将此位置位时间大于
//////////////////////////////////OB35的中断扫描时间。
OUT中建立
名称 TOTAL 数据类型 real 累计值
Stat中建立
名称 Accum 数据类型 real
Temp中建立
名称 tInterval 数据类型 real
名称 tCycle 数据类型 real
程序段1中输入
A #COM_RST
JCN NW2
L 0.0
T #ACCUM
T #TOTAL
SET
SAVE
BEU
程序段2中输入
NW2: NOP 0
L #INTERVAL
DTR
T #tINTERVAL
L #CYCLE
DTR
T #tCYCLE
程序段3中输入
L #VALUE
L #tCYCLE
*R
L #tINTERVAL
/R
L #ACCUM
+R
T #ACCUM
T #TOTAL
程序段4中输入
SET
SAVE
BEU
保存为FB功能块
说明:次功能块只能接受real值。直接读取上来的值需要经过fc105的转换后或自行转换为32位浮点数后再使用。
应用实例:
你觉得有用,帮忙顶一下。
上面的例子在累计数特别大时,容易出现计数不准,偏差比较大。下面的程序更改后比较好点。
代码如下:
文字的上传不上来。用图片粘贴吧。
提供一个工程附件。累计块为FC1001.
附件内包含源程序,以及简易的模拟量转换源码。以及自己编写的一点逻辑程序源码。
1200&1500代码
FUNCTION_BLOCK "TOT"
{ S7_Optimized_Access := 'FALSE' }
AUTHOR : Tyfixn
VERSION : 0.1
VAR_INPUT
_Hi : Real; // 现场流量计,上限量程。
_InterVal : Time; // 此时间为量程中标定的时间。例如30m3/h则为1h,30L/m则为60s,
_Cycle : Time; // 次时间为循环扫描时间,例如OB35则为100ms,OB32则为1s
_inPV : Real; // 实际输入值。
_inLoQC : Real; // 小信号切除值。
END_VAR
VAR_OUTPUT
_TOT_value : Real; // 累计值
END_VAR
VAR_IN_OUT
_Start_Stop : Bool; // 启动停止累计操作端。
_Com_RST : Bool; // 复位操作端。此端口置1后自动复位。
END_VAR
VAR
_TOTAL_L : Real; // 流量累计输出值,低位。
_TOTAL_H : Real; // 流量累计输出值,高位。
_start_Temp : Bool;
END_VAR
VAR_TEMP
_t_Value : Real;
_t_Cycle : Real;
_t_InterVal : Real;
_var1 : Real;
END_VAR
BEGIN
#_t_Cycle := DINT_TO_REAL(TIME_TO_DINT(#_Cycle)); //将时间数据转换为实数。
#_t_InterVal := DINT_TO_REAL(TIME_TO_DINT(#_InterVal)); //将时间数据转换为实数。
//#_var1 := SCALE(IN := #_inPV, HI_LIM := #_Hi, LO_LIM := 0, BIPOLAR := 0, OUT => #_t_Value);
//复位清零操作
IF #_Com_RST THEN
#_TOTAL_H := 0;
#_TOTAL_L := 0;
#_Com_RST := FALSE;
END_IF;
//切除小信号,当低于切除值时,将累积信号置0;
IF #_inPV > #_inLoQC THEN
#_var1 := 0;
ELSE
#_var1 := #_inPV;
END_IF;
//当输入启动信号到达后,立即开启累积计数,当启动信号停止(结束)后,判断信号值是否到0,到0后立即停止累积计数。
//下面这节是根据实际工况改写的一节延时计量,
//
// IF #_Start_Stop THEN
// #_start_Temp := 1;
// ELSIF #_var1 = 0 THEN
// #_start_Temp := 0;
// END_IF;
//
//正常使用下面这一节
IF #_Start_Stop THEN
#_start_Temp := 1;
ELSE
#_start_Temp := 0;
END_IF;
//开始累积
IF #_start_Temp THEN
#_TOTAL_L := #_var1 * #_t_Cycle / #_t_InterVal + #_TOTAL_L;
END_IF;
//消除极大数加极小数的累加错误
IF #_TOTAL_L > 1000.0 THEN
#_TOTAL_H := #_TOTAL_H + 1;
#_TOTAL_L := #_TOTAL_L - 1000.0;
END_IF;
//输出结果
#_TOT_value :=( #_TOTAL_H * 1000)+ #_TOTAL_L;
END_FUNCTION_BLOCK
更改一个小错误。
罗斯蒙特8705TSA025C1M0NQ法兰式电磁流量计
德科蒙过程控制(武汉)有限公司
联系人:梁工
联系方式:027-51013516
手机号码:15387119297
工作QQ:1963375556
公司地址:武汉市武昌区武珞路中南国际城D1-901室
罗斯蒙特8705法兰式电磁流量计传感器即使在最具挑战性的应用中也能提供持久可靠的性能。全焊接结构提供了气密密封,可防止潮湿和其他污染物。密封外壳通过保护所有内部组件和布线即使在最恶劣的环境下也能确保最大的传感器可靠性。可拆卸和可更换的接线盒可在现场轻松进行维修,无需更换整个仪表。
产品规格
准确性 在13:1流量转向时,体积流量精确度高达0.15%,在40:1流量下超过0.25%
线的大小 ?-36英寸(15-900毫米)
班轮材料 PTFE,ETFE,PFA,聚氨酯,氯丁橡胶,Linatex天然橡胶
电极材料 316L不锈钢,镍合金,铂,钽,钛
法兰等级 ASME B16.5级150-2500DIN PN 10-40AS 2129表D和EAWWA C207表3 D级(仅限30-36英寸)
淹没保护 IP68(推荐使用密封电缆密封套)
互换性 兼容所有8700系列变送器
与传统变送器兼容:8712D,8712C,8732C,8742C
特征
为了最大程度的保护,完全焊接的传感器外壳提供了气密密封
使用可拆卸和可更换的接线端子可以在现场进行维修,从而避免过程停机
采用可选的二级密封隔室捕获任何潜在的工艺流体泄漏,以包围电极
采用全焊接传感器外壳,确保在最恶劣环境下的可靠性
使用可选的衬里保护装置防止安装损坏和前沿磨损
采用无障碍设计,无需移动部件,最大限度地减少维护和修理
订购信息
型号 产品说明
8705 法兰式电磁流量计传感器
衬里材质
T PTFE
电机材质
S 316L不锈钢
电极类型
A 2个测量电极-标准
口径
025 65毫米(2 1/2英寸)
法兰类型和材质
C 平焊 凸面 碳钢
法兰等级
1 ASME B16.5,150级
线圈外壳排列布置
M0 带可现场更换接线端子的密封焊接外壳
以下为我司库存型号 有需要可直接电联
1:F050S113C2EMZZZZ
2: CNG050S290NQEPMZZZ
3:F050S113C2EMEZZZZ
4:CNG050S239NQFPMZZZ
5:F050S113C2EMZZZZ
6:CNG050S239NQFPMZZZ
7:CNG050S239NQEMEZZZ
8:CNG050S290NQEPMZZZ
9:CNG050239NQFPMZZZ
10:K050S176NZTI16AEPEAZZZ
11:K050S113NZTI16AEMMZZZ
12:K200S418NZTI16ABMEZZZ
13:K050S113NZZTI16AEMMZZZZ
14:K200S418NZTIQ6ABMEZZZZ
15:CF-3M-316
16:F200SA36CHAZMZIZZ
17:F200S418C2EZEZZZX
18:F200S418C2EZEZZZX
19:K200S418NZTI16ABMMZZZZ
20:K300S355NZTI16ABMEZZZZ
21:F200SA36CHAZMZ1ZZ
22:F200S418C2EZEZZZX
23:8705NSA010D9WONA
24:8705NS015D9W0NA
25:8705NHA020LMW0KDB3Q4DT
26:8705NHA020LMW0KDB3Q4DT
27:8705TSA040C1M0NFB3
28:8705TSA025C1M0NQ
29:8705TSA050C1M0ND
30:8705TSA060C1M0NIB3
31:875NSA015D9W0NA