西门子S7-200自由口通信心得

合集下载

s7200自由口通讯协议详细注解

s7200自由口通讯协议详细注解

自由口通讯协议详细注解西门子PLC的编程风格本人太喜欢了,用了国产仿西门子的都感觉缺这缺那的,很不爽,等吧。

希望国内PLC工程师多多努力。

对于西门子的东西,也有遗憾的地,如PPI协议人家不公开,MODBUS有库,好象要购买。

这篇文是组态王SIMATIC S7-200系列PLC之间的通讯协议的本人读书注解与心得,从中也可学到作者的思路,学习PLC先从通信协议入手,为何不妥呢?与初学者切磋与共享这个协议。

锤子此协议为亚控公司为实现组态王与德国西门子公司SIMATIC S7-200系列PLC之间的通讯而制上位机从PLC中读数据:上位机发送读指令:BYTE1: PLC地址 (1~255)BYTE2: 0x00 (读指令代码)BYTE3: 寄存器类型(0-V, 1-Q, 2-I)BYTE4-5: 起始偏移地址(0-9999)BYTE6: 数据个数(1~32 n)BYTE7: 数据类型(1,2,4 m)BYTE8-11: 保留BYTE12: 校验字节PLC应答:读成功时:BYTE1: PLC地址 (1~255)BYTE2: 0x00 (读指令代码)BYTE3: 寄存器类型(0-V, 1-Q, 2-I)BYTE4-5: 起始偏移地址(0-9999)BYTE6: 数据个数(1~32 n)BYTE7: 数据类型(1,2,4 m)BYTE8-n*m+8: 数据BYTEn*m+9: 校验字节读失败时:BYTE1: PLC地址 (1~255)BYTE2: 0x80 (读指令失败代码)BYTE3: 寄存器类型(0-V, 1-Q, 2-I)BYTE4-5: 起始偏移地址(0-9999)BYTE6: 数据个数(1~32 n)BYTE7: 数据类型(1,2,4 m)BYTE8: 0x01(校验错代码)BYTE9-11: 保留BYTE12: 校验字节上位机向PLC中写入数据:上位机发送写指令:BYTE1: PLC地址 (1~255)BYTE2: 0x01 (写指令代码)BYTE3: 寄存器类型(0-V, 1-Q, 2-I)BYTE4-5: 起始偏移地址(0-9999)BYTE6: 数据个数(1 n)BYTE7: 数据类型(1,2,4 m)BYTE8-11: 写入数据BYTE12: 校验字节PLC应答:写成功时:BYTE1: PLC地址 (1~255)BYTE2: 0x01 (写指令代码)BYTE3: 寄存器类型(0-V, 1-Q, 2-I)BYTE4-5: 起始偏移地址(0-9999)BYTE6: 数据个数(1 n)BYTE7: 数据类型(1,2,4 m)BYTE8-11: 保留BYTE12: 校验字节写失败时:BYTE1: PLC地址 (1~255)BYTE2: 0x81 (写指令代码)BYTE3: 寄存器类型(0-V, 1-Q, 2-I)BYTE4-5: 起始偏移地址(0-9999)BYTE6: 数据个数(1 n)BYTE7: 数据类型(1,2,4 m)BYTE8: 0x01(校验错代码)BYTE9-11: 保留BYTE12: 校验字节***********************************************************S7200自由口通讯程序电台S7200自由口通讯程序亚控公司修改时间:2000.10.2王培哲MAINLD SM0.1CALL SBR_0:SBR0 //初始化子程序LD SM0.7= SM30.0SBR_0:初始化子程序SUBROUTINE COMMENTS Press F1 for help and example programLD SM0.0MOVW +2, VW8 //PLC自由口地址,此处每台机器需设不同的地址LD SM0.0MOVB 9, SMB30 //通讯参数,波特率9600,自由口通讯MOVD &VB100, VD40// VB100:接收缓冲区的首字节MOVW +10, VW54// VW54:存放发送数据按字节异或校验的次数,10次校验完已//接收了11个字节了,最后一个12号字节是校验。

S7-200PLC的自由口通信工程应用

S7-200PLC的自由口通信工程应用

S7-200PLC的自由口通信工程应用笫1章S7-200 PLC的自由口通信工程应用本章由浅到深循序渐进地例举了S7-200 PLC自由口通信的三个工程应用实例。

分别从任务描述、任务剖析、解决方案、实施步骤和常见故障及排故方法这五个方面进行了描述。

