自由口通信整理

合集下载

s7-200自由口通信

s7-200自由口通信

s7-200⾃由⼝通信S7-200 ⾃由⼝通信关键字要点初始化RS485例程发送发送完成接收接收完成起始条件结束条件字符中断S7-200⾃由⼝通信简介S7-200 CPU的通信⼝可以设置为⾃由⼝模式。

选择⾃由⼝模式后,⽤户程序就可以完全控制通信端⼝的操作,通信协议也完全受⽤户程序控制。

⼀般⽤于和第三⽅串⾏通信设备进⾏通信。

⾃由⼝模式可以灵活应⽤。

Micro/WIN的两个指令库(USS和Modbus RTU)就是使⽤⾃由⼝模式编程实现的。

在进⾏⾃由⼝通信程序调试时,可以使⽤PC/PPI电缆(设置到⾃由⼝通信模式)连接PC和CPU,在PC上运⾏串⼝调试软件(或者Windows的Hyper Terminal-超级终端)调试⾃由⼝程序。

USB/PPI电缆和CP卡不⽀持⾃由⼝调试。

⽬录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通信功能;初步掌握PLC自由口通信编程方法。

二、实验设备1、THSMS-A型实验装置二台2、安装了STEP7-Micro/WIN4.0编程软件的计算机一台3、PC/PPI编程电缆,网络连接器。

4、锁紧导线若干三、实验内容与步骤(1)输入以下程序,通过串口调试软件(可从网上下载,下图为某一款软件主界面)或windows超级终端(使用方法附后,如果你的计算机中没有,请找老师或者从网上下载)观察现象。

Network 1 // 网络标题// 传送:“S7-200你好”到VW100开始的五个字(十个字节)LD SM0.1MOVB 16#09, SMB30 //9600,8,N,1MOVW 16#5337, VW100 //“S”和“7”的ASCII码MOVW 16#2D32, VW102 //“-”和“2”的ASCII码MOVW 16#3030, VW104 //两个“0”的ASCII码MOVW 16#C4E3, VW106 //“你”字的汉字机内码,产生办法:找到汉字区位码,将区码和位码分别变为16进制,再分别加上A0即得MOVW 16#BAC3, VW108 //“好”的机内码MOVB 10, VB99 //缓冲区有10个字节(即“S7-200你好”),缓冲区格式见教材P145图7-22Network 2LD SM0.5 //秒脉冲,占空比50%EUXMT VB99, 0 //上升沿发送VB99中写明的字节数,从端口0发送(2)输入以下程序,通过串口调试软件(可从网上下载,下图为某一款软件主界面)或windows超级终端(使用方法附后,如果你的计算机中没有,请找老师或者从网上下载)观察现象。

主程序:Network 1 // 网络标题// 网络注释LD SM0.1MOVB 9, SMB30MOVB 1, VB100MOVB 'A', VB101Network 2LD SM0.1ATCH INT0, 8ENINetwork 3LD I0.1EUXMT VB100, 0中断程序:TITLE=中断程序注释Network 1 // 网络标题//SMB2中包含自由端口通信过程中从端口0 或端口1 收到的每个字符LDB= SMB2, 'A'= Q0.1程序所用符号表:拨动PLC开关进入运行状态,此时关闭STEP7软件,启动超级终端,在终端窗口分别输入CHINA123和chinAa123,观察PLC的Q0.1端子的灯亮来灭情况。

【电气工控自动化】S7-200 SMART与V20变频器进行自由口通信

【电气工控自动化】S7-200 SMART与V20变频器进行自由口通信

S7-200 SMART与V20变频器进行自由口通信学习S7-200 SMART时了解到,基于RS485接口可实现一下几种通信:1)modbus RTU通信2)PPI协议通信3)USS协议通信4)自由口通信何为自由口通信呢?前三种通信必须要PLC和与其通信的设备支持相同的通信协议,如果两者之间没有共同的通信协议则需要用到自由口通信。

