使用PLC自带功能实现不同厂家PLC之间的协议的解析及转达
作为工程师,经常会用到各种品牌的设备,PLC等。而且在现场,经常会遇到不同设备之间需要走通讯的需求,但不同公司的设备支持的协议不尽相同。类似于来自不同国家的学生在同一公司协同工作,这时候我们怎么才能做到让不同的人能相互理解别人的意思呢?以往经常使用的方式是采用安装第三方或厂家自带的协议转换模块。类似于给设备安装不同的翻译器。这时候会增加很多成本,让预算紧张的项目雪上加霜。这时,有一个不成熟的想法在脑海中成型,既然物理口一样,要么是RS485,要么RJ45,要么CAN等,那我们是不是可以利用自带的功能,实现协议的相互认识?说干就干,接下来,让我们以Modbus为例,理解如何使用PLC自带功能实现不同厂家PLC之间的协议的解析及转达 。
第一步:解读Modbus协议
Modbus通信协议由Modicon公司(现已经为施耐德公司并购,成为其旗下的子品牌)于1979年发明的,是全球最早用于工业现场的总线规约。由于其免费公开发行,使用该协议的厂家无需缴纳任何费用,Modbus通信协议采用的是主从通信模式(即Master/Slave通信模式),其在分散控制方面应用极其广泛,从而使得Modbus协议在全球得到了广泛的应用。
1、Modbus协议解析
1.1 Modbus RTU协议中的指令由地址码(1Byte),功能码(1Byte),起始地址(2Byte),数据(N个Byte),校验码(2Byte)五个部分组成 ,其中数据又由数据长度(2Byte,表示的是寄存器个数,假定内容为M)和数据正文(M乘以2个Byte)组成,而且RTU协议是采用3.5个Byte的空闲时间作为指令的起始和结束,一般而言,只有当从机返回数据或者主机写操作的时候,才会有数据正文,而其他时候比如主机读操作指令的时候,没有数据正文,只需要数据长度即可。
Modbus 通用帧
1.2 Modbus TCP协议是在RTU协议上加一个MBAP报文头 ,由于TCP是基于可靠连接的服务,RTU协议中的CRC校验码就不再需要,所以在Modbus TCP协议中是没有CRC校验码,用一句比较通俗的话说就是:Modbus TCP协议就是Modbus RTU协议在前面加上五个0以及一个6,然后去掉两个CRC校验码Byte就OK了。
2、长度计算:
早期串行链路上MODBUS 执行的长度约束限制了MODBUS PDU大小(最大RS485 ADU=256Byte).因此可以得到RTU及TCP的长度:
RTU MODBUS ADU = 253Byte+从站地址(1Byte) + CRC (2 Byte) = 256 Byte。TCP MODBUS ADU = 249Byte+ MBAP (7 Byte) = 256 Byte。
MODBUS 协议定义了三种 PDU。 它们是:
MODBUS 请求 PDU,mb_req_pduMODBUS 响应 PDU,mb_resp_pduMODBUS 异常响应 PDU,mb_excep_resp_pdu定义 mb_req_pdu 为:
mb_req_pdu = { function_code, request_data},其中function_code - [1个Byte] MODBUS 功能码request_data - [n个Byte],这个域与功能码有关,并且通常包括诸如可变参考、变量、数据偏移量、子功能码等信息。定义 mb_resp_pdu 为:
mb_resp_pdu = { function_code, response_ data},其中function_code - [1个Byte] MODBUS 功能码response_data - [n 个Byte],这个域与功能码有关,并且通常包括诸如可变参考、变量、数据偏移量、子功能码等信息。定义 mb_excep_resp_pdu 为:
mb_excep_resp_pdu = { function_code, request_data},其中function_code - [1个Byte] MODBUS 功能码 + 0x80exception_code - [1个Byte],在下表中定义了 MODBUS 异常码。Modbus TCP与Modbus RTU协议转换实例对比:
发送:
接收
3、超时时间计算 :该计算与波特率、设备运算能力、数据量等参数相关,本文主要以TCP为主,这里就不做赘述。有感兴趣的小伙伴们可以自行了解。
第二步:实例解读
本文以RA官网提供的Demo程序进行Modbus TCP Slave梯形图实现解读。
1、前提准备
实验设备:
硬件:
AB PLC :1769-L33ERM西门子PLC :S7-1517编译PC :DELL Latitude E5501
软件:
Modbus Slave PC端仿真:ModsimModbus Master PC端仿真:ModscanAB PLC程序编译环境:Studio5000 V32.11西门子PLC程序编译环境:TIA V16
注意点:
1、ModbusTCP 任务放在50-100ms的低优先级周期任务
2、西门子PLC可使用MB_SERVER 及MB_CLIENT 进行Modbus TCP通讯。
2、AB PLC程序流程
2.1:清空链接
2.2:创建Socket链接
2.3:Socket参数设定
2.4:获取网卡连接数
2.5:创建接收连接
2.6:Socket数据读取:读取到MBTI_Read_Resp字符组
2.7:协议解析和封装:
2.7.1:判断接收字符串是否为标准modbus格式
2.7.2:解析读取到的Modbus字符串,并根据命令字,利用不同标签进行应答数据处理
2.7.3:根据命令进行不同处理,线圈跳转到线圈处理处;寄存器跳转到寄存器处理处;
2.7.4:根据需要读取的起始地址、长度、将对应数据获取出来并复制到发送缓存区;
2.7.5:数据打包,将PDU打包成ADU
2.8 :Socket数据发送:将MBTI_Write_Data_Out数据发送到Socket
以上是实例是根据RA官网提供的Demo程序进行讲解如何使用 AB ControlLogix及CompactLogix系列PLC通过Socket方式进行Modbus TCP协议编写。由此可类比可制作其他基于Socket协议的协议解析及通讯。
如何将写好的PLC程序传输到设备上?这几种基础方式值得一看
小编有话说 >>
小编常常遇到许多朋友在后台询问,PLC编写好的程序,怎样传输到设备上。
PLC编程不同于其他的计算机软件编程,写好的程序在电脑上不会自动运行,需要结合外部线路和机械设备才能发挥程序的价值,这也是自动化技术的特色,理论+实践,软硬件结合,才是自动化发展的正确走向。
所以本文就给大家总结了,PLC与电脑联机的几种基础方式。希望大家多多点赞分享支持一下!
1、串口
串口,是最早,也是最方便的一种方式,它利用计算机自带的串口和 PLC 的串口建立连接,早期 PLC 都是采用这种下载方式。例如三菱 FX 系列,西门子 S7-200 和 S7-300 系列。即使进入新世纪,很多电脑取消了串口,但很少有 PLC 是不带串口的。
PLC 的串口一般是和触摸屏建立连接用的。而现在的电脑已经没有串口,一般都用 USB 转串口线缆来实现,特别是USB 转 485 串口,不但用于 PLC,还广泛用于各种变频器,伺服驱动器的连接。
不要认为变频器和伺服驱动器就设几个参数,没有连机的必要,在处理负载疑难问题时,连机监控一下变频器的参数和各种状态,是很有必要的。
USB 转 RS485 是工控人常备工具,比如在做串口通讯时,我们可以利用串口助手监控数据。早期的西门子PLC 的下载线可以用此线缆替代,还用众多的变频器,伺服驱动器以及一切用 RS485 通讯的下载线,都可以用。一般原装线缆都非常昂贵,使用通用的 USB 转 RS485线缆,可以节省不少费用。
西门子 S7-200,GE 各系列 PLC,丹佛斯,CT,富士,施耐德,伦茨等驱动器的连机线都可以用 USB 转 485 线缆替代,而他们的原装线缆可是天价。
2、USB
虽然串口优点很多,但也有不少缺点,最大的缺点就是速度慢。随着技术的进步,USB 逐渐占据半壁江山,现在 PLC 都支持 USB 现在程序,用得最多的就是 MICRO USB 接口,也就是老式手机和移动硬盘的那种 T 形口。
不光 PLC,大部分触摸屏,文本显示器也是用此接口下载程序。
如上图所示,是三菱 FX3 系列 PLC,看红色圆圈部分的接口,很多工控产品都是此种接口。几乎所有的触摸屏都是此下载接口。
还有一种接口,是方形 USB 接口,也就是打印机上的那个接口,欧姆龙 PLC 就是用此接口,所以,打印机的连接线就是欧姆龙 PLC 的下载线。
如上图所示,红色圆圈部分,就是欧姆龙 PLC 的下载接口,这和打印机的接口是一样的。
串口和 USB 是两种最常用的连机方式,不但适用于 PLC,还广泛应用于触摸屏,伺服,变频器等等应用非常广泛。而很多 PLC 同时支持两种连机方式。
如上图所示,就是三菱 PLC 编程软件 GX WORKS2 的连机选项,我们可以看到,它是支持两种方式的。
3、网线
随着互联网技术的发展,以太网也越来越多地应用于工业自动化行业,因此很多 PLC 也支持网线连机了,比如西门子最新的博途平台,S7-1200 系列。甚至低端的 S7-200smart 系列也支持网口连机了。
相关问答
国产plc支持西门子编程吗?
是的,国产PLC通常支持西门子编程。虽然西门子是德国的PLC制造商,但其编程语言(如LadderDiagram、StructuredText等)是国际通用的。国产PLC厂商通常会提供...
geplc上载程序需要停机吗?
1.需要停机。2.因为在上载程序的过程中,需要将程序从计算机传输到PLC中,这个过程需要通过串口或者以太网等通信方式进行,而在这个过程中,PLC需要停机才能接...
PLC内部程序怎么备份?
备份电脑上已存在对应的CPU类型的文件,则:1.连接PLC与PC通讯端子(RS-422)2.双击打开Gppa3.Fileread选择对应盘符回车选择对应的目录文件出现re...
plc编程谁家的好用?
很高兴回答的问题!就市场占有率来看,西门子最大,其次是三菱、欧姆龙。具体谁家好用,这个不能一概而论,还取决于编程人员对其使用的熟练程度。西门子PLC又...很...
西门子的PLC与GE的PLC有什么不同?
1、西门子是德国的牌子,质量上比国产的整体的稳定性和抗干扰等性能都要好2、编程软件是西门子专用,自成一系,和三菱、欧姆龙的差别很大1、西门子是德国的牌...
刚入门自动化,先学哪个品牌的PLC比较好?
朋友们好,我是电子及工控技术,我来回答这个问题。PLC(可编程控制器)是自动化专业中非常重要的一种工业控制器,它被人们称为“工业计算机”。对于刚入门自动...在...
plc通过485如何采集智能仪表的数据?
第一步:确定智能仪表支持的通讯协议第二步:查找下所采用的PLC支持得通讯第三步:选择两个都支持的通讯协议即可,然后编写程序第一步:确定智能仪表支持的通讯协...
PLC有哪些品牌?
PLC品牌有很多种,主要包括常用的品牌和不常用的品牌,南京康卓环境科技有限公司主要做的品牌有:一、PLC常用品牌康卓PLC控制柜西门子PLC控制柜欧姆龙PLC控制...
plc怎么添加硬件?
添加新硬件模块先进入硬件组态画面,按“选项”(Options),点击“安装新硬件”(InstallHWUpdates),选择“从网络下载”(DownloadfromInternet),按“.....
plc模块有哪些牌子?
PLC有四大知名品牌:西门子、施耐德、AB、GE。1、中型PLC:西门子、施耐德、欧姆龙、三菱。2、小型PLC:西门子、欧姆龙、三菱、LS、松下、台达。扩展资料:P...
扫一扫微信交流