S7-300中DI怎么转换为I

大家好,我请教各位朋友,S7-300中双整数(DI),怎么转换为整数(I)假设我的双整数是MD0,我怎么转换为整数呢,有哪为朋友知道,请帮帮忙... 大家好,我请教各位朋友,S7-300中双整数(DI),怎么转换为整数(I)假设我的双整数是MD0,我怎么转换为整数呢,有哪为朋友知道,请帮帮忙 展开
 我来答
匿名用户
2013-09-09
展开全部
直接用mov指令即可,你可以试一下mov指令输入在符号表中定义为dint,mov输出侧定义为int,300中没有200的转换指令是源于300的mov指令的强大。如果是real型转换成int,你可以将real用round指令转换成dint,然后用mov指令转换成int,这在300系统中通过dp方式外挂200模块,写200模块的地址中会用到。
匿名用户
2013-09-09
展开全部
以西门子的做法就是 直接读取低字 如您的双整数为MD0,那么直接读取MW2 ,L MW2包括西门子的SCL中的转换也如此,SCL中,实现该功能的指令为DINT_TO_INT。实际上,西门子指望用户自己去确保您的DINT数据需要在INT的数据范围内,当然,如果您选用STL或者LAD,那么您需要自行处理符号位。以我个人的处理方式,我会对于数据进行判断,当数据大于INT的值域范围时,会输出最大或者最小值。Good Luck~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-09-09
展开全部
但你如果双整数是带符号的,你这样就不行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
推荐于2017-09-19
展开全部
  一般在模拟量输出或特殊显示时用到“DI->I”。
  如:从AI读取一个I,再I -> DI -> 浮点数,经过一个算法(算法里用到浮点数。如:cos(x)),输出一个浮点数F,再 浮点数 -> DI ->I ,最后把I送到模拟量输出模块。
  标准的做法是:
  第一步:检测DI中存放的数据范围,大于32767或小于-32768的,都直接输出最大值或者最小值。
  第二步:在数据范围内的,首先要保留31位上的符号值,然后写入16位上,直接读取高字就可以了。
  大多数程序员就直接读取高字,而不做上述的工作,因此这些程序中是存在数据溢出的风险的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式