找答案的高端用户(找答案钻石及双钻级别的用户)将尽可能从此问题下的所有回
答中,为您推荐最佳答案。届时您可以根据推荐数采纳答案。
如果自提问时间起7天内您仍无法选出最佳答案,您可以选择“无满意答案”关闭此问题。
小程序查看
手机扫码追踪该问题
手机扫码追踪该问题,
觉得实用,立即去分享!
点击复制链接
模拟量4~20ma自动对应内部的0--27648.0--27648再对应你要的范围.
// convert input (IN) to real
L #IN // ACC1=IN
ITD // convert to double integer
DTR // convert to real
T #IN_REAL // IN_REAL-IN as a real
// determine SPAN = HI_LIM - LO_LIM
L #HI_LIM // SPAN=HI_LIM-LO_LIM
L #LO_LIM // .
-R // .
T #SPAN // .
// If the input value is outside the K1 and K2 range, the output
// is clamped to the nearer of either the LO_LIM or the HI_LIM
// and an error is logged. If the input value is exactly at a limit the
// output will be set to the computed limit with no error returned.
// changed 2/14/00 by ERI per RQ210693
L #IN_REAL // if(IN_REAL<K1)
L #K1 // .
>=R // .
JC EL02 // {
L 8 // error
T #RET_VAL // .
L #LO_LIM // ACC1=LO_LIM
T #OUT // OUT=ACC1
JU FAIL // error
EL02: POP // } else {
L #K2 // if(IN_REAL>K2)
<=R // .
JC EI04 // {
L 8 // error
T #RET_VAL // .
L #HI_LIM // ACC1=HI_LIM
T #OUT // OUT=ACC1
JU FAIL // error
EI04: NOP 0 // }
NOP 0 // }
// scale the input
L #K2 // TEMP1=K2-K1
L #K1 // .
-R // .
T #TEMP1 // .
L #IN_REAL // IN_REAL-K1
L #K1 // .
-R // .
L #TEMP1 // divide by TEMP1
/R // .
L #SPAN // multiply by SPAN
*R // .
L #LO_LIM // add LO_LIM
+R // .
T #OUT // OUT=scale(IN_REAL)
// set BR bit : no error-set BR bit to 1; with error-set BR bit to 0.
L 0 // return error code 0
T #RET_VAL
SET // RLO = 1 (NO ERROR)
JU SVBR //
FAIL: CLR // RLO = 0 (ERROR)
SVBR: SAVE
将输出值与你预设的保护值进行比较,输出一个逻辑就可以控制你要控制的东西了,如下:
L #OUT FC105处理值
L 27648 设定门槛值(根据实际情况设定)
>I
= M1000 输出判断开关量
---------------------------
可以随便定义:FC105是西门子提供的编好了的功能块可以直接调用,我上面的程序是将功能块里面的内容翻译出来了,你可以将上面的模拟量程序拷贝到任何一个重新定义的功块
这是“YZL-2000”以前回答的,你可以参考下
首次回答问题,获得
双倍西币积分!
立即成为技术知识分享的一员!
找答案微信小程序
提问
搜索
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!