首先我们看一下ASCII码;ASCII 码使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符。标准ASCII 码也叫基础ASCII码,使用7 位二进制数(剩下的1位二进制为0)来表示所有的大写和小写字母,数字0 到9、标点符号, 以及在美式英语中使用的特殊控制字符

也就是说ASCII码是根据计算机的工作原理应运而生的一种语言。标准码表如下图;

ascii码怎么算(干货分享ascii码的算法步骤)ascii码怎么算(干货分享ascii码的算法步骤)ascii码怎么算(干货分享ascii码的算法步骤)ascii码怎么算(干货分享ascii码的算法步骤)ascii码怎么算(干货分享ascii码的算法步骤)ascii码怎么算(干货分享ascii码的算法步骤)ascii码怎么算(干货分享ascii码的算法步骤)

这个表是什么意思?

其实很简单,大家可以把它理解成一种协议,就是双方都规定好了;我发16#31就是1的意思,你收到16#31也是代表1而不是49。大家可以看到上面的码表,通过这个码表我们可以看到这种方式可以发送的内容很多。所以这种方式适用性较强,可应对各种情况。

那么在PLC和电脑进行通讯时不用ASCII码可以吗?当然可以,比如说可以使用MODIBUS,或者你和软件工程师商定自己写一个协议都可以。

我们再看一下S7-200smart的转换指令是如何工作的!

ascii码怎么算(干货分享ascii码的算法步骤)

以这个指令举例,我们将双字VD600的数值以FMT=16#C9的方式转换成ASCII码,该码存在以VB805为起始地址的区域里。

RTA是将实数值IN转换成ASCII码。格式参数FMT会将指定小数点右侧的转换精度,小数点显示为逗号还是句号以及输出缓存区大小。得出结果会存入以OUT开头的输出缓存区。

ascii码怎么算(干货分享ascii码的算法步骤)

FMT=16#C9的意思是输出缓存区大小为12个字节,小数点显示为逗号,保留一位小数点。比如说VD600=12134.64,转换后,

VB805=16#20(空格);VB806=16#20(空格);VB807=16#20(空格);

VB808=16#20(空格);VB809=16#20(空格);VB810=16#31(对应1);

VB811=16#32(对应2);VB812=16#31(对应1);VB813=16#33(对应3);

VB814=16#34(对应4);VB815=16#2C(对应逗号);VB816=16#36(对应6)

这回看懂了吧!

ascii码怎么算(干货分享ascii码的算法步骤)

工程测试图

其他的指令的运行方式和RTA类似,大家举一反三吧!

计算机接收到信号后,按照ASCII码反编译!就可以得到相关的数据,但需要注意的是;数据要有开始或者结束标志(比如我程序里的0D0A),而且两个数据之间需要做分割,比如我程序中的16#3A是冒号的意思,就是分隔符。否则计算机端的软件工程师会找你拼命的!想要看我以前程序的请找我以前的文章吧!

点赞(0) 打赏

相关推荐

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部