西门子S7-200PLC编程软件里面的整数相除功能

   2024-09-15 建材之家700
核心提示:话说一个细心的客户询问我“为什么西门子S7-200PLC编程软件里面除了有DIV_I指令,还要有DIV指令,它们不都是实现整数相除的功能吗?”。说的有道理,差异在哪儿呢?先来看看两个指令的功能说明:1. DIV指令是将两个16位的整数相除,得出一个32位的结果,其中包括一个16位的余数(高位)和一个16位的商(低位)。2. DIV_I指令是将两个16位的整数相除,产生一个16位的商,不保留余

话说一个细心的客户询问我“为什么西门子S7-200PLC编程软件里面除了有DIV_I指令,还要有DIV指令,它们不都是实现整数相除的功能吗?”。说的有道理,差异在哪儿呢?先来看看两个指令的功能说明:
1. DIV指令是将两个16位的整数相除,得出一个32位的结果,其中包括一个16位的余数(高位)和一个16位的商(低位)。
2. DIV_I指令是将两个16位的整数相除,产生一个16位的商,不保留余数。
哦,看来区别是在结果上面,一起来做个实验看看吧:

其中,VW0是被除数,VW2是除数,VD4的低十六位(即VW6 = 16#000D)是整数相除得到的商(VW6十进制值是13);高十六位(即VW4 = 16#00DC)是整数相除得到的余数(VW4十进制值是220)。

其中,VW0是被除数,VW2是除数,VW10是整数相除得到的商,余数没有保留。
由此,这两个功能块的区别就显而易见了,然后本以为问题到此结束,刚要与客户说再见,但客户接着又抛出了一个问题“S7-300中哪个指令块可以实现S7-200中DIV指令块的功能啊?”,这个,这个。。。。我得查查。然后,搜遍STEP7中整数运算的指令块,没有见到与DIV指令完全相同功能的指令块,但却发现了MOD_DI功能块是可以单独取余数的。那么,接着实验:

其中,MD0为被除数,MD4为除数,MD8为双整数相除得到的余数 ,不保留商。

其中,MD0为被除数,MD4为除数,MD12为双整数相除得到的商,不保留余数。

看来客户想要实现一个指令块既得商,又得余数的功能不得不分步实施啦。虽然说在STEP7的编程中不存在DIV同样功能的指令块,但它的实现更为灵活——将余数与商分开,根据客户的需要单独取之。另外,在S7-200中实现整数取余有一定的局限性,就是DIV指令块只能实现16位的整数相除取余,而STEP 7中的MOD_DI则可以使用32位的双整数直接取余。

通过实验是不是更清楚明了呢?相信您已经牢牢记住了,那么我要给客户回电话去啦。。。

 
【温馨提示】本文内容和观点为作者所有,本站只提供信息存储空间服务,如有涉嫌抄袭/侵权/违规内容请联系QQ:727533600 删除!
 
举报收藏 0打赏 0评论 0

上一篇:怎么用梯形图写积分程序和微分程序

一般在STEP7软件中并没有具体用梯形图表示积分和微分的模型,而是直接调用纯软件PID控制功能块来实现微分积分功能(PID控制)。如STEP7提供了系统功能块(其中S7-400为SFB41、SFB42、SFB43,S7-300PLC为FB41、FB42、FB43)实行闭环控制,其中SFB41(CONT_C)用于连续控制,SFB42(CONT_S)用于步进控制,SFB43(PULSEGEN)...

下一篇:西门子PLC模拟量模块干扰问题的解决方法

程序调试时,模拟量模块干扰问题普遍存在,就是读取的数值跳变很快,有时数值这差在几百至10000,这就会引起系统中断电器的误动作,甚至不能实现调制。 现分享一下我在工程中遇此问题的解决方法(实际工程已验证此方超好,数值超稳):一般模拟量模块外部接线(信号为4-20mA)电流信号时,我们先把RA与A+短接后再...
 
更多>同类电工资讯
推荐图文
推荐电工资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  版权声明  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报