第一个实例“智能立体车库系统中IC卡的应用”讲述了S7-200 PLC的自由口通信的只读功能实现方法,第二个实例“RFID在AGV(Automated Guided Vehicle)中的应用”讲述了S7-200 PLC的自由口通信的读写功能实现方法,第三个实例“S7-200 PLC在无线通信上的应用”讲述了S7-200 PLC 的自由口通过自定义通信协议实现一对多的无线通信功能。

1.1智能立体车库系统中IC卡的应用1.1.1 任务描述智能立体车库系统要求采用刷卡方式完成车辆自动出入立体车库。

当司机刷卡并设定密码后,卡信息与车辆进行绑定,车辆将自动进入车库相应的车位,当司机想取出车辆时,司机只需刷卡并通过密码验证,系统将自动从车库中寻找该卡对应的车辆并将车取出到车库。

其中控制车辆进出的控制器采用西门子S7 - 200 系列CPU226 型可编程控制器来实现。

1.1.2 任务剖析智能立体车库要求采用刷卡方式作为车辆出入立体车库的凭证,这就要求控制系统能读出卡上的信息,利用卡的信息作为身份识别把卡和车辆绑定起来。

选用在弱电系统中作为门禁或停车场系统使用者身份识别的ID卡就能满足要求。

ID卡全称为身份识别卡(Identification Card),是一种只读的感应卡,每张ID卡有一个全球唯一的芯片编码。

它靠读卡器设备感应供电并读出存储在芯片EEPROM中的唯一卡号,该卡号在封卡前一次写入,封卡后不能更改,该ID卡完全能满足车辆身份识别的要求。

同时S7-200 PLC的自由口通信能实现通过读卡器设备读出卡上信息从而完成车辆身份识别的功能。

1.1.3 解决方案该任务实现的关键是要求S7-200 PLC能读出ID卡的信息,考虑到大多数的ID读卡器设备提供了与电脑直接通信的RS232通信方式,而S7-200 CPU的通信口电气上是标准的RS-485半双工串行通信口,因此硬件上需要通过RS-232到RS485转换器把ID读卡器设备连接到S7-200 CPU的通信口上,由于PC/PPI电缆本质上就是RS-232到RS485的转换,所以也可以通过PC/PPI电缆把ID读卡器设备连接到S7-200 CPU的通信口上。

S7-200CPU通信口的自由口模式实现Modbus通信协议

S7-200CPU通信口的自由口模式实现Modbus通信协议

在组态王里点击“com1”(根据你在前面已经定的com口而定),然后在右边的界面上显示你所建立的文件,然后对你编译的主画面点反键,然后在下拉菜单中点击“测试---”(你的文件名),再随便在选项里输入一个你编写的程序里的标志位,看能不能显示你的PLC内的当前值,如果可以显示,就应该是通信上了。

通过 S7-200 CPU 通信口的自由口模式实现 Modbus 通信协议,可以通过无线数据电台等慢速通信设备传输。

这为组成 S7-200 之间的简单无线通信网络提供了便利。

详细情况请参考《S7-200系统手册》(2002 年 10 月或以后版本)的相应章节。

Modbus 是公开通信协议,其最简单的串行通信部分仅规定了在串行线路的基本数据传输格式,在 OSI 七层协议模型中只到 1,2 层。

Modbus 具有两种串行传输模式,ASCII 和 RTU。

它们定义了数据如何打包、解码的不同方式。

支持 Modbus 协议的设备一般都支持 RTU 格式。

通信双方必须同时支持上述模式中的一种。

Modbus 是一种单主站的主/从通信模式。

Modbus 网络上只能有一个主站存在,主站在 Modbus 网络上没有位置,从站的位置范围为 0 - 247,其中 0 为广播位置,从站的实际位置范围为 1 - 247。

Modbus 通信标准协议可以通过各种传输方式传播,如 RS232C、RS485、光纤、无线电等。

在 S7-200 CPU 通信口上实现的是 RS485 半双工通信,使用的是 S7-200 的自由口功能。

Modbus RTU 主站指令库(测试版)西门子针对 S7-200 最新推出支持 Modbus RTU 主站的协议库(测试版),用户可以将这个库添加到 Micro/WIN 软件中,并通过调用库指令,方便地实现 Modbus RTU 主站的功能。

注意:1. Modbus RTU 主站指令库的功能是通过在用户程序中调用预先编好的程序功能块实现的,该库只对 Port 0 口有效。

S7―200自由口通信的原理及学习建议

S7―200自由口通信的原理及学习建议

