STEP7V5.x中模拟量输入/输出的编程实现

)fc105/fc106 在哪里?
在编程界面下,在 “程序元素”中的 “库——> standard library ——> ti-s7 converting blocks”中可以找到,见图3.1:
图3.1
图3.2
注意:请不要使用 “s5-s7 converting blocks”下的 fc105,fc106,该路径下的功能是用于 s5 输入输出模板的,在 s7 输入输出模板上无法使用。
2) fc105功能描述
scale(fc105)功能接受一个整型值(in),并将其转换为以工程单位表示的介于下限和上限(lo_lim和hi_lim)之间的实型值。将结果写入out。scale功能使用以下等式:
out = [ ((float (in) - k1)/(k2 - k1)) * (hi_lim - lo_lim)] + lo_lim
常数k1和k2根据输入值是bipolar还是unipolar设置。
 ● bipolar:假定输入整型值介于 -27648与27648之间,因此k1 = -27648.0,k2 = +27648.0
  ●unipolar:假定输入整型值介于0和27648之间,因此k1 = 0.0,k2 = +27648.0
如果输入整型值大于k2,输出(out)将钳位于hi_lim,并返回一个错误。如果输入整型值小于k1,输出将钳位于lo_lim,并返回一个错误。
通过设置lo_lim > hi_lim可获得反向标定。使用反向转换时,输出值将随输入值的增加而减小。
 3) fc105的参数定义
参数 描述 数据类型 存储区 描述
en 输入 bool i、q、m、d、l 使能输入端,信号状态为1时激活该功能。
eno 输出 bool i、q、m、d、l 如果该功能的执行无错误,该使能输出端信号状态为1。
in 输入 int i、q、m、d、l、p、常数 欲转换为以工程单位表示的实型值的输入值。
hi_lim 输入 real i、q、m、d、l、p、常数 以工程单位表示的上限值。
lo_lim 输入 real i、q、m、d、l、p、常数 以工程单位表示的下限值。
bipolar 输入 bool i、q、m、d、l 信号状态为1表示输入值为双极性。信号状态0表示输入值为单极。
out 输出 real i、q、m、d、l、p 转换的结果。
ret_val 输出 word i、q、m、d、l、p 如果该指令的执行没有错误,将返回值w#16#0000。对于w#16#0000以外的其它值,参见错误信息。
故障信息:
如果输入整型值大于k2,输出(out)将钳位于hi_lim,并返回一个错误。如果输入整型值小于k1,输出将钳位于lo_lim,并返回一个错误。eno的信号状态将设置为0,ret_val等于w#16#0008。
4) fc105例子程序
如果输入i0.0的信号状态为1 (激活),则执行scale功能。在本例中,整型值22将转换为介于0.0和100.0之间的实型值,并写入out。如i2.0的信号状态所示,该输入值为bipolar。
如果该功能的执行没有错误,eno和q0.0的信号状态将设置为1,ret_val等于w#16#0000。
执行前:
in ----------------------> mw10=22
hi_lim ---------------> md20=100.0
lo_lim --------------> md30=0.0
out -------------------> md40=0.0
bipolar ------------> i2.0=true
执行后:
out ------------------> md40=50.03978588
5) fc106 功能描述
unscale(fc106)功能接收一个以工程单位表示、且标定于下限和上限(lo_lim和hi_lim)之间的实型输入值(in),并将其转换为一个整型值。将结果写入out。unscale功能使用以下等式:
out = [ ((in - lo_lim)/(hi_lim - lo_lim)) * (k2 - k1) ] + k1
并根据输入值是bipolar还是unipolar设置常数k1和k2。
 ● bipolar:假定输出整型值介于 -27648和27648之间,因此,k1 = -27648.0,k2 = +27648.0
 ● unipolar:假定输出整型值介于0和27648之间,因此,k1 = 0.0,k2 = +27648.0
如果输入值超出lo_lim和hi_lim范围,输出(out)将钳位于距其类型(bipolar或unipolar)的指定范围的下限或上限较近的一方,并返回一个错误。
6) fc106 的参数定义
参数 描述 数据类型 存储区 描述
en 输入 bool i、q、m、d、l 使能输入端,信号状态为1时激活该功能。
eno 输出 bool i、q、m、d、l 如果该功能的执行无错误,该使能输出端信号状态为1。
in 输入 real i、q、m、d、l、p、常数 欲转换为整型值的输入值。
hi_lim 输入 real i、q、m、d、l、p、常数 以工程单位表示的上限值。
lo_lim 输入 real i、q、m、d、l、p、常数 以工程单位表示的下限值。
bipolar 输入 bool i、q、m、d、l 信号状态为1表示输入值为双极性。信号状态0表示输入值为单极。
out 输出 int i、q、m、d、l、p 转换结果。
ret_val 输出 word i、q、m、d、l、p 如果该指令的执行没有错误,将返回值w#16#0000。对于w#16#0000以外的其它值,参见错误信息。
故障信息:
如果输入值超出lo_lim和hi_lim范围,输出(out)将钳位于距其类型(bipolar或unipolar)的指定范围的下限或上限较近的一方,并返回一个错误。eno的信号状态将设置为0,ret_val等于w#16#0008。
7) fc106 例子程序
如果输入i0.0的信号状态为1 (激活),则执行unscale功能。在本例中,标定于0.0和100.0之间的实型值50.03978588,将转换为一个整型值,并写入out。如i2.0的信号状态所示,该输入值为bipolar。
如果该功能的执行没有错误,eno和q0.0的信号状态将设置为1,ret_val等于w#16#0000。
执行前:
in ----------------------> md10=50.03978588
hi_lim ---------------> md20=100.0
lo_lim --------------> md30=0.0
out -------------------> mw40=0
bipolar ------------> i2.0=true
执行后:
out ------------------> mw40=22


LMZ20502SILR替换解决方案
史上最强Mac出现 苹果WWDC宣布6大重点!
教您如何清理笔记本键盘(真实例子)
日韩疫情形势趋紧 全球半导体产业风险骤增
RT-Thread Studio IDE使用的基础介绍
STEP7V5.x中模拟量输入/输出的编程实现
恩智浦和谷歌云使用新的云物联网核心来拓展Android Things的范围和性能
海纳半导体正式完成A轮融资的协议签署及工商变更
诺基亚6经典回归,诺基亚8紧随其后,诺基亚N才是巅峰之作?
5G网络运维需要更精细化
导热系数测试仪怎么选?具备哪些优势
无人机赴震区勘查灾情
嵌入式硬件电路设计方面的几个注意事项
光栅尺编码器差分信号脉冲计数采集模块/频率可达5MHz/4倍频计数
移远通信与哈啰出行合作获奖 美光提供176层NAND数据中心SSD
虹科分享|虹科Dimetix激光测距传感器如何利用反射来测量?(下)
【C语言应用】如何用C代码生成一维码?
大联大世平集团推出基于NXP产品的PEPS无钥匙进入及启动系统方案
区块链会对房地产领域产生什么影响
4G/5G园区网络常见的受损核心网络攻击情形 5G智慧园区十大应用场景