如何实现S7200SMART自由口通讯
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。
【案例】S7-200SMARTMODBUS通信介绍与实例编程
【案例】S7-200SMARTMODBUS通信介绍与实例编程一. 西门子S7-200 SMART作为modbus从站1.检查Micro/WIN SMART Modbus RTU从站指令库(图1),库中应当包括MBUS_INIT和MBUS_SLAVE两个子程序。
2.编程时使用SM0.1调用子程序MBUS_INIT进行初始化,使用SM0.0调用MBUS_SLAVE,并指定相应参数。
关于参数的详细说明,可在子程序的局部变量表中找到;调用Modbus RTU通信指令库图中参数意义如下:a.模式选择:启动/停止Modbus,1=启动;0=停止b.从站地址:Modbus从站地址,取值1~247c.波特率:可选1200,2400,4800,9600,19200,38400,57600,115200d.奇偶校验:0=无校验;1=奇校验;2=偶校验e.端口:0=CPU中集成的 RS-485,1=可选信号板上的RS-485 或RS-232。
f.延时:附加字符间延时,缺省值为0g.最大I/Q位:参与通信的最大I/O点数,S7-200 SMART 的I/O 映像区为256/256(目前只能最多连接4个扩展模块,因此目前最多I/O点数为188/188)h.最大AI字数:参与通信的最大AI通道数,最多56个i.最大保持寄存器区:参与通信的V存储区字(VW)j.保持寄存器区起始地址:以&VBx指定(间接寻址方式)k.初始化完成标志:成功初始化后置1l.初始化错误代码m.Modbus执行:通信中时置1,无 Modbus 通信活动时为 0。
n.错误代码:0=无错误3.在CPU的V数据区中分配库指令数据区(Library Memory)Modbus Slave 指令库需要一个781个字节的全局V 存储区。
调用STEP 7 - Mciro/WIN SMART Instruction Library(指令库)需要分配库指令数据区(Library Memory)。
S7-200自由口模式通信1
S7-200自由口模式通信1本例说明如何以自由协议实现计算机与S7-200的通信,计算机作为主站,可以实现对PLC 从站各寄存器的读/写操作。
---- 计算机通过COM口发送指令到PLC的PORT0(或PORT1)口,PLC通过RCV接收指令,然后对指令进行译码,译码后调用相应的读/写子程序实现指令本例说明如何以自由协议实现计算机与S7-200的通信,计算机作为主站,可以实现对PLC 从站各寄存器的读/写操作。
----计算机通过COM口发送指令到PLC的PORT0(或PORT1)口,PLC通过RCV接收指令,然后对指令进行译码,译码后调用相应的读/写子程序实现指令要求的操作,并返回指令执行的状态信息。
通信协议----在自由口模式下,通信协议是由用户定义的。
用户可以用梯形图程序调用接收中断、发送中断、发送指令(XMT)、接受指令(RCV)来控制通信操作。
在自由口模式下,通信协议完全由梯形图程序控制。
指令格式定义计算机每次发送一个33字节长的指令来实现一次读/写操作,指令格式见表1 说明:1.起始字符----起始字符标志着指令的开始,在本例中被定义为ASCII码的"g",不同的PLC从站可以定义不同的起始字符以接收真对该PLC的指令。
2.指令类型----该字节用来标志指令的类型,在本例中05H代表读操作,06H代表写操作。
3.目标PLC站地址----目标PLC站地址占用指令的B2、B3两个字节,以十六进制ASCII码的格式表示目标PLC 的站地址。
4.目标寄存器地址----在PLC内部可以用4个字节来表示一个寄存器的地址(但不能表示一个位地址)。
前两个字节表示寄存器类型,后两个字节表示寄存器号。
00 00(H): I寄存器区01 00(H): Q寄存器区02 00(H): M寄存器区08 00(H): V寄存器区例如:IB000的地址可表示为 00 00 00 00(H)VB100的地址可表示为 08 00 00 64(H)5.读/写字节数M----当读命令时,始终读回从目标寄存器开始的连续8个字节的数据(转换为十六进制ASCII 码后占用16个字节),可以根据自己的需要取用,M可以任意写入。
S7-200smart 232自由口通信程序可以发送和接收
块: MAIN 作者:创建日期: 09/02/2016 02:35:29 pm 上次修改日期: 09/05/2016 04:36:38 pm地址符号变量类型数据类型注释1..TEMP ..2..TEMP ..3..TEMP ..4..TEMP..程序注释程序段 1程序段注释MOV_BENOENOUT INMOV_B ENOENOUT INMOV_B ENOENOUT INMOV_W ENOEN OUT INMOV_W ENOEN OUT INMOV_B ENOEN OUT INFirst_Scan_On16#19P1_Config16#94P1_Ctrl_Rcv16#0A P1_End_Char0P1_Idle_Time5000P1_Timeout225P1_Max_CharATCH ENOENINT EVNTATCH ENO ENINT EVNTENIINT_026INT_124符号地址注释First_Scan_On SM0.1仅在第一个扫描周期时接通INT_0INT0中断例程注释INT_1INT1中断例程注释P1_Config SMB130组态端口 1通信:奇偶校验、每个字符的数据位数、波特率和协议P1_Ctrl_Rcv SMB187接收消息控制P1_End_Char SMB189消息结束字符P1_Idle_Time SMW190给定的空行时间周期(以毫秒为单位)P1_Max_Char SMB194要接收的最大字符数(1 到 255 个字节)P1_Timeout SMW192给定的字符间/消息定时器超时值(以毫秒为单位)程序段 2PRCVENOENTBLPORTAlways_OnVB1001符号地址注释Always_On SM0.0始终接通程序段 3PR RCVENOENTBLPORTXMTENO ENTBLPORTM0.0P1_Ctrl_Rcv_71VB1001VB3001符号地址注释P1_Ctrl_Rcv_7SM187.70=禁用接收消息功能,1=启用接收消息功能创建日期: 09/02/2016 02:35:29 pm上次修改日期: 09/02/2016 02:35:29 pm地址符号变量类型数据类型注释1.EN IN BOOL.2..IN..3..IN_OUT..4..OUT..5..TEMP..子例程注释程序段 1程序段注释创建日期: 09/02/2016 02:35:29 pm 上次修改日期: 09/03/2016 06:10:59 pm地址符号变量类型数据类型注释1..TEMP ..2..TEMP ..3..TEMP ..4..TEMP..中断例程注释程序段 1程序段注释S RCVENOENTBLPORTR S M0.0P1_Ctrl_Rcv_71VB1001M0.01M1.01符号地址注释P1_Ctrl_Rcv_7SM187.70=禁用接收消息功能,1=启用接收消息功能创建日期: 09/03/2016 04:29:15 pm上次修改日期: 09/03/2016 06:11:34 pm地址符号变量类型数据类型注释1..TEMP..2..TEMP..3..TEMP..4..TEMP..中断例程注释程序段 1程序段注释M1.0M1.01。
S7-200SMART与V20变频器进行自由口通信
S7-200SMART与V20变频器进行自由口通信
前面以S7-200SMART与英威腾变频器进行自由口通信为例详细讲解了自由口通信的方法及步骤,本文再带大家一起来学习与V20变频器进行自由口通信的程序编写方法。
V20支持标准的modbusRTU 协议,真正使用时可以使用modbus通信,本文主要是教大家如何编写自由口协议程序。
总结了一下自由口通信的基本步骤如下:
1. 研究弄懂对方的通信协议。
自由口也称自由协议或无协议通信,即通信双方没有共同的通信协议,只能临时根据某一方的协议进行发送和接收数据,以达到交换数据的目的。
那么意味着每次书写的程序没有固定格式,不仅需要变成人员能掌握程序的编写,还要求编程人员能快速的读懂对方的通信协议。
查阅V20变频器手册得知,FC3 - 读保持寄存器读保持寄存器命令格式:
变频器响应反馈数据格式:
FC6 - 写单一寄存器命令格式:
变频器响应反馈数据格式:
FC10 - 写多寄存器命令格式:
变频器响应反馈数据格式:
2. 根据对方的协议编写发送和接收数据的程序。
编写程序前应找到关键通信地址,控制启停正反转的控制字地址为40100,频率地址为40101。
应转换成十六进制地址,转换方法将40100-40001=99,再将99转换成16#0063,同理40101转换成16#0064。
程序如下:。
【电气工控自动化】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自由口通讯一、基础知识介绍(名词理解,原理,工作机制)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-200 SMART PLC 串口通信说明(图文并茂)
S 7-200 S M A R T 串口通信简介S 7-200 S M A R T 支持的串口通信硬件及连接资源如表 1所示: 注意:1. P P I 模式只支持 S 7-200 S M A R T C P U 与 H M I 设备之间的通信;2. 通信信号板的工作模式(R S 485/R S 232)是由用户决定的,可以在 M i c r o /W I N S M A R T 中通过设置系统块来设置。
详细设置方法见:如何设置串口通信参数 通信端口定义1.S 7-200 S M A R T C P U 本体集成 R S 485 端口 (端口 0)表 2. S 7-200 S M A R T C P U 本体集成 R S 485 端口引脚定义 2.通信信号板 表 1.S 7-200 S M AR T 串口参数CPU 本体集成通讯口通信信号板(S B C M 01)通讯口类型R S 485R S 485R S 232支持的通信协议P P I / 自由口 / M O D B U S / U S S 波特率P P I (9600,19200,187500 b /s )自由口(1200,115200 b /s )连接资源每个通信口可连接 4 个 H M I 设备C P U 插座(9针母头)引脚号信号P o r t 0(端口0)引脚定义1屏蔽机壳接地224V 返回逻辑地(24V 公共端)3R S -485信号 B R S -485信号 B4发送请求R T S (T T L )55V 返回逻辑地(5V 公共端)6+5V +5V ,通过100 O h m 电阻7+24V +24V8R S -485信号 A R S -485信号 A9不用10位协议选择(输入)金属壳屏蔽机壳接地表 3.通信信号板(P o r t 1)引脚定义通信信号板(S B C M 01)引脚标记R S 485R S 232机壳接地机壳接地T X /B R S 485-B R S 232-T x R T S R T S (T T L )R T S (T T L )M 逻辑公共端逻辑公共端R X /AR S 485-AR S 232-R x通信信号板通信信号板可以扩展 C P U 的通信端口,其安装位置如图 1所示。
如何实现S7-200SMART自由口通讯
如何实现S7-200SMART自由口通讯自由口通讯协议的关键条件定义开始接收消息和停止接收消息的条件。
1、空闲线检测:设置il=1,sc=0,bk=0,smw90/smw190>0空闲线条件定义为传输线路上的安静或者空闲的时间。
SMW90/SMW190中是以ms为单位的空闲时间。
在该方式下,从执行接收指令开始起动空闲时间检测。
在传输线空闲的时间大于等于SMW90/SMW190中设定的时间之后接收的第一个字符作为新信息的起始字符。
接收消息功能将会忽略在空闲时间到达之前接收到的任何字符,并会在每个字符后面重新启动空闲线定时器。
空闲线时间应大于以指定波特率传送一个字符所需要的时间。
空闲线时间的典型为以指定的波特率传送3个字符所需要的时间。
传输速率为19200bit/s时候,可设置空闲时间为2ms。
对于二进制协议,没有特定起始字符的协议或指定了消息之间最小时间间隔的协议,可以将空闲线检测用作开始条件。
2、起始字符检测:设置il=0,sc=1,bk=0,忽略smw90/smw190起始字符是消息的第一个字符,以SMB88/SMB188中的起始字符作为接收到的消息开始的标志。
接收消息功能忽略起始字符之前收到的字符,起始字符和起始字符之后收到的所有字符都存储在消息缓冲区中。
起始字符检测一般用于ASCII协议。
3、空闲线和起始字符:设置il=1,sc=1,bk=0,SMW90/SMW190大于0满足空闲线条件之后,接收消息功能查找指定的起始字符。
如果接收到的字符不是smB88/smb188指定的起始字符,将开始重新检测空闲线条件。
在满足空闲线条件之前接收到的以及起始字符之前接收到的字符都将会被忽略。
这种方式尤其适合用于通讯链路上有多台设备的情况。
4 、break检测:设置il=0,sc=0,bk=1,检测smw90/smw190和smb88/smb188以接收到的break(断开)作为接收消息的开始。
当接收到的数据保持为0的时间大于完整字符(包含起始位,数据位,奇偶校验位和停止位)传输的时间,表示检测到break。
实验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区,进行在线观察。
西门子200SMART跟电脑通信的两种方法「详细步骤」
西门子200SMART跟电脑通信的两种方法「详细步骤」昨天的文章介绍了S7-200SMART的安装方法。
今天给大家介绍下PLC怎么跟电脑通信,也是很多新手一直问的问题。
今天介绍两种方式。
第一种是电脑跟PLC直连,第二种是通过路由器或者交换机连接。
一、通过网线 PLC直连电脑通信方法1.检查硬件连接,PLC本体的以太网口上面有一个LINK灯,常亮表示连接成功。
2.检查电脑IP与PLC的IP是否在同一个网段。
200SMART的初始IP是:192.168.2.1同一个网段的意思是:IP地址的前三个字节必须同 CPU 的 IP 地址一致,后一个字节应在“1-254”之间(避免 0 和 255 ),避免与网络中其它设备的 IP 地址重复。
例如:你的PLC地址是:192.168.2.1 你的电脑或设备是192.168.2.10 那么这个就是同一网段。
如果你的PLC地址是192.168.2.1 你的电脑地址是192.168.1.1 前面三位不同,那么就不是同一网段。
设置好之后可以用ping命令测试是否连接成功。
点击电脑“开始”-“运行” 或者按WIN+R组合键下一步打开编程软件,修改PLC类型。
点击通信,选择网络接口,打开本地链接,看下自己的网卡是哪个。
同样名称的网卡有两种,有一种是后缀带AUTO.1的网卡接口。
有这个选项的可以不用修改IP,也可以连接。
下图第4个框框表示已经连接上PLC。
二、通过网线 PLC连接路由器/交换机通信方法按下图用网线把PLC和电脑连接好,如果没有外网,WAN口是不用连接的。
电脑网口和PLC网口全部接路由器/交换机的LAN口就行。
连接好之后上第一步教的方法连接PLC即可今天分享的200SMART PLC跟电脑通信结束,大家如遇到什么问题可以在文章后面留言。
如果你觉得小编写的够详细,那么请转发到你的朋友圈,谢谢支持!。
有关S7-200SMART PLC 自由口通讯的问题
为了能搞明白自由口通讯的原理,我把帮助里面的自由口通讯的示例程序抄写了下来,并且将所有有关P0口的设置更改为P1口的设置程序内容如下:
MAIN
LD First_Scan_On
MOVB 2#1001, P1_Config
MOVB 2#10110000, P1_Ctrl_Rcv
MOVB 2#1010, P1_End_Char
MOVW +5, P1_Idle_Time
MOVB 100, P1_Max_Char
ATCH INT_0, 23
ATCH INT_2, 9
ENI
RCV VB100, 1
INT_0
LDB= P1_Stat_Rcv, 2#100000
MOVB 10, Time_1_Intrvl
ATCH INT_1, 10
CRETI
NOT
RCV VB100, 1
INT_1
LD Always_On
DTCH 10
XMT VB100, 1
INT_2
LD Always_On
RCV VB100, 1
有关PLC的组态和实际情况是一致的。
在测试过程中,我发现,这个程序并不能像帮助里面所说的那样接收到换行符号以后就把内容转发回来,而且这个程序还存在只能在刚下载完程序之后可以接收PC机发给他的数据。
请各位前辈指点!~~
主程序中断绑定不对,端口1 的中断分别是 24 和26;INT0 中,定时中断1 的事件号也不对,应该为11;INT1 中事件端口号也得改为11。
整个流程如下:PLC 启动时开始接收,如果接收成功,等待10ms ,然后发送接收到的报文,发送成功后再使能接收,,。
轮询下去。
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-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自由口通信:
(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-200PLC如何通过自由口通信控制变频器运行
西门子S7-200PLC如何通过自由口通信控制变频器运行一、S7-200如何通过自由口通信控制西门子变频器的运行1、西门子变频器的通信协议是固定的。
如A、A′格式。
控制电机的启停用A′格式,要改变变频器的运行频率,使用A格式。
2、S7-200PLC根据西门子变频器的通信协议,通过自由口发送数据到变频器中,实现对西门子变频器的正转、反转、停止及修改运行输出频率。
二、西门子变频器通信协议总和校验计算:频率值对应的ASCII码:频率数据内容H0000~H2EE0变成十进制即为0~120Hz,最小单位为0.01Hz。
如现在要表示数据10Hz,即为1000(单位为0.01Hz),1000转换成十六进制为H03E8,再转换成ASCII码为H30H33H45H38。
总和校验代码总和校验代码是由被检验的ASCII码数据的总和(二进制)的最低一个字节(8位)表示的2个ASCII码数字(十六进制)三、S7-200自由口通信1、通信端口控制字节2、发送指令XMT与接收指令RCV说明:(1)发送与接收指令可以方便地发送或接收最多255个字节的数据。
(2)PORT指定发送或接收的端口。
(3)TBL指定发送或接收数据缓冲区,第一个数据指定发送或接收的字节数。
(4)发送完成时可以调用中断,接收完成时也可调用中断.四、项目实现用S7-200PLC自由口通信方式控制西门子变频器,拖动电机正转启动与停止,并能改变变频器的运行频率。
设变频器站号为1.正转启动的代码是:H05H30H31H46H41H31H30H32H38H31停止的代码是:H05H30H31H46H41H31H30H30H37H46把变频器运行输出频率改为20Hz的代码是:H05H30H31H45H44H31H30H30H31H04H42H351、设置变频器参数2、编写PLC自由口通信控制程序总结:1、作自由口通信时,一定要先研究要通讯设备的通信协议和数据格式。
2、作自由口通信时,如果要求PLC既发送数据,又接收数据。
S7-200 SMART PLC 串口通信说明
S7-200SMART PLC串口通信说明(图文并茂)09S7-200SMART串口通信简介S7-200SMART支持的串口通信硬件及连接资源如表1所示:表 1.S7-200 SMART串口参数通讯口类型支持的通信协议波特率连接资源CPU本体集成通讯口RS485通信信号板(SB CM01)S485RS232PPI/自由口/MODBUS/USS PPI(9600,19200,187500b/s)自由口(1200,115200b/s)每个通信口可连接4个HMI设备注意:1.PPI模式只支持S7-200SMART CPU与HMI设备之间的通信;2.通信信号板的工作模式(RS485/RS232)是由用户决定的,可以在Micro/WIN SMART中通过设置系统块来设置。
详细设置方法见:如何设置串口通信参数通信端口定义1.S7-200SMART CPU本体集成RS485端口(端口0)表 2.S7-200SMART CPU本体集成RS485端口引脚定义CPU插座(9针母头)引脚号信号Port0(端口0)引脚定义235678924V返回5V返回+5V+24V不用逻辑地(24V公共端)逻辑地(5V公共端)+5V,通过100Ohm电阻+24V 10位协议选择(输入)机壳接地RS-485信号RS-485信号BRS-485信号RS-485信号A金属壳屏蔽2.通信信号板表3.通信信号板(Port1)引脚定义通信信号板(SB CM01)引脚标记RS485机壳接地RS232机壳接地RS232-TxRTS(TTL)逻辑公共端RS232-RxTX/BRTSMRX/ARS485-BRTS(TTL)逻辑公共端RS485-A5V+5V,100Ω串联电阻通信信号板通信信号板可以扩展CPU的通信端口,其安装位置如图1所示。
安装完成后,通信信号板被视为端口1(Port1),CPU本体集成RS485端口被视为端口0(Port0)。
图 1.S7-200SMART通信信号板及其安装示意图串口通讯硬件从三个方面介绍S7-200SMART CPU串口通信硬件:1.使用S7-200SMART CPU本体集成RS485端口接入RS485网络:S7-200SMART CPU RS485网络使用双绞线电缆。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
如何实现S7-200SMART自由口通讯
自由口通讯协议的关键条件
定义开始接收消息和停止接收消息的条件。
1、空闲线检测:设置il=1,sc=0,bk=0,smw90/smw190>0
空闲线条件定义为传输线路上的安静或者空闲的时间。
SMW90/SMW190中是以ms为单位的空闲时间。
在该方式下,从执行接收指令开始起动空闲时间检测。
在传输线空闲的时间大于等于SMW90/SMW190中设定的时间之后接收的第一个字符作为新信息的起始字符。
接收消息功能将会忽略在空闲时间到达之前接收到的任何字符,并会在每个字符后面重新启动空闲线定时器。
空闲线时间应大于以指定波特率传送一个字符所需要的时间。
空闲线时间的典型为以指定的波特率传送3个字符所需要的时间。
传输速率为19200bit/s时候,可设置空闲时间为2ms。
对于二进制协议,没有特定起始字符的协议或指定了消息之间最小时间间隔的协议,可以将空闲线检测用作开始条件。
2、起始字符检测:设置il=0,sc=1,bk=0,忽略smw90/smw190
起始字符是消息的第一个字符,以SMB88/SMB188中的起始字符作为接收到的消息开始的标志。
接收消息功能忽略起始字符之前收到的字符,起始字符和起始字符之后收到的所有字符都存储在消息缓冲区中。
起始字符检测一般用于ASCII协议。
3、空闲线和起始字符:设置il=1,sc=1,bk=0,SMW90/SMW190大于0
满足空闲线条件之后,接收消息功能查找指定的起始字符。
如果接收到的字符不是
smB88/smb188指定的起始字符,将开始重新检测空闲线条件。
在满足空闲线条件之前接收到的以及起始字符之前接收到的字符都将会被忽略。
这种方式尤其适合用于通讯链路上有多台设备的情况。
4 、break检测:设置il=0,sc=0,bk=1,检测smw90/smw190和smb88/smb188以接收到的break(断开)作为接收消息的开始。
当接收到的数据保持为0的时间大于完整字符(包含起始位,数据位,奇偶校验位和停止位)传输的时间,表示检测到break。
断开条件之前接收到的字符将忽略,断开条件之后接收到的任意字符都会存储在消息缓冲区中。
5、break和起始字符:il=0,sc=1,bk=1,忽略smw90/smw190
断开条件满足后,接收消息功能将查找指定的起始字符。
如果接收到的字符不是起始字符,将重新搜索断开条件。
所有在断开条件满足之前在接收到起始字符之前接收的字符都会忽略。
起始字符和所有后续字符一起存入消息缓冲区
6、任何字符开始接受:设置il=1,sc=0,bk=0,smw90/smw190=0
忽略smb88/smb188中的起始字符。
应为smw90/smw190中的空闲线时间为0,接收指令已经执行,便将立即开始强制接收所有的任意字符,并将存入消息缓冲区。
7、任意字符开始,消息定时器超过则结束接收消息:令il = 1,sc = 0,bk = 0,smw90/smw190 = 0,忽略smb88/smb188中的起始字符。
以上设置用于实现从任意字符开始接收消息。
此外设置c/m = 1,tmr =1,用smw92/smw192设置以ms为单位的消息超时时间,用消息定时器监视接收是否超时。
如果未满足其他结束条件,在消息定时器超时的时候,将会终止接收消息功能。
这对自由口协议的主站是非常有用的。
1.SMB30定义
定义通讯的传输速度和模式
SMB30=16#05=2# 00 0 001 01
其中从高位到低位依次:
00:表示无校验
0:表示8个数据位
001:表示波特率19200
01:表示自由口通讯
2.SMB87定义
定义接收消息控制字节
SMB87=16#FC = 2#1111 1100
其中从高位到低位依次:
en=1:启用接受消息功能
sc=1:使用SMB88 的值监测数据的起始
ec=1:使用SMB89 的值监测数据的终止
il=1:使用SMW90 的值监测空闲条件
c/m=1:定时器为消息定时器
tmr=1:超过SMW92 中的时间段,则终止接收
bk=0:忽略中断条件
SM87.0=0 (无效)
3.定义SMB88、SMB89、SMW90、SMW92、SMB94
SMB88:定义开始字符为 2A
SMB89:定义结束字符为 0A
SMW90:空闲线时间段,单位:MS
SMW92:消息定时器的超时值(单位:MS),若超过该时间段,则停止接受消息
SMB94:要接受的最大字符数(1--255个字节);即使未使用字符计数消息终止,此范围也必须设置为所需的最大数据交换区
l SMW90=1000000us/19200 *11*3
其中:1000000/19200得到传输1个位需要多长时间,一个字符11个位,检测空闲3.5个字符,约等于3个字符
l SMW92=1000000us/19200 *11*20*1.5
其中:20表示字节接收最大的字节数,与SMB94有关,1.5倍表示整个消息长度的倍数
4.执行接受指令
TBL:
5.连接接受完成中断和发送完成中断,并且开放中断
6.接收完成中断:
由于我们使用的RS485转USB的线缆是半双工,发送和接收需要间隔至少5ms的时间。
所以接收完成后先延时5ms在发送。
7.SMB34定时中断:
延时时间到,执行发送指令,把先期接收到的数据再发送给PC。
8.发送完成中断:。