自由口通信也称无协议通信,需要根据对方设备的通信数据格式编写一个临时协议,不仅需要编程人员学会如何编写程序,还需要了解对方的通信数据格式,所以对编程人员要求较高,随着标准协议(modbus,USS等)普及,自由口应用越来越少,但是对于一下小的设备如扫码枪等,并没有集成标准通信协议,所以只能选用自由口通信,Moubus和USS其实是自由口的一个特例。

很多人碰到自由口通信就手足无措了,其实只要掌握规律,自由口通信不一定很难。

为此我总结了自由口通信的基本步骤:1)读懂对方的数据格式。

串行通信中,数据是一位一位的进行发送,也就是0和1。

为了能够准确的将数据发送过去,往往会加上1个起始位,1个校验位,1个停止位(无校验是为2个停止位)如图1-1所示。

图1-1我们就以Modbus RTU为例详细看一下串口通信中数据是如何发送和就收的。

Modbus RTU代码系统如下:·1个起始位。

·7或8个数据位,最小的有效位先发送。

·1个奇偶校验位,设成无校验则没有。

·1个停止位(有校验时),2个Bit(无校验时)。

数据格式的描述如下表:11-bit字符帧(BITl-BIT8为数据位):起始位Bit1Bit2Bit3Bit4Bit5Bit6Bit7Bit8校验位停止位10-bit字符帧(BITl-BIT7为数据位):起始位Bit1Bit2Bit3Bit4Bit5Bit6Bit7校验位停止位通信中要保证通信双方要有相同的波特率,数据格式,奇偶校验位。

波特率:通信速度,每秒中发送的位的个数,单位为Bit/S或bps。

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自由口通讯一、基础知识介绍(名词理解,原理,工作机制)1、S7-200CPU的通讯口可以设置为自由口模式(如何设置成自由口模式?)。

选择自由口模式后,用户程序可以完全控制通讯端口的操作(如何控制通讯端口的操作),通讯协议也完全受用户程序控制(如何控制通讯协议)。

S7-200 CPU处于自由口通信模式时,通信功能完全由用户程序控制,所有的通信任务和信息定义均需由用户编程实现。

2、S7-200CPU上的通讯口在电气上是标准的RS-485半双工串行通讯口。

此串行字符通信的格式可以包含:○一个起始位。

○7或8位字符(数据字节)。

○一个奇偶校验位,或没有校验位。

○一个停止位。

○通信波特率可以设置为1200,2400,4800,9600,19200,38400,57600,115200 bit/s。

凡是符合这些格式的串行通信设备,都可以和S7-200 CPU通信。

借助自由口通信模式,S7-200 CPU 可与许多通信协议公开的其他设备、控制器进行通信,其波特率为1200~115200bit/s。

自由口通信是一种基于RS485 硬件基础上,允许应用程序控制S7-200 CPU 的通信端口、以实现一些自定义通信协议的通信方式。

3、自由口通讯(顾名思义很自由)可以通过用户程序灵活控制,没有固定模式。

S7-200 可通过自由口通讯协议访问下列设备:– 带用户端软件的PC机,– 条形码阅读器,– 串口打印机,– 并口打印机,– S7-200,– S7-300 with CP 340– 非Siemens PLC,– 调制解调器。

S7-200 CPU 通信端口是RS485 标准,因此如果通信对象是RS232 设备,则需要使用RS232/PPI 电缆。

4、“请求-响应”工作机制:S7-200 CPU可以作为主站先向从站发送数据请求,然后等待从站的数据响应,也可以作为从站,首先等待主站发送过来的数据请求,然后根据请求的内容,按规则把相关数据返回给主站。

S7-1200第15讲:S7-1200的自由口通信

