首页 > 编程知识 正文

知识自由扩散(土木工程师)

时间:2023-05-04 04:41:45 阅读:102841 作者:3721

原创不易,请勿抄袭。

前段时间写了一个S7-200使用自由端口通信,通过RS485端口向电脑智能发送数据的例子。

示例;将所需数据转换为ASCII码并发送到计算机的方法。

写完后,很多人私底下给我写信,问我关于ASCII码的问题。今天,我将根据那个应用程序示例解释ASCII代码。也希望朋友们多给我留言,告诉我大家对我的文章有什么问题或者想法。

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

也就是说,ASCII码是根据计算机的工作原理而产生的一种语言。标准代码表如下:

这块表是什么意思?

其实很简单,我们可以把它理解为一种约定,即双方都有约定;我发了16#31表示1,你收到了16#31表示1而不是49。你可以看到上面的代码表。通过这个码表,我们可以看到很多可以用这种方式发送的内容。因此,该方法适用性强,能够应对各种情况。

那么,PLC和计算机之间没有ASCII码的通信可以吗?当然可以,比如你可以用MODIBUS,或者你和软件工程师可以约定自己写协议。

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

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

RTA是将实数IN转换为ASCII码。格式参数FMT将指定小数点右边的转换精度,小数点是显示为逗号还是句点,以及输出缓冲区的大小。结果将从out开始存储在OUTput缓冲区中。

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)

这次明白了!

工程测试图

其他指令以类似于RTA的方式运行。让我们举一反三!

收到信号后,电脑根据ASCII码反编译!可以得到相关数据,但需要注意的是:数据要有开始或结束符号(比如我的程序中的0D0A),两个数据要分开。例如,我的程序中的16#3A表示冒号,它是分隔符。不然电脑端的软件工程师会拼命找你!如果你想看我以前的节目,请找我以前的文章!

好吧,去做,好好珍惜!如果你明白,请给我一个赞美!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。