记一次Profibus DP转MODBUS的实例

来源:本站
导读:目前正在解读《记一次Profibus DP转MODBUS的实例》的相关信息,《记一次Profibus DP转MODBUS的实例》是由用户自行发布的知识型内容!下面请观看由(电工学习网 - www.9pbb.com)用户发布《记一次Profibus DP转MODBUS的实例》的详细说明。
发个故事也是一波三折,刚都快写完了,360浏览器崩溃,写的东西全没了,无奈,只能重新来过。
12年自动化专业毕业后,留在了一个钢厂工作,首先接触的便是西门子的plc,接触的协议自然也是profibus DP、MPI、PPI、TCP/IP等与西门子相关的协议,对于MODBUS,仅仅停留在听说过,好像很厉害的层面上,一次偶然的机会,接触到了MODBUS协议,项目是300PLC通过PB-B-MODBUS总线桥(北京鼎实)与MODBUS从站通讯,PLC选择的是西门子CPU313-2DP,从站设备是一台加气机,主站CPU需要读取加气机的状态字及流量温度压力等数据,同时需要给控制字给加气机。由于之前没有接触过MODBUS协议及产品,再通读了网上的协议及PB-B-MODBUS总线桥的产品介绍之后便开始了测试。
1.首先,毫无疑问,需要进行硬件组态的配置:在安装完总线桥的GSD文件后,很轻松完成了组态;

记一次Profibus DP转MODBUS的实例
2.然后我们要明白我们的目的,读写数据,数据存储在什么地方?怎么读取和写入?硬件组态方面还需要怎么进一步组态?读取完数据之后怎么处理?

记一次Profibus DP转MODBUS的实例

上图显示的是加气机设备MODBUS协议的一小部分,以LNG出口温度为例,对每个数据进行解释,0x0035、0x0036指的是寄存器号,2指的是寄存器数目,int 32指的是数据类型,0.001指的是单位,R指的是只读,综合上述,我们知道了LNG出口温度这个数据存储在40000+53(16进制35转换)-1=40052开始的两个字中,PLC读取数据之后需要除以1000以得到正确数值
接下来需要对硬件组态进行进一步组态,双击总线桥,添加一个read 2 words模块,并设置好起始地址及其他必要设置,组态完成后如下图

记一次Profibus DP转MODBUS的实例
从上图中我们便可以看出,将起始地址设置为52,PLC的I地址设置为256-259,便将MODBUS寄存器40052开始的两个字与PLC的PID256对应了起来,第一行的8DI的I地址为2,意味着IB2是总线桥的状态位,QB2是总线桥的控制位:具体含义见下图

记一次Profibus DP转MODBUS的实例
这样,我们程序中给定一个启动MODBUS扫描信号,便可以读到LNG出口温度的数据了,读取的数据存储在PID256中,对PID256进行除以1000操作,便可以得到实际出口温度,同时,控制字状态字及其他温度压力等数据都可以通过这样的添加模块方式来进行读写。
通过这个项目,我对MODBUS协议有了一定的了解,我觉得关键在于组态和地址映射,测试时候可以使用MODBUS SIM和MODBUS SCAN软件进行测试,MODBUS Poll和MODBUS Slave也是可以的,使用软件测试完成后,有事半功倍的效果。并且在这次测试完成后,我又完成了S7-200与S7-200 SMART的MODBUS通讯测试,还有使用CP343-1通过第三方连接MODBUS设备的测试,,发现再神秘的东西,只要我们用心去了解它,去剖析它,问题都是变得简单,好事多磨,知识也是这样,它也害怕多磨!

记一次Profibus DP转MODBUS的实例

提醒:《记一次Profibus DP转MODBUS的实例》最后刷新时间 2023-07-10 03:56:01,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《记一次Profibus DP转MODBUS的实例》该内容的真实性请自行鉴别。