S7-200自由口通讯示例
西门子S7-200Modbus通信与变频器通信实例
西门子S7-200通过自由口需要控制英威腾变频器的正负转停止和故障复位,运行频率控制以及分二次读取运行速度等12条变频器信息。
程序略微变动适应所有Modbus RTU需要控制。
下面是程序,可以直接导入程序后写入PLC试验ORGANIZATION_BLOCK 主程序:OB1TITLE=BEGINNetwork 1// 主程序,初始化并查执各变频器指令// 一.功能介绍// 该程序专为英威腾CHF系列变频器编写。
英威腾CHF系列变频器内置国际标准的MODBUS通信协议。
程序运行时,变频器作为MODBUS协议从站接收来自CPU224 PLC的通信指令,实现起停、频率给定、监控等功能。
// CHF系列矢量变频器在与CPU224通信前须做好以下准备工作:// 1.确认己安装好CHF系列变频器的通讯卡,并将卡上的端口跳线置于RS485端;// 2.用一根带9针阳性插头的串口通信电缆连接在CPU224 PLC的自由通信口端,电缆另一端的第5、3、8线分别接在CHF变频器RS485通讯卡的GND、485+、485一端子上,其余线屏蔽不用;// 3.预先设置变频器以下参数:// PC.00=1 //变频器通讯地址为1// PC.01=3 //通讯波特率9.6K// PC.02=1 //通讯数据偶校验8位数据位1位停止位// P0.03=2 //变频器的运行指令采用通讯方式// P3.01=7 //变频器的A频率设定采用通讯方式(注意P3.04/P3.05对P3.01通讯频率的影响)// 二.程式结构说明// 该程序由1个主程序3个子程序及2个中断程序组成。
子程序里包含了变频器的起停、复位、查询功能指令,由主程序调用。
中断程序为发送及接收指令提供中断支持。
// main //主程式,初始化并查执各变频器指令// sbr0 //CRC校验子程序// sbr1 //通讯端口初始化子程序// sbr2 //发送变频器写入06/读取03指令,共8个字节// intO //接收完成中断程序// int1 //发送完成中断程序LD SM0.1CALL SBR1 //调用初始化子程序,使能PORT0自由口模式Network 2// 接收完成后延时10mS M4.4接通,运行下一次发送数据LDN M4.0AN M4.1TON T35, 1 // 通讯完成后延时10mS M4.4=1,允许下一次通讯,A T35= M4.4 //主要是为了Modbus RTU二次通讯中间3.5字符间隔时间Network 3// 如果发送或接收超时,延时0.2秒复位M4.0/M4.1,这里暂时设置5秒是为了方便调试LD M4.0O M4.1TON T199, 50A T199R M4.0, 2 //发送或接收超过0.2秒没有完成,复位发送/接收Network 4 // 调用Modbus06写入指令,通讯成功,这里暂时不用,可以作打手频率设定,不知道是否支持广播写入,广播写入主要是变频器故障复位和三个打手频率设定.给棉变频器如果需要用PID控制没有必要用PLC的PID// 当VW110≠VW300时把VW110写入变频器,VW110范围(+10000~-10000)÷10000×50Hz// 地址为变频器地址;字节为发送的字节数量=8个字节;指令=03为读取指令,06为写入指令;数据地址=2000H 为英威腾变频器设置频率的地址;数据内容为写入2000H的内容,范围+10000~0~-10000// 运行命令权限最高,如果运行命令没有完成,程序将会一直执行下去,直到运行命令完成LDN M8.1 //没有发送运行命令,当运行命令发送过程中不能够发送频率写通讯AW<> VW300, VW110 //发送的数据VW110与通讯完成返回的数据不等A M4.4 //允许发送S M8.0, 1 //发送为写运行速度命令,为了接收信息时保存到VW300用CALL SBR3, 1, 8, 6, 16#2000, VW110 //把VW110数据写入到变频器地址1的2000H寄存器Network 5// 控制变频器正负转停止和故障复位同时有几个输入时执行最后的指令LD SM0.0LPSA I5.1 //运行命令MOVW 1, VW304LRDA I5.3 //反转命令MOVW 2, VW304LRDA I5.2 //停车命令MOVW 5, VW304LPPA I5.4 //故障复位命令MOVW 7, VW304Network 6 // 设定英威腾变频器1000H通信控制命令,来控制变频器正负转和停止等操作命令// 控制变频器运转英威腾变频器地址1000H 01正转运行02反转运行03正转点动04反转点动05停车06自由停车07故障复位08点动停车LDW<> VW304, VW302 //运行命令VW304与接收的返回信息比较,不相等将一直发送下去A M4.4S M8.1, 1 //为了把返回信息的保存到VW302寄存器CALL SBR3, 1, 8, 6, 16#1000, VW304 //把命令内容VW304写入到英威腾变频器的1000H地址Network 7 // 调用Modbus读取,不要读取范围以外的内容,不然会报错误// 读取变频器状态3000H 运行速度3001H 设定速度3002H 母线电压3003H 输出电压3004H 输出电流3005H运转速度// 当有其他重要的读写命令时该通讯暂停// 分2次读取英威腾变频器3000H~3005H 3008H~3013H信息,本来英威腾变频器说明书说可以连续读取16条信息,不过我读取16条信息返回数据没有CRC校验内容,不知为何,本来是试验程序,有时需要连续读取多条信息,就试验读取2次12条信息LDN M8.0AN M8.1 //程序没有发送写频率和运行命令时才能够读取变频器数据A M4.4LPS //调用查询变频器INCB VB270 //启动T37延时断开计时器A V270.0S M8.2, 1MOVW 16#3000, VW272 //读取3000H开头的连续6条信息LRDAN V270.0S M8.3, 1MOVW 16#3008, VW272 //读取3008H开头的连续6条信息LPPCALL SBR3, 1, 8, 16#03, VW272, 6END_ORGANIZATION_BLOCKSUBROUTINE_BLOCK 初始化:SBR1TITLE=通讯端口初始化子程序// 该程序在PLC的第一个扫描周期运行,主要是设置CPU224自由端口的通信格式、数据接收格式及复位各寄存区(参见西门子S7-200编程手册)。
S7-200 PLC通过自由通讯口方式与丹佛斯变频器通讯
r sm87.2, 1-
network 4 -
ld sm0.0-
atch int1, 23 -
//连接口0接收完成的中断-
network 5 -
5.2 变频器参数修改子程序-
当要改变当前变频状态的信息需传送时,调用“控制子程序”。首先它要禁止端口的接收,然后对控制电码进行编辑和bcc检验码计算,并发送;当没有改变当前变频状态的信息需传送时,调用“空命令”子程序。因为plc如果要读取变频器的当前工作状态,就要给变频器发送命令,而“控制子程序”代码繁琐,执行效率不高,我们可以将“空命令”程序需传送的电码预先编排好(可以用短电码),“控制子程序”程序代码如下:-
3 plc的选型-
西门子工控产品在工控领域应用市场中有较高的占有率。s7-200系列是西门子simatic plc家族中的小规模plc成员,自由通讯口方式是s7-200 plc的一个特色的功能,它使s7-200 plc可以由用户自己定义通讯协议。利于自由通讯口方式,在本系统中plc可以与变频器和方便连接。plc通过自由通讯口方式与变频器通讯,控制变频器的运行,读取变频器自身的电压、电流、功率、频率和过压、过流、过负荷等全部报警信息等参数,这比通过外部端口控制变频器的运行具有较高的可靠性,节省了plc宝贵的i/o端口,又获的了大量变频器的信息。在本例中,作者将按照danfoss fc协议来对s7-200的自由口进行编程。-
2 变频器的选型-
danfoss vlt系列变频调速器提供串行通讯技术的支持。它所支持的串行通讯技术包括标准rs-485、profidrive、lonworks在内的多种现场总线方式。其中,rs-485通讯方式为用户提供了无需附加任何费用的、最为廉价实用的串行通讯方式。只需按照danfoss vlt变频器规定的通讯数据结构、控制字和状态字格式发送数据即可实现与vlt变频的通讯。vlt为用户提供了两种控制字和状态字格式标准:即danfoss标准的danfoss fc协议和profibus标准的profidrive协议。其中fc协议为用户提供了更多的与vlt有关的控制信息和状态信息。本项目中选用danfoss fc协议。-
S7-200PLC的自由口通信工程应用
S7-200PLC的自由口通信工程应用笫1章S7-200 PLC的自由口通信工程应用本章由浅到深循序渐进地例举了S7-200 PLC自由口通信的三个工程应用实例。
分别从任务描述、任务剖析、解决方案、实施步骤和常见故障及排故方法这五个方面进行了描述。
第一个实例“智能立体车库系统中IC卡的应用”讲述了S7-200 PLC的自由口通信的只读功能实现方法,第二个实例“RFID在AGV(Automated Guided Vehicle)中的应用”讲述了S7-200 PLC的自由口通信的读写功能实现方法,第三个实例“S7-200 PLC在无线通信上的应用”讲述了S7-200 PLC 的自由口通过自定义通信协议实现一对多的无线通信功能。
1.1智能立体车库系统中IC卡的应用1.1.1 任务描述智能立体车库系统要求采用刷卡方式完成车辆自动出入立体车库。
当司机刷卡并设定密码后,卡信息与车辆进行绑定,车辆将自动进入车库相应的车位,当司机想取出车辆时,司机只需刷卡并通过密码验证,系统将自动从车库中寻找该卡对应的车辆并将车取出到车库。
其中控制车辆进出的控制器采用西门子S7 - 200 系列CPU226 型可编程控制器来实现。
1.1.2 任务剖析智能立体车库要求采用刷卡方式作为车辆出入立体车库的凭证,这就要求控制系统能读出卡上的信息,利用卡的信息作为身份识别把卡和车辆绑定起来。
选用在弱电系统中作为门禁或停车场系统使用者身份识别的ID卡就能满足要求。
ID卡全称为身份识别卡(Identification Card),是一种只读的感应卡,每张ID卡有一个全球唯一的芯片编码。
它靠读卡器设备感应供电并读出存储在芯片EEPROM中的唯一卡号,该卡号在封卡前一次写入,封卡后不能更改,该ID卡完全能满足车辆身份识别的要求。
同时S7-200 PLC的自由口通信能实现通过读卡器设备读出卡上信息从而完成车辆身份识别的功能。
1.1.3 解决方案该任务实现的关键是要求S7-200 PLC能读出ID卡的信息,考虑到大多数的ID读卡器设备提供了与电脑直接通信的RS232通信方式,而S7-200 CPU的通信口电气上是标准的RS-485半双工串行通信口,因此硬件上需要通过RS-232到RS485转换器把ID读卡器设备连接到S7-200 CPU的通信口上,由于PC/PPI电缆本质上就是RS-232到RS485的转换,所以也可以通过PC/PPI电缆把ID读卡器设备连接到S7-200 CPU的通信口上。
西门子S7200与变频器MODBUS通讯实例详解
西门子S7200与变频器MODBUS通讯实例详解西门子S7200PLC简介西门子S7-200PLC在实时模式下具有速度快,具有通讯功能和较高的生产力的特点。
一致的模块化设计促进了低性能定制产品的创造和可扩展性的解决方案。
来自西门子的S7- 200微型PLC可以被当作独立的微型PLC解决方案或与其他控制器相结合使用。
Modbus通讯协议简介Modbus是由Modicon(现为施耐德电气公司的一个品牌)在1979年发明的,是全球第一个真正用于工业现场的总线协议。
ModBus网络是一个工业通信系统,由带智能终端的可编程序控制器和计算机通过公用线路或局部专用线路连接而成。
其系统结构既包括硬件、亦包括软件。
它可应用于各种数据采集和过程监控。
ModBus网络只有一个主机,所有通信都由他发出。
网络可支持247个之多的远程从属控制器,但实际所支持的从机数要由所用通信设备决定。
采用这个系统,各PC可以和中心主机交换信息而不影响各PC执行本身的控制任务。
1MODBUSRTU协议在S7-200中的应用原理1.1MODBUSRTU协议与S7-200相互关系简介S7-200CPU上的通讯口Port0可以支持MODBUSRTU协议,成为MODBUSRTU从站。
此功能是通过S7-200的自由口通讯模式实现,因此可以通过无线数据电台等慢速通讯设备传输。
想在S7-200CPU与其他支持MODBUSRTU的设备使用MODBUSRTU协议通讯,需要由有S7-200CPU做MODBUS主站。
S7-200CPU做主站必须由用户自己用自由口模式,按相关协议编程。
2从站指令的用法:S7-200控制系统应用中,MODBUSRTU从站指令库只支持CPU上的通讯0口(Port0)。
要实现MODBUSRTU通讯,需要Step7-Micro/WIN32V3.2以上版本的编程软件,而且须安装Step7-Micro/WIN32V3.2InstructionLibrary(指令库)。
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自由口通讯的多种实现方法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自由口通信
通信要求: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(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-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) '输出监控时间。
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。
超详细讲解PLC自由口通讯——以S7-200为例。
超详细讲解PLC自由口通讯——以S7-200为例。
展开全文主要内容:•S7-200 PLC串口通讯概览•S7-200 PLC自由口通讯基础•S7-200 PLC自由口通讯指令•S7-200 PLC自由口通讯常问问题(1)概览S7-200串口通讯主要包括:1)Modbus—S7-200PLC与支持Modbus RTU协议的第三方设备通讯•RTU Master-Protocol(RTU主站协议)•RTU Slave-Protocol(RTU从站协议)2)USS—S7-200PLC与SIEMENS驱动设备的通讯(如MM440等)3)自由口通讯—S7-200PLC与自由协议的第三方设备间的通讯S7-200系列PLC可以方便地同计算机、打印机、变频器、扫描仪等其它的第三方设备进行无障碍通讯。
Modbus通讯和USS通讯是自由口通讯的特例。
对于S7-200系列的PLC而言,本体上存在着一个或两个485通讯接口,这种接口即可实现S7-200串口通讯的功能,这类串口既可以做编程和监控,也可以做自由口通讯。
但在其运行自由口通讯程序时,无法对其进行监控。
这是因为对于同一个口而言在同一个时刻只能支持一种协议,而编程与下载的协议对于S7-200PLC而言是PPI协议,所以一旦在程序运行过程中使得它做自由口通讯的状态则无法对其监控和下载。
下表是Modbus、USS以及自由口通讯的一些参数:对于OSI七层模型而言,Modbus通讯、USS通讯和自由口通讯所处的位置可从上图中看到。
(2)自由口通讯•S7-200 CPU的通信口可以设置为自由口模式。
选择自由口模式后,用户程序就可以完全控制通信端口的控制,通信协议也完全受用户程序控制。
•所谓的自由口通讯,就是通讯协议是由用户自由定义的。
•对于S7-200 PLC而言,基于本体自带的485端口的网络所应用的协议,除了PPI协议以外,其他都是自由口协议。
例如USS协议、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 口有效。
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)的使用方法详见软件操作说明里面的具体图片。
plc(s7-200)通过自由通讯口方式与变频器通讯(vlt)
PLC(S7-200)通过自由通讯口方式与变频器通讯(VLT)1 引言在传统的PLC——变频控制集成系统中,变频器的启动/停止与故障监控由PLC通过开关量实现端对端控制。
变频器频率是由PLC通过模拟量输出端口输出0~5(10)V或4~20mA信号控制,需要PLC配置昂贵的模拟量输出端口模块。
变频器出现故障时由PLC 读取变频器的故障报警触点,对具体故障原因并不清楚,需查询变频器报警信息后再阅读变频器说明书才知道。
随着交流变频控制系统及通讯技术的发展,可以利用PLC及变频器的串行通讯的方式来实现PLC对变频器的控制。
2 变频器的选型DANFOSS-VLT系列变频调速器提供串行通讯技术的支持。
它所支持的串行通讯技术包括标准RS-485、PROFIDRIVE、LONWORKS在内的多种现场总线方式。
其中,RS-485通讯方式为用户提供了无需附加任何费用的、最为廉价实用的串行通讯方式。
只需按照DANFOSSVLT变频器规定的通讯数据结构、控制字和状态字格式发送数据即可实现与VLT变频的通讯。
VLT为用户提供了两种控制字和状态字格式标准:即DANFOSS标准的DANFOSS-FC 协议和PROFIBUS标准的PROFIDRIVE协议。
其中FC协议为用户提供了更多的与VLT 有关的控制信息和状态信息。
本项目中选用DANFOSS-FC协议。
3 PLC的选型西门子工控产品在工控领域应用市场中有较高的占有率。
S7-200系列是西门子SIMATIC-PLC家族中的小规模PLC成员,自由通讯口方式是S7-200 PLC的一个特色的功能,它使S7-200PLC可以由用户自己定义通讯协议。
利于自由通讯口方式,在本系统中PLC可以与变频器和方便连接。
PLC通过自由通讯口方式与变频器通讯,控制变频器的运行,读取变频器自身的电压、电流、功率、频率和过压、过流、过负荷等全部报警信息等参数,这比通过外部端口控制变频器的运行具有较高的可靠性,节省了PLC宝贵的I/O端口,又获的了大量变频器的信息。
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 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-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-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-200自由口通信ppt课件
• XMT 指令的缓冲区格式如下表所示:
S7-200
Hardware Software Workshop
设置阐明
• 任务方式定义
• XMT 指令
• RCV 指令
12
S7-200
Hardware Software Workshop
• RCV 指令的缓冲区格式如下表所示:
S7-200
Hardware Software Workshop
S7-200 自在口通讯
提纲
• 概述
• 设置阐明 • 任务方式定义 • XMT 指令 • RCV 指令
• 编程例如 • 自在口发送例如 • 自在口接纳例如
14
S7-200
Hardware Software Workshop
Q0.7
Q1.0 Q1.1
CPU 214
第三方PLC
条码阅读
S7-200
Hardware Software Workshop
概述
• 补充阐明:
• 〔1〕由于 S7-200 CPU 通讯端口是半双工通讯口,所以发送和接受 不能同时进展。
• 〔2〕S7-200 CPU 通讯口处于自在口方式下时,该通讯口不能同时任 务在其他通讯方式下。如不能端口1在进展自在口通讯时,又运用端 口1进展 PPI 编程。
RCV 指令
• RCV 指令可以从 S7-200 CPU 的通讯口接纳一个或多个数据字节,接 纳到的数据字节将被保管在接纳数据缓冲区内。
• RCV 指令完成后,会产生一个中断事件〔 Port 0为中断事件23, Port1 为中断事件24〕。特殊存放器 SMB86 和 SMB186 那么分别提 供Port0 和 Port1 的接纳信息形状字节。
西门子S7200与变频器MODBUS通讯实例详解
西门子S7200与变频器MODBUS通讯实例详解西门子S7200PLC简介西门子S7-200PLC在实时模式下具有速度快,具有通讯功能和较高的生产力的特点。
一致的模块化设计促进了低性能定制产品的创造和可扩展性的解决方案。
来自西门子的S7- 200微型PLC可以被当作独立的微型PLC解决方案或与其他控制器相结合使用。
Modbus通讯协议简介Modbus是由Modicon(现为施耐德电气公司的一个品牌)在1979年发明的,是全球第一个真正用于工业现场的总线协议。
ModBus网络是一个工业通信系统,由带智能终端的可编程序控制器和计算机通过公用线路或局部专用线路连接而成。
其系统结构既包括硬件、亦包括软件。
它可应用于各种数据采集和过程监控。
ModBus网络只有一个主机,所有通信都由他发出。
网络可支持247个之多的远程从属控制器,但实际所支持的从机数要由所用通信设备决定。
采用这个系统,各PC可以和中心主机交换信息而不影响各PC执行本身的控制任务。
1MODBUSRTU协议在S7-200中的应用原理1.1MODBUSRTU协议与S7-200相互关系简介S7-200CPU上的通讯口Port0可以支持MODBUSRTU协议,成为MODBUSRTU从站。
此功能是通过S7-200的自由口通讯模式实现,因此可以通过无线数据电台等慢速通讯设备传输。
想在S7-200CPU与其他支持MODBUSRTU的设备使用MODBUSRTU协议通讯,需要由有S7-200CPU做MODBUS主站。
S7-200CPU做主站必须由用户自己用自由口模式,按相关协议编程。
2从站指令的用法:S7-200控制系统应用中,MODBUSRTU从站指令库只支持CPU上的通讯0口(Port0)。
要实现MODBUSRTU通讯,需要Step7-Micro/WIN32V3.2以上版本的编程软件,而且须安装Step7-Micro/WIN32V3.2InstructionLibrary(指令库)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
PLC 和变频器博客原创() 5
PLC 和变频器博客原创()
图 5:接收有关寄存器 说明: 1、SMB86/SMB186:接收终止状态信息寄存器,含有接收终止原因的信息; 2、SMB88/SMB188:信息起始位字节(如发送的信息有起始位,将把此寄存 器的内容和接受信息的每一字节相比较来,检测确认后续字节是否是信息。因此, 在编程时,需要在通讯初始化时,把信息启动位字节传入 SMB88 或 SMB188); 3、SMB89/SMB189:信息停止位字节(如发送的信息有停止位,将把此寄存 器的内容和接受信息的每一字节相比较来,检测确认信息是否已传送完毕。因此, 在编程时,需要在通讯初始化时,把信息启动位字节传入 SMB89 或 SMB189); 4、SMB90/SMB190:信息空闲状态的时间(ms),空闲线时间后接受的第一 个字节是信息的开始; 5、SMB94/SMB194:接受的最大字符数(1~255)。
三、编程步骤 1、利用 SM0.1 初始化通讯参数。 ● 使用 SMB30(口 0)或 SMB130(口 1)选择自由口通讯模式,并选 定自由口通讯的波特率,数据位数和校验方式。 ● 定义通讯口接收格式 SMB87(口 0)或 SMB187(口 1)。包括启动 信息接收(第 7 位=1),是否有起始位(第 6 位),是否有结束位(第 5 位)以及是否检测空闲状态(第 4 位)等。 ● 设定起始位(SMB88 或 SMB188)或结束位(SMB89 或 SMB189)、空 闲时间信息(SMB90 或 SMB190)及接收的最大字符数(SMB94 或 SMB194)。 ● 如利用中断,连接接收完(事件 23)和发送完(事件 9)中断到
多个字节的数据,最多为 255 个。发送完最后一个字符后还可以连接 到一个发送完中断(端口 0 为 9,端口 1 位 26,见下表)。
图 2:中断事件表
2
PLC 和变频器博客原创()
发送缓冲区的格式如下表所示:
图 3:发送缓冲区的格式 说明: T+0:发送信息的字节个数需要提前定义。 T+1~T+255:要发送的数据字节
图 4:接收缓冲区的格式 说明: T+0:接收字符计数,在接收到结束字符时自动清零 T+1:起始字符,在 SMB88(口 0)或 SMB188(口 1)中定义 T+2~T+244:接收到的数据字节 T+255:结束字符,在 SMB89(口 0)或 SMB189(口 1)中定义
和接收有关的寄存器及定义如下表所示:
图 1:通讯口工作模式寄存器
使用自有口通讯,SM30.0 和 SM30.1(SM130.0 和 SM130.1=0) 必须分别为 1 和 0。 一、 发送指令(XMT)
使用 XMT 发送指令可以把存于缓冲区中的数据,一次发送一个或
1
PLC 和变频器博客原创()
把要发送的数据传送到发送区,一般包括:发送的字节数,发送 的数据及结束字符,最后再利用 XMT 指令启动发送。 4、编写发送完中断和接收完中断子程序 ● 发送完中断子程序的主要任务是发送完后断开 SMB34 定时中断, 并利用 RCV 指令准备接收数据。 ● 接收完中断子程序的任务是接收数据完成后重新连接 SMB34 的定 时中断,准备发送数据。 四、例程
6
PLC 和变频器博客原创()
中断程序,并且开中断(ENI)。 ● 一般还要利用 SMB34 定义一个定时中断,来定时发送数据(一般 为 50ms,即间隔发送数据的时间)。 2、编写主程序
自由口通讯主程序的任务是把要发送的数据放到送区,并接收数 据到接收区,当然此部分也可以用一个子程序来完成。 3、编写 SMB34 的定时中断程序
初始化子程序(initialize):
9
PLC 和变频器博客原创() 10
PLC 和变频器博客原创()
甲机星角运行子程序(XingJiao)
11
Hale Waihona Puke PLC 和变频器博客原创()
本例的主要作用是利用甲机控制乙机的电机星-角起动,乙机控 制甲机的电机星-角起动。I/O 分配如下所示:
发送和接收数据缓冲区的分配如下所示:
7
PLC 和变频器博客原创()
甲机(2 号站)程序梯形图: 主程序:
8
PLC 和变频器博客原创()
使用接收指令(RCV)可以从端口 0 或 1 接收一个或多个字节的 数据(最多 255 个),并存于数据缓冲区。接收完最后一个字节后可 以连接到一个接收完中断(口 0 是 23,口 1 是 24,见图 2 所示)。
接收缓冲区的格式如下表所示:
3
PLC 和变频器博客原创()
中断程序 0(50ms 间隔发送程序)
12
PLC 和变频器博客原创()
中断程序 1(发送完中断)
中断程序 2(接收完中断) 乙机(3 号站)的程序和甲机类似,只要在编程过程中注意发送
和接收区和甲机的对应就可以了,不再缀述。
13
PLC 和变频器博客原创()
S7-200 通讯的编程步骤---自由口通讯
S7-200 自由口通讯是基于 RS485 通讯基础的半双工通讯,因此, 发送和接收指令不能同时执行。
自由口通讯使用 SMB30(口 0)和 SMB130(口 1)来定义通讯口 的工作模式。SMB30/SMB130 各位的定义如下:
和 XMT 有关的寄存器:SMB4 的 SM4.5 和 SM4.6。SM4.5=1 时,口 0 发送完毕;SM4.6=1 时,口 1 发送完毕。
由以上可以看出,有两种方法可以检测端口 0 或 1 的数据发送 状态:一种是利用中断,一种是利用寄存器 SMB4 的第 5 位(口 0) 和第 6 位(口 1)。 二、 接收指令(RCV)