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指令进行变换。
得到的数据就是我们想要看到的数据,与仪表实际数据一致。
通讯的基本工作完成。方法简单粗暴。
小白可以看看。大神飘过即可。哈哈。
作者简介
张建鹏:
一个奔跑在工控路上的工控人。目前主要集中在边缘计算节点设备,做一些自动化系统集成。