S7-1200第15讲:S7-1200的自由口通信
CM1241 RS232接口模块支持的通信协议: 基于字符(ASCII)的自由口通信协议 MODBUS RTU主从协议
CM1241 RS485接口模块支持的通信协议: 基于字符的自由口协议(ASCII) MODBUS RTU主从协议 USS协议
CB1241 RS485接口模块支持的通信协议: 基于字符的自由口协议(ASCII) MODBUS RTU主从协议 USS协议
节点数
1收、1发
最大传输电缆长度
50英尺
最大传输速率
20Kb/S
最大驱动输出电压
+/-25V
驱动器输出信号电平负载 +/-5V~+/-15V
驱动器输出信号电平空载 +/-25V
驱动器负载阻抗(Ω)
3K~7K
摆率(最大值)
30V/μs
接收器输入电压范围
+/-15V
接收(Ω)
RS-422的最大传输距离为4000英尺(约1219米),最大传输速率为 10Mb/s。其平衡双绞线的长度与传输速率成反比,在100kb/s速率以 下,才可能达到最大传输距离。只有在很短的距离下才能获得最高速率 传输。一般100米长的双绞线上所能获得的最大传输速率仅为1Mb/s。
RS-422需要一终接电阻,要求其阻值约等于传输电缆的特性阻抗。 在矩距离传输时可不需终接电阻,即一般在300米以下不需终接电阻。 终接电阻接在传输电缆的最远端。
从两个设备到多个设备运行—RS422 包括:差分传输,地址,全双工
RS-422、RS-485与RS-232不一样,数据信号采用差分传输方式, 也称作平衡传输,它使用一对双绞线,将其中一线定义为A,另一线定 义为B。
RS-422标准全称是“平衡电压数字接口电路的电气特性”,它定义 了接口电路的特性。实际上还有一根信号地线,共5根线。

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的转换,打车到市场上买个转换器(打车钱比设备钱还多,可见现场多么偏僻阿),听卖转换器的老板给我分析了一下每种的区别——不光是价格的区别,说实在的,当时非常惭愧,老板懂的比我多多了。

s自由口通信

s自由口通信

S7-200 自由口通信关键字要点初始化RS485例程发送发送完成接收接收完成?起始条件结束条件字符中断S7-200自由口通信简介S7-200 CPU的通信口可以设置为自由口模式。

选择自由口模式后,用户程序就可以完全控制通信端口的操作,通信协议也完全受用户程序控制。

一般用于和第三方串行通信设备进行通信。

自由口模式可以灵活应用。

Micro/WIN的两个指令库(USS和Modbus RTU)就是使用自由口模式编程实现的。

在进行自由口通信程序调试时,可以使用PC/PPI电缆(设置到自由口通信模式)连接PC和CPU,在PC上运行串口调试软件(或者Windows的Hyper Terminal-超级终端)调试自由口程序。

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进制等于。

西门子PLC 自由口通讯

西门子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),接着发送校验位(高电平或低电平或无)和停止位(高电平)。

自由口通讯

自由口通讯

包头就是起始符,包尾就是结束符校验用的是CRC,校验码有很多种。

包头就是两个字节,两个##,换算成16进制就是23 23包尾是两个&&。

从站收到这样的请求,他先校验包头和包尾然后再接受CRC校验码再分析指令类型和数据段。

把指令类型和数据段叫做有效数据区。

数据段就是FF在这里就是这样定义的。

例:##(包尾0) 01(指令类型)FF(数据段)校验码(根据指令类型和数据段算出来)&&(包尾)把这串数据发出去,但这里没有地址信息,因为是两个设备在通讯,而不是一个主站和多个从站。

对方收到这串指令会判断指令类型,如果是01.就会立即回传实时数据从站格式:从站格式:不能同时发送和接收,因为半双工,也不能同时接收或发送两条。

