S7200 SMART 自由口通信实例解读分析
- 格式:pptx
- 大小:1.96 MB
- 文档页数:22
S7-200PLC与PC自由口通讯的多种实现方法S7-200PLC与PC自由口通讯的多种实现方法1 引言西门子S7-200PLC是德国西门子公司生产小型PLC。
S7-200以其高可靠性、指令丰富、内置功能丰富、强劲通讯能力、较高性价比等特点,工业控制领域中被广泛应用。
S7-200PLC突出特点之一是自由口通讯功能。
如何实现S7-200PLC 与个人计算机互联通信,是S7-200PLC应用技术关键。
可编程控制器与计算机之间通讯一般是RS-422口或RS-232C口进行,信息交换方式为字符串方式,运用RS-232C或RS-422通道,容易配置一个与计算机进行通信系统,将所有软元件数据和状态用可编程控制器送入计算机,由计算机采集这些数据,进行分析及运行状态监测。
用计算机改变可编程控制器设备初始值和设定值,实现计算机与可编程控制器直接控制,一旦确定了可编程控制器控制指令,就能很方便与计算机连接。
2 S7-200自由口通讯模式S7-200支持多种通讯模式,如点点接口(PPI)、多点接口(MPI)、Rrofibus DP 等。
PPI等通讯协议主要用于西门子系列产品之间通讯以及对PLC编程。
自由口模式下,可由用户控制串行通讯接口,实现用户自定义通讯协议。
用户可以用梯形图程序调用接收中断、发送中断、发送指令(XMT)、接受指令(RCV)来控制通信操作。
自由口模式下,通信协议完全由梯形图程序控制。
S7-200CPU上通信口是与RS-485兼容9针D型连接器,PLC还提供了实现RS-485与 PC机上RS-232C相连接PC/PPI电缆,利用它可以方便实现S7-200系列PLC与PC之间硬件连接。
S7-200编程软件为STEP7-Micro/WIN32,该软件有STL、FBD和Ladder三种编程模式,有SIMATIC指令和IEC131-3指令两种指令。
本文所给出范例是使用SIMATIC指令STL编程。
3 S7-200 PLC端通讯程序实现PLC程序分为主程序和中断程序。
【案例】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)。
S7200自由口模式下PLC与计算机的通信明如何以自由协议实现计算机与S7-200的通信,计算机作为主站,可以实现对PLC从站各寄存器的读/写操作。
机通过COM口发送指令到PLC的PORT0(或PORT1)口,PLC通过RCV接收指令,然后对指令进行译码,译码后调用相应的读/写子程序实现指令要求的操作,并返回指令执行的状态信息。
通信协议由口模式下,通信协议是由用户定义的。
用户可以用梯形图程序调用接收中断、发送中断、发送指令(XMT)、接受指令(RCV)来控制通信操作。
在自由口模式下,通信协议完全由梯形图程序控制。
指令格式定义计算机每次发送一个33字节长的指令来实现一次读/写操作,指令格式见表1 说明:起始字符----起始字符标志着指令的开始,在本例中被定义为ASCII码的"g",不同的PLC从站可以定义不同的起始字符以接收真对该PLC的指令。
指令类型----该字节用来标志指令的类型,在本例中05H代表读操作,06H代表写操作。
目标PLC站地址----目标PLC站地址占用指令的B2、B3两个字节,以十六进制ASCII码的格式表示目标PL C的站地址。
目标寄存器地址----在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)读/写字节数M----当读命令时,始终读回从目标寄存器开始的连续8个字节的数据(转换为十六进制ASCII 码后占用16个字节),可以根据自己的需要取用,M可以任意写入。
----当写命令时,M表示的是要写入数据的十六进制ASCII码所占用的字节数。
例如要写入1个字节的数据,数据在指令中以十六进制ASCII码表示,它将占用2个字节,此时应向M中写入"02"。
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 CPU的通信口可以设置为自由口模式。
选择自由口模式后,用户程序就可以完全控制通信端口的操作,通信协议也完全受用户程序控制。
S7-200 CPU上的通信口在电气上是标准的RS-485半双工串行通信口。
此串行字符通信的格式可以包括:∙一个起始位∙7或8位字符(数据字节)∙一个奇/偶校验位,或者没有校验位∙一个停止位自由口通信速波特率可以设置为1200、2400、4800、9600、19200、38400、57600或112500。
凡是符合这些格式的串行通信设备,理论上都可以和S7-200 CPU通信。
自由口模式可以灵活应用。
Micro/WIN的两个指令库(USS和Modbus RTU)就是使用自由口模式编程实现的。
在进行自由口通信程序调试时,可以使用PC/PPI电缆(设置到自由口通信模式)连接PC和CPU,在PC上运行串口调试软件(或者Windows的Hyper Terminal-超级终端)调试自由口程序。
USB/PPI电缆和CP卡不支持自由口调试。
自由口通信要点应用自由口通信首先要把通信口定义为自由口模式,同时设置相应的通信波特率和上述通信格式。
用户程序通过特殊存储器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)指令。
1.自由端口通信模式S7-200系列PLC的串行通信口可以由用户程序来控制,这种由用户程序控制的通信方式称为自由端口通信模式。
利用自由口模式,可以实现用户定义的通信协议,可以同多种智能设备进行通信。
当选择自由端口通信模式时,用户程序可通过发送/接收中断、发送/接收指令来控制串行通信口的操作。
通讯所使用的波特率、奇偶校验以及数据位数等由特殊存储器位SMB30(对应端口0)和SMBl30(对应端口1)来设定。
特殊存储器位SMB30和SMB130的具体内容如表8-1所示。
1.自由端口通信模式在对SMB30赋值之后,通信模式就被确定。
要发送数据则使用XMT指令;要接收数据则可在相应的中断程序中直接从特殊存储区中的SMB2(自由口通信模式的接收寄存)读取。
若是采用有奇偶校验的自由口通信模式,还需在接收数据之前检查特殊存储区中的SMB3.0(自由口通信模式奇偶校验错误标志位,置位时表示出错)。
注意:只有PLC处于RUN模式时,才能进行自由端口通讯。
处于自由端口通讯模式时,不能与可编程设备通讯,比如编程器、计算机等。
若要修改PLC程序,则需将PLC处于STOP方式。
此时,所有的自由口通信被禁止,通信协议自动切换到PPI通信模式。
2. 自由口通信发送/接收指令(1)数据的发送XMT为发送指令操作码;他TABLE和PORT为上述指令的操作数。
TABLE指定数据缓冲区中第一个字节(设定应发送的字节数),;PORT指定通讯端口,可取0或1。
发送指令XMT把TABLE指定的数据缓冲区的内容通过PORT指定的串行口发送出去。
数据缓冲区内最多可容纳255个字符,其中缓冲区中第一个字节用于设定发送的字节数。
如果指定发送结束事件与某个中断服务程序相关联,则在缓冲区内最后一个字符发送后会产生中断。
通过监控发送结束标志SM4.5可以不用中断方式而将信息发送出去。
2. 自由口通信发送/接收指令RCV为接收指令操作码;TABLE和PORT为上述指令的操作数。
一:TCP 协议通讯(一)S7 200 SMART之间的TCP通讯TCP是一个因特网核心协议。
在通过以太网通信的主机上运行的应用程序之间,TCP 提供了可靠、有序并能够进行错误校验的消息发送功能。
TCP 能保证接收和发送的所有字节内容和顺序完全相同。
TCP 协议在主动设备(发起连接的设备)和被动设备(接受连接的设备)之间创建连接。
一旦连接建立,任一方均可发起数据传送。
TCP协议是一种"流"协议。
这意味着消息中不存在结束标志。
所有接收到的消息均被认为是数据流的一部分。
S7 200 SMART与之间的TCP通讯可以通过两边调用OUC(开放式用户通讯)指令库中的TCP_CONNECT、TCP_SEND、TCP_RECV、DISCONNECT指令来实现。
图1.开放式用户通讯库开放式用户通信库需要使用 50 个字节的 V 存储器。
开放式的用户通讯连接资源包括8个主动连接和8个被动连接。
只可从主程序或中断例程中调用库函数,但不可同时从这两个程序中调用。
所需条件:1、软件版本:STEP 7-Micro/WIN SMART V2.22、SMART CPU固件版本:V2.23、通讯硬件:TP电缆(以太网电缆)所完成的通讯任务:将作为客户端的PLC(IP地址为192.168.0.101)中VB0-VB3的数据传送到作为服务器端的PLC(IP地址为192.168.0.102)的VB2000-VB2003中。
S7-200 SMART 客户端编程1、设置本机IP地址在客户端设置IP地址为192.168.0.101图2.设置IP地址2、建立TCP连接调用TCP_CONNECT指令建立TCP连接。
设置连接伙伴地址为192.168.0.102,远端端口为2001,本地端口为5000,连接标识ID为1。
利用SM0.0使能Active,设置为主动连接。
图3.调用TCP_CONNECT指令指令的参数输入参数:EN :使能输入Req:沿触发Active :TURE=主动连接(客户端)FALSE=被动连接(服务器)ConnID:连接ID为连接标识符,可能范围为0-65534。
一:TCP 协议通讯(一)S7 200 SMART之间的TCP通讯TCP是一个因特网核心协议。
在通过以太网通信的主机上运行的应用程序之间,TCP 提供了可靠、有序并能够进行错误校验的消息发送功能。
TCP 能保证接收和发送的所有字节内容和顺序完全相同。
TCP 协议在主动设备(发起连接的设备)和被动设备(接受连接的设备)之间创建连接。
一旦连接建立,任一方均可发起数据传送。
TCP协议是一种"流"协议。
这意味着消息中不存在结束标志。
所有接收到的消息均被认为是数据流的一部分。
S7 200 SMART与之间的TCP通讯可以通过两边调用OUC(开放式用户通讯)指令库中的TCP_CONNECT、TCP_SEND、TCP_RECV、DISCONNECT指令来实现。
图1.开放式用户通讯库开放式用户通信库需要使用 50 个字节的 V 存储器。
开放式的用户通讯连接资源包括8个主动连接和8个被动连接。
只可从主程序或中断例程中调用库函数,但不可同时从这两个程序中调用。
所需条件:1、软件版本:STEP 7-Micro/WIN SMART V2.22、SMART CPU固件版本:V2.23、通讯硬件:TP电缆(以太网电缆)所完成的通讯任务:将作为客户端的PLC(IP地址为192.168.0.101)中VB0-VB3的数据传送到作为服务器端的PLC(IP地址为192.168.0.102)的VB2000-VB2003中。
S7-200 SMART 客户端编程1、设置本机IP地址在客户端设置IP地址为192.168.0.101图2.设置IP地址2、建立TCP连接调用TCP_CONNECT指令建立TCP连接。
设置连接伙伴地址为192.168.0.102,远端端口为2001,本地端口为5000,连接标识ID为1。
利用SM0.0使能Active,设置为主动连接。
图3.调用TCP_CONNECT指令指令的参数输入参数:EN :使能输入Req:沿触发Active :TURE=主动连接(客户端)FALSE=被动连接(服务器)ConnID:连接ID为连接标识符,可能范围为0-65534。
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自由口通信方法关键字:导读: 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-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个数据位,最小的有效位先发送。
一文读懂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个数据位,最小的有效位先发送。
·1个奇偶校验位,设成无校验则没有。
·1个停止位(有校验时),2个Bit (无校验时)。
数据格式的描述如下表:11-bit 字符帧(BITl-BIT8为数据位):起始位 Bit1 Bit2 Bit3 Bit4 Bit5 Bit6 Bit7 Bit8 校验位 停止位10-bit 字符帧(BITl-BIT7为数据位):起始位 Bit1Bit2 Bit3 Bit4 Bit5 Bit6 Bit7 校验位 停止位通信中要保证通信双方要有相同的波特率,数据格式,奇偶校验位。
S7-200SMART串口通讯和PID调节
S7-200SMART串口通讯
2014-9-2
通过反复测试都没成功,后来发现做为连接RS485通讯的串口接头焊得有问题,应该是3+,8-,而实际悍成了7-,所以无法通讯,重焊后进行测试通讯成功。
1.主站简单测试程序modbus_master_st40.smart1.smart
2.主站例程测试modbus_master_st40.smart 保持寄存器读入
●开关量读入:
●开关量军写出:
写入寄存器
Addr 读写从站的数据地址:选择读写的数据类型00001至0xxxx-开关量输出
10001至1xxxx-开关量输入
30001至3xxxx-模拟量输入
40001至4xxxx-保持寄存器
3.做为从站:
保持寄存器读取
通道值采集AIW16(第一个扩展AM06第一通道)
开关量输入点读取
当I0.0为1时
开关量输出点
通过测试发现,做从站时不能直接读取AQW通道的值和M寄存器中的值,技术支持建议所有需要传送的数据全部放在V区的连续寄存器中,只需要一个指令就可以全部读取,然后再解析就可以了。
4.PID调节
●设置向导中设置参数,
●调用设置好的PID子程序.
●调试
●发现AO的输出通道灯和DIAG灯报错(红灯),是因为没有接线的缘故,将通
道接到ADAM4017+的第二通道上后就正常了,显示绿灯。
●采集到的数据如下:
在“工具”下面有PID控制面板,可以用于调试PID参数,观察调节变化曲线。
s7200自由通信
把组态王里的s7200自由通信程序调在西门子软件上+自己在建立了个子程序编了个小程序,下载到s7-200里,也置位到run状态,为什么到最后plc不工作,在组态王里都设置了,并且做了gprsdtu能和电脑联机,plc不工作,就没有数据传到组态王,用的是opc添加的变量。
问题出在哪里?
问题补充:
通ppi的线通过opc能和plc通信,能在组态王里显示数据,问题是把组态王里有个西门子自带的自由通信程序下载到plc里(听说用modbus要加模块em277或em241,也没有用过,也觉得没必要吧,)另外也没有占用里面的v区,就编了个自锁小程序(单独建立了个子程序),就置为run 状态,输入输出点的灯就是没有反应,是程序冲突了吗?
最佳答案
gprsdtu?好像无次连接吧。
首先不管plc在run或者stop状态,只要plc和组态王联机成功都可以监控到数据,这说明通信设置ok了。
其次,plc打到run,这个是硬件方式,还有个就是软件里也run,plc的run指示灯会亮,这样plc就在run运行状态。
组态王的通信可以采用modbus,也可以采用ppi,先采
用ppi通信模式试试,联机成功后再改modbus通信。
S7-200SMART MODBUS通信介绍与实例编程西门子smart200PLC的详细结构图一. 西门子S7-200 SMART作为modbus从站1.检查Micro/WIN SMART Modbus RTU从站指令库(图1),库中应当包括MBUS_INIT 和MBUS_SLAVE两个子程序。
西门子smart200的modbus从站库文件图1. 指令树中的库指令2.编程时使用SM0.1调用子程序MBUS_INIT进行初始化,使用SM0.0调用MBUS_SLAVE,并指定相应参数。
关于参数的详细说明,可在子程序的局部变量表中找到;西门子smart200的modbus从站详细分析图2.调用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 存储区。