S7―200自由口通信的原理及学习建议摘要:本文从S7-200 PLC自由端口通信协议入手,讲述自由端口协议的基本概念、自由端口通信与USS、MODBUS RT的关系;利用自由端口通信数据发送和数据接收的梯形图实例讲述了自由端口的编程方法。

自由端口通信的ASCII码和二进制码协议区别,总结了自由端口协议的功能及用途,文章最后作者根据自身经验,提出了学习自由端口协议的几点建议。

关键词:S7-200 PLC自由端口协议ASCII二进制功能用途学习建议中图分类号:TP336 文献标识码:A 文章编号:1007-9416(2015)04-0037-01强大而灵活的自由口通信能力,是S7-200系统的一个重要特点。

S7-200 PLC的通信端口按照串行485通信总线规范设计,并具备自由通信功能。

在自由通信模式下,通信数据的发送、接受协议由编程人员自行规定,但一般都是按照受控设备的支持的通信协议编写自由通信协议。

在自由通信协议的平台上,S7-200PLC可以方便的与上位机的第三方软件(组态王、MSG等)、扫描设备、编码器、单片机进行数据交换。

USS协议库和MODBUS RTU从站协议库是S7-200的编程软件固有的通信协议库,这些协议库都使用了自由口通信功能。

正确理解S7-200的自由口通讯对于自控人员具有极其重要的意义。

1 自由口通信基本概念西门子S7-200系列PLC的通讯端口都具备自由口通信功能。

所谓自由口协议是指通过用户程序控制CPU主机的通信端口的操作模式来进行通信。

只有在PLC处于运行模式时,其通信端口才能工作在自由端口模式。

当PLC从RUN 模式切换到STOP模式时,其自由通信协议模式自动关闭,并将通信端口切换到PPI通信模式。

与自由端口通信相关的指令有数据发送指令XMT和数据接收指令RCV。

自由端口的数据发送梯形图程序如图1。

在图1中,当EN端为高电平时,PLC的通信端口PROT1就会将VB100及其后的若干字节按一定的比特率发送出去。

西门子S7-200自由口通讯知识

西门子S7-200自由口通讯知识

S7-200系列自由口通讯的实现及应用比较有用的资料,有S7-200 PLC的话,可以试试。

1 引言为了达到和通讯协议已知的控制设备进行数据交换,以提高自动化控制系统的灵活性,很多plc制造商都相继的开发出了方便、灵活的自由口通讯方式,例如三菱公司的fx2系列plc,omron公司的cjm1系列的plc,西门子公司的s7-200系列plc等都提供了自由口通讯模式。

自由口通讯是指plc提供了串行的通讯硬件,和用于定制通讯协议的相关指令,在控制系统中,当要和plc连接的控制设备的通讯协议已知时,可以在plc中进行编程定制通讯协议,和控制设备进行数据通讯。

本文主要介绍西门子s7-200的自由口和计算机的串口进行的通讯,计算机中采用visual basic进行编程,从而实现计算机与可编程控制器的直接控制。

该通讯方式具有效率高、容易实现、通讯硬件简单、容易配置等特点在工业控制领域中被广泛应用。

2 s7-200通讯指令及特殊字节采用自由口通讯方式时,s7-200上的rs485口完全由用户控制,可以与任何协议已知的设备进行通讯,在这种情况下通讯协议完全由用户制定,为此,s7-200提供了用于进行通讯协议定制的特殊标志位以及相关的通讯指令。

2.1 特殊标志字节s7-200用于自由口通讯模式定义的特殊标志字节有smb30和smb130,smb30用于s7 -200的端口0的通讯,smb130用于s7-200的端口1的通讯,两者的格式一样,下面我们以smb130为例,介绍其组成。

smb130各位的含义如下:pp:两位用于选择通讯的校验方式当这两位的组合是:00无校验01 偶校验10 无校验11 奇校验d:这一位用于选择通讯的数据位数d=1时7个数据位,d=0时8个数据位bbb:用于选择自由口通讯是的波特率,这三位的组合和通讯波特率的关系如下:000 ——38400bps001 ——19200bps010 ——9600bps011 ——4800bps100 ——2400bps101 ——1200bps110 ——600 bps111 ——300 bpsmm: 用于通讯协议的选择,当这两位的组合是:00 ppi从站模式01 自由口通讯模式10 ppi主站模式2.2 接收信息的状态字节s7-200在自由口通讯时用于接受信息的状态有smb86和smb186,smb86用于s7-200的端口0的通讯,smb186用于s7-200的端口1的通讯,两者的格式一样,下面我们以s mb186为例,介绍其组成。