编程要求:要自由口模式,所以要设成mm=01,要用端口0那就是SMB30,自由口波特率如果是9600波特,那bbb就是010,pp00不校验,一般每个字符都是8位,所以d是0.所以ppdbbbmm=00001001,8421码就是16进制的9,把16#09赋予SMB30.这里没有设的就是起始位跟停止位,在默认条件下,它只支持1个停止位跟1个起始位,如果有的协议要1.5或者2个起始位跟停止位就不行了缓冲区:缓冲区第一个字节是计数,后面就是信息的内容。

下图:TBL是vb500,那就是vb500里面放的我要发送的这串数据有多少个字符或者是字节如果有10个字节,就把10填到vb500,起始符如果有的话,就应该在vb501,往下总共就是10个字节。

接受RCV也一样,有多少字节,图里可以看出可以从vb500里读取,因为是半双工的,发送和接受不能同时进行,所以发送缓冲区和接收缓冲区可以是同一个,如图都是vb500,为了节省内存,当然也可以不是同一个。

接收就比较复杂,接收指令激活以后,会进入接收等待状态一直保持接收等待状态,但如果需要的话,可以给它一个时间,它就认为这次的通讯不成功,过了这个时间就不让它等待了。

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

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

S7-200自由口通信的原理及学习建议S7-200自由口通信是一种基于西门子PLC控制器的通信技术。

该技术允许通过在PLC控制器的自由口接口上配置通信参数和协议,实现不同设备之间的数据交换和信息传输。

这种通信方式极大地扩展了PLC控制器的应用场景和功能性,在工业自动化领域具有广泛的应用价值。

S7-200自由口通信的原理是基于串行通信技术,通过自由口接口以特定的通信协议进行数据传输。

通信过程分为发送端和接收端两个部分。

发送端将要传输的数据按照指定的协议进行打包,然后通过串口发送到接收端。

接收端通过串口接收到数据后,根据协议把数据解析出来,并进行处理。

最终,接收端将处理后的数据返回给发送端确认收到,完成了数据的传输。

整个通信过程主要依赖于自由口通信模块和软件的支持和配合实现。

要学习和掌握S7-200自由口通信技术,需要从以下几个方面入手:首先,需要具备一定的PLC控制器编程基础。

熟练掌握与掌握西门子PLC控制器相关的编程语言和软件工具,并了解基本的电气知识和控制系统原理等。

只有了解这些基础知识,才能更深入地理解和运用自由口通信技术。

其次,需要了解不同的通信协议和方式。

S7-200自由口通信技术支持多种协议,如Modbus、Profibus等,还可以通过自由口通信模块配置自定义协议。

因此,需要根据不同的应用场景来学习和了解相应的协议和方式,才能更好地实现数据交换和信息传输。

第三,需要学习和掌握自由口通信模块的使用和配置。

了解自由口通信模块的工作原理,能够选择合适的模块和配置通信参数,以及处理通信异常和错误,是掌握自由口通信技术的重要内容。

最后,需要进行实际操作和实践。

通过实际的案例和应用场景,练习和实践自由口通信技术,掌握实现通信工程的方法和技巧,不断提升技能水平。

总之,S7-200自由口通信技术是一个重要的控制系统通信技术,对于提高工业自动化系统的效率和控制精度具有重要的作用。

学习和掌握S7-200自由口通信技术需要有较强的编程基础、通信协议和模块的配置技能、以及实践操作和应用实例的支撑。

S7-200(SMART)的自由口通信运用的经历

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程序,经过辗转,一同学找我给点建议,本人对通信的经验实在是可怜,不敢乱说,只能说程序是可以适配,但水平有限,经验不够,还是另找高手实施。

LabVIEW,S7200 PLC自由口通信方法

LabVIEW,S7200 PLC自由口通信方法

LabVIEW,S7200 PLC自由口通信方法关键字:导读: 1 引言PLC作为一种稳定可靠、控制程序灵活可变的控制器,在工业控制系统中已经得到了广泛的应用。

随着计算机网络技术的发展,传统控制系统不断向多级分布式控制方向发展,要求PLC应具有通信和网络功能。

