求助:s7-200数据转换 点击:1878 | 回复:3



soso

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:7帖 | 24回
  • 年度积分:0
  • 历史总积分:116
  • 注册:2002年10月07日
发表于:2003-07-11 18:58:00
楼主
上面的各位大哥: 大家好!我现在有用到西门子S7-200和欧姆龙COM3,但以前一直是用在没有摸拟量输入的场合,而且所学的也不多,因此对其中的整数,实数以及浮点数的运算感到很迷惑,不晓的它们为什么要换来换去的(比如:用摸拟信号来控制伺服电机的开度,为什么要把它转换成整数--双整数--实数,计算后,再转换成实数--双整数--整数,然后再输出控制信号给电机),也不晓的该怎么转换及如何转换,希望能得到各位的指导。最好举几个实例。谢谢!



芳季

  • [版主]
  • 精华:5帖
  • 求助:5帖
  • 帖子:86帖 | 5336回
  • 年度积分:0
  • 历史总积分:20165
  • 注册:2003年1月31日
发表于:2003-07-05 22:43:00
1楼
我觉得转换主要是看计算精度的要求。 例如:收到一个模拟信号 AIW0=2#10110(10#22;16#16) 它是个整数。 整数传送到vw0 转换成双整数到vd2 转换成实数到vd6 这时若要把这个数除以7再乘以10结果是3.1428571428571428571428571428571 那么只有用实数的计算可以得到 3.142857 整数双整数的结果都是3 由此可见…… 下面是一个解释整数双整数实数(急停中断)不太恰当的实例。作用是控制步进电机。程序没有完全编好。但基本思路已经写完。大家可以下载调试。请有心人给个忠实意见。 NETWORK 1 // //主程序注释 //按 F1 获得帮助及举例程序 // LD SM0.1 CALL SBR_0 NETWORK 2 LD I0.3 EU CALL SBR_1 NETWORK 3 LD SM66.7 = Q0.5 NETWORK 4 LD SM166.0 = Q0.4 NETWORK 5 LD SM166.1 = Q0.3 // //SBR_0子程序注释 //按 F1 获得帮助及举例程序 // NETWORK 1 LD SM0.0 MOVB 16#A8, SMB67 MOVB 3, VB500 MOVW +500, VW501 MOVW -2, VW503 MOVD +240, VD505 MOVW +20, VW509 MOVW +0, VW511 MOVD +500, VD513 MOVW +20, VW517 MOVW +4, VW519 MOVD +120, VD521 MOVB 1, VB490 MOVW VW13, VW493 MOVD +860, VD486 NETWORK 2 LD SM0.0 MOVB 16#F8, SMB37 HDEF 0, 0 MOVD +0, SMD38 MOVD +0, SMD52 HSC 0 ATCH 启动中断, 2 ATCH 急停禁止, 19 ENI // //SBR_1子程序注释 //按 F1 获得帮助及举例程序 // NETWORK 1 //网络题目 (单行) // //网络注释 // LD SM0.0 MOVW VW5, VW501 MOVW VW7, VW503 MOVW VW9, VW509 MOVW VW9, VW517 MOVW VW11, VW519 MOVW VW13, VW493 NETWORK 2 //计算启动步数 // LD SM0.0 MOVW VW9, AC0 AENO -I VW5, AC0 AENO MOVW AC0, VW507 AENO DIV VW7, VD505 AENO MOVW +0, VW505 NETWORK 3 //计算降速步数 // LD SM0.0 MOVW VW5, AC0 AENO -I VW9, AC0 AENO MOVW AC0, VW523 AENO DIV VW11, VD521 AENO MOVW +0, VW521 NETWORK 4 //计算运行步数 // LD SM0.0 MOVD VD1, VD513 AENO -D VD505, VD513 AENO -D VD521, VD513 // //启动中断程序注释 //按 F1 获得帮助及举例程序 // NETWORK 1 //网络题目 (单行) // //网络注释 // LD SM0.0 HSC 0 MOVW +500, SMW168 ATCH 急停中断, 4 PLS 0 DTCH 2 // //急停中断程序注释 //按 F1 获得帮助及举例程序 // NETWORK 1 LD SM166.0 AN SM166.1 LPS MOVW VW503, AC0 AENO *I -1, AC0 AENO *D HC0, AC0 AENO MOVW VW501, VW491 -I AC0, VW491 LPP MOVW -1, AC0 AENO *I VW503, AC0 AENO MOVW VW493, AC1 AENO /I AC0, AC1 AENO MOVD HC0, VD495 AENO /D AC1, VD495 AENO MOVW +0, VW495 NETWORK 2 LD SM166.0 A SM166.1 LPS MOVD VD505, AC0 AENO +D VD513, AC0 AENO INVD AC0 AENO INCD AC0 AENO +D HC0, AC0 AENO *I VW519, AC0 AENO MOVW VW9, VW491 +I AC0, VW491 LPP MOVD VD486, AC0 AENO -D HC0, AC0 AENO *I VW519, AC0 AENO MOVW AC0, VW497 AENO DIV VW493, VD495 AENO MOVW +0, VW495 NETWORK 3 LDN SM166.0 A SM166.1 MOVW VW509, VW491 MOVW VW501, AC0 AENO -I VW509, AC0 AENO MOVW AC0, VW497 AENO DIV VW493, VD495 AENO MOVW +0, VW495 NETWORK 4 LD SM0.0 R SM67.7, 1 PLS 0 MOVB 16#A8, SMB67 MOVW +490, SMW168 PLS 0 DTCH 4 ATCH 启动中断, 2 // //急停禁止中断程序注释 //按 F1 获得帮助及举例程序 // NETWORK 1 //网络题目 (单行) // //网络注释 // LD SM0.0 DTCH 4 ATCH 启动中断, 2

CLYDE

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 6回
  • 年度积分:0
  • 历史总积分:9
  • 注册:2002年8月15日
发表于:2003-07-06 15:32:00
2楼
你好! 因为模拟量模块进行AD转换时候是把现场信号转换成整数放在输入寄存区,例如IW256中。如果要进行逻辑控制,用整数比较难理解,没有单位呀!所以把他变成实数就好理解了,比如***米等,然后在进行编程调节,程序控制完后还是实数呀!就在转换成整数,放到QW256寄存区里面了,这样就完成了整个控制流程,你现在明白了么?如果还不明白,到我的网站www.plctraining.net 论坛里留个言,我会即使的回答你的!

soso

  • 精华:0帖
  • 求助:0帖
  • 帖子:7帖 | 24回
  • 年度积分:0
  • 历史总积分:116
  • 注册:2002年10月07日
发表于:2003-07-11 18:58:00
3楼
谢谢上面两位大师的帮助!不过我想有些事情还是不明白!希望能指点指点! 1.例如:为什么在把60.9传入数据存取区时要用VD,60.9在VD的32位中是如何表示的(在PLC内部},是按BCD码还是按2进制(是否存在系统默任),其中小数部分又是如何表示的呢? 2,实数转换成浮点表示法的的公式是什么? 3。浮点数中采用了阶码表示法,那么阶码不同的两个数如何进行计算? 4,工程中有时需要采集较多的模拟信号,但是在PLC系统中,模拟量输入模块的输入位是很少的,除了增加模拟量输入模块外还有没有更好的方法? 5,在一个PLC程序中是否可以即包含顺序控制指令又包含一般的梯形图指令?

热门招聘
相关主题

官方公众号

智造工程师