s7-200自由口通信

s7-200自由口通信

S7-200自由口通信简介S7-200是一款广泛应用于低端自动化控制领域的PLC,可以满足各种控制要求。

在控制系统中,一个PLC通常需要与其他设备进行通信,以实现更加复杂的控制功能。

而S7-200具有自由口通信功能,可以方便地与其他设备进行通信,为控制系统的设计提供了更多的选择。

自由口通信的概念S7-200的自由口通信,是指使用自由口功能实现与其他设备(如触摸屏、人机界面、变频器等)之间的通信。

在PLC控制系统中,S7-200自由口通信的应用非常广泛。

通过配置相应的参数和指令,S7-200可以方便地实现与其他设备之间的数据交换和控制指令传输。

自由口通信的优势相比其他通信方式,S7-200的自由口通信具有许多优势:方便易用S7-200自由口的设置非常简单,用户只需要根据实际需要设置相应的参数即可。

并且S7-200具备很好的兼容性,能够与其他设备快速实现数据交换。

实时性强S7-200的自由口通信实时性非常好,数据传输速度快,通讯延时很低。

这一优势使得S7-200在高速控制和监控场合得到广泛应用。

带宽宽敞S7-200自由口的带宽非常宽敞,可以同时实现多个任务和数据的传输。

这一优势使得S7-200具有非常好的扩展性和适应性,可以满足各种不同应用场合的需求。

自由口通信的应用示例通讯协议S7-200可以通过自由口通信与其他设备进行通讯,常用的通讯协议包括Modbus、Profibu、Devicenet等。

在S7-200的通讯模块中,可以通过配置相应的参数和指令,非常方便地实现与这些通讯协议之间的通信。

数据交换在PLC控制系统中,数据交换是一个非常重要的环节。

通过S7-200的自由口通信,用户可以快速实现控制器之间的数据交换,提高控制系统的性能和稳定性。

例如,在变频器控制系统中,S7-200可以通过自由口和变频器进行数据交换,以实现更加复杂的控制功能。

远程监控S7-200的自由口通信可以实现远程监控和数据采集。

西门子S7-200 自由口通信实用文档

西门子S7-200 自由口通信实用文档

主题:应用探讨—S7-200 自由口通信—发帖整理强大而灵活的自由口通信能力,是S7-200系统的一个重要特点。

S7-200 CPU的RS485通信口提供了建立在串行通信基础上的“自由”通信能力,数据传输协议完全由用户程序决定。

通过自由口方式,S7-200可以与串行打印机、条码阅读器等通信。

而S7-200的编程软件也提供了一些通信协议库,如USS协议库和MODBUS RTU从站协议库,它们实际上也使用了自由口通信功能。

开设本话题的目的,在于澄清自由口通信的基本概念,强调使用中的要点,讨论应用的常见问题。

经过此次集中交流,解决了如下一些问题:1. 自由口通信基本概念2. 自由口通信编程指令的使用和技巧3. 自由口通信常见问题4. 产品功能建议更多信息请参考下面文档。

“下载中心”参考文档:文档编号“1109582”——S7-200《可编程控制器系统手册》文档编号“A0136”——《西门子 S7-200•LOGO!•SITOP参考》以下为本次探讨的发帖整理,查看原始交流内容请点击此处。

1.自由口通信基本概念(1楼——5楼)2.自由口通信编程指令的使用和技巧(6楼——15楼)3.自由口通信容易犯的错误(16楼——24楼)4.产品功能建议(25楼——27楼)quote:以下是引用BABU在2011-01-20 15:17:08的发言:我回来了,项目终于做完了,可以回家过年了,:)。

自由口通信真是折腾的我好惨啊,简单回顾一下,希望对像我这样的菜鸟有些借鉴作用。

先感谢一下西门子论坛和热线,没少骚扰他们。

在完全没有准备的情况下甲方又加进一个仪表,做什么自有口通信,晕阿!没办法,迎着上吧!网上搜资料,看手册,越看越糊涂!时间紧迫,还是直接上手做吧。

首先是把PLC和仪表连接起来,可仪表的口是rs232的,热线工程师告诉我得做rs232/485的转换,打车到市场上买个转换器(打车钱比设备钱还多,可见现场多么偏僻阿),听卖转换器的老板给我分析了一下每种的区别——不光是价格的区别,说实在的,当时非常惭愧,老板懂的比我多多了。