但是由于中小...1 引言PLC作为一种稳定可靠、控制程序灵活可变的控制器,在工业控制系统中已经得到了广泛的应用。

随着计算机网络技术的发展,传统控制系统不断向多级分布式控制方向发展,要求PLC应具有通信和网络功能。

但是由于中小型PLC 的人机接口功能不够完善,无法提供给用户一个美观又易于操作的交互界面。

如果将 PLC 与工控PC机结合起来,就能弥补PLC的不足,实现对控制参数的在线调整及系统运动状态的跟踪与监控。

本文通过串行通信技术实现单片机与S7-20O系列 PLC之间的自由口通信方法进行了研究,达到了预期的效果。

2 系统硬件设计2.1 系统构成系统上位机采用IPC,下位机由9台西门子S7-200PLC和2台进口智能仪表组成,组成结构如图1所示[1]。

其中PLC部分采用了3台CPU221,1台CPU222和5台CPU224。

上位机与 PLC采用两线制的RS-485接口组成控制系统。

整个控制系统采用主从方式构成工业监控网络,网络中有一个主站和多个从站。

各个从站点由唯一的地址码识别。

这样,上位机便能通过RS-485通信线对挂在上面的PLC和智能仪表进行控制,避免信息传递的紊乱,确保通信的准确可靠。

2.2 通信硬件实现由于S7-200系列PLC的通信口是RS-485串行接口,而计算机是RS-232串行接口,所以计算机与PLC在通信时采用了MAX485CPA芯片进行RS-485/RS-232转换,并加入光电隔离措施来提高系统的稳定性,转换电路如图2所示。

3 S7-200PLC自由口通信3.1 自由口通信方式S7-200 PLC的通信口是标准的RS-485串行通信口,支持PPI协议、 MPI协议、 PROFIBUS 协议和自由口协议,其中最具有特色的自由口协议通过用户程序定义通信端口,实现PLC与任何已知协议的智能仪器设备通信。

详细介绍S7-200SMART的自由口通信

详细介绍S7-200SMART的自由口通信

详细介绍S7-200SMART的自由口通信
学习S7-200 SMART时了解到,基于RS485接口可实现一下几种通信:
1)modbus RTU通信
2)PPI协议通信
3)USS协议通信
4)自由口通信
何为自由口通信呢?
前三种通信必须要PLC和与其通信的设备支持相同的通信协议,如果两者之间没有共同的通信协议则需要用到自由口通信。

自由口通信也称无协议通信,需要根据对方设备的通信数据格式编写一个临时协议,不仅需要编程人员学会如何编写程序,还需要了解对方的通信数据格式,所以对编程人员要求较高,随着标准协议(modbus,USS等)普及,自由口应用越来越少,但是对于一下小的设备如扫码枪等,并没有集成标准通信协议,所以只能选用自由口通信,Moubus和USS其实是自由口的一个特例。

很多人碰到自由口通信就手足无措了,其实只要掌握规律,自由口通信不一定很难。

为此我总结了自由口通信的基本步骤:
1)读懂对方的数据格式。

串行通信中,数据是一位一位的进行发送,也就是0和1。

为了能够准确的将数据发送过去,往往会加上1个起始位,1个校验位,1个停止位(无校验是为2个停止位)如图1-1所示。

图1-1
我们就以Modbus RTU为例详细看一下串口通信中数据是如何发送和就收的。

ModbusRTU代码系统如下:
·1个起始位。

·7或8个数据位,最小的有效位先发送。

S7200 SMART 自由口通信实例解读分析

S7200  SMART 自由口通信实例解读分析

