0
点赞
收藏
分享

微信扫一扫

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

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

JZGKCHINA

工控技术分享平台


尊重原创 勿抄袭

勿私放其他平台

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

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

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

01


通讯基础


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

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


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

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


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


02


通讯组态


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

1、通讯程序的模式选择        

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

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


2、通讯组态的初始化

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


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


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


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


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


STOP_BITS一定要到DB块中修改。

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


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

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

牢记,牢记,牢记。


再有就是

"Modbus_Master_DB".MB_DB


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

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


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

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


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


04


存储数据DB块的定义


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


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

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


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

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


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


05


数据解析

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


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

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


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

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


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


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

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

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

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


作者简介

张建鹏:


举报

相关推荐

0 条评论