实验9:两台S7-200自由口通讯实验报告

实验9:两台S7-200自由口通讯实验报告

实验9:两台S7-200自由口通讯实验一.实验目的实现两台S7-200控制器的自由口通讯,并在此基础上实现由一台S7-200经由另一台S7-200对分拣系统模型的控制。

二.实验设备两台S7-200 PLC,RS485通讯电缆一条,PPI编程电缆两条。

三.实验步骤思路:自由口通讯的关键是对两台200 PLC的port口进行设置,通过相应的寄存器设置,使两个port口工作在自由口模式,然后利用相应的传送和接受指令,即可实现数据的通讯。

整个过程都通过编程来完成,硬件接线只需连接两台PLC的port口即可。

1.与port口有关的寄存器这里为了编程方便,两台200 PLC均选择其port0口进行编程,与port0口的相关寄存器及其作用如下SMB30:port0控制寄存器,其设置可以选择端口模式和通讯速率以及是否进行校验与port0口有关的接收、发送寄存器有SMB86,87,88,89,90,92,94等。

他们的具体含义见下图2.编程思路两台200 PLC本身并没有主从关系,但为了区分方便,规定传送控制指令的200 PLC为主PLC,而接收控制指令并连接分拣系统设备的200 PLC为从PLC。

在两台PLC的程序中,分别建立两个子程序,将与通讯口寄存器操作有关的部分全部写入这个子程序中,完成对通讯口的初始化。

在主PLC的程序中,连接两个中断程序,实现50MS发送一次数据的功能。

发送的数据结构为:起始+所要发送数据+结束字符。

所以在程序里对要传送的数据提供头尾字符,以使接收程序能够识别信息发送是否结束。

分拣系统的控制命令只有启动、停止复位,所以在新建的一个子程序中提供两个控制指令的值即可。

从PLC的控制程序中,为了与发送同步,加入了50MS的通断效果,使接收同步,同时在从PLC中编写分拣系统的控制程序。

3.程序详解1主站PLC程序主程序通讯初始化子程序控制字子程序定时中断子程序.发送结束中断子程序主程序通信初始化子程序复位子程序3.数据传送验证在两个PLC的状态表中插入首发数据的VB区,进行在线观察。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

西门子S7-200 PLC自由口通信学习摘要
本文以s7-200 PLC与智能电表通信为范例(电表波特率为1200bps,偶校验,8位数据位)
一、PLC自由口协议初始化
1、根据智能设备通信时使用的波特率、校验方式、起始位等参数配置PLC自由口,即将上述参数用MOVB指令写入SMB30,SMB30格式如下图所示:
初始化子程序如下:
二、声明中断
发送数据和接收完数据都能链接到中断程序,发送完中断与接收完中断的中断号分别为9和23,中断可在初始化子程序中声明
三、编写自由口要发送的报文子程序
严格按智能设备报文格式,将相应命令,将指令长度(字节)MOV到任意的字节单元,例如vb10。

再用MOV_B或MOV_W等指令传送到vb11开始后连续的字节中。

报文子程序
上图为读取电表标识编码为9010(即正向有功总电能)的指令
四、用XMT指令发送报文
XMT指令需指定两个参数,第一个为要发送的报文的起始地址(本例为VB10),第二个为使用的通信口(本例为0口)。

可以用定时器控制某一CPU内部触点来控制报文发送的周期。

要注意的是,XMT指令必须用上升沿“—|P|—”触发,否则CPU将会报错,CPU将认为有多个XMT/RCV指令同时执行,这是不允许的!
发送报文子程序
五、利用发送完中断启动接收数据指令
当报文用XMT发送完毕,会产生9号中断。

我们可以利用中断子程序捕捉相应的中断,并在中断程序中编写相应事件!在步骤1中已经声明了9号中断连接到中断子程序“发送完中断”。

因为此我们在“发送完中断”中断子程序中使用RCV指令即可接收到由通信口返回的数据。

即将数据送到VB100.
“发送完中断”中断子程序
总结一下编程原则:
这里我们总结以下自由口编程的一般原则:
1. SM0.1 触发端口初始化,连接发送完成和接收完成中断(中断事件9 和23)
2. SM0.0 触发RCV 指令
3. XMT 指令用上升沿触发,并在指令运行前先保证端口 0 的停止接收
4. 根据将要接收信息的不同,合理设置SMB87~SMB94
5. 必须满足发送结束条件(如字节个数,结束字符等)才能产生9号中断。

相关文档
最新文档