[西门子] 西门子smart200模拟量控制程序!

[复制链接]
查看61654 | 回复0 | 2024-1-13 08:00:09 | 显示全部楼层 |阅读模式

关注抖音直播号:dianqigongchen1、子例程 S_ITR:整数转换为实数(一般作为模拟量输入数据的转换)将整数缩放为实数此子例程的用途是将输入范围中的整数缩放为输出范围中的实数。此子例程首先会读取由调用 POU 传递的值:要缩放的输入、输入范围上限 (ISH)、输入范围下限 (ISL)、输出范围上限 (OSH) 和输入范围下限 (OSL)。下一步是用 OSH 中减去 OSL,以确定存回 OSH 中的输出缩放范围。接下来,该子例程会从输入中减去 ISL,并将所得的差先转换为双字,然后再转换为实数。之后,下一条指令将该实数乘以输出范围。再下一步是用 ISH 减去 ISL,以计算输入缩放范围,将计算所得的值转换为双字,并再转换为实数。接下来,该子例程用输出缩放范围除以计算所得的实数,并将结果与输出范围下限值 (OSL) 相加,以确定最终输出值。最后,该子例程会将此值移动到要由调用 POU 使用的子例程的输出。公式如下:输出 = [(OSH - OSL) * (输入 - ISL) / (ISH - ISL)] + OSL

程序如下:可单独制作写入库中,进行使用





2、子例程 S_RTI:实数转换为整数(一般作为模拟量输出数据的转换)将实数缩放为整数此子例程的用途是将输入范围中的实数缩放为输出范围中的整数。此子例程首先会读取由调用 POU 传递的值:要缩放的输入、输入范围上限 (ISH)、输入范围下限 (ISL)、输出范围上限 (OSH) 和输入范围下限 (OSL)。下一步是用 OSH 中减去 OSL,以确定存回 OSH 中的输出缩放范围。接下来,该子例程会从输入中减去 ISL,并将所得的差先转换为双字,然后再转换为实数。下一步是用输入减去 ISL,然后用所得的差乘以计算所得的实数输出缩放范围。再用 ISH 减去 ISL,以计算输入缩放范围,用输出范围除以计算所得的输入锁定范围,然后将商舍入为双字。之后,该子例程将根据该数据类型的界限限制检查已舍入的输出值,以确保最终值的准确性。在界限检查后,子例程会将双字值转换为整数,用该整数加上输出范围下限 (OSL),并将所得值移动到子例程输出。公式如下:输出 = [(OSH - OSL) * (输入 - ISL) / (ISL - ISL)] + OSL



程序段 2 检查 Temp_D 是否小于 -32768


程序段 3 检查 Temp_D 是否大于 32767


程序段 4 对整数值进行转换,并加上下限偏移量


3、子例程 S_RTR:实数转换为实数(根据采集到的数据变量而进行转换)将实数缩放为实数此子例程用于将输入范围内的标准化模拟量输入缩放到输出范围内。此子例程首先会读取由调用 POU 传递的值:要缩放的输入、输入范围上限 (ISH)、输入范围下限 (ISL)、输出范围上限 (OSH) 和输入范围下限 (OSL)。所有输入都为实数。下一步是用 OSH 减去 OSL,以决定输出缩放范围。之后,子例程会用输入减去 ISL,并用所得的差乘以输出范围。下一步是用 ISH 减去 ISL,以确定输入缩放范围。此时,子例程用该输出范围除以取消缩放的输入,以确定最终输出值,然后将该值移动至调用 POU 将使用的子例程输出。公式如下:输出 = [(OSH - OSH) * (输入 - ISH) / (ISH - ISL)] + OSL



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则