- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
欧姆龙PLC 间接寻址的灵活应用
在PLC 控制系统中,需要经常对连续多个数据进行某项操作,比如产生一系统数据或者一系统数据执行连续运
算或比较以及按时间来对数据进行存储等。在小型PLC 中无变址寄存器情况下,以间接寻址的方法将大大减少程序
开销的容量,以及提高程序的可读性。现以欧姆龙PLC 来实现以上四项操作,其它系列PLC 类似。(因在执行平方根
与除法运算的例程稍显复杂,故只有此例增加地址注释,其它程序段较小,故没有增加注释)。
一:对PLC 连续D 区产生一组连续的数据。
图1:对D1000 开始的地址连续存储1-100 的数据
程序剖析:先初始化要应用的间接寻址寄存器 D600,再选择需要产生的连续数据个数,本例使用 FOR 指令来连
续循环执行操作,使用++B 从而产生源数据,再使用MOV 指令,将产生的源数据送至D600 中指定的
地址中去,注意*D600 前的*号,同时间接寻址地址D600 执行++B 操作,为下一个循环指明直接地址
作准备。当循环指定次数100 到达后,将自动跳出FOR 循环,将执行NEXT 之后的程序。当下次扫描
周期到达时,程序将又从初始化间接寻址开始执行。
图2:监视PLC 内的D1000 开始地址内的数据
数据剖析:进入 PLC 中的D 区值进行监视 D1000 开始地址中,将会发现 D1000 至D1099 分别存储为1-100 的数
据。如果需要修改初始值时,可以在初始化时将 D601 输入相应的值即可,当然如果要产生200 个数
据,修改FOR 后的数据由100 修改为200 即可。
二:对连续通道的数据执行算术运算 (寻找执行平方根后为整数的数及寻找被指定数整除的数)。
图3 :D5000 存储来自于D1000 执行的平方根后为整数的数,D4000 存储来自于D1000 内被3 整除的数
程序剖析:平方根ROOT 指令源数据为32 位,然而本次的源数据却是16 位数据,同时因ROOT 指令对平方根的
余数不进行保留,故无法直接得到小数部分,也即无法精准得出执行平方根后是否为整数,故需将底
16 位置0 (间接地将数据乘以#10000 ),即每次在执行ROOT 之前需将底16 位 使用"MOV #0 *D606 "
来清零,同时使用MOVD 指令来提取出D608 中的底8 位即就是执行平方根后的小数部分值,当D608
为零时表示执行平方根操作后无小数产生,即将源地址中的数据送至新目标地址中去,这样就实现了
寻找指定区域内整数平方根的数据。能被 3 整除的数据,那余数必定为0,利用这点即可得出能被3
整除的数,并提取存储至D4000。
图4 :PLC 内D4000 开始地址存储来自于D1000 内能被3 整除的数据
数据剖析:从D4000 开始存储的数都是从D1000 中开始到D1200 中共200 个地址中能被3 整除的数。
比如:54 ÷3 = 18; 102÷3 = 34 ; 129÷3 = 43; 198÷3 = 66 。即以上表中得出的数据除以3 不会有
小数。
图5:PLC 内D5000 开始地址存储来自于D1000 内数据执行的平方根操作
数据剖析:从D5000 开始存储的数都是从D1000 中开始到D1200 中共200 个地址当中执行完平方根指令后数据
为整数的数。
2 2 2 2
比如: 1 = 1; 4 = 2; 121 = 11; 196 = 14 。即他们执行平方根后的数据无小数产生。
√ √ √ √
指令剖析:
FORNEXT:用于循环操作,循环次数由FOR 后的数据决定,循环的区域从FOR 到NEXT 之间包含的
所有指令,都参与到循环。本例用于循环扫描次数来产生数据及中间数据操作运算。
++B : BCD 码自加加指令,用于自增加。本例用于间接寻址自增加。
/B : BCD
文档评论(0)