我定义结束字节SMB89为字符e,用串口调试助手向PLC发送e,PLC可以结束信息接收,在串口调试助手里选择以 十六进制发送,发送了e的ASCII码65,也可以结束信息接收。有两个问题:
1.以十六进制发送ASCII码65,PLC就认为是发送的结束字符e,结束信息接收,以普通十进制发送65就不行,是不是PLC的SMB89接收到十六进制的数据才会默认是ASCII码,十进制会当成数字65?或者是6 5两个字符?
2.自由口通讯格式不是自己写吗,那么串口调试助手,它发送十六进制是怎么个格式,我没有给PLC定义这个格式,它怎么写才能让PLC知道它发送的是十六进制的,而不是十进制?我知道数学上十六进制是像0DH这种有H在后面标注来表明是十六进制。PLC最终接收的不都是0,1这种位数据吗,当我没定义数据格式时,软件自动在数据的某个标识位加了一串01标明16位吗?
最佳答案
1)10进制的数与16进制数更本是2个概念的问题,一个VB中存放的是一个数据,没有分隔符。ascll码是以16进制数形式存放的。
2)是的,按“自己”的通讯格式,严格意思上说是按双方所共有的通讯协议写的,而不是你自定义的协议,只是允许你自己选择通讯方式。
这个需要你按16进制数事先定义好,或者直接用字符的方式,系统仍然会自动转为16进制数据。
至于plc最终是以0、1方式处理是plc的硬件特性,用户只需要处理中间环节。
提问者对于答案的评价:
谢谢
专家置评
查看asiic码表
小写字母''e''
十六进制对应16#65
十进制对应101
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc144114.html