西门子PLC 自由口通讯
西门子 S7-1500 CM PtP RS232 与 MV340 自由口通信说明书
10/CN/view/zh/105640826C o p y r i g h t ãS i e m e n s A G C o p y r i g h t y e a r A l l r i g h t s r e s e r v e d 目录1任务概述................................................................................................................. 31.1 S7-1500 CM PtP 通信模块概要 . (3)1.2 MV340信息 (3)1.3示例方案 (4)2接口与连接 (4)2.1S7-1500CM PtP 接口 (4)2.2MV340 RS232电缆 (5)3 MV340通信设置 (5)4 TIA Portal V13项目组态 (6)4.1创建项目并组态模块 (6)4.2设备组态 (7)5编程测试 (10)5.1通信程序 (10)5.2简单测试 (12)6 CM PtP 错误诊断 (13)6.1通过模块上的 LED 指示灯 (14)6.2通过程序块错误代码 (14)C o p y r i g h t ãS i e m e n s A G C o p y r i g h t y e a r A l l r i g h t s r e s e r v e d SIMATIC S7-1500或ET200MP 自动化系统包含各种应用模块,其中包括通信模块。
串行通信模块通过点对点连接,提供了简单的数据交换功能。
本例以S7-1500串口通信模块CM PtP RS232 HF ,与手持读码器MV340自由口通信为例,简单介绍西门子串口通讯模块的使用方法。
1.1 S7-1500 CM PtP 通信模块概要S7-1500或 ER200MP CM PtP 串行通信模块产品有如下几种。
西门子S7-1200与第三方设备自由口通信详解
西门子S7-1200与第三方设备自由口通信详解西门子S7-1200 紧凑型PLC在当前的市场中有着广泛的应用,由于其性价比高,所以常被用作小型自动化控制设备的控制器,这也使得它经常与第三方的设备(扫描枪、打印机等设备进行通讯。
因为没有第三方的设备,这里就以超级终端为例介绍自由口通讯。
1.控制系统原理图1:控制系统原理2.硬件需求S7-1200 PLC目前有3种类型的CPU:1)S7-1211C CPU。
2)S7-1212C CPU。
3)S7-1214C CPU。
这三种类型的CPU都可以连接三个串口通信模版。
本例中使用的PLC硬件为:1)PM1207电源 ( 6EP1 332-1SH71 )2) S7-1214C ( 6ES7 214 -1BE30 -0XB0 )3) CM1241 RS232 ( 6ES7 241 -1AH30 -0XB0 )3.软件需求1) 编程软件 Step7 Basic V10.5 ( 6ES7 822-0AA0-0YA0)4.组态我们通过下述的实际操作来介绍如何在Step7 Basic V10.5 中组态S7-1214C 和超级终端通信。
点击桌面上的“Totally Integrated Automation Portal V10”图标,打开如下图:图2:新建S7 -1200项目首先需要选择“Create new project”选项,然后在“Project name:”里输入PTP;在“Path:”修改项目的存储路径为“C:\”;点击“Create”,这样就创建了一个文件PTP的新项目。
创建后的窗口如下图所示:图3:新建项目后点击门户视图左下角的“Project View”切换到项目视图下,如下图:图4:切换到项目视图打开后,在“Devices”标签下,点击“Add new device”,在弹出的菜单中输入设备名“PLC_1”并在设备列表里选择CPU的类型。
选择后如下图:图5:PLC硬件组态插入CPU后,点击CPU左边的空槽,在右边的“Catalog ”里找到“Communication”下的RS232模块,拖拽或双击此模块,这样就把串口模块插入到硬件配置里,接下来就需要配置此RS232模块硬件接口参数,选择RS232模块,在其下方会出现该模块的硬件属性配置窗口,在属性窗口里有两个选项,一个是“general”;一个是“RS232 interface”。
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-300/S7-200 PLC之间自由口无线通信的设计与实现
s c h e m e , p r o g r a m p o r t a b i l i t y , h a s a c e t r a i n r e f e r e n c e f o r s i m i l a r p r o j e c t .
Ke y wo r d s:S 7 —3 0 0 P LC; S 7 —2 00 PLC; f r e e p o r t s e t t i ng s; wi r e l e s s d a t a t r a n s mi s s i o n;
中 图分 类号 : T P 2 7 3 . 0 1
文献 标 志码 : A
文章 编号 : 1 0 0 0— 0 6 8 2 ( 2 0 1 4 ) 0 1— 0 0 7 5— 0 3
De s i g n a nd i mp l e me n t a t i o n o f t he f r e e po r t wi r e l e s s c o m m un i c a t i o n
be t we e n S 7 —2 0 0 PLC a n d S 7 —3 0 0 PLC
T0NG Ke bo
( E l e c t r o n i c a n d E l e c t r i c E n g i n e e i r n g D e p a r t m e n t , L a n z h o u P e t r o c h e mi c a l C o l l e g e o fT e c h n o l o g y ,L a n z h o u 7 3 0 0 6 0 , C h i n a )
信端 口程序设计 , 数传 电台选型及通信参数设置。该 系统运行稳定可靠, 通信方案经济、 灵活, 程序
西门子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的转换,打车到市场上买个转换器(打车钱比设备钱还多,可见现场多么偏僻阿),听卖转换器的老板给我分析了一下每种的区别——不光是价格的区别,说实在的,当时非常惭愧,老板懂的比我多多了。
西门子PLC自由通信协议
----在自由口模式下,通信协议是由用户定义的。
用户可以用梯形图程序调用接收中断、发送中断、发送指令(XMT)、接受指令(RCV)来控制通信操作。
在自由口模式下,通信协议完全由梯形图程序控制。
指令格式定义计算机每次发送一个33字节长的指令来实现一次读/写操作,指令格式见表1 说明:起始字符----起始字符标志着指令的开始,在本例中被定义为ASCII码的“g”,不同的PLC从站可以定义不同的起始字符以接收真对该PLC的指令。
指令类型----该字节用来标志指令的类型,在本例中05H代表读操作,06H代表写操作。
目标西门子PLC站地址----目标PLC站地址占用指令的B2、B3两个字节,以十六进制ASCII码的格式表示目标西门子PLC的站地址。
目标寄存器地址----在西门子PLC内部可以用4个字节来表示一个寄存器的地址(但不能表示一个位地址)。
前两个字节表示寄存器类型,后两个字节表示寄存器号。
读/写字节数M----当读西门子plc的命令时,始终读回从目标寄存器开始的连续8个字节的数据(转换为十六进制ASCII码后占用16个字节),可以根据自己的需要取用,M可以任意写入。
----当写命令时,M表示的是要写入数据的十六进制ASCII码所占用的字节数。
例如要写入1个字节的数据,数据在指令中以十六进制ASCII码表示,它将占用2个字节,此时应向M中写入“02”。
同理,如果要写入5个字节的数据,M中应写入“0A”。
要写入的数据----要写入西门子plc的数据在指令中以十六进制ASCII码的格式表示,占用指令的B14-B29共16个字节。
数据区必须填满,但只有前M个字节的数据会被写入目标寄存器。
一条指令最多可以写入8个字节的数据(此时M中应写入“10”,代表十进制的16)艾驰商城是国内最专业的MRO工业品网购平台,正品现货、优势价格、迅捷配送,是一站式采购的工业品商城!具有 10年工业用品电子商务领域研究,以强大的信息通道建设的优势,以及依托线下贸易交易市场在工业用品行业上游供应链的整合能力,为广大的用户提供了传感器、图尔克传感器、变频器、断路器、继电器、PLC、工控机、仪器仪表、气缸、五金工具、伺服电机、劳保用品等一系列自动化的工控产品。
自由口模式下西门子PLC与计算机的串口通信
LD SM0.0
//RCV指令初始化
MOVB 16#EC, SMB87
MOVB 103, SMB88
MOVB 71, SMB89
MOVB +1000, SMW92
MOVB 35, SMB94
R SM87.2, 1
NETWORK 3
LD SM0.0
由于RS-485为半双工电气标准硬件电路,在用PC/PPI电缆时,发送和接收之间要有一定的时间间隔,这是由电缆本身的切换时间决定的,否则就会出现XMT/RCV冲突现象。因此,收发使能的控制切换需延时(尽管短),且通信协议(底层)一般也要求收发之间有间隔,以便正确判断传送数据的正确性。采取的措施:在发送前允许发送中断,在发送完成中断程序中关闭发送中断,延时启动接收中断,并在接收完成中断中关闭接收中断。根据经验,如果用9600波特率的话最短时间间隔至少要50ms以上,否则可能会造成数据的丢失。但我们发现,在发送完成后将自定义的标志位置位,检测到标志位上跳沿的首次扫描执行一遍RCV,即使不加发送延时也不会造成数据丢失。
S7-200系列PLC的通信口分3种工作方式:
l PPI(Point2to2Point Interface)方式;
l 自由口通信(Freeport)方式;
l PROFIBU S2DP方式。
本文主要介绍PLC的自由口通信方式。自由口通信方式是一种通讯协议完全开放的工作方式, 如果说PPI方式是外设适应PLC的话, 那么自由口通信方式就是PLC适应外设。在自由口通信方式下外设不受PPI协议的限制,不支持PPI协议的设备也能够与S7-200系列PLC通讯, 在自由口通信方式下通讯口的协议由外设决定, PLC通过程序来适应外设。自由口通信方式是对PPI方式的一个补充,该方式使得S7-200系列PLC可以与任何具有通讯能力的、并且协议公开的设备相通讯。
通过西门子200PLC自由口ModbusRTU通讯协议控制丹佛斯FC系列变频器
· 问题:问题:· 怎样通过Modbus RTU 控制FC 系列变频器?系列变频器? · 回答:回答:· FC 系列变频器通过内置的RS485接口,以ModbusRTU 格式进行通讯。
参数设置如表 参数号参数号 设置数值设置数值 内容内容 8-30 【2】Modbus RTU 选择协议选择协议8-31 1-247 设置变频器地址,不能重复设置变频器地址,不能重复 8-32 2400-115200 设置波特率,各站速度一致设置波特率,各站速度一致 8-33【0】奇数】奇数奇偶校验,各站设置一致奇偶校验,各站设置一致· 电报结构(十六进制)电报结构(十六进制)·地址字段包含8位数据,有效的地址范围为0-247(十进制),0为广播模式;1-247对相应地址的从站进行寻址。
对相应地址的从站进行寻址。
功能字段包含8位数据,有效地代码范围为1-FF 1-FF,功能字段用于在主站和从站之间,功能字段用于在主站和从站之间发送消息。
当从主站向从站发送时,功能字段为主站的控制字;当从从站向主站传送时,功能字段为从站的状态字。
送时,功能字段为从站的状态字。
由主到从的控制代码由主到从的控制代码代码(十六进制)代码(十六进制) 功能功能 1 读取线圈读取线圈 3 读取保持寄存器读取保持寄存器 5 写入单个线圈写入单个线圈 6 写入单寄存器写入单寄存器 F 写入多个线圈写入多个线圈 10 写入多个寄存器写入多个寄存器 B 获取通讯事件计数器获取通讯事件计数器 11报告从站ID·数据字段,是由几组字节两个十六进制数字(数据字段,是由几组字节两个十六进制数字(0000至FF FF)构成,根据不同的功能代)构成,根据不同的功能代码,数据字段包含的位长、作用不一,针对常用的功能代码,举例如下:码,数据字段包含的位长、作用不一,针对常用的功能代码,举例如下: · 1、功能代码、功能代码=1=1=1,读取线圈状态,读取线圈状态,读取线圈状态 Byte1Byte2Byte3 Byte4 Byte5 Byte6Byte7 Byte8站址站址01位起始地址位起始地址位个数位个数CRC16· 2、功能代码、功能代码、功能代码=5=5=5,写入单个线圈数值,写入单个线圈数值,写入单个线圈数值 Byte1Byte2Byte3Byte4Byte5Byte6Byte7 Byte8站址站址 05 位起始地址位起始地址 位的值位的值 CRC16· 3、功能代码、功能代码、功能代码=F =F =F,写入多个线圈数值,写入多个线圈数值,写入多个线圈数值 Byte1 Byte2 Byte3 Byte4 Byte5 Byte6 Byte7 Byte7+n B8+n B9+n站址站址0F位起始地址位起始地址位的个数位的个数字节数位的值位的值CRC16·线圈及位的意义。
S7-200PLC自由口通讯开始结束条件
自由口通讯支持的开始条件1、空闲行检测:空闲行条件被定义为传输行中的静态或空闲时间。
当通讯行处于静态或空闲达到SMW90或SMW190中指定的毫秒数时,开始接收。
执行程序中的"接收"指令时,接收信息功能开始搜索空闲行条件。
如果在空闲行时间失效之前收到任何字符,接收信息功能会忽略这些字符,用来自SMW90或SMW190的时间重新启动空闲行计时器。
空闲行时间失效后,接收信息功能存储在信息缓冲区中随后接收的所有字符。
按照指定的波特率,空闲行时间应当始终大于传输一个字符(起始位、数据位、校验和停止位)的时间。
按照指定的波特率,空闲行时间的典型数值是三个字符时间。
用户将空闲行检测用做没有特定起始字符或指定信息间最小时间的二进制协议的开始条件。
设置: il = 1, sc = 0, bk = 0;SMW90/SMW190 = 空闲行超时(以毫秒为单位)。
空闲行检测时序图2、起始字符检测:起始字符是任何被用作信息第一个字符的字符。
当收到在SMB88或SMB188中指定的起始字符时,信息开始。
接收信息功能在接收缓冲区中将起始字符存储为信息的第一个字符。
接收信息功能忽略在起始字符之前接收的任何字符。
起始字符和在起始字符之后接收的所有字符存储在信息缓冲区中。
通常,您在ASCII协议中使用起始字符检测,在ASCII协议中,所有的信息以相同的字符开始。
设置: il = 0, sc = 1, bk = 0;SMW90/SMW190 = 无关紧要;SMB88/SMB188 = 起始字符。
3、空闲行和起始字符:"接收"指令可以使用空闲行和起始字符组合开始一则信息。
执行"接收"指令时,接收信息功能搜索空闲行条件。
找到空闲行条件后,接收信息功能寻找指定的起始字符。
如果收到起始字符之外的任何字符,接收功能重新开始搜索空闲行条件。
空闲行条件之前接收的所有字符均符合条件,起始字符之前接收的所有字符均被忽略。
S7-200(SMART)的自由口通信运用的经历
S7-200(SMART)的自由口通信运用的经历初次试探自由口通信,从PLC读仪表数据开始,当时有一套比较老的设备,仪表是国外的,自定义的协议,国内集成商可能是仪表和接口板卡开发比较熟悉,或许是为了满足客户不同的PLC品牌需求,没有采用PLC和仪表直接通信,而是做了一块接口板,接口板和PLC之间采用数字量模式(对于PLC一侧DI 1 / DO 8+3+1+1),接口板和仪表之间采用RS232C通信。
PLC8个输出点相当于并口,3个输出点相当于读写参数编号,1个读写指令点,1个高低位指令点。
一同事有点高级语言的底子,用VB作了一个简单的读参数测试,可以接收到消息串。
于是本人饶有兴趣想试试PLC直接和仪表进行通信,翻看仪表的自定义协议,信息帧均是有指定的起始符和结束符,后面没有校验字符,现在回忆当时情况感觉还是有点幸运,如果校验复杂一点,可能就失去了继续深入的耐性了。
对照S7-200的系统手册,看XMT和RCV的指令介绍,当时对于通信指令和中断指令都不甚明了,需要一点点尝试,终于有点眉目,能够成功的读取一个参数,后来在慢慢的加入逻辑,读取多个参数,对于RCV接收机制和指令使用太过生疏,加上对中断也没有深入的概念,容易出现断线且无法恢复,后来逐渐加了一些重发之类的逻辑,形成了一个逻辑繁琐可读性极差的初级版本。
后来有一个需求,有用户使用了多套年岁较高的纺织机械,之前用的是西门子变频器和S7-200,西门子变频器老型号停产,需要更换新的型号,因为是基于通信给定频率,即使是更换西门子的新型号,也需要变动PLC频率给定部分的程序,用户干脆在一台机器上换了富士的变频器,找厂家改动了程序,后来有某国产变频器经销商想说服用户更换他家的变频器,用户答应给试机的机会,不过需要经销商来适配PLC程序,经过辗转,一同学找我给点建议,本人对通信的经验实在是可怜,不敢乱说,只能说程序是可以适配,但水平有限,经验不够,还是另找高手实施。
S7-200自由口通讯程序
S7-200自由口通讯程序MAIN:S7200自由口通讯程序LD SM0.1CALL SBR_0:SBR0 //初始化子程序LD SM0.7= SM30.0SBR_0:初始化子程序LD SM0.0MOVW +2, VW8 //PLC自由口地址,此处每台机器需设不同的地址LD SM0.0MOVB 9, SMB30 //通讯参数,波特率9600,自由口通讯MOVD &VB100, VD40MOVW +10, VW54MOVB 12, VB150MOVB VB9, VB151MOVD &VB151, VD60MOVB 6, SMB34 中断间隔6毫秒ATCH INT_0:INT0, 10 连接定时中断ATCH INT_1:INT1, 8 连接字符接收中断ENIINT_0:中断程序入口定时中断LD SM0.0DTCH 10 解除定时中断MOVD VD40, VD46 VB100的地址送VD46MOVW +10, VW44MOVW +10, VW54ATCH INT_2:INT2, 8 //接收中断起用服务程序INT2INT_1: 延时转向INT0LD SM0.0MOVB 5, SMB34ATCH INT_0:INT0, 10INT_2: 接受地址,并判断LDB= SMB2, VB9 //地址和本机相符MOVW VW8, AC0 累加器MOVB 255, SMB34ATCH INT_3:INT3, 8 //起用中断服务INT3,接受包ATCH INT_5:INT5, 10 //起用延时监控服务INT5CRETILDB= SMB2, VB9 //地址和本机不符NOTATCH INT_0:INT0, 10 //返回中断入口ATCH INT_1:INT1, 8INT_3: 主接受服务程序,同时做异或校验LD SM0.0XORW SMW1, AC0MOVB SMB2, *VD46INCD VD46DECW VW44LD SM1.0 //完成预定的接受字节数ATCH INT_4:INT4, 8 //起用通讯数据处理主程序INT_4: 通讯数据处理主服务程序LD SM0.0BMB VB100, VB152, 6 //接受报头拷贝到发送报头LD SM0.0DTCH 8 //暂停响应接受中断INCD VD46MOVB SMB2, *VD46XORW SMW1, AC0ANDW 16#FF, AC0 //检查异或校验LDN SM1.0 //异或校验错误MOVB VB100, AC0MOVB 16#80, AC1ORW AC0, AC1MOVB AC1, VB152MOVB 16#1, VB158MOVW +10, VW54JMP 3 //校验错误,向PC返回错误码LD SM1.0 //异或正确MOVW +4, VW34ATCH INT_8:INT8, 8 //起用服务程序INT8响应接受中断,接受包尾LD SM0.0 //数据处理LPSAB= VB101, 0 //V寄存器MOVD &VB0, VD50LRDAB= VB101, 1 //Q寄存器MOVD &QB0, VD50LRDAB= VB101, 2 //I寄存器MOVD &IB0, VD50LRDMOVW +0, VW56LRDMOVW VW102, VW58LPP+D VD56, VD50LDB= VB100, 0 //PLC向PC发送数据MOVB VB104, AC0MOVB VB105, AC1MUL AC1, AC0BMB *VD50, VB158, AC0+I +8, AC0MOVW AC0, VW54-I +2, VW54MOVB AC0, VB150LDB= VB100, 1 //PLC从PC接受数据BMB VB106, *VD50, VB105MOVW +10, VW54MOVB 12, VB150LBL 3LD SM0.0MOVB 50, SMB34ATCH INT_6:INT6, 10 //延时起用INT6,置位发送电平MOVD VD60, VD66MOVB *VD66, AC0MOVB 0, VB250 //发送数据异或校验次数监视LBL 0 //发送数据异或校验LD SM0.0INCD VD66MOVB *VD66, AC1XORW AC1, AC0INCB VB250LDB= VB250, 150 //若校验次数超过150次,退出MOVB 6, SMB34ATCH INT_7:INT7, 10CRETILD SM0.0DECW VW54LDN SM1.0 //若发送校验未完成预定的次数,跳转到循环0JMP 0LD SM0.0INCD VD66MOVB AC0, *VD66LD SM0.0MOVB VB150, AC0+I +4, AC0MOVB AC0, VB150INT_5: 接受时间监控服务程序LD SM0.0MOVD VD40, VD46MOVW +10, VW44MOVB 5, SMB34ATCH INT_1:INT1, 8ATCH INT_0:INT0, 10INT_6:发送数据LD SM0.0MOVB 250, SMB34ATCH INT_7:INT7, 10 //起用发送时间监控ATCH INT_7:INT7, 9 //发送中断(发送完成时触发)起用服务程序INT7A SM4.5XMT VB150, 0INT_7: 结束中断服务程序LD SM0.0DTCH 9 //关闭发送中断MOVB 6, SMB34ATCH INT_0:INT0, 10 //返回中断入口ATCH INT_1:INT1, 8INT_8: 接受包尾,正常情况下本中断服务程序连续调用四次,接受四个0XFF,程序本身不做任何处理CRETI。
超详细讲解PLC自由口通讯——以S7-200为例。
超详细讲解PLC自由口通讯——以S7-200为例。
展开全文主要内容:•S7-200 PLC串口通讯概览•S7-200 PLC自由口通讯基础•S7-200 PLC自由口通讯指令•S7-200 PLC自由口通讯常问问题(1)概览S7-200串口通讯主要包括:1)Modbus—S7-200PLC与支持Modbus RTU协议的第三方设备通讯•RTU Master-Protocol(RTU主站协议)•RTU Slave-Protocol(RTU从站协议)2)USS—S7-200PLC与SIEMENS驱动设备的通讯(如MM440等)3)自由口通讯—S7-200PLC与自由协议的第三方设备间的通讯S7-200系列PLC可以方便地同计算机、打印机、变频器、扫描仪等其它的第三方设备进行无障碍通讯。
Modbus通讯和USS通讯是自由口通讯的特例。
对于S7-200系列的PLC而言,本体上存在着一个或两个485通讯接口,这种接口即可实现S7-200串口通讯的功能,这类串口既可以做编程和监控,也可以做自由口通讯。
但在其运行自由口通讯程序时,无法对其进行监控。
这是因为对于同一个口而言在同一个时刻只能支持一种协议,而编程与下载的协议对于S7-200PLC而言是PPI协议,所以一旦在程序运行过程中使得它做自由口通讯的状态则无法对其监控和下载。
下表是Modbus、USS以及自由口通讯的一些参数:对于OSI七层模型而言,Modbus通讯、USS通讯和自由口通讯所处的位置可从上图中看到。
(2)自由口通讯•S7-200 CPU的通信口可以设置为自由口模式。
选择自由口模式后,用户程序就可以完全控制通信端口的控制,通信协议也完全受用户程序控制。
•所谓的自由口通讯,就是通讯协议是由用户自由定义的。
•对于S7-200 PLC而言,基于本体自带的485端口的网络所应用的协议,除了PPI协议以外,其他都是自由口协议。
例如USS协议、Modbus协议等等都是特定的自由口通讯协议。
西门子PLC 自由口通讯
1.自由口通讯基本概念1.1 自由口通信概述1.2 自由口通信要点1.3 发送和接收指令2.自由口通信使用指南2.1 通讯口初始化2.2 发送数据:2.3 接收数据2.4 自由口通信例程1.自由口通讯基本概念1.1 自由口通信概述S7-200PLC的通讯口支持RS485接口标准。
采用正负两根信号线作为传输线路。
工作模式采用串行半双工形式,在任意时刻只允许由一方发送数据,另一方接收数据。
数据传输采用异步方式,传输的单位是字符,收发双方以预先约定的传输速率,在时钟的作用下,传送这个字符中的每一位。
传输速率可以设置为1200、2400、4800、9600、19200、38400、57600、115200。
字符帧格式为一个起始位、7或8个数据位、一个奇/偶校验位或者无校验位、一个停止位。
字符传输从最低位开始,空闲线高电平、起始位低电平、停止位高电平。
字符传输时间取决于波特率。
数据发送可以是连续的也可以是断续的。
所谓连续的数据发送,是指在一个字符格式的停止位之后,立即发送下一个字符的起始位,之间没有空闲线时间。
而断续的数据发送,是指当一个字符帧发送后,总线维持空闲的状态,新字符起始位可以在任意时刻开始发送,即上一个字符的停止位和下一个字符的起始位之间有空闲线状态。
示例:用PLC连续的发送两个字符(16#55和16#EE)(程序如图3和图4),通过示波器测量CPU通讯端口管脚3/8之间的电压,波形如下图1.:图1.两个字符(16#55和16#EE)的波形图示例说明:16进制的16#55换算成2进制等于2#01010101,16进制的16#EE换算成2进制等于2#11101110。
如图所示,当数据线上没有字符发送时总线处于空闲状态(高电平),当PLC发送第一个字符16#55时,先发送该字符帧的起始位(低电平),再发送它的8个数据位,依次从数据位的最低位开始发送(分别为1、0、1、0、1、0、1、0),接着发送校验位(高电平或低电平或无)和停止位(高电平)。
200自由口通讯。
西门子自由口使用1.接口定义:2.3G3RV的接线使用RS-485通信时,在变频器的外部让R+,S+短接,R-,S-短接3.接线方式西门子的RS485信号A接R-,S-短接线,RS485信号B连接R+,S+短接线4.程序说明1)XMT指令XMT指令缓冲区格式如表所列T+0 发送字节的个数T+1 数据字节T+2 数据字节T+3 数据字节。
T+255 数据字节2)预先设置变频器以下参数:变频器通讯地址为1通讯波特率9.6K通讯数据偶校验变频器的运行指令采用通讯方式3)使用说明西门子S7-200系列PLC的自由通讯端口编程必定会用到两个指令,即XMT(发送)指令和RCV(接收)指令。
编写程序时需要为这两个指令指定数据缓冲区,一般以最低位数为0的地址作为数据缓冲区的起始地址。
(1).发送指令XMT缓冲区(写/读)VB100 //xmt指令要发送的字节个数VB101 //变频器通讯地址(01)VB102 //modbus功能码(10/03)VB103 //变频器被写地址高位/变频器被读起始地址高位VB104 //变频器被写地址低位/变频器被读起始地址低位VB105 //被写数据个数高位/被读数据字个数高位VB106 //被写数据个数低位/被读数据字个数低位VB107 // 数据数/被发送数据CRC高位VB108 // 最初记录高位/被发送数据CRC低位VB109 // 最初记录低位 /VB110// 以后记录高位 /VB111 // 以后记录低位 /VB112 //被发送数据CRC高位VB113//被发送数据CRC低位(2).接收指令使用中断控制字符接受指令2.CRC校验子程序(SBR0)变频器内置的MODBUS协议采用RTU传输格式,该格式使用CRC校验方式对每次发出或接收的数据帧进行校验。
因此,该子程序使用了多个局部变量,以方便其它子程序调用。
在西门子STEP 7-Micro/Win 编程环境下(如图一),需要在该子程序的局部变量表中预先设定以下局部变量:(1)输入型局部变量(V AR_INPUT)1d_0:DWORD; // 待发送数据地址指针变量lw_4:WORD; // 待发送数据字节个数变量(2)输出型局部变量(V AR_OUTPUT)lb_6:BYTE; // CRC校验值高位变量lb_7:BYTE; // CRC校验值低位变量(3)临时局部变量(V AR)lw_8:WORD; // 待发送数据字节个数计数变量lw_10:WORD; // 待发送数据每字节8位二进制数计数变量Network 1LD SM0.0MOVW 16#FFFF, LW6 //将16位CRC校验寄存器LW6全置为1 Network 2LD SM0.0FOR LW8, +1, LW4 //对待发送数据字节个数(LW4)计数(LW8)循环Network 3LD SM0.0XORB *LD0, LB7 //使待发送数据的第一个字节(*LD0)与//CRC校验寄存器低位字节(LB7)进行异或运算Network 4LD SM0.0INCD LD0 //ld_0指向待发送数据的下一个地址Network 5LD SM0.0FOR LW10, +1, +8 //对每字节8位二进制数计数(LW10)循环Network 6LD SM0.0SRW LW6, 1 //CRC校验寄存器LW6右移一位Network 7LD SM1.1 //若移位后的溢出值SM1.1为1XORW 16#A001, LW6 //则使值16#A001与LW6进行异或运算Network 8NEXT //结束每字节8位二进制数计数循环Network 9NEXT //结束每数据帧字节个数计数循环3.初始化子程序(SBR1)该程序在PLC的第一个扫描周期运行,主要是设置CPU226自由端口的通信格式、数据接收格式及复位各寄存区(参见西门子S7-200编程手册)。
简述西门子PLC常用通讯协议及其特点
简述西门子PLC常用通讯协议及其特点1、引言随着烟厂生产工艺信息化的逐渐健全,不同生产工艺控制单元之间的信息交换变得越来越必不可少。
信息交换使各个控制单元与其控制细胞之间以及不同控制单元之间建立信息联系,克服控制单元的“孤岛”效应,增加了控制系统的安全可靠性、经济性,同时也加速了自动化的发展。
本文重点介绍了在烟厂中应用的西门子的几种控制网络通信协议以及各自具有的特点,最后进行总结。
2、在烟厂中应用的西门子工业控制网络通信协议简介在烟厂中应用的西门子工业控制网络通信协议包括以下几种:2.1PPI网络通信协议PPI网络通信协议用于S7—200PLC、上位机与TD200之间的串行通信协议,也是S7—200系列基本的通信方式,不需要格外的扩展模块,可以通过PPI口来实现。
PPI网络通信协议使用双绞电缆联网,通信接口即为S7—200系列上CPU集成编程接口。
在烟厂中应用的PPI网络通信协议信号传递简单易行,不使用额外的软硬件,经济实惠。
2.2PtP网络通信协议PtP网络通信协议与S7—300/400系统为点对点通信。
点对点通信即为两点之间的信息交流,仅支持两台硬件设备进行通信。
在烟厂中应用的$7300/400与另外的串行通信设备之间的数据交换可用S7—300/400的网络通信模块来实现。
PtP网络通信协议既可用于西门子产品也兼容第三方产品,前提是必须满足通信模块与相应的通信方使用双方支持的一种通信方式。
在烟厂中应用的PtP通信与PPI通信的区别在于S7—300,S7—400的PtP网络通信接口不支持PPI网络通信协议,PtP通信接口一般使用SFB60(SEND)/SFB6 1(RCV)具体编程来实现RS485/422通信(串行通信)。
2.3MPI网络通信协议在烟厂中应用的MPI网络通信协议即多点串行通信协议,也是多点通信接口的简称,其通信速率为19.2 Kbit/s-12 Mbit/s,适用于烟厂中相距距离小、站点数目不多的站点之间的通信。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.自由口通讯基本概念1.1 自由口通信概述1.2 自由口通信要点1.3 发送和接收指令2.自由口通信使用指南2.1 通讯口初始化2.2 发送数据:2.3 接收数据2.4 自由口通信例程1.自由口通讯基本概念1.1 自由口通信概述S7-200PLC的通讯口支持RS485接口标准。
采用正负两根信号线作为传输线路。
工作模式采用串行半双工形式,在任意时刻只允许由一方发送数据,另一方接收数据。
数据传输采用异步方式,传输的单位是字符,收发双方以预先约定的传输速率,在时钟的作用下,传送这个字符中的每一位。
传输速率可以设置为1200、2400、4800、9600、19200、38400、57600、115200。
字符帧格式为一个起始位、7或8个数据位、一个奇/偶校验位或者无校验位、一个停止位。
字符传输从最低位开始,空闲线高电平、起始位低电平、停止位高电平。
字符传输时间取决于波特率。
数据发送可以是连续的也可以是断续的。
所谓连续的数据发送,是指在一个字符格式的停止位之后,立即发送下一个字符的起始位,之间没有空闲线时间。
而断续的数据发送,是指当一个字符帧发送后,总线维持空闲的状态,新字符起始位可以在任意时刻开始发送,即上一个字符的停止位和下一个字符的起始位之间有空闲线状态。
示例:用PLC连续的发送两个字符(16#55和16#EE)(程序如图3和图4),通过示波器测量CPU通讯端口管脚3/8之间的电压,波形如下图1.:图1.两个字符(16#55和16#EE)的波形图示例说明:16进制的16#55换算成2进制等于2#01010101,16进制的16#EE换算成2进制等于2#11101110。
如图所示,当数据线上没有字符发送时总线处于空闲状态(高电平),当PLC发送第一个字符16#55时,先发送该字符帧的起始位(低电平),再发送它的8个数据位,依次从数据位的最低位开始发送(分别为1、0、1、0、1、0、1、0),接着发送校验位(高电平或低电平或无)和停止位(高电平)。
因为本例中PLC连续的发送两个字符,所以第一个字符帧的停止位结束后便立即发送下一个字符帧的起始位,之间数据线没有空闲状态。
假如PLC断续的发送这两个字符,那么当PLC发送完第一个字符帧的停止位后,数据线将维持一段时间空闲状态,再发送下一个字符帧。
字符传输的时间取决于波特率,如果设置波特率为9.6k,那么传输一个字符帧中的一位用时等于1/9600*1000000=104us,如果这个字符帧有11位,那么这个字符帧的传输时间等于11/9600*1000=1.145ms.自由口通信协议是什么?顾名思义,没有什么标准的自由口协议。
用户可以自己规定协议。
已知一个通信对象需要字符(字节)传送格式有两个停止位,S7-200是否支持?字符格式是由最基础的硬件(芯片)决定的;S7-200使用的芯片不支持上述格式。
S7-200是否支持《S7-200系统手册》上列明的通信波特率以外的其他特殊通信速率?通信速率是由最基础的硬件(芯片)决定的;S7-200使用的芯片不支持没有列明在手册上的通信速率。
1.2 自由口通信要点应用自由口通信首先要把通信口定义为自由口模式,同时设置相应的通信波特率和上述通信格式。
用户程序通过特殊存储器SMB30(对端口0)、SMB130(对端口1)控制通信口的工作模式。
CPU通信口工作在自由口模式时,通信口就不支持其他通信协议(比如PPI),此通信口不能再与编程软件Micro/WIN通信。
CPU停止时,自由口不能工作,Micro/WIN就可以与CPU通信。
通信口的工作模式,是可以在运行过程中由用户程序重复定义的。
如果调试时需要在自由口模式与PPI模式之间切换,可以使用SM0.7的状态决定通信口的模式;而SM0.7的状态反映的是CPU运行状态开关的位置(在RUN时SM0.7="1",在STOP时SM0.7="0")自由口通信的核心指令是发送(XMT)和接收(RCV)指令。
在自由口通信常用的中断有"接收指令结束中断"、"发送指令结束中断",以及通信端口缓冲区接收中断。
与网络读写指令(NetR/NetW)类似,用户程序不能直接控制通信芯片而必须通过操作系统。
用户程序使用通信数据缓冲区和特殊存储器与操作系统交换相关的信息。
XMT和RCV指令的数据缓冲区类似,起始字节为需要发送的或接收的字符个数,随后是数据字节本身。
如果接收的消息中包括了起始或结束字符,则它们也算数据字节。
调用XMT和RCV指令时只需要指定通信口和数据缓冲区的起始字节地址。
XMT和RCV指令与NetW/NetR指令不同的是,它们与网络上通信对象的"地址"无关,而仅对本地的通信端口操作。
如果网络上有多个设备,消息中必然包含地址信息;这些包含地址信息的消息才是XMT和RCV指令的处理对象。
由于S7-200的通信端口是半双工RS-485芯片,XMT指令和RCV指令不能同时有效。
1.3 发送和接收指令XMT(发送)指令的使用比较简单。
RCV(接收)指令所需要的控制稍多一些。
RCV指令的基本工作过程为:● 1.在逻辑条件满足时,启动(一次)RCV指令,进入接收等待状态● 2.监视通信端口,等待设置的消息起始条件满足,然后进入消息接收状态● 3.如果满足了设置的消息结束条件,则结束消息,然后退出接收状态所以,RCV指令启动后并不一定就接收消息,如果没有让它开始消息接收的条件,就一直处于等待接收的状态;如果消息始终没有开始或者结束,通信口就一直处于接收状态。
这时如果尝试执行XMT指令,就不会发送任何消息。
所以确保不同时执行XMT和RCV非常重要,可以使用发送完成中断和接收完成中断功能,在中断程序中启动另一个指令。
在《S7-200系统手册》中关于XMT和RCV指令的使用有一个例子。
这个例子非常经典,强烈建议学习自由口通信时先做通这个例子。
S7-200 CPU提供了通信口字符接收中断功能,通信口接收到字符时会产生一个中断,接收到的字符暂存在特殊存储器SMB2中。
通信口Port0和Port1共用SMB2,但两个口的字符接收中断号不同。
每接收到一个字符,就会产生一次中断。
对于连续发送消息,需要在中断服务程序中将单个的字符排列到用户规定的消息保存区域中。
实现这个功能可能使用间接寻址比较好。
对于高通信速率来说,字符中断接受方式需要中断程序的执行速度足够快。
一般情况下,使用结束字符作为RCV指令的结束条件比较可靠。
如果通信对象的消息帧中以一个不定的字符(字节)结束(如校验码等),就应当规定消息或字符超时作为结束RCV指令的条件。
但是往往通信对象未必具有严格的协议规定、工作也未必可靠,这就可能造成RCV指令不能正常结束。
这种情况下可以使用字符接收中断功能。
2.自由口通信使用指南2.1 通讯口初始化SMB30(对于端口0)和SMB130(对于端口1)被用于选择波特率和校验类型。
SMB30和SMB130可读可写。
见表1.表1.特殊存储器字节SMB30/SMB130示例:定义端口0为自由口模式,9600波特率,8位数据位,偶校验,程序如下图2.:图2.通讯口初始化程序2.2 发送数据:发送指令XMT能够发送一个字节或多个字节的缓冲区,最多为255个。
使用边沿触发。
发送缓冲区格式:第一个字节为字符个数,其后为发送的信息字符。
示例:如果PLC连续发送2个字符16#55和16#EE,程序如下图3.:图3.发送指令程序示例说明:PLC通过数据块写入数据。
XMT指令中TBL缓冲区首地址VB200写入发送字符的个数,VB201和VB202分别写入发送字符。
通讯口波形图如图1.判断发送完成的方法方法一:发送完成中断。
通过连接中断服务程序到发送结束事件上,在发送完缓冲区中的最后一个字符时,则会产生一个中断。
对通讯口0为中断事件9,对通讯口1为中断事件26。
连接中断程序到中断事件示例如下图4.:图4.建立发送完成中断的程序方法二:发送空闲位。
当port0发送空闲时,SM4.5=1。
当port1发送空闲时,SM4.6=1.示例:如果PLC断续的发送2个字符16#55和16#EE.方法一:利用发送完成中断,在主程序中建立中断事件,执行XMT发送16#55,发送完成后,进入发送完成中断程序中,执行XMT发送16#EE。
波形图如图5.图5.字符波形图方法二:利用发送空闲位。
当执行XMT发送完16#55后,利用SM4.5/4.6的上升沿(确保发送的字符帧发送完成),往XMT的TBL缓冲区写入新字符16#EE,并再次触发发送。
波形图如图6.图6.字符波形图两种方法均断续发送字符,即两个字符之间有空闲状态。
注意:由于SM4.5/4.6的使用受程序扫描周期的影响,编程中推荐使用发送完成中断。
Break断点Break状态:持续以当前波特率传输16位数据,且一直维持"0"状态。
产生方式:把字符数设置为0并执行XMT指令,可以产生一个Break状态。
Break用途:可以作为接收的起始条件。
示例:通过XMT指令发送一个Break断点。
偶校验,8个数据位,9.6K。
程序如下图7.:图7.发送一个断点的程序Break状态的波形图如下图8.图8.一个断点波形图如果通过接收方为上位机或者S7-200PLC,那么它们接收到的字符为16#00.那么通过发送一个Break断点接收到的16#00与发送一个字符帧16#00有什么不同呢?Break状态是传输16位数据一直为0。
而发送一个字符16#00(帧格式为1个起始位,8个数据位,偶校验和停止位)则传输11位该字符帧。
如下图9.图9.一个断点和字符0的波形图2.3 接收数据接收指令RCV能够接收一个字节或多个字节的缓冲区,最多为255个。
使用边沿触发或第一个扫描周期触发。
接收缓冲区格式:第一个字节表示接收的字符个数,其后为接收的信息字符。
RCV使能会将TBL缓冲区中的字符个数清零。
示例:如果发送方给PLC发送2个字符16#55和16#EE,PLC的接收程序如下图10.:图10.接收指令程序示例说明:RCV指令TBL缓冲区的首地址VB200保存的是接收字符个数,其后是信息字符。
判断接收完成的方法:方法一:接收完成中断。
通过连接中断服务程序到接收信息完成事件上,在接收完缓冲区中的最后一个字符时,则会产生一个中断。
对端口0为中断事件23,对端口1为中断事件24。
连接中断程序到中断事件示例如下图11.:图11.建立接收完成中断的程序方法二:接收状态字节。
SMB86(port0),SMB186(port1)。
当接收状态字节为0,表示接收正在进行。
当接收状态字节不为0,表示接收指令未被激活或者已经被中止。