S7200 Smart自由口通信:
(2)自由口通讯 S7-200 smart CPU的通信口可以设置为自由口模
式。选择自由口模式后,用户程序就可以完全控制 通信端口的控制,通信协议也完全受用户程序控制。 所谓的自由口通讯,就是通讯协议是由用户自由定 义的。 对于S7-200 smart PLC而言,基于本体自带的485 端口的网络所应用的协议,除了PPI协议以外,其 他都是自由口协议。例如USS协议、Modbus协议 等等都是特定的自由口通讯协议。
S7-200 Smart ——自由口通信解读
2020/6/14
S7200 Smart自由口通信:
S7-200 Smart串口通讯主要包括: 1)Modbus—PLC与支持Modbபைடு நூலகம்s RTU协议的 第三方设备通讯 •RTU Master-Protocol(RTU主站协议) •RTU Slave-Protocol(RTU从站协议) 2)USS—S7-200PLC与SIEMENS驱动设备的通讯 (如MM440等) 3)自由口通讯—S7-200PLC与自由协议的第三 方设备间的通讯
1.判断信息接收结束是否为字符间超 时结束(SM86.2 = 1),若是,则认 为接收成功,接收成功计算器 VB200 自加一; 2.消息接收成功时接收的信息拷贝到 VB300 为起始地址的存储区; 3.开始下一次 RCV 指令地执行
CPU 中断程序
S7-200 SMART CPU集成的RS485 端口(端口 0 )实现与条码扫描枪通信
2台S7-200 SMART CPU采用自由口通信方式实现相互通信。
两台PLC之间也可以使用自由口通信完成PLC之间的数据交换,我们以下面一个 例子说明两台PLC之间的自由口通信。 通信任务:CPU1 每秒触发一次 XMT 指令将 CPU 的实时时钟发送到 CPU2; CPU2 接收到 CPU1 发送的信息后立即将 CPU2 的实时时钟回复到 CPU1。

S7-200系列PLC自由口通信知识分享(3)

S7-200系列PLC自由口通信知识分享(3)

S7-200系列PLC自由口通信知识分享(3)在前面的文章中与大家分享了自由口通信中的发送功能,那么进行就跟大家聊聊自由口通信中的接收功能,自由口通信中的难点就是在于接收功能的使用,当PLC通过通信端口把数据发送给下位设备后,下位设备会根据PLC发送过去的信息内容回传相应的数据给PLC,这时候PLC就需要使用接收功能进行数据的接收,S7-200系列PLC提供了一条接收指令(RCV)用于接收下位设备返回来的信息。

指令格式如下所示:当PLC接收完下位设备回传回来的数据后,PLC会产生相应的中断事件来告知编程人员信息接收完成,此时可以编写相应的程序提取有效数据,并对这些有效数据进行转换,转换成可读性的数据。

S7-200系列PLC提供了中断事件23和中断事件24分别作为端口0和端口1的接收完成中断事件号。

在PLC的信息发送过程中,PLC是主动方,会根据需要发送的数据个数进行数据的发送,当发送完成后,PLC会自动产生相应发送完成中断,而对于接收来讲,PLC是被动方,只负责数据的接收,当PLC的端口使能了接收功能后,PLC处于等待信息的接收状态,有数据过来就接收,但是接收的数据是否是有效的数据,什么时候接收完了PLC并不知道,此时就要求我们编程人员需要设置好消息的起始和接收条件,当起始条满足了,PLC 把接收到的数据放入到接收缓冲区中,当满足了结束条件,PLC关断接收功能,并产生接收完成中断。

用于判断消息的的起始和结束条件有很多种方式,但用的比较多可能就以下几种方式:今天我们先聊一聊通过起始符作为信息的起始和通过结束符作为信息的结束判断的过程及程序的设置,S7-200系列的PLC提供了两个系统存储区用于存储起始符(SMB88)和结束符(SMB89)(这里以端口0为例说明),因此若需要使用起始符和结束符做为消息的起始和结束的的判断,则需要把起始符和结束符分别放到SMB88和SMB89中。

