读取串口数据_西门子1200通过串口通讯读取仪表数据过程记录

844cfbe6fa8dc88ec218f9079c7f691d.pngJZGKCHINA 工控技术分享平台

尊重原创 勿抄袭

勿私放其他平台

4fd26d8674910a64177e18ddd313fce7.png

整个通讯过程并不是很复杂,就是需要注意几个关键点。有几个地方需要做设置。对于第一次使用还是会耽搁不少时间的。

4fd26d8674910a64177e18ddd313fce7.png

01

通讯基础

软件使用博图V14。硬件使用西门子1200系列具体1214C通讯模块使用的是CB 1241RS485的模块。

40c96c0dfb0ab78bc037fe679ab79ae6.png

通讯指令使用的是MODBUS(RTU)指令。西门子有一个很大的迷惑点就是对硬件版本,软件版本的要求。

c85f726072c5d0152e3e9e2e0cc6b89c.png

这个是我实际使用的通讯板。从博图软件看到的通讯板固件版本是V1.0并不是网上很多的说是要V2.0或者更高。只是很多写说明的自己都亲自测试。

02

通讯组态

本来通讯组态不是很复杂,就是有很多设置点留有多个接口点,但是只有一个起作用。这样就给初次使用者造成了很多的不方便。

1、通讯程序的模式选择        

e58962467f3766f3c2e3ba65be66d4db.png

这个地方如果使用二线制半双工的话一定做这步设置。接线的时候只要把A,B两条线接到通讯板的A,B不需要接其它的端子。

2、通讯组态的初始化

601925287b8fcc849188fd5905823324.png

使能端一直要使能。REQ第一次PLC上电脉冲触发一次,做个并联点主要是为了测试方便。PORT就是通讯板的标识号,可以在通讯板属性中查看。

接下来的就是 常规的串口设置参数,延时那个参数还是要注意,默认1000毫秒。最好不要改动。至于后边的通讯状态,错误提示,DONE还算是要根据自己项目需要做好参数配置。如果需要和多个从站设备通讯的话一定要根据这个做轮询驱动。以及故障判断。

 

这里面具体的含义西门子官网说的比较清楚。唯一需要注意的就是MODBUS通讯的几个关键要素。

波特率,奇偶校验,数据位,停止位,这里面有一个很操蛋的事情是波特率,奇偶校验在这个初始化里面就可以设置。但是停止位是用1位还是2位必须在"Modbus_Comm_Load_DB"这个DB块中设置。

STOP_BITS一定要到DB块中修改。

faf471e682f0d793f35851606c496cb9.png

在这个里面的这个必须根据实际情况设置。 

80b7dfd651271174263db839e1f2ea3d.png

牢记,牢记,牢记。

再有就是

"Modbus_Master_DB".MB_DB

878e30e4f961f763f9b0c18735d5de11.png

这个地方的设置还是需要注意一下,从看到的一些资料中这个地方的设置根据不同版本是不一样的。还有一个就是像我这样的小白最好是从列表中选择。只是一个指针,自己手动输入的话也要注意。错了就是红色字体提示。

03

主站编程

博图中的串口可以设置成主站,也可以是从站。一把是做为主站使用。读取其它设备。一般都比较好配置,使能一直给有,REQ接通的时候就读一次数据,如果是一台设备就好处理,不需要轮询。多台设备的时候就需要根据状态吗进行判断。轮询,以及故障的显示。简单的数据读取,就没有做复杂的编程。用系统变量,触发。MB_ADDR从站地址。MODE是读取数据还是写数据,0读取,1写入。DATA_ADDR是要读取的寄存器的起始地址,DATA_LEN读取的长度。可以根据实际情况设置,DATA_PIR是一只指针变量,一般使用DB块来存放数据。P#DB2.DBX0.0 WORD 14这个是指向DB2数据块中从0.0到14的WORD类型的存储区。

365ed1e3a66593fa069805772e0d5404.png

后面的输出端子就是主站通讯状态的一些判断。如果是和多个从站通讯的话需要根据这些变量来判断轮询。其中STATUS是一个很关键的数据,可以判断通讯的具体状态。一般显示7000或者7002,8000。这几个状态值在帮助中没有很详细的介绍。一般显示上面这几个值就能把数据出来。BUSY一般会在1和0之间闪烁。只要有闪烁就说明通讯是在进行,有时候有闪烁,但是没有数据,一般就去找停止位的设置。自己的体会。上面的配置完成后一把就可以把从站数据读取上来。

04

存储数据DB块的定义

读取的数据一般存储在DB块中。具体定义就在下面。就是定义了一对数组用来存放从站寄存器的数据,很多时候串口通讯的从站是16进制返回的数据,而且很多时候大端,小短与PLC的存储方式不一样,PLC一般是从低字节往高字节存放。但是很多仪表,计算机是从高字节往低字节存储。这个于存储设备的存储空间大小有很大关系。

按照实际需要设置好DB块,

4e2a6513eb6ee134471213b5c6fbce73.png

DB块的属性中把优化的访问前面的√取消掉。

3b1fac8e13463e38096982b2b89bf061.png

这样寻址好一点。经过这几步以后,一般能在DB块中看到数据变化。如果看到数据就说明通讯已经建立。数据流正常了。也就完成了很大一部分工作。

05

数据解析

这次碰到的是仪表数据是高低字节反着的。无法直接读取数据。也有很多仪表直接就可以显示仪表的数据,不需要任何变换。

数据交换西门子有一个指令,也很好。只是这次数据不多。就使用简单粗暴的方法直接MOVE指令搞定。哈哈。把DB块中的数据MOVE到MW区。高低自己颠倒一下。得到的MW区的数据就是仪表数据的正确顺序。

74a4085eed59c75c7b195e6708c902a4.png

得到正确顺就可以对MW区的数据进行变换了。使用CONV指令进行变换。

d99145e033d338561efdfc30423040d0.png

得到的数据就是我们想要看到的数据,与仪表实际数据一致。

4fd26d8674910a64177e18ddd313fce7.png

通讯的基本工作完成。方法简单粗暴。

小白可以看看。大神飘过即可。哈哈。

4fd26d8674910a64177e18ddd313fce7.png

作者简介

张建鹏:

一个奔跑在工控路上的工控人。目前主要集中在边缘计算节点设备,做一些自动化系统集成。

往期精选

cf12eb22b3ce94c0ee6de28b514599b6.png

23ab7468c901bda1e8678872f0151157.pngf8f78ad3ae0a369a7728dfaa9c558ee2.png

8be7edf4c4d7a5cf530bd0011b85039e.png

4e270638cc6fad220a9579742b9844a2.png

人气推荐

more+

dfebc2aac35713957016b7456157b6b8.pngcdb6b76281eaaac83bfb1d42b463d225.png48ab3de2b088d85f1905161a0fb880a4.pngf4ee3345ddf3c3804cc2f528260b46a7.png

f183168cc9b0c08a3d4d4f7e180cbee2.png

1.Smart200&V90伺服系统:已更新15课

2.贝加莱直播课程:已更新16课

3.力控科技产品培训:已更新5课

4.剑指工控经典公开课:已更新22课 5.新品推荐:已更新3课

6.专家课堂:已更新12课

e3f3a7ea8b0ecb8a6b2e62e18c067687.gif


版权声明:本文为weixin_34420941原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。