算术运算导致溢出。_【S7200指令教程】数据运算指令ADD SUB MUL DIV
S7-200的数学运算指令有整数、双整数、实数数学运算指令。梯形图加/减运算指令采用指令盒格式,指令盒由指令类型,使能端 EN,操作数(1N1、IN2)输入端,运算结果输出OUT,逻辑结果输出端ENO(“1”正确或 “0”错误)等组成。
Ø XXX为运算律标识:ADD、SUB、MUL、DIV
Ø X为数据类型:I、DI、R
一、加/减运算
加/减运算指令是对符号数的加/减运算操作。包括整数加/减、双整数加/减运算和实数加/减运算。加/减运算6种指令的梯形图指令格式分别为:ADD_I、ADD_DI、ADD_R和SUB_I、SUB_DI、SUB_R。
(1) 整数加/减运算ADD_I/SUB_I(ADD Integer / Subtract Integer)
Ø 在梯形图编程方式下当使能EN输入有效时,将两个单字长(16位)符号整数(IN1和IN2)相加/减,然后将运算结果送OUT指定的存储器单元输出。运算法则为:IN1±IN2=OUT。
Ø 语句表运算指令为:+I IN1, OUT和-I IN1, OUT。运算法则为:OUT±IN1=OUT。
(2)双整数加/减运算ADD_DI/SUB_DI(ADD Double Integer / Subtract Double Integer)
Ø 在梯形图编程方式下当使能EN输入有效时,将两个双字长(32位)符号整数(IN1和IN2)相加/减,运算结果送OUT指定的存储器单元输出。运算法则为:IN1±IN2=OUT。
Ø 语句表运算指令为:+D IN1, OUT和-D IN1, OUT。运算法则为:OUT±IN1=OUT。
(3) 实数加/减运算ADD_R/SUB_R(ADD Real / Subtract Real)
Ø 在梯形图编程方式下当使能EN输入有效时,将两个(32位)实数(IN1和IN2)相加/减,运算结果送OUT指定的存储器单元输出。运算法则为:IN1±IN2=OUT。
Ø 语句表运算指令为:+R IN1, OUT和-R IN1, OUT。运算法则为:OUT±IN1=OUT。
算术运算指令影响特殊标志的算术状态位SMl.0~SMl.3,并建立指令盒能量流输出ENO。对于加/减运算所能影响的算术状态位(特殊标志位)有:SMl.0(零),SMl.1(溢出),SMl.2(负)。SM1.1 用来指示溢出错误和非法值。如果 SMl.1 置位,SMl.0 和 SMl.2 的状态无效,原始操作数不变。如果SMl.1不置位,SMl.0和SMl.2的状态反映算术运算的结果。ENO(能量流输出位)输入使能EN有效,运箅结果无错时,ENO=1,否则 ENO=0(出错或无效)。影响允许输出ENO正常工作的出错条件有:SM1.1=1(溢出),0006(间接寻址错误),SM4.3(运行时间)。
二、乘/除运算
乘/除运算是对符号数的乘法运算和除法运算,它包括:整数乘/除运算(MUL_I/DIV_I),双整数乘/除运算(MUL_DI/DIV_DI),整数乘/除双整数输出运算(MUL/DIV),实数乘/除运算(MUL_R/DIV_R)8种类型。
(1) 整数乘/除法指令MUL_I/DIV_I(Multiple Integer / Divide Integer)
Ø 在梯形图编程方式下当使能EN输入有效时,将两个单字长(16位)符号整数IN1和IN2相乘/除,产生一个单字长(16位)整数结果,从OUT(积/商)指定的存储器单元输出,在除运算律下,输出为商,不保留余数。运算法则为:IN1*IN2=OUT和IN1/IN2=OUT。
Ø 语句表运算指令为:*I IN1, OUT和/I IN1, OUT。运算法则为:OUT*IN1=OUT和OUT/IN1=OUT。
(2) 双整数乘/除法指令MUL_DI/DIV_DI(Multiple Double Integer/Divide Double Integer)
Ø 在梯形图编程方式下当使能EN输入有效时,将两个双字长(32位)符号整数IN1和IN2相乘/除,产生一个双字长(32位)整数结果,从OUT(积/商)指定的存储器单元输出,在除运算律下,输出为商,不保留余数。运算法则为:IN1*IN2=OUT和IN1/IN2=OUT。
Ø 语句表运算指令为:*D IN1, OUT和/D IN1, OUT。运算法则为:OUT*IN1=OUT和OUT/IN1=OUT。
(3) 整数乘/除双整数输出指令MUL/DIV
Ø 在梯形图编程方式下,当使能EN输入有效时,将两个单字长(16位)符号整数IN1和IN2相乘/除,产生一个双字长(32位)整数结果,从OUT(积/商)指定的存储器单元输出,整数除法产生的32位结果中低16位是商,高16位是余数。运算法则为:IN1*IN2=OUT和IN1/IN2=OUT。
Ø 语句表运算指令为:MUL IN1, OUT和DIV IN1, OUT。运算法则为:OUT*IN1=OUT和OUT/IN1=OUT。
(4) 实数乘/除法指令(MUL_R/DIV_R)。
Ø 在梯形图编程方式下,当使能输入EN有效时,将两个(32位)符号实数IN1和IN2相乘/除,产生一个(32位)实数结果,从OUT(积/商)指定的存储器单元输出。
Ø 语句表运算指令为:*R IN1, OUT和/R IN1, OUT。运算法则为:OUT*IN1=OUT和OUT/IN1=OUT。
乘/除运算指令执行的结果影响算术状态位(特殊标志位):SMl.0(零),SMl.1(溢出),SMl.2(负),SMl.3(被0除)。乘法运算过程中 SMl.1(溢出)被置位,就不写输出,并且所有其他的算术状态位置为0。(整数乘法产生双整数指令输出不会产生溢出)。如果除法运算过程中 SMl.3 置位(被0除),其他的算术状态位保留不变,原始输入操作数不变。SMl.3不被置位,所有有关的算术状态位都是算术操作的有效状态。乘/除运算指令执行的结果影响允许输出ENO正常工作的出错条件是:SMl.1(溢出),SM4.3(运行时间),0006(间接寻址错误)。
控制要求
本任务是要求使用PLC的算术运算和逻辑运算指令,设计一个数值运算PLC控制系统。
要求:启动时数码管显示0,LED条向上流转以前先设定流转圈数:每按一次S3,流转圈数加5,每按一次S4,流转圈数减3。数码管DS1、DS2应能显示设定的圈数,设定好流转圈数后。按下按钮S1,LED条开始向上流转,每流转一周,数码管读数自动减1,待数码管显示0时,LED条停止向上流转,按下按钮S2,则不管LED条向上流转了几周,立即停止,数码管显示0。
IO分配
接线图
实物图
源程序
拓展训练
通电后数码管显示0。按下学习板上按钮去的S1按钮,数码管显示从95开始进行倒计时,每过1秒显示的值自动减5,待显示的值减到0,则下一秒又从95开始倒计时,循环不断,直到按下S2按钮停止,数码管显示0。
如果觉得本文有用,欢迎推荐更多朋友关注我们
学习板基本操作
- USB转串口线驱动的安装
- 学习板与三菱编程软件通信设置
- 学习板与西门子编程软件通信设置
你的每个分享、点赞和在看我都喜欢!
算术运算导致溢出。_【S7200指令教程】数据运算指令ADD SUB MUL DIV相关推荐
- c#oracle数组超出,c# – ODP.net填充数据集时的Oracle Decimal Number精度问题.异常:算术运算导致溢出...
我在c#.net 2(Visual Studio 2005 SP1)中工作,尝试使用来自Oracle10g数据库的select * from table的结果填充数据集. .net框架,IDE和数据库 ...
- C#执行Sql 时,出现“算术运算导致溢出”问题,如何解决?
C#执行Sql 时,出现"算术运算导致溢出"问题,如何解决? 参考文章: (1)C#执行Sql 时,出现"算术运算导致溢出"问题,如何解决? (2)https: ...
- 【BUG】System.OverflowException:“算术运算导致溢出。“
文章目录 System.OverflowException:"算术运算导致溢出." 一 问题描述 二 原因及解决办法 System.OverflowException:" ...
- rose顺序图转换为协作图_【S7200指令教程】顺序控制指令SCR SCRT SCRE
戳上方蓝字 "PLC课程" 关注我们哦! 一指令解析 1.顺序控制继电器S: 顺序控制继电器(S)是西门子S7-200系列PLC内部软继电器的一种,它和输入继电器(I)和输出继电 ...
- 算术运算导致溢出_CPU的控制器与运算器
计算机基础方面的知识,对于一些非科班出身的同学来讲,一直是他们心中的痛,而对于科班出身的同学,很多同学在工作之后,也意识到自身所学知识的不足与欠缺,想回头补补基础知识.关于计算机基础的课程很多,内容繁 ...
- 导致溢出_由整数类型溢出导致的英雄联盟峡谷惨案
最近,英雄联盟迎来了 S11 赛季的版本大更新.作为一名从 S2 一路走过来的老玩家,我自然也是非常的关注.除了发生了巨变的装备系统之外,各种各样的 bug,也是在玩家之间炽手可热的话题.这其中,较为 ...
- 导致溢出_邯郸一司机,溢出的“5毫克”导致A2被降级,老司机自吞“苦酒”
酒后驾车宛如 "定时炸弹" 但就是有人偏要以身试法 下面这位司机 就为自己的行为付出了代价 案情回顾 1月6日晚上8时许,当民警巡查至大名府路与贵乡街路段处时,发现自东向西驶来的一 ...
- 运行窗体跳转时提示未处理System.OverflowException HResult=-2146233066 Message=算术运算导致溢出。 Source=DevExpress.U
未处理System.OverflowException HResult=-2146233066 Message=未处理System.OverflowException. Source=De ...
- 【Android 逆向】x86 汇编 ( call 子函数调用指令 | jmp 跳转指令 | lea 加载指令 | mov 数据传送指令 )
文章目录 一.call 子函数调用指令 二.jmp 跳转指令 三.lea 加载指令 四.mov 数据传送指令 总结 一.call 子函数调用指令 call 指令是 子函数调用指令 , 调用的指令的下一 ...
最新文章
- 计算机相关的考试题目,计算机考试相关题目汇总.doc
- 介绍一个团队协同管理工具:Leangoo
- 互联网汽车迎新成员 Alibaba YunOS Auto冠名2016世俱杯
- [Ajax]ajax学习与理解
- python提取html正文为txt,python 提取html文本的方法
- 程序的内存分配模式(堆栈以及静态存储区,文字常量区,代码区)
- 数字签名,数字证书,证书链原理
- 2017年最新的全国省市sql数据
- 史上最全ClassLoader总结
- [概念学习] Virtualization的几个概念
- 炸了!!又一 VSCode 神器面世!
- run rhadoop
- 弱电系统集成服务器,智能化弱电系统集成(BMS系统集成工程)设计方案
- 威联通服务器操作系统,QNAP 威联通 453BT3 网络存储服务器 使用手记,Nas中的小钢炮...
- “0元送设计”如何换来70亿营收?尚品宅配的新零售数字化增长研究
- 使用matlab建立个人简历,图像制作个人简历范文
- Ubuntu下载速度慢的解决方法
- U盘文件如何恢复?u盘还原,必学的4招(2023已更新)
- Linux多定时器实现之二
- Android计时常用的7种方式
热门文章
- 使用python读取word文件里的表格信息
- 一统江湖的大前端(4)shell.js——穿上马甲我照样认识你
- 网络计算机的分类包括哪些,计算机的分类有哪些
- java中 与%_java中“/”与“%”的区别
- 扫描仪 pfu_行业案例:扫描仪高效加持下的艺术工作室
- html怎么帮图片占位,css+html实现Skeleton Screen 加载占位图动画效果(带动画)
- TikZ绘图示例——尺规作图: 鸭蛋圆形的近似画法
- Ubuntu18.04上手配置入门指南
- 使用scrapy报错:attrs() got an unexpected keyword argument 'eq'解决办法
- linux部署3proxy源码,在CentOS 7系统中从源码安装RTPProxy的方法