当PLC在接收数据的过程中,会对接收的数据与起始符进行对比,如果与起始符不相等,这说明不是有效性的数据,不放入接收缓冲器中,会把接收到的数据丢弃,重新接收,若接收到的数据与起始符相等,则PLC会把接收到的数据放到接收缓冲区中,同时记录接收字符个数的存储器的值加1。

关于自由口通讯协议

关于自由口通讯协议

关于自由口通讯协议此协议为亚控公司为实现组态王与德国西门子公司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: 校验字节由于采用自由口通信方式后,梯形图程序通过接收中断和发送中断以及发送指令(XMT)控制通信口的操作。

自由口模式通信协议-最全资料PPT

自由口模式通信协议-最全资料PPT
任务5
自由口模式通信协议(Freeport Mode) 自由口模式通信是S7-200PLC独特的一种通信方式。自由口协议是指通过编写用
户程序来控制CPU通信端口的操作模式,可以用自定义的通信协议连接多种智能设备。 自由口通信可以使S7-200与任何通信协议公开的设备、控制器进行通信,即S7-200可 以由用户自己定义通信协议(如ASCII协议)。波特率为1.2~115.2 Kb/s。
自S7由-2口00协自议由是口指通通信过范编围写是用任何具有串行通信接口的设备,如打印机、变频器、 S7-200自系由列口PL通C,信用范于围两是个任P何L具C间有的串简行单通数信据接交口换的时设,备用,户如可打以印通机过、编变程频的器方、
缆 自自连由由接口 口可进 模协行 式议以自 通是由 信指通口 协通通 议过过信 编(Fr。写e双e用po绞rt Mo线de)进行连接;如果连接的智能设备具有RS-232接口,可以用PC/PPI电
自缆由连口 接协进议行是自指由通口过通编信写。用 S7-200系自列由P口L通C,信用范于围两是个任P何L具C间有的串简行单通数信据接交口换的时设,备用,户如可打以印通机过、编变程频的器方、
缆连接进行自由口通信。 自由口协议是指通过编写用
缆连接进行自由口通信。 如果连接的智能设备具有RS-232接口,可以用PC/PPI电
任务5
如果连接的智能S设7备-具2有0R0S自-232由接口口,可以通用P信C/P范PI电围是任何具有串行通信接口的设备,如打印机、变频器、
如果连接的智能设备具有RS-232接口,可以用PC/PPI电 可以通过双绞线进行连接;
条码阅读器、调制解调器、上位计算机等。当连接的智能设备具有RS-485接口时, 如自果由连 口接协的议智是能指设通备过具编有写用RS-232接口,可以用PC/PPI电

自由口通讯

自由口通讯
VB131 BCC校验码(十六进制ASCII码) Byte30
VB132 Byte31
VB133 结束字符 Byte32
表4 译码区
VB134 PLC站号(ATH from VB103-VB104)
VB135 合成为VD135作为目标寄存器的地址指针
(ATH from VB105-VB112)
例如:
IB000的地址可表示为 00 00 00 00(H)
VB100的地址可表示为 08 00 00 64(H)
读/写字节数M
----当读命令时,始终读回从目标寄存器开始的连续8个字节的数据(转换为十六进制ASCII码后占用16个字节),可以根据自己的需要取用,M可以任意写入。
----PLC每接到一条指令后都会发送一条反馈信息,当反馈信息发送完成时,会产生发送完成中断,XMTcomplete中断服务程序用来处理发送完成中断事件。在XMTcomplete中断服务程序中所要执行的操作包括:复位BCC校验码正确的标志位(M0.0);允许RCV;bcc码寄存器清零;重新装入用于计算BCC校验码的地址指针;接收缓冲区中存放指令结束字符的字节VB133清零(用来判断下一条指令格式是否正确)。
----当写命令时,M表示的是要写入数据的十六进制ASCII码所占用的字节数。例如要写入1个字节的数据,数据在指令中以十六进制ASCII码表示,它将占用2个字节,此时应向M中写入"02"。同理,如果要写入5个字节的数据,M中应写入"0A"。
要写入的数据
----要写入的数据在指令中以十六进制ASCII码的格式表示,占用指令的B14-B29共16个字节。数据区必须填满,但只有前M个字节的数据会被写入目标寄存器。一条指令最多可以写入8个字节的数据(此时M中应写入"10",代表十进制的16)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

