西门子S7-200如何把字符转换为十进制数

我用自由口和我的传感器通讯,通讯是通讯上了,这个没问题了,协议是ASCII码协议,现在我要把传感器中的某些字符拿出来做加减运算,可是我发现用ATH指令把字符转为十六进制后,就没法再转为十进制数了,比如我要转换字符‘4’ ’1‘ ’7‘ ’1‘ ’9‘,我要把它转为十进制的41719怎么转

先一定要判断是数字(30H-39H)
只能是先转成十六进制的数,然后减去30H,再乘以相应的加权
4: 34H-30H =4 4*10000=40000
1: 31H-30H=1 1*1000=1000
7: 37H-30H=7 7*100=700
1: 31H-30H=1 1*10=10
9: 39H-30H=9 9*1=9
结果为 4*10000+1*1000+7*100+1*10+9*1=41719
希望对你有帮助。追问

我需要一次性转换‘4’ ‘1’ ‘7’ ‘1’ ‘9’这5个数,把它转为41719,我肯定得用ATH指令,那么如果按照字节型接收的话就是VB0=16#41,VB1=16#71,VB2=16#90,如果按照字型数据接收的话就是VW0=16#4171,如果按照双字型接收的话就是VD0=16#41719000,从其他设备进来的数是字符要用ATH转换才能用的,不可能直接是34H,31H,37H

追答

“4”:vb0=16#34
“1”:vb1=16#31
“7”:vb2=16#47
“1”:vb3 =16#41
“9”:vb4=16#49
两个字符不能存在一个VB里面, 只能是一个字符对应一字节。

这个地方是不是理解错了?
你也可以有模拟器模拟一下.

温馨提示:内容为网友见解,仅供参考
无其他回答

西门子S7-200如何把字符转换为十进制数
只能是先转成十六进制的数,然后减去30H,再乘以相应的加权 4: 34H-30H =4 4*10000=40000 1: 31H-30H=1 1*1000=1000 7: 37H-30H=7 7*100=700 1: 31H-30H=1 1*10=10 9: 39H-30H=9 9*1=9 结果为 4*10000+1*1000+7*100+1*10+9*1=41719 希望对你...

请问西门子plc中如何将16位二进制转换成十进制?
十进制数转换二进制数的算法:十进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为0时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,...

怎样读取PLC双字16进制浮点数将其转化为十进制,这个问题您解决了么...
西门子S7-200采用ROUND指令转为双字整数。

关于西门子plc s7-200编码指令和译码指令
VW120左起第三位为1,即其最低有效位为3,然后把3变成二进制放到VB0的低四位就为0011,所以就是0000 0011,这就是编码

西门子S7-200如何将整数转换为字符串
1、首先定义一个字符数组,然后对其赋值,接着调用std::string提供的函数assign将字符数组的内容赋值给字符串变量。2、运行程序,从打印输出的字符串信息看,其内容即为字符数组的内容。3、如果想要从字符串数组的某一位开始进行赋值,那么调用assign的时候,第一个参数需要指定具体正确的地址,第二个参数...

西门子PLC S7-200模拟量输入怎么编程?
在西门子PLC S7-200的编程中,处理模拟量输入(如4-20mA)与数字信号(A\/D转换后的D0-Dm)之间的转换是关键。模拟量信号首先被转换为A\/D值,假设输入范围为A0(4mA)至Am(20mA),对应的A\/D值范围为D0至Dm。这个线性关系可以通过一个简单的数学公式来描述:A = (D - D0) * (Am - A0) ...

西门子s7-200通信地址怎样设置?
首先看一下S7-200 做主站是对应的从站的寄存器地址 的资料 上面表格中的 00001,10001,30001,40001 开头的0,1,3,4 是代表寄存器类型,真正的寄存器地址 是4位数(十进制)你仪表的寄存器地址3000H 是16进制,需要转化为10进制。3000H 转为10进制格式 后12288 (可以使用WINDOWS带的计算器进行转换)...

西门子plcs7-200储存整数怎样变换成小数点后的数值
必须先把整数转换为浮点数。整数要显示小数时,必须先把整数转换为浮点数,由于整数是16位,而浮点数是32位,因此需用西门子plc换模块把整数转换成双整数,然后再使用西门子plc显示小数模块把双整数转换成实数,就可以显示小数了。S7-200PLC可以采用多种形式的存储器来进行PLC程序与数据的存储,以防止数据...

西门子S7-200,字节传送指令疑惑
不可以插图只能用文字描述比较抽象,VBO是一个字节,V表示V存储区,B表示字节,0表示的是地址,跟输入区I0.0编址差不多。我们的一个字节由一组八位二进制数组成,00000000,从右到左排列是高位到低位,VB0就包括VB0.0到VB0.7八位,IN的数值是十进制数,我们需要转换为二进制数,I0.0有输入...

西门子PLC S7-200传送指令不懂
那就是一个字节能单位存储区能存的十六进制最大的数据,用十进制表示就是255,用二进制表示就是11111111。在这里你可以看十六进制,也可以看十进制,但是最重要的就是十六进制数据转换成的二进制数据。就是那8个1。你知道开关的通断在计算机里用0和1表示吧,那么你用Q点组成的8个存储位现在都是1,...

相似回答