S7-200自由口通讯从站方式编程步骤

合集下载

S7-200CPU通信口的自由口模式实现Modbus通信协议

S7-200CPU通信口的自由口模式实现Modbus通信协议

在组态王里点击“com1”(根据你在前面已经定的com口而定),然后在右边的界面上显示你所建立的文件,然后对你编译的主画面点反键,然后在下拉菜单中点击“测试---”(你的文件名),再随便在选项里输入一个你编写的程序里的标志位,看能不能显示你的PLC内的当前值,如果可以显示,就应该是通信上了。

通过 S7-200 CPU 通信口的自由口模式实现 Modbus 通信协议,可以通过无线数据电台等慢速通信设备传输。

这为组成 S7-200 之间的简单无线通信网络提供了便利。

详细情况请参考《S7-200系统手册》(2002 年 10 月或以后版本)的相应章节。

Modbus 是公开通信协议,其最简单的串行通信部分仅规定了在串行线路的基本数据传输格式,在 OSI 七层协议模型中只到 1,2 层。

Modbus 具有两种串行传输模式,ASCII 和 RTU。

它们定义了数据如何打包、解码的不同方式。

支持 Modbus 协议的设备一般都支持 RTU 格式。

通信双方必须同时支持上述模式中的一种。

Modbus 是一种单主站的主/从通信模式。

Modbus 网络上只能有一个主站存在,主站在 Modbus 网络上没有位置,从站的位置范围为 0 - 247,其中 0 为广播位置,从站的实际位置范围为 1 - 247。

Modbus 通信标准协议可以通过各种传输方式传播,如 RS232C、RS485、光纤、无线电等。

在 S7-200 CPU 通信口上实现的是 RS485 半双工通信,使用的是 S7-200 的自由口功能。

Modbus RTU 主站指令库(测试版)西门子针对 S7-200 最新推出支持 Modbus RTU 主站的协议库(测试版),用户可以将这个库添加到 Micro/WIN 软件中,并通过调用库指令,方便地实现 Modbus RTU 主站的功能。

注意:1. Modbus RTU 主站指令库的功能是通过在用户程序中调用预先编好的程序功能块实现的,该库只对 Port 0 口有效。

西门子S7—200PLC自由口通讯的两种Delphi实现方法

西门子S7—200PLC自由口通讯的两种Delphi实现方法

西门子S7—200PLC自由口通讯的两种Delphi实现方法【摘要】本文介绍了PC机与PLC实现自由口通信的两种方法。

上位机采用的是PC机,利用Delphi6.0编写应用程序,详细对其中的两种方式做了详细说明。

下位机采用西门子公司的S7-200PLC,文中列出了相应的程序说明。

【关键词】计算机通信;PLC;Delphi;自由口通信1.引言随着大规模和超大规模集成电路等微电子技术的迅猛发展,PLC作为一种新型高能的控制器已经越来越广泛地用于工业现场控制的各个领域,它有着高可靠性、低能耗、易操作、易安装等优点。

但是,由于PLC的人机交互能力差,独立的PLC不能完成工业控制流程的实时和动态监控,PC机与PLC的通讯就愈加显得重要。

通过PLC与PC机的通讯,使得个人计算机和其他智能控制设备交换数字信息,使系统形成一个统一的整体,方便实现分散控制和集中管理。

2.S7-200的通信与PC机的通信机理S7-200 PLC的CPU支持多种通信协议,包括:点到点接口协议(PPI)、多点接口协议(MPI)、Profibus协议、自由通信接口协议和USS协议。

自由通讯口模式是S7-200PLC一个很有特色的功能,用户可以通过用户程序对通信口进行操作并且自己定义通信协议。

应用该通信方式,S7-200可以方便地和任何通信协议已知、具有串口的智能设备和控制器进行通信。

通过设定特殊存储字节SMB30(端口0)或SMB130(端口1)允许自由口模式,设置它的波特率、奇偶校验和数据位数。

用发送指令(XMT)和接收指令(RCV)对数据进行通信操作。

值得注意的一点是:只有在CPU处于RUN 模式时才允许自由口模式,当CPU处于STOP模式时自由口模式将自动转换为PPI协议模式。