自由口通信资料总结自由口通信
S7-200 CPU的串行通信口可由用户程序控制,这种操作模式称作自由口通信。

自由口通信时基于RS-485的硬件基础,允许应用程序控制s7-200 CPU的通信端口,以实现一些自定义通信协议的通信方式。

波特率为1200~115200 bit/s。

当选择了自由口通信模式,程序可以使用接收中断、发送中断、发送指令和接收指令来控制通信操作。

在自由口模式下,通信协议完全由程序控制。

SM30(用于端口0)和SM31(如果有两个端口,则用于端口1)用于选择波特率和奇偶校验。

S7-200处于自由口通信模式时,所有的通信任务和信息定义均需要由用户编程实现。

简单情况下,可以只用(XMT)指令向打印机或者显示器发送信息,或者同条码阅读器、重量计和焊机等进行通信连接。

每种情况下,都必须编写程序,以支持自由端口模式下设备同CPU通信的协议。

只有CPU处于RUN模式时,才能进行自由端口通信。

通过向SM30或SM31的协议选择区置1,可以选择自由端口模式。

处于自由端口模式时,不能与编程设备通信。

注意:
1)s7-200 CPU通信端口是半双工通信口,所以发送和接收不能同时进行。

2)S7-200 CPU通信口处于自由口模式下时,该通信口不能同时工作在其他通信模式下。

例如:不能再端口1进行自由口通信时,又使用该通信口进行PPI编程。

3)S7-200 CPU通信端口是RS-485标准,如果通信对象是RS-232设备,则需要使用Rs-232/PPI 电缆。

4)自由口通信只有在s7-200 CPU 处于RUN模式下才能被激活,如果将s7-200 CPU 设置为STOP模式,则通信端口将根据s7-200 CPU系统块中的配置转换到PPI协议。

5)SM0.7反映CPU的模式,通过修改SM0.7的状态可以控制自由端口模式的进入。

应用自由口通信首先要把通信口定义为自由口模式,同时设置相应的通信波特率和上述通信格式。

用户程序通过特殊存储器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指令不能同时有效。

XMT和RCV指令
XMT(发送)指令的使用比较简单。

RCV(接收)指令所需要的控制稍多一些。

RCV指令的基本工作过程为:
1.在逻辑条件满足时,启动(一次)RCV指令,进入接收等待状态
2.监视通信端口,等待设置的消息起始条件满足,然后进入消息接收状态
3.如果满足了设置的消息结束条件,则结束消息,然后退出接收状态
所以,RCV指令启动后并不一定就接收消息,如果没有让它开始消息接收的条件,就一直处于等待接收的状态;如果消息始终没有开始或者结束,通信口就一直处于接收状态。


时如果尝试执行XMT 指令,就不会发送任何消息。

编程方法:
①在发送完成后要断开发送,然后准备接收数据;
②在接收完成后,重新连接发送中断,准备发送数据。

这就是要保证在发送时不能有接收,接收时不能有中断,这是由自由口通信的硬件决定的。

自由口通信基本过程
主程序
初始化子程序
初始化通信参数
设置发送中断时间声明发送完和接收完中断中断0(定时发送数据)
设置发送参数并发送
中断1(发送完中断)
①断开中断
②开始接收
中断2(接收完中断)
转入发送状态
所以确保不同时执行XMT 和RCV 非常重要,可以使用发送完成中断和接收完成中断功能,在中断程序中启动另一个指令。

(这一点相当重要,自由口编程的原理就是基于这句话)。

相关文档
最新文档