将触摸屏输入的十进制数变换为十六进制数程序怎么写 点击:7206 | 回复:9



wuwei522

    
  • 精华:0帖
  • 求助:1帖
  • 帖子:1帖 | 10回
  • 年度积分:0
  • 历史总积分:621
  • 注册:2010年10月31日
发表于:2012-01-05 10:46:26
楼主
求助帖5分-已结帖

在plc串口控制台达变频器中(modbus帧),控制命令需要转换为十六制或asc,现场用触摸屏设定的十进制频率。如3000=30*100,转换为十六进制(h0bb8)程序怎么写,这样比较直观,请老师们指点,最好有实例(S7200)。谢了!!!!!!!!!!!我刚看了s7-200与台达变频通讯(LRC)网址:http://www.gongkong.com/webpage/datum/201112/2011123115122100001.htm

有个疑问,程序中vw135应该是十进制数,用i0.3,i0.4每秒+,—100(1hz)设定频率值,技成网视频中(modbus asc格式,vfd-b)),如30hz=30*100=3000变h0bb8变asc发送,其它参数都是十六制,设频率到底是3000还是h0bb8,当然如果用十制数,用触摸屏现场设定频率方便多了,200mobbus主站库与变频通讯时直接发送十制频率可以吗?我没有经验向各位老师们讨教????????????



楼主最近还看过



qdtyco

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 20回
  • 年度积分:0
  • 历史总积分:90
  • 注册:2011年7月21日
发表于:2012-01-05 11:04:02
1楼

利用指令; BTD

例如:

L MDO

BTD

T MD20.

将7位BCD转换为整数型放入MD20

今生缘

  • [版主]
  • 精华:45帖
  • 求助:23帖
  • 帖子:4907帖 | 10148回
  • 年度积分:4
  • 历史总积分:111194
  • 注册:2011年3月02日
发表于:2012-01-05 11:05:11
2楼
偶只会进制之间转换,程序还等高手啦

miy_gongkong

  • 精华:0帖
  • 求助:2帖
  • 帖子:27帖 | 3065回
  • 年度积分:0
  • 历史总积分:12427
  • 注册:2008年9月18日
发表于:2012-01-05 12:54:56
3楼

你说的应该是 把整数 转换成 16进制 字符串(ASCII 码),  分为两部, 第一步把 PLC寄存器中的 整数转换成 十进制 ASCII 码(一般PLC 有系统指令 或功能块), 第二步 再把它转换成  16进制 字符串(ASCII 码), 完毕!

 

 

zhxl198808

  • 精华:7帖
  • 求助:14帖
  • 帖子:79帖 | 3915回
  • 年度积分:0
  • 历史总积分:22219
  • 注册:2008年9月06日
发表于:2012-01-05 13:28:47
4楼

引用 miy_gongkong 的回复内容:你说的应该是 把整数 转换成 16进制 字符串(ASCII 码),  分为两部, 第一步把 PLC寄存器中的 整数转换成 十进制 一般PLC 有系统指令 或功能块), 第二步 再把它转换成  16进制 字符串(ASCII 码), 完毕!  




把整数转为十进制ASCII 码的指令为   ITA

十进制ASCII 码转为16进制 字符串(ASCII 码)指令为    HTA

 

miy_gongkong

  • 精华:0帖
  • 求助:2帖
  • 帖子:27帖 | 3065回
  • 年度积分:0
  • 历史总积分:12427
  • 注册:2008年9月18日
发表于:2012-01-06 08:54:25
5楼

S7 200  指令不是这样吧? ITA,  HTA !

wyb2866255

  • 精华:73帖
  • 求助:0帖
  • 帖子:218帖 | 2872回
  • 年度积分:0
  • 历史总积分:31450
  • 注册:2010年7月01日
发表于:2012-01-06 09:05:32
6楼

     在触摸屏上置数,传入给PLC,一般会自动转换为整数,不需进行 10进制转换16进制,既使需要转换,S7200有现成的BCD码转换为整数的指令。直接用就可以了。

    如果你需要学习将BCD码转换为16进制数的编程,我可以告诉你如何编程:BCD码又叫8421码,它的每一位数都是用4位2进数表示,个位BCD码的4位2进制数分别代表8、4、2、1,十位的BCD码的4位2进制数分别代表80、40、20、10,百位为800、400、200、100。。。可以这样编程:如果是4位BCD码,其最大值为9999,把它放在一个字存储器(如VW10),再用另一个字存储器如MW10用存放16进制数,先将MW10清0,先判断VW10的最高位数即V10.7=1,如=1,则将16#1F40(即10进制数8000),加在MW10里,如=0不进行加数运算,将VW10左移一位,再断VW10的最高位数即V10.7=1,如=1,则将16#FA0(即10进制数4000),加在MW10里,再将VW10左移一位,再断VW10的最高位数即V10.7=1,如=1,则将16#7D0(即10进制数2000),加在MW10里.....判断4次完成千位数的转换,接着判断百位数,一次加数为800、400、200、100的16进制数,百位判断完再判断十位数,个位数不需判断,直接将VW10循环左移4位,将VW10加在MW10里即可。

wyb2866255

  • 精华:73帖
  • 求助:0帖
  • 帖子:218帖 | 2872回
  • 年度积分:0
  • 历史总积分:31450
  • 注册:2010年7月01日
发表于:2012-01-06 22:48:04
7楼

我用S7-200编辑了BCD码转换为16进制数的程序,供大家分享,如有什么问题可以提出了,该程序经上机运行,好用。本程序就是对BCD3000进行转换的。VW10存放的是BCD码数,可改为其它4位以内的BCD码数。

   如有需要,还可以将BCD吗转换为ASCII码的程序贴上来。

 

 

wyb2866255

  • 精华:73帖
  • 求助:0帖
  • 帖子:218帖 | 2872回
  • 年度积分:0
  • 历史总积分:31450
  • 注册:2010年7月01日
发表于:2012-01-06 22:52:13
8楼

少贴了一段,现补上来。  

朱镕拓

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 20回
  • 年度积分:0
  • 历史总积分:256
  • 注册:2017年2月16日
发表于:2017-04-26 13:05:04
9楼

,,,,,,,,,,,,,,,,


热门招聘
相关主题

官方公众号

智造工程师