用反应CPU模块上的工作方式的特殊存储器位SM0.7来控制自由口通讯方式的进入,当SM0.7为1时CPU处于RUN模式,可将通信口置为自由口模式。

在PC机与PLC的通讯过程中,主要是由PC机发送信息来强制控制PLC 的状态,接收PLC发送过来的信息来显示控制状态。

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-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.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_200PLC与PC自由口通讯的多种实现方法

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-200自由口通信

s7-200自由口通信

通信要求:1起始位,1停止位,无检验,9600函数要求:1、起始符02,结束符03,16进制数据通讯;通讯地址范围A-Z(41-5A)2、校验算法,异或校验,校验位两个字节,高在前,低在后,分别用XH XL表示校验的高低字节;校验从开始字符后的第二个字符开始计算,运算到结束符前的校验的高校验位前字符;进行字节异或运算,最后异或的字节再拆开两位发送,如果最后的校验和为32;那么需要拆分成33,32进行发送。

发送函数要求:格式:02 ADD 43 XH XL 03;传入参数地址A-Z接受函数要求:格式:02 ADD 63 ** ** ** ** ** ** ** ** XH XL 03;返回参数:整数字符其中返回数据也属于ASCII码数据,需要转换成整形数据,并且小数点位置会动态变化,根据小数点的位置不同,动态计算数据。

发送数据:02 41 43 30 32 03接受数据:02 41 63 2B 30 30 30 2E 30 30 30 32 37 03 (0.0)需要返回0绿色表示起始位和停止位紫色表示传输数据的地址位(41是16#41,也就是地址A的ASCII的16#值)黄色表示传输的有效数据(2B是“+”的16#值,30是“0”的16#值,2E是“.”的16#“2B 30 30 30 2E 30 30 30”在PLC中相当于一个字符串“+0 0 0 . 0 0 0”,进制,<用于数据的解析>)红色表示校验数据的高低位,异或校验拆分后的值(如结果为16#27,则分成32<2的ASCII 码的16#值>,37<7的ASCII码的16#值>)程序思路:通信过程为一发一收通信首先发送规定指令,发送完成,PLC产生中断,中断号9(s7-200的PORT0口),中断程序则准备数据的接受当接受数据完成时,要判断数据是否为有效的数据,我们需要将数据包一步一步剥开,接受的数据是放在了一个连续的位置上(《RCV,VB100,0》数据在从VB101开始的位置存储),然后将数据包中的数据从地址位41(以此为例子)开始到黄色区域接受进行异或校验,得到16#27,将16#27进行高低位分离,同时转换成相应的ASCII的16#值(分离方法很多,s7-200中用HTA指令,一步到位,高低分离同时也转成相应的ASCII的16#值,小技巧)现在就要验证数据的有效性了,校验位数据和地址位(发送和接收一致)是否有效。

西门子S7-200自由口与上位机通讯实例

西门子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-200PLC MUDBUS从站通信

S7-200PLC MUDBUS从站通信

S7-200 MODBUS RTU 从站通讯CPU 上的通信口(Port0)支持 Modbus RTU 从站通信协议S7-200 CPU上的通信口Port0可以支持Modbus RTU协议,成为ModbusRTU从站。

此功能是通过S7-200的自由口通信模式实现,因此可以通过无线数据电台等慢速通信设备传输。

如果想在S7-200 CPU之间、或者其他支持Modbus RTU的设备使用Modbus RTU 协议通信,需要由有S7-200CPU做Modbus主站。

S7-200 CPU做主站必须由用户自己用自由口模式,按相关协议编程。

详情请参考《S7-200系统手册》之相关章节。

要实现Modbus RTU通信,需要STEP 7-Micro/WIN32 V3.2以上版本的编程软件,而且须安装STEP7-Micro/WIN32 V3.2 Instruction Library(指令库)。

ModbusRTU 功能是通过指令库中预先编好的程序功能块实现的。

ModbusRTU从站指令库只支持CPU上的通信0口(Port0)。

基本步骤:1.检查Micro/WIN的软件版本,应当是STEP7-Micro/WIN V3.2以上版本。

2.检查Micro/WIN的指令树中是否存在ModbusRTU从站指令库(图1),库中应当包括MBUS_INIT和MBUS_SLAVE两个子程序。

如果没有,须安装Micro/WIN32V3.2的Instruction Library(指令库)软件包;图1. 指令树中的库指令3.编程时使用SM0.1调用子程序MBUS_INIT进行初始化,使用SM0.0调用MBUS_SLAVE,并指定相应参数。

关于参数的详细说明,可在子程序的局部变量表中找到;图2. 调用Modbus RTU通信指令库图中参数意义如下:1.模式选择:启动/停止Modbus,1=启动;0=停止2.从站地址:Modbus从站地址,取值1~2473.波特率:可选1200,2400,4800,9600,19200,38400,57600,1152004.奇偶校验:0=无校验;1=奇校验;2=偶校验5.延时:附加字符间延时,缺省值为06.最大I/Q位:参与通信的最大I/O点数,S7-200的I/O映像区为128/128,缺省值为1287.最大AI字数:参与通信的最大AI通道数,可为16或328.最大保持寄存器区:参与通信的V存储区字(VW)9.保持寄存器区起始地址:以&VBx指定(间接寻址方式)10.初始化完成标志:成功初始化后置111.初始化错误代码12.Modbus执行:通信中时置1,无 Modbus 通信活动时为 0。

S7-200自由口通讯程序

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。

西门子S7-200PLC如何通过自由口通信控制变频器运行

西门子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既发送数据,又接收数据。

200PLC自由口(MODBUS)通讯初级教程

200PLC自由口(MODBUS)通讯初级教程

200PLC自由口(MODBUS)通讯初级教程原创作者:杜天龙1、安装200PLC程序及S7_200PLCMODBUS库文件。

200PLC库文件下载地址:/share/link?shareid=232544846&uk=5372422712、新建200PLC程序(本例使用的PLC是CUP226),直接打开库,选择200从站里面的指令。

具体程序如下:3、如果你想更多的学习MBUS_INIT和MBUS_SLA VE的用法,请参考200PLC编程软件的帮助文件。

4、如果在编译完出现错误18的提示,那是因为没有为库分配存储区,分配存储区的方法如下,新手直接选择建议地址,这样可以避免地址重复。

这里给出的建议地址的起始地址为VB8。

那是因为我们在上面的程序中已经将VW0、VW2、VW4、VW6用掉了。

因VW为字,占用2个字节,相当于从VB0~~VB7。

所以这里最小只能是VB8,当然你可以将起始地址手动设置成VB100。

这样你就可以使用VW0~~VW98之间的存储器。

5、下载并运行PLC后,下载串口测试工具。

发现并不能得到想要的结果,分析程序发现是地址写错了,VW地址不能VW0、VW1……VW6,应该是VW0、VW2……VW12,这样库存储区的起始地址就不能使8了,至少也要是14,我们直接修改到200,方面以后的测试。

我们将程序做如下修改:将MODBUS初始化程序MBUS_INIT的MaxHold保留区的地址直接修改到100(小于库存储区的起始地址VB200)。

至此程序调试结束。

6、串口调试软件(/share/link?shareid=238269468&uk=537242271)的使用方法详见软件操作说明里面的具体图片。

200自由口通讯。

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编程手册)。

S7-200自由口通讯教程及编程实例

S7-200自由口通讯教程及编程实例

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格式打包,操作比较复杂(编程复杂)。

自由口模式下S7-200PLC与计算机的通信

自由口模式下S7-200PLC与计算机的通信

自由口模式下S7-200PLC与计算机的通信本例说明如何以自由协议实现计算机与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可以任意写入。

西门子200系列PLC自由口通信程序设计

西门子200系列PLC自由口通信程序设计

西门子200系列PLC自由口通信程序设计之数据的发送在设计自由口通信程序时,自由口通信程序设计的核心就是使用发送指令XMT和接收指令RCV对数据进行发送和接收。

接收指令RCV应用的难点,在于如何设置“判断接收消息的起始条件和结束条件”,而对于发送指令来讲相对的比较简单,只需要准备好数据,然后使用发送指令发送出去即可。

但实际应用中是否是真的就是这样呢?在一个通信程序中,需要发送的数据可能比较多,比如说与三菱变频器的通信,通过三菱变频器的专用通信协议来通信,那么需要发送的数据时有运行命令,频率修改,读取一些参数,而且这些数据均不一样,因此需要先定义好不同的数据在不同的存储器,当发送哪个命令的数据时就需要把数据给过去。

真的是这样做吗?个人不赞同使用这种方法去做,个人比较赞同把需要发送的数据先做成一个功能块,然后根据需要发送的数据填写到这个功能块的管脚上,发送指令放于这个功能块中,当功能块接通一次,就对一次的数据发送出去。

就以三菱专用通信协议为例,发送运行命令和修改频率及读取一些参数的功能为例来进行说明。

三菱专用通信协议内容具体大家可以自己网上查找,这里不做详细的说明,这里我们主要看下PLC需要发送到变频器的数据的格式。

PLC往变频器写数据时需要发送的格式:根据数据长度的不一样分为三种格式,如下所示:PLC读取变频器数据的时需要发送的数据格式变频器运行代码、修改频率、读取变频器参数的代码如下表所示结合上面的发送数据的格式,和代码表,我们可以发现,发现运行命令,和发送频率,以及读取变频器的参数值的格式都不一样,但也有前面部分相同的内容,所以我们在设计功能块时需要做判断,判断是“读命令”还是“写命令”,如果是写命令,则还进一步判断是“写运行命令”还是写“频率命令”根据这原理,我们可以开始设计功能块。

(1)编写变量表(2)程序编写好功能块后,只需要在主程序中调用这些功能块,同时给不同的功能块赋实参即可,如下所示:本程序仅供参考,具体程序可参见技成培训网论坛!本文章由技成培训网曾鑫老师原创,如需转载,请授权!如果对您有帮助,请下载惠存!。

西门子S7-200PLC自由口实例代码

西门子S7-200PLC自由口实例代码

1 引言plc,omron公司的cjm1系列的plc,西门子公司的s7-200系列plc等都提供了自由口通讯模式。

自由口通讯是指plc提供了串行的通讯硬件,和用于定制通讯协议的相关指令,在控制系统中,当要和plc连接的控制设备的通讯协议已知时,可以在plc中进行编程定制通讯协议,和控制设备进行数据通讯。

本文主要介绍西门子s7-200的自由口和计算机的串口进行的通讯,计算机中采用visual basic进行编程,从而实现计算机与可编程控制器的直接控制。

该通讯方式具有效率高、容易实现、通讯硬件简单、容易配置等特点在工业控制领域中被广泛应用。

2 s7-200通讯指令及特殊字节采用自由口通讯方式时,s7-200上的rs485口完全由用户控制,可以与任何协议已知的设备进行通讯,在这种情况下通讯协议完全由用户制定,为此,s7-200提供了用于进行通讯协议定制的特殊标志位以及相关的通讯指令。

2.1 特殊标志字节s7-200用于自由口通讯模式定义的特殊标志字节有smb30和smb130,smb30用于s7-200的端口0的通讯,smb130用于s7-200的端口1的通讯,两者的格式一样,下面我们以smb130为例,介绍其组成。

smb130各位的含义如下:pp:两位用于选择通讯的校验方式当这两位的组合是:00无校验01 偶校验10 无校验11 奇校验d:这一位用于选择通讯的数据位数d=1时7个数据位,d=0时8个数据位bbb:用于选择自由口通讯是的波特率,这三位的组合和通讯波特率的关系如下:000 ——38400bps001 ——19200bps010 ——9600bps011 ——4800bps100 ——2400bps101 ——1200bps110 —— 600 bps111 —— 300 bpsmm: 用于通讯协议的选择,当这两位的组合是:00 ppi从站模式01 自由口通讯模式10 ppi主站模式2.2 接收信息的状态字节s7-200在自由口通讯时用于接受信息的状态有smb86和smb186,smb86用于s7-200的端口0的通讯,smb186用于s7-200的端口1的通讯,两者的格式一样,下面我们以smb186为例,介绍其组成。

S7-200SMART MODBUS通信介绍与实例编程

S7-200SMART 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 存储区。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档