前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >西门子1200通过串口通讯读取仪表数据过程记录

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

作者头像
剑指工控
发布2021-11-09 14:56:20
1.6K0
发布2021-11-09 14:56:20
举报
文章被收录于专栏:剑指工控剑指工控

JZGKCHINA

工控技术分享平台

尊重原创 勿抄袭

勿私放其他平台

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

01

通讯基础

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

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

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

02

通讯组态

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

1、通讯程序的模式选择

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

2、通讯组态的初始化

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

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

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

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

STOP_BITS一定要到DB块中修改。

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

牢记,牢记,牢记。

再有就是

"Modbus_Master_DB".MB_DB

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

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类型的存储区。

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

04

存储数据DB块的定义

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

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

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

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

05

数据解析

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

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

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

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

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

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

作者简介

张建鹏:

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-01-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 剑指工控 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
边缘可用区
腾讯云边缘可用区(TencentCloud Edge Zone,TEZ)是腾讯云的本地扩展,适用于解决计算、存储和服务可用性问题。腾讯云边缘可用区可为您带来云的诸多优势,例如弹性、可扩展性和安全性。借助腾讯云边缘可用区,您可以在靠近最终用户的地理位置运行对延迟敏感的应用程序,基本消除延迟问题。腾讯云边缘可用区提供与中心节点一致的体验,助力业务下沉,具备更低延时、更广覆盖、更少成本等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档