PLC, ASCII码和计算机的关系,自由口通讯实例讲解

前段时间,我写了一篇S7-200smart通过RS485端口使用自由口通讯方式向计算机发送数据的实例。

实例过程;将需要的数据转换成ASCII码的方式并发给计算机。

写完之后很多人私信我,问我关于ASCII码的问题,今天我根据那个应用实例来讲解一下ASCII码;也希望朋友们可以多给我留言,有什么问题或者对于我文章的想法都可以告诉我。

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

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

PLC, ASCII码和计算机的关系,自由口通讯实例讲解

PLC, ASCII码和计算机的关系,自由口通讯实例讲解

PLC, ASCII码和计算机的关系,自由口通讯实例讲解

PLC, ASCII码和计算机的关系,自由口通讯实例讲解

PLC, ASCII码和计算机的关系,自由口通讯实例讲解

PLC, ASCII码和计算机的关系,自由口通讯实例讲解

PLC, ASCII码和计算机的关系,自由口通讯实例讲解

这个表是什么意思?

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

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

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

PLC, ASCII码和计算机的关系,自由口通讯实例讲解

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

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

PLC, 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)

这回看懂了吧!

PLC, ASCII码和计算机的关系,自由口通讯实例讲解

工程测试图

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

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

好吧,且行且珍惜!看懂的朋友点个赞吧!


分享到:


相關文章: