IS500_S7_200通信实例
- 格式:pdf
- 大小:87.17 KB
- 文档页数:15
网络读写实验用NETR和NETW指令向导实现两台S7-200 CPU226之间的数据通信,2号站为主站,3号站为从站,Micro/WIN中设置的本地(编程电脑)地址为“0”。
要求把2号站的VB4写到3号站的QB0,从站3号站的模拟电位器SMB28、SMB29分别被读到2号站的VB0、VB1。
一、通信端口的设置将PC机与主站CPU用PC/PPI电缆连接,打开STEP 7-Micro/WIN,单击“通信”,则弹出通信对话框,双击“双击刷新”,则出现地址为2的CPU(如图1),图1然后“确认”。
单击“系统块”,出现系统块对话框,将端口0、端口1的PLC 地址均改为“2”,设置波特率9.6kbps(如图2),然后“确认”,则2号站的站地址设置完毕。
3号站的站地址的设置方法同上,将端口0、端口1的PLC地址均改为“3”,波特率设置9.6kbps。
二、网络连接CPU 226具有2个通信端口(即PORT1和PORT0),该实验均采用端口1通信。
用PROFIBUS总线连接器、电缆连接两个CPU,用PC/PPI电缆连接PC机和2号站的CPU。
连好以后,双击“双击刷新”,检验网络是否连好(如图3)。
图3三、设置指令向导并下载程序1、设置指令向导在指令树中双击“向导”中“NETR/NETW”,则出现NETR/NETW指令向导(NET 配置)对话框。
设置为2项网络读/写操作(如图4),然后“下一步”。
(注:这里所说的两项操作分别是指读和写。
如果设置为1项操作,则只能是读操作或是写操作;如果网络除主站外有两个从站,要实现主站对两个从站的分别读写操作,则设置为4项操作)设置PLC通信端口,该网络均采用端口1(如图5),然后“下一步”。
图5选择“NETR”、读取“2”个字节、远程PLC地址为“3”、数据从远程PLC 的“VB0至VB1”存储在本地PLC的“VB0至VB1”上,则读操作设置完成(如图6)。
然后“下一项操作”。
图6选择“NETW”、写入“1”个字节、远程PLC地址为“3”、数据从本地PLC 的“VB4至VB4”写入到远程PLC的“QB0至QB0”上,则写操作设置完成(如图7),然后“下一步”。
【案例】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 编程实例English Answer:S7-200 is a programmable logic controller (PLC) manufactured by Siemens. It is widely used in industrial automation systems for controlling and monitoring various processes. In this article, we will discuss a programming example using S7-200.Let's consider a simple scenario where we want to control the operation of a motor based on the input from a sensor. We will use ladder logic programming to achieve this.First, we need to configure the input and output modules of the S7-200 PLC. Connect the sensor to an input module and the motor to an output module. Assign appropriate addresses to these modules.Next, we will write the ladder logic program. Open theprogramming software for S7-200 and create a new project. Add a new ladder logic network and start programming.In ladder logic, we use various instructions to control the flow of the program. For example, we can use a normally open (NO) contact to represent the sensor input and a normally closed (NC) contact to represent the motor output. We can use an output coil to control the motor.The ladder logic program will have the following structure:Start the program.Read the sensor input.Based on the sensor input, control the motor output.End the program.To read the sensor input, we can use a normally open contact connected to the input module. If the sensor isactive, the contact will close, indicating a logic 1. Otherwise, it will remain open, indicating a logic 0.Based on the sensor input, we can use a normally closed contact to control the motor output. If the sensor is active, the contact will open, de-energizing the outputcoil and stopping the motor. If the sensor is inactive, the contact will close, energizing the output coil and starting the motor.Finally, we need to end the program by adding an end instruction.Once the ladder logic program is complete, we can download it to the S7-200 PLC and put it into operation. The PLC will continuously scan the program and execute the instructions based on the input and output conditions.This is a basic example of programming the S7-200 PLC. It demonstrates how to control a motor based on a sensor input using ladder logic. With the flexibility and versatility of the S7-200 PLC, more complex automationtasks can be achieved.中文回答:S7-200是由西门子制造的可编程逻辑控制器(PLC)。
PLC-500 PLC联网宝连接西门子S7-200Smart远程采集数据图1:S7-200Smart与PLC-500 PLC联网宝连接远程采集数据西门子S7-200Smart在采集数据时,一般采用PPI协议或MODBUS协议。
上位机端使用组态软件创建对应协议的逻辑设备,就可以远程控制和采集PLC上的数据。
常见的组态软件厂家有三维力控、亚控组态王、杰控等。
下面以组态王软件为例,着重描述采用MODBUS 协议时的操作步骤。
1.向S7-200Smart写入Modbus Slave程序使用RJ-45网线将S7-200Smart与电脑网口连接,运行西门子PLC编程软件STEP7-MicroWIN SMART向S7-200Smart下载Modbus Slave程序。
下图是S7-200Smart CPU SR20的Modbus Slave程序,由STEP7 MicroWIN SMART V2.0编译,供参考。
这个程序可在此文档所在的压缩包中找到。
图2:下载MODBUS Slave程序2.连接S7-200Smart与PLC-500 PLC联网宝使用驿唐PLC联网宝专用线缆将S7-200Smart与PLC-500 PLC联网宝连接起来,如下图所示。
给PLC-500 PLC联网宝插入SIM卡,拧紧天线,然后分别给PLC-500 PLC联网宝和S7-200Smart加电运行。
图3:S7-200Smart与PL-500 PLC联网宝连接3.申请驿云账号在浏览器中打开页面,点击“注册”按钮申请一个驿云账号。
申请时要确保输入正确的电子邮件地址,提交后在收到的邮件中点击链接自动激活该账号。
图4:申请驿云账号4.配置PLC-500 PLC联网宝1)在上位机电脑上安装并运行无线串口通软件,在菜单“控制”->“设置”,“登录账号”处输入申请的用户名和密码;图5:运行串口通软件2)添加终端:在工具栏中点击“添加终端”,在弹出的对话框中,根据PLC-500 PLC联网宝标签上的IMEI号查找终端,选中后点击“添加终端”即可,这时被添加的终端将显示在终端列表中。
s7-200 编程实例English Answer:S7-200 Programming Example.In this programming example, we will discuss how to program the S7-200 PLC (Programmable Logic Controller). The S7-200 PLC is a popular choice for small to medium-sized automation projects due to its compact size and ease of use.To begin programming the S7-200 PLC, we need to use a programming software called STEP 7-Micro/WIN. This software allows us to create and edit the ladder logic program that will control the PLC.Once we have installed the STEP 7-Micro/WIN software,we can connect our PC to the S7-200 PLC using a programming cable. This cable is usually provided with the PLC or canbe purchased separately. The cable connects to the programming port on the PLC and the serial or USB port onthe PC.Once the connection is established, we can open the STEP 7-Micro/WIN software and create a new project. In the project, we can define the hardware configuration of the PLC, such as the number and type of input and output modules.Next, we can start programming the PLC by creating ladder logic diagrams. Ladder logic is a graphical programming language that represents the control logic in a relay ladder diagram format.For example, let's say we want to program the S7-200 PLC to control a motor. We can create a ladder logic diagram that includes an input contact to monitor a start button, a coil to control the motor, and a timer to control the motor's running time.In ladder logic, we can use various instructions such as contacts, coils, timers, counters, and arithmetic operations to create the desired control logic. Theseinstructions can be easily dragged and dropped from the software's instruction library.Once the ladder logic program is created, we can download it to the S7-200 PLC using the programming cable. The program is stored in the PLC's memory and will be executed in real-time to control the connected devices.After downloading the program, we can test and debug it using the software's simulation mode. This allows us to verify the program's functionality without actually connecting the PLC to the physical devices.Once we are satisfied with the program's performance, we can disconnect the programming cable and connect the PLC to the actual devices. The program will then control the devices based on the defined logic.Overall, programming the S7-200 PLC is astraightforward process using the STEP 7-Micro/WIN software and ladder logic programming. It provides a flexible and reliable solution for a wide range of automationapplications.中文回答:S7-200编程实例。
西门子S7-200自由口与上位机通讯实例西门子S7-200自由口与上位机通讯实例S7-200自由口与上位机通讯读取温度值的程序PLC主程序网络1// 设置控制方式为自由口通信方式,启动接收字符中断// PLC首次扫描自由口通信,波特率为9600,数据位8,停止位1,无校验初始化RCV,允许RCV,有结束符,检查空闲时间结束符为A空闲时间为5MS一次接收的最大字符为6个启动通信口,接收完成中断全局允许中断接收数据LD SM0.1MOVB 16#09, SMB30MOVB 16#B0, SMB87MOVB 16#0A, SMB89MOVB 6, SMB94ATCH INT_0, 23ENIRCV VB199, 0网络2// 检测温度送VW0 //转换成实际温度值从工作站编号送到输出缓冲区检测温度送输出缓冲区LD SM0.0MOVW AIW0, VW0/I +54, VW0MOVW AIW2, VW2/I +54, VW2MOVW 1, VW300MOVW VW0, VW302MOVW VW2, VW304网络3// 设置温度控制上限和下限//LD SM0.0MOVW +350, VW4MOVW +450, VW6网络4// 检测温度低于下限,则输出加温// LDW< VW0, VW4A SM0.5S Q0.0, 1网络5// 检测温度高于上限,则输出降温// LDW> VW0, VW6A SM0.5R Q0.0, 1网络6//准备传送参数//发送字节数据,送VB99发送检测温度数据,送VW100发送工作站编号数据,送VW102 LD SM0.0MOVB 6, VB99MOVW VW300, VW100MOVW VW302, VW102MOVW VW304, VW104网络7// 传送数据//LD SM0.5XMT VB99, 0中断程序网络1//通信口接收数据完成后的中断//// SMB86 等于16#20,表示PLC收到结速符//收到结束符,把收到的数据传到VB400中断有条件返回否则继续接收LDB= SMB86, 16#20MOVB VB200, VB400CRETINOTRCV VB199, 0\\*******************************\\VB源程序Dim x1, k1, k2Dim p11, p22 '定义变量Dim aa() As Byte '定义数组Private Sub Command1_Click() '开始监控,定时器1有效Timer1.Enabled = TrueEnd SubPrivate Sub Command2_Click() '退事程序,定时器1无效Timer1.Enabled = FalseCls '清屏Unload MePrivate Sub Form_Load() '初始化Timer1.Enabled = False '定时器1无效Timer1.Interval = 100 '定时器1时间为0.1STimer2.Enabled = True '定时器2有效Timer2.Interval = 1000 '定时器2时间为1SPicture1.ScaleMode = 0 '定义纵横坐标/doc/073575364.html,mPort = 1 '设定端口号MSComm1.Settings = "9600,n,8,1" '设定通讯波特率MSComm1.InputLen = 6 '输入缓冲区为6个字符MSComm1.InBufferSize = 256 '接收缓冲器大小MSComm1.OutBufferSize = 256 '输出缓冲器大小MSComm1.InputMode = comInputModeBinary '以二进制传输MSComm1.OutBufferCount = 0 '清空发送缓冲区MSComm1.InBufferCount = 0 '清空接收缓冲区End SubPrivate Sub Timer1_Timer() '定时器1有效,触发接收事件MSComm1.PortOpen = True '打开端口ReDim aa(0 To 5) '定义动态数组k1 = 0 '识别PLC站号,为1If k1 = 0 Then MSComm1.Output = "1" + Chr(10) + Chr(13) '发送Do While MSComm1.InBufferCount = 0 '准备接收数据Loopaa = MSComm1.Input '接收数据存入数组If aa(0) > 64 Then GoTo xxx:k2 = Int(aa(0) * 255 + aa(1) * 1)Select Case k2p11 = Int(aa(2) * 255 + aa(3) * 1)p22 = Int(aa(4) * 255 + aa(5) * 1)Case ElseEnd Selectk1 = k1 + 1If k1 > 2 Then k1 = 0xxx:MSComm1.PortOpen = FalseEnd SubPrivate Sub Timer2_Timer() '绘制各中频炉的温度曲线x1 = x1 + 1 '时间增加为1SPicture1.PSet (x1, p11), vbRed '绘制1#炉的温度曲线,为红色Picture1.PSet (x1, p22), vbBlue '绘制2#炉的温度曲线,为黄色Text1.Text = Str(p11) '输出1#炉温度值Text2.Text = Str(p22) '输出2#炉温度值Text3.Text = Str(x1) '输出监控时间。
用S7-200编程的五个实例的解析wyb2866255建议删除该贴!! | 收藏| 回复| 2010-09-23 23:12:23楼主本文用S7-200编写的五个实例是根据网上网友的求助编写的,供大家参考。
1、一网友求助:“本人是PLC新手,刚学习不到一个月,现有一个项目~~ 要对目标信号进行检测计数~~ 信号为24V直流~~ 每隔一定的时间进行信号端检测,如果为“1”即有信号,则对信号进行计数,并最终输出总共检测到的“1”的数目~~ 如果在某一次时,没有检测到信号,则立即停止工作,输出已经检测到的“1”的数目,并输出报警信号~~ 要怎么实现呢?这里检测的是一个系统的返回信号,它只在特定的时间间隔上出现,这个时间间隔是已知的,不用去考虑~~如果在时间点上没有检测到,则证明系统故障~~为了是检测系统寿命~~急切PS:采用西门子S7-200系列PLC,STEP7 V4.0 SP6,组态王6.53,进行上述测试~~如果能有梯形图程序就不胜感激了~邮箱****************回复:按着你的要求,编写如下梯形图,在组态王数据词典里建立I/O整数字变量VW100,设可读方式,再设I/O字节变量M2,其BIT(M2,1)为系统启动工作位,BIT(M2,2)为报警输出位。
在运行时,组态王时时从PLC读取VW100及MB2的数据,出现报警,系统工作停止,此时的VW100值,即为报警前返回信号次数,系统检查完毕始终未出现报警,按下停止按钮,此时的VW100值即为最终检测返回信号值。
2、一网友提出:“谢谢楼主,对我这个新手来说真是好东西。
请教楼主用一个按钮控制电机正反转用S7-200怎么做,考虑了很久不太清楚,请您详细讲解一下,谢谢。
”我的回复:按着你的要求,我给你编了S7-200梯形图,用一个按钮起动电机正反转,又增加一个自锁按钮作为电机工作停止开关。
其工作原理:I1.1为自锁按钮,抬起位,其常闭触点闭合,使M2.0、M2.1、M2.2、M2.3皆为0状态,此时即使按I1,0启动按钮,SR触发器也不会反转,故电机停止不动。
西门子s7_200 modbus通信协议和支持modbusrtu协议的电磁流量计、超声波流量计的通信实例.西门子S7_200 MODBUS通信协议和支持MODBUS RTU协议的电磁流量计、超声波流量计的通信实例S7_200系列PLC有一个通信口的也有两个通信口的,这两个口都支持MODBUS 通信协议,不过要添加MODBUS库文件(SP6版本的step7 micro/win 软件自带有MODBUS库文件)。
下面根据具体的项目来说明MODBUS的使用:在项目中要采集进水流量的瞬时流量、日累计、月累计、年累计量,流量计本身有4~20mA信号输出和脉冲信号输出,这些输出信号都是瞬时量,只能转换为瞬时流量,而累积量就要通过编写程序来累加,而且信号的传输衰减和计算过程产生的误差就会造成和实际的流量相差很多,现在很多的流量计(包括其他的测量设备)都设计有通讯口,尤其是支持MODBUS协议,所以首选通信方式采集数据,这样可以直接读取我们想要的数据,只需做稍微的数据转换就可以的,同时也减小了工作量提高准确性(实际是按照流量收取费用的)。
实际的硬件连接:10套s7-200组成PPI网络(其中一个200站做主站),有一个从站要采集两个不同厂家的流量计的相关信息。
PPI网络层已经用去了一个端口0,还剩下一个端口1,那么就用这个端口并设置为自由口协议,在程序中调用MODBUS程序块并填写好必要的信息就可以了(其实调用MODBUS程序块时,程序块内就已经设置好端口为自由口协议了)。
图1.MODBUS库文件....图2.控制指令图3.控制指令这里MBUS_CTRL_P1指令要一直调用,有一点要指明:图2中的程序是读取其中一台流量计的,图..3是读取另一台流量计的,这两个流量计是不一样的。
这里最重要的是MBUS_MSG_P1指令中地址“Addr”的填写,其实这里要填写Modbus从站的寄存器地址(该地址内有我们需要的信息),那么这个地址要怎么填写呢,填写多少呢,这就要查看从站设备(这里是流量计)的“通信手册”了,因为每个厂家的设备都不一样,所以相同信息的寄存器地址也不一样。
S7-200实验指导书实验一基本指令的编程练习(一) 与或非逻辑功能实验一、实验目的1、熟悉PLC实验装置,S7-200系列编程控制器的外部接线方法2、了解编程软件STEP7的编程环境,软件的使用方法。
3、掌握与、或、非逻辑功能的编程方法。
二、基本指令编程练习的实验面板图左图中的接线孔,通过防转座插锁紧线与PLC的主机相应输入输出插孔相接。
I为输入点,Q为输出点。
上图中下面两排I0.0~I1.5为输入按键和开关,模拟开关量的输入。
上边一排Q0.0~Q1.1是LED指示灯,接PLC主机输出端,用以模拟输出负载的通与断。
三、梯形图参考程序通过程序判断Q0.1、Q0.2、Q0.3、Q0.4的输出状态,然后再输入并运行程序加以验证。
实验参考程序,梯形图四、实验步骤梯形图中的I0.1、I0.3分别对应控制实验单元输入开关I0.1、I0.3。
通过专用PC/PPI电缆连接计算机与PLC主机。
打开编程软件STEP7,逐条输入程序,检查无误后,将所编程序下载到主机内,并将可编程控制器主机上的STOP/RUN开关拨到RUN位置,运行指示灯点亮,表明程序开始运行,有关的指示灯将显示运行结果。
拨动输入开关I0.1、I0.3,观察输出指示灯.Q0.1、Q0.2、Q0.3、Q0.4是否符合与、或、非逻辑的正确结果。
(二)定时器/计数器功能实验一、实验目的掌握定时器、计数器的正确编程方法,并学会定时器和计数器扩展方法,用编程软件对可编程控制器的运行进行监控。
1.定时器的认识实验定时器的控制逻辑是经过时间继电器的延时动作,然后产生控制作用。
其控制作用同一般继电器。
实验参考程序2.定时器扩展实验由于PLC的定时器和计数器都有一定的定时范围和计数范围。
如果需要的设定值超过机器范围,我们可以通过几个定时器和计数器的串联组合来扩充设定值的范围。
实验参考程序,3.计数器认识实验西门子S7-200系列的内部计数器分为加计数器,减计数器和加减计数器三种。
S7-200 应用示例本章概述H.1 模拟电位器概述本例包含了有关SIMATIC S7-200 的模拟电位器(POT)的使用信息。
电位器的位置转换为0 至255 之间的数字值,然后,存入两个特殊存储器字节SMB28 和SMB29中,分别对应电位器0和电位器1 的值。
需要一把小螺丝刀用以调整电位器的位置。
本应用示例介绍了使用模拟电位器调整定时器设定值的三种方案。
例图模拟电位器程序和注释方案1说明了用模拟电位器对定时器设定值进行细调的方法。
首先通过程序中的偏移量(本例中为20ms )对定时器进行粗调,然后再用电位器能把定时器的设定值精确地调整到满意的设置。
每个定时器周期之后,执行子程序1中的指令,把POT 0的值(在SMB28中)读到AC1,除以2,再加上200ms 偏移量。
返回主程序时,AC2中的定时器循环计数值加1,并拷贝到输出字节(QB0),以供显示。
在方案2中,对电位器1(POT 1)的100次扫描值在AC3中累加后并取平均,再存入VW12。
如果该值低于低保护限值VW14,或高于高保护限值VW16(两者均在首次扫描时初始化),则将新值VW12拷贝到VW14、VW16和VW18中。
然后再分别对VW16和VW14的值减、加3ms ,作为新限值,而VW18中的平均值被传回主程序作为定时器T34的设定值。
返回主程序时,VW20中的定时器循环计数值加1,并拷贝到输出字节(QB1),以供显示。
在方案3中,把电位器0(POT 0)的值直接作为定时器T35的设定值,AC2中的定时器循环计数值加1,并拷贝到输出字节(QB0),以供显示。
本程序长度为110个字。
// 标题:模拟电位器:// * * * * * * * * * * * * * * *主程序* * * * * * * * * * * * * * *// 这是S7-200的一个演示程序,介绍了使用模拟电位器调整定时器设定值的三种方案。
// 方案1:对来自POT 0的值进行换算并加偏移量,以调整定时器的设定值,可以从200ms调到的1.48s。
S7-200实例程序实例程序在后面,下面是对程序的实际要求可编程序控制器 控制液压制品机的编程及部分线路接线X 1X 2X 3NL 2X 控制回路端子图PLC题二次原理图(1)设备表(2)控制要求1)功能简述由S7-200 PLC以手动、自动两种方式控制液压制品机的油泵启、停;上、下油缸的进出动作,并满足相应的故障和正确动作的显示功能。
2)初始状态初始状态是指油泵电机处于停止状态,限位开关无动作,相应的指示灯不亮。
转换开关处于手动模式时,只有电源指示灯常亮。
自动模式时,自动显示指示灯闪烁,电源指示灯常亮。
3)手动功能手动状态时的功能要求见下表:4)自动功能5)显示要求a) 在初始状态下扳动限位开关,相应限位指示灯应随限位开关的通断而亮灭;b) 油泵电机启动后,显示模拟电机运行指示灯常亮;油泵电机停止后,显示模拟电机运行灯灭。
c) 上、下油缸进出时,对应电磁阀指示灯亮,到进出限位时灭;d) 故障出现时,油泵电机、上下油缸动作停止,故障灯以2Hz 频率闪烁。
故障处理好后,按复位按钮时故障灯灭;e) 选择开关在自动位置时,自动状态指示灯以0.5Hz频率闪烁。
当按自动启动按钮后,自动状态指示灯常亮,待自动循环结束后,自动状态指示灯又转变为以0.5Hz频率闪烁。
f) 上、下缸分别处于“保压”状态时,对应限位指示灯以1Hz 频率闪烁。
下缸处于“脱模”状态时,对应限位指示灯常亮。
g) 上、下油缸动作时,总阀电磁阀动作指示灯应亮。
(3)操作检查说明程序编制完成并已经下载至PLC装置中后,要求完成以下操作:1)手动模式:a)选择开关置手动位置,按油泵电机启动按钮,电机运转;按油泵停止按钮,电机停止。
b)按上油缸出按钮,上缸出电磁阀动作(灯亮),扳通上缸出限位,上缸出电磁阀停止(灯灭);按上缸回按钮,上缸回电磁阀动作(灯亮),扳通上缸回限位,上缸回电磁阀停止(灯灭)。
c)按照上缸的操作步骤检查下油缸的动作过程。
d)油泵电机运行期间,模拟热继电器动作,电机应停止。
S7-200通信及实例——工控网老菜鸟维修经验2008-11-15 14:30:52 阅读370 评论1 字号:大中小........dingqw1234网友在下面的帖子中希望得到多台S7-200之间通过网络读写(NETR和NETW)的通信的解决方法和实例。
本人应dingqw1234网友的要求,特发此帖。
在这个帖子里聊一下S7-200的通信,并特别对多台S7-200之间通过网络读写(NETR和NETW)的通信实现进行举例说明。
........dingqw1234网友的帖子:我想用两台CPU 226CN 通讯,一台的输入点全传到另一台里怎么做?/Forum/ForumTopic.aspx?Id=2008111022085900001........下面先简单了解一下S7-200支持的通信协议:........比较详细的介绍,请参阅《S7-200可编程控制器系统手册》第7章:通过网络进行通信。
........下面仅简单说明一下部分通信协议:PPI(Point to point interface)协议:........该协议是西门子内部协议,不公开。
点对点接口,是一个主/从协议。
主站向从站发送申请,从站进行响应,从站器件不发信息,不初始化信息,只是等待主站的要求并对要求作出响应。
但当主站发出申请或查询时,从站对其响应。
主站可以是其他CPU主机(如S7-300等)、编程器或TD200文本显示器。
网络中的所有S7-200都默认为从站。
S7-200系列中一些CPU如果在程序中允许PPI主站模式,则在RUN模式下可以作为主站,此时可以利用相关的通信指令来读写其他主机,同时它还可以作为从站来响应其他主站的申请或查询。
........主站靠一个PPI协议管理的共享连接来与从站通讯。
PPI并不限制与任意一个从站通讯的主站数量,但是在一个网络中,主站的个数不能超过32。
如果在用户程序中使能PPI主站模式,S7--200 CPU 在运行模式下可以作主站。
S7-200自由口通讯教程及编程实例S7-200自由口通讯自由口模式允许应用程序控制S7-200 CPU的通讯端口,使用PC/PPI电缆和自由口功能,可以将S7-200连接到带有RS-232兼容接口的多种设备,比如调制解调器。
这里我们将介绍如何用S7-200连接GSM调制解调器发送短消息,并通过这个例子来介绍应用S7-200自由口编程的一般原则时及应注意的问题。
在下面的例子中我们将用到:1. PC/PPI电缆(10位;9 600波特;DIP开关设置:0 1 0 1 1)2. 西门子S7-200 CPU22X3. TC35 Terminal GSM调制解调器4. 一个9直通针转接头(用来连结PC/PPI电缆与TC35 Terminal调制解调器)5. 一根九针直通电缆(用来连结计算机与TC35 Terminal调制解调器)6. STEP 7-Micro/Win V3.2或更高版本软件一、TC35 调制解调器AT指令简介要使用TC35发送短消息需要使用TC35的AT指令,我们首先介绍如何用Windows自带的超级终端连接TC35发送短消息。
1.用九针直通的电缆将TC35连接到计算机的串口上2.打开超级终端(开始à程序à附件à通讯à超级终端)3.为连接取名Connect to TC35T4.选择TC35连接的串口COM15.按照下图的参数设置端口。
19 200 bps为TC35默认的端口波特率,如果该波特率已被更改,请选择正确的波特率。
6.在窗口中键入AT回车测试与TC35的连接,如果连接正确,TC35将返回OK。
7.TC35可以发送两种格式的短消息,普通文本格式和PDU格式。
应用普通文本格式时,短消息内容以ASCII码格式直接输入,操作比较简单,缺点是只能发送英文短消息;应用PDU格式时,短消息内容以Unicode格式输入,可以发送任何文字,缺点是短消息内容需要转换成Unicode码,并且要把短消息按PDU格式打包,操作比较复杂(编程复杂)。
西门子S7200与变频器MODBUS通讯实例详解西门子S7200PLC简介西门子S7-200PLC在实时模式下具有速度快,具有通讯功能和较高的生产力的特点。
一致的模块化设计促进了低性能定制产品的创造和可扩展性的解决方案。
来自西门子的S7 - 200微型PLC可以被当作独立的微型PLC解决方案或与其他控制器相结合使用。
Modbus通讯协议简介Modbus是由Modicon(现为施耐德电气公司的一个品牌)在1979年发明的,是全球第一个真正用于工业现场的总线协议。
ModBus网络是一个工业通信系统,由带智能终端的可编程序控制器和计算机通过公用线路或局部专用线路连接而成。
其系统结构既包括硬件、亦包括软件。
它可应用于各种数据采集和过程监控。
ModBus网络只有一个主机,所有通信都由他发出。
网络可支持247个之多的远程从属控制器,但实际所支持的从机数要由所用通信设备决定。
采用这个系统,各PC可以和中心主机交换信息而不影响各PC执行本身的控制任务。
1 MODBUS RTU协议在S7-200中的应用原理1.1 MODBUS RTU协议与S7-200相互关系简介S7-200 CPU上的通讯口Port0可以支持MODBUS RTU协议,成为MODBUS RTU从站。
此功能是通过S7-200的自由口通讯模式实现,因此可以通过无线数据电台等慢速通讯设备传输。
想在S7-200 CPU与其他支持MODBUS RTU的设备使用MODBUS RTU协议通讯,需要由有S7-200 CPU做MODBUS主站。
S7-200 CPU做主站必须由用户自己用自由口模式,按相关协议编程。
2 从站指令的用法:S7-200控制系统应用中,MODBUS RTU从站指令库只支持CPU上的通讯0口(Port0)。
要实现MODBUS RTU通讯,需要Step7-Micro/WIN32 V3.2以上版本的编程软件,而且须安装Step7-Micro/WIN32 V3.2 Instruction Library(指令库)。
块:主程序作者:创建时间:2006.09.11 18:20:02修改时间:2010.06.18 20:14:17符号变量类型数据类型注释TEMPTEMPTEMPTEMP注意: 本程序采用XMT发送,利用字符中断(PORT0,字符中断8#事件,PORT1, 字符中断25#)接收数据1: 数据帧全部在数据块内定义2:本程序伺服驱动器站地址为1,数据帧格式为9600、8,N,2、3: 数据响应帧长为8个字节网络 1网络标题初始化程序SM0.0initEN网络 2CRC校验码的生成,发送数据需要校验码,而读数据知道数据帧的内容,所以不需要计算校验码,直接填好就可以SM0.0checkEN网络 3数据的发送sendSM0.0EN块:init作者:创建时间:2006.09.11 18:20:02 修改时间:2010.06.18 20:01:42符号变量类型数据类型注释 EN IN BOOL IN IN_OUT OUTTEMP子程序注释网络标题网络 19600,8,N ,1/2格式,采用字符终端接收&VB3000----->VD4000, 这是为数据帧的接收定义缓冲区.也就是说,vb3000是接收缓冲区的首地址MW0; 接收数据字节的计数器,ATCH 指令用于表示采用PORT0 的字符中断,匹配给中断服务程序0(INT ——0)MOV_BENOENOUT IN MOV_DW ENOENOUT IN MOV_WENOENOUT IN ATCHENOENINT EVNTENISM0.116#89SMB30&VB3000VD4000+0MW0INT_08符号地址注释INT_0INT0这里是用来接收的, 每当SMB2有新字符时,即执行这个中断子程序网络 2/TONIN10 msPTM3.0T100+10网络 3M3.0 是一个T100 确定的脉冲时钟,这里是100MS的脉冲时钟T100M3.0网络 4MOV_BENOENOUTINSM0.11MB2网络 5使用移位指令,建立通讯轮询表SHL_BENOEN>=BOUTINNM3.0MB28MB21MB2块:send作者:创建时间:2006.09.11 20:33:07 修改时间:2010.06.18 19:51:50符号变量类型数据类型注释 EN IN BOOL IN IN_OUT OUTTEMP子程序注释读运行频率网络 1发送的数据帧定义在数据块里面,可以点击左边窗口中的数据块来编辑通讯帧接收数据在vb2000PMOV_BENOENOUT IN XMTENOENTBL PORTM2.01MB3VB100读输出电流网络 2因为前一个命令的的响应数据帧已经到了vb2000-vb2007,因此,这里将指针偏移10个字节,本条XMT 的命令所产生的响应帧将存放在从vb2010开始的8个字节中,(vb2010----vb2017)至于VD1000,因为已经在初始化中被定义为vb2000的指针接收数据在vb2010PADD_DIENOENOUT IN1IN2MOV_BENOENOUT IN XMTENOENTBL PORTM2.1+10VD4000VD40001MB3VB110块:check作者:创建时间:2006.09.12 9:09:22 修改时间:2010.06.18 20:14:17符号变量类型数据类型注释 EN IN BOOL IN IN_OUT OUTTEMP子程序注释网络 1CRC 子程序:自己建立的CRC 校验码生成的子程序,因为原来做的时候,高低字节没有在子程序内换过来,因此,在调用了CRC 子程序之后,在交换高低字节CRC 子程序的用法:pointer: 指向要计算的数据帧的首地址,num: 从首地址开始的多少个字节需要计算CRC 校验码crch,crcL:生成的校验码存放地址这个网络执行的结果:将从VB101开始的6个字节生成的校验码放到了VB107,VB108以下的程序依次类推CRCENpointer num crcH crcLMOV_BENOENOUT IN MOV_BENOENOUT IN SM0.0&VB1016VB200VB201VB200VB108VB201VB107网络 2网络 3网络 4加速/减速网络 5网络注释块:INT_0作者:创建时间:2006.09.11 18:20:02 修改时间:2009.08.08 13:13:06符号变量类型数据类型注释 TEMP TEMP TEMPTEMP这里是用来接收的, 每当SMB2有新字符时,即执行这个中断子程序网络 1由于是和5#站通讯,如果接收正确,则受到的第一个字符一定是站地址,如果站地址正确,则执行以下的程序==B S SMB21M11.11网络标题网络 21:将接收缓冲区SMB2的内容放到前面所定义的指针中,由于VD1000指向了VB2000(初始化定义)2:将指针向后推一个字节,准备接收第二个字符3:将接收的字节数加上一个,表明已经接收到一个字符MOV_BENOENOUT IN ADD_DI ENOENOUT IN1IN2ADD_IENOENOUT IN1IN2M11.1SMB2*VD4000+1VD4000VD4000+1MW0MW0网络 31:由于SMB2接收缓冲区中会一直有新数据,因此,这个中断子程序在接收一条帧的时候,一定会进来执行8 次因此,本网络以前的程序会执行8次,这样,数据全部进入了定义的接收缓冲区;(初始化定义了首指针,SEND程序定义了相对首指针的偏移地址)2:一直等到接收了一条完整的帧(8个字节),将字节计数器,指针复位,并复位M11.1 接收标志==IMOV_DWENOENOUTINMOV_WENOENOUTINRMW0+8&VB3000VD4000+0MW0M11.11块:CRC作者:创建时间:2004.01.31 10:43:02修改时间:2009.08.07 20:11:21符号变量类型数据类型注释EN IN BOOLLD0pointer IN DWORDLB4num IN BYTEINLB5crcH IN_OUT BYTELB6crcL IN_OUT BYTEIN_OUTOUTLW7numi TEMP INTLW9tempi TEMP INTLB11CL TEMP BYTELB12CH TEMP BYTELW13bitindex TEMP WORDLB15crcHT TEMP BYTELB16crcLT TEMP BYTELW17crcSHR TEMP WORDLW19crctemp TEMP WORDLD21crcbit TEMP DWORDLB25counter TEMP BYTELW26counterW TEMP WORDTEMPPOU Comment Network Title网络 1这是封装的子程序,可以直接调用,不需要管理面是如何执行的。
MOV_BENOENOUT IN MOV_BENOENOUT IN MOV_BENOENOUT IN MOV_BENOENOUT IN MOV_BENOENOUT IN MOV_BENOENOUT IN B_IENOENOUT IN FORENOENSM0.016#FF #crcL16#FF #crcH16#A0#CH16#1#CL0#crcLT0#crcHT#num #numiINDX INIT FINAL#tempi+1#numi网络 2需要移动CRC 寄存器8次,所以,先将CRC 寄存器低字节按SIEMENS 规律放好,以便移动WXOR_BENOENOUT IN1IN2SM0.0*#pointer#crcL#crcL网络 3MOV_WENOENOUT IN SM0.0+0#counterW网络 4LBL1网络 5right移动8BIT循环,并测试移出位是否为1,=1则,与A001 XOR,=0不变测试移出LSB是否为1,可用他除2,看余数结果是否为《》0,SM0.0网络 6<I JMP#counterW+81网络 7LBL2网络 8INC_DWENOENOUT IN SM0.0#pointer #pointer网络 9NEXT。