在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主站库与变频通讯时直接发送十制频率可以吗?我没有经验向各位老师们讨教????????????
楼主最近还看过
在触摸屏上置数,传入给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里即可。