台达PLC没搞过,但编程思路是一样的,我可以告诉你编程思路:1、将16进制数先转换为BCD码数,如有现成指令可直接使用,如没有可以编程:如被转换的数≤9999,可用一字存储器作BCD码存数区,设它为MW10,先将它清0,再将待转换的16进制数与1000(即16#03E8)比较,如>1000,将待转换的16进制数减去03E8,再将MW10加1,将余数与1000比较,如仍如>1000,再将余数减去03E8,再将MW10加1。。。直到余数<1000为止,将MW10左移4位后,再用余数与100(即16#64)比较,如余数>100,将余数减去16#64,再将MW10加1,再比较。。。直到余数<100,将MW10左移4位,再用同样的方法将余数与10(即16#A)比较,直到余数<10,将MW10再左移4位后,将余数或到MW10中,此时的MW10内容即为转换后的BCD码值。
转换为BCD码后,就可用16进制转换成ASCII码的指令将转换为BCD码数转换为ASCII。
下面是用s7-200编写的转换ASCII码的程序,从中可以看出:对整数有现成指令ITA,可直接将整数转换为ASCII码。当用16进制数转换为ASCII码,必须先将16进制数转换为BCD码,再将BCD码转换为ASCII,其转换结果才是正确的。
监视结果为:
从表中显示结果可以看出:1、VB104~VB107 是直接将整数1234 用整数转换ASCII码指令ITA转换为ASCII码。从网络2可知:16#4D2,其10进制数为1234。如直接用16进制数转换ASCII码指令HTA 将16进制数转换为ASCII码,其结果是错误的(见VB120~VB123),必须先用I-BCD指令将其转换为BCD码,再通过16进制转换ASCII指令HTA进行转换,其结果才是正确的(见VB124~VB127)。