登录
首页 PLC论坛 三菱Mitsubishi
回帖 发帖
正文

主题:MODBUS ASC通讯中的冒号怎么转换成 ASCI码?

点击:1325 回复:11

比如在进行 MODBUS ASC 通讯时, 要发送  :01 02 这么个数据存在D0 D1 D2中(8位模式), ASC 通讯要求要把数据都转换成 ASCII 码发送, 那么 D1 D2中的数据可以用 ASCI 指令转换成 30 31 30 32 ,但是这个 : 号怎么转,如果往 D1 中存入 3A,再用 ASCII 指令,它就转成了 30 41 ,但要的是将 : 转换成 3A, 那这个冒号怎么样存到 D1 中去呢?
17-05-16 19:04

引用 ymxu 在 2017/5/16 19:04:30 发言【内容省略】

冒号的ASC码就是3A,因此你无需在执行ASCII指令进行转换了。
所以将冒号存入D1的方法是: MOV H3A D1
Good Luck~
17-05-16 21:04
我是要用 ASCI 指令批量转换成 ASCII 码, 比如 : 01 02 , 在转换之前 我可以将 H01 H02 存到 寄存器中, 经过 ASCI 转换以后 就变成了 30 31 30 32 , 但是 : 怎么样才能存到 寄存器中, 是不是只能 直接 向一个寄存器 写入 H3A, 在用ASCI 指令的时候,不要转换这个 冒号 的ASCII码?
17-05-16 21:31

引用 ymxu 在 2017/5/16 21:31:58 发言【内容省略】

你这不是老调重弹嘛!同样的问题你问过了啊!把“:”存到寄存器里,MOV H3A D0即可
H3A是他的ASCII码
:是他的字符表现形式
===================================
在C语言中
char a,b;
a=0x3a;
b=':';
a和b是等价的
17-05-16 21:49

引用 guanyumou 在 2017/5/16 21:49:19 发言【内容省略】

我是要用  ASCI  指令将  :  号,转换成H3A,这个怎么存进寄存器
17-05-17 10:48
直接查ASCI表  :  H3A赋值给D就可以了,干啥还要用ASCI指令转换?ASCI S D N 是驱动条件成立的时候将存储在S为首址的N个十六进制字符转换成ASCI码存储在D为首的N个寄存器中,一个S可以存放4个十六进制数,一个D在8位模式下可以存放一个ASCI字符,比如ASCI D0 D20 K8那么赋值D0 1 2 3 4 D1 A B C D 的话,在8位模式下D20到D27各存一个ASCI字符分别为 A B C D 1 2 3 4.十六位模式下,原址赋值不变,转换后只需要4个D存放ASCI字符D20 D21 D22 D23,分别存放是BA DC 21 43
17-05-17 15:55

引用 469025821 在 2017/5/17 15:55:41 发言【内容省略】

谢谢了,我一直以为3A是冒号的ASC码,实际上是  冒号 是  H3A的ASC码,汗??
17-05-17 16:19
客气!我刚学的,李金城老师的指令那本书都有讲!
17-05-17 16:52
现在很少用ASCI的协议了,大部分都是MODBUS RTU
17-05-17 21:01

引用 ymxu 在 2017/5/17 10:48:47 发言【内容省略】

表情冥顽不灵!
17-05-17 21:19

上一页下一页

工控新闻

更多新闻资讯