西门子 PLC 十进制转16进制
总的来说就是VD28的十进制5000.0怎么编程使得输出VB105是十六进制1388,如果我编程有错误麻烦大神们编程给个列子我看看,谢谢 展开
输出缓冲区的大小由ssss域指定。0、1或2个字节无效。输出缓冲区中小数点右面的位数由nnn域指定。nnn域的有效范围是0至5。将小数点右面的位数指定为0会使值显示为不带小数点。当nnn值大于5时或当指定的输出字符串长度太小无法存储转换的值时,输出缓冲区用ASCII空格字符填充。c位指定是使用逗号(c = 1)还是使用小数点(c = 0)作为整数和小数之间的分隔符。
根据下列规则对输出缓冲区进行格式化:
1. 正值写入输出缓冲区,不带符号。
2. 负值写入输出缓冲区,带起始负号(-)。
3. 小数点左侧的起首零(与小数点相邻的数字除外)被压缩。
4. 小数点右侧的数值进位,使之符合小数点右侧指定的位数。
5. 输出缓冲区的尺寸必须最小比小数点右侧数位多3个字节。
6. 输出缓冲区中的数值右对齐。
RTA:实数至ASCII指令,将实数值(IN),此处为VD28,转换成ASCII字符。格式FMT指定小数点右侧的转换精确度(VB1000),以及是否将小数点表示为逗号或点号及输出缓冲区尺寸。转换结果置于从OUT开始的输出缓冲区中。结果ASCII字符的数目(或长度)相当于输出缓冲区的尺寸,指定的尺寸范围为3至15个字符。
VB1000(FMT)里面的数据格式为 sssscnnn 其中:ssss转换后数据长度; c:c=0时小数点用“.”表示,c=1时小数点用“,”表示;nnn为小数点位数。
此处如果想要输出结果为5000.0则VB1000=01100001b=16#61
VB32=16#35 即 “5”
VB33=16#30
VB34=16#30
VB35=16#30
VB36=16#2E 即“.”
VB37=16#30
ATH:ASCII至HEX 指令将从IN开始的ASCII字符号码(LEN)转换成从OUT开始的十六进制数字。ASCII字符串的最大长度为255字符。
但ATH只支持 0 至 9 和大写 A 至 F,不支持小数点“.”和逗号“,”,所以只能取小数点前面的整数。此时VB2000=4
2.十进制跟16进制不需要转换,你运算就是了。。
3.字,字节,双字,实数之间数据类型可以转换。
4.同一个地址,,监控的时候可以选择显示方式是十进制或16进制。
5.有八段显示器显示,用的是整数转BCD码,而不是十进制、十六进制转换。
6.如果你是有别的目的,那我就不知道了。。你可以提出来,看看,具体点。
RTA使用要点:
IN:指定输入的数据,这个数据必须是一个浮点数(实数)。
FMT:FMT是有特殊的格式要求的。前7~4位表示输出缓冲区大小,第3位表示间隔符号是点,还是逗号,剩下的3为表示小数点后面有几位小树。这个你设置不对肯定不行的。
ATH实际上也是有格式要求的。详情你可以查看编程软件的帮助。你输入ATH或者RTA指令,然后选中该执令,然后按下F1,详细的帮助信息就出来了。关于指令的详细信息看帮助吧,授之以鱼,不如授之以渔。