S7200自由口模式下PLC与计算机的通信
- 格式:doc
- 大小:39.50 KB
- 文档页数:17
s7200 plc网口通讯S7200 PLC的以太网通信技术是现代工业自动化领域的重要组成部分。
以太网通信具有高效、可靠、灵活等优点,使得S7200 PLC成为工业控制系统中不可或缺的一部分。
本文将探讨S7200 PLC网口通信的原理、应用以及未来的发展趋势。
1. S7200 PLC网口通信的原理S7200 PLC的以太网通信采用基于TCP/IP协议的通信方式。
TCP/IP协议是一种通用的协议,可以在不同的网络中实现通信。
S7200 PLC通过网口与其他设备(如PC、HMI等)建立连接,通过TCP/IP协议进行数据传输。
网口通信可以实现实时的数据交换,使得工业控制系统的监控和控制更加灵活和高效。
2. S7200 PLC网口通信的应用S7200 PLC网口通信广泛应用于各个领域的工业控制系统中。
以太网通信可以连接多个PLC或其他设备,实现设备之间的数据交换和信息共享。
例如,在工厂的生产线上,各个PLC可以通过网口通信实现各个工位之间的协调和数据传输。
此外,通过网口通信还可以远程监控和远程控制PLC,为设备的运维和维修提供了便利。
3. S7200 PLC网口通信的发展趋势随着工业自动化的不断发展,S7200 PLC网口通信技术也在不断演进和创新。
未来,S7200 PLC的网口通信将面临以下几个发展趋势:3.1 高速通信:随着工业控制系统的复杂性增加,对通信速度的要求也越来越高。
S7200 PLC的网口通信需要提供更高的传输速率,以满足实时性和快速响应的需求。
3.2 安全保障:在工业控制系统中,数据的安全性至关重要。
S7200 PLC的网口通信需要加强对数据的加密和防护,以保护机密信息不受到非法访问和篡改。
3.3 云平台集成:随着云计算技术的快速发展,将S7200 PLC 的网口通信与云平台集成将成为一个重要的趋势。
通过将PLC的数据上传到云平台,可以实现跨地域的数据管理和分析,提高生产效率和优化资源利用。
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-200PLC自由口串行通信应用作者:戚博硕孙佳阳来源:《中国新通信》2014年第15期【摘要】 S7- 200PLC是西门子公司开发的具有高性价比的微型可编程控制器,该控制系统具有配置灵活、可靠性高、结构开放、控制能力强、体积小、抗干扰能力强等优点,被广泛应用于工业控制领域。
本文以西门子S7- 200PLC为例,对西门子S7- 200PLC自由口串行通信模式进行了详细的阐述,并分析了自由口串行通信实现的方式。
【关键词】西门子S7- 200PLC 自由口串行通信通信模式德国西门子公司生产的S7系列的可编程控制器就是为了满足人们对工业控制的要求生产出来的。
该系列包括用于小型化控制系统的S7-200PLC、用于控制中型系统的S7—300PLC及用于控制大型系统的S7-400PLC。
其中,S7-200PLC是集电源、CPU及I/O于一体的集成型小型单元式PLC。
其具有非常丰富的功能配置以及优秀的通信能力,用户操作起来非常容易上手,系统工作的稳定性和可靠性非常强,目前已经在相关领域中取得了巨大的成功。
因此,本文以西门子S7-200PLC为例,对西门子S7-200PLC自由口串行通信模式进行了详细的阐述,并分析了自由口串行通信实现的方式,对人们了解西门子S7-200PLC自由口串行通信具有一定作用。
一、自由口通信模式概述西门子S7-200PLC的通信端口有PPI模式和自由口模式这两种常用的通信模式。
其中PPI 模式通信协议是西门子公司根据S7-200PLC的特点专门开发的,一般情况下只对西门子内部生产的产品使用。
与PPI模式完全不同的是自由口模式,它完全对外开放,在这种模式下,用户可以根据自己的需要对通信协议进行定义。
目前,许多公司使用的第三方设备都支持自由口通信模式。
西门子S7-200PLC可以通过选择自由口通信模式的方式达到控制串口通信的目的。
而且,利用自由口通信模式可以使计算机与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自由口模式下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 PLC自由口的串行通信
古亮;李山;刘伟
【期刊名称】《商情》
【年(卷),期】2012(0)39
【摘要】PLC大量应用于工业控制.采用上位计算机对PLC监控的方法,可以充分发挥PC机和PLC各自的强大优势.然而教材和有关资料中涉及通讯的内容很少,配套组态软件不但成本很高、不灵活,而且不透明、学生容易产生畏惧感.为了打消学生的畏惧心理,介绍了计算机与S7- 200 PLC在自由口模式下串行通信的实现方法,并给出了在此种模式下PLC的程序与VB可视化界面的编程实例.这培养了他们学习的兴趣,还为学生毕业后的创业做了一定的准备.
【总页数】2页(P248-249)
【作者】古亮;李山;刘伟
【作者单位】重庆理工大学,重庆400054;重庆理工大学,重庆400054;重庆理工大学,重庆400054
【正文语种】中文
【相关文献】
1.西门子S7-200 PLC与计算机自由口通信的研究 [J], 刘乐;王长松;王兴兵
2.SIEMENS S7-200 CPU 226XM PLC与计算机自由口通信的研究 [J], 常若葵;杨洁明;张旺林;李建民;武雪燕
3.基于自由口模式实现S7-200系列PLC与PC机串行通信 [J], 马启青;刘志强;韩建武;耿宇涛;孙克俭
4.基于自由口模式实现S7-200系列PLC与PC机无线串行通信 [J], 黄红
5.S7-200系列PLC与IPC机自由口模式串行通信 [J], 徐光宪;刘建辉;李敏
因版权原因,仅展示原文概要,查看原文内容请购买。
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与任何已知协议的智能仪器设备通信。
.NET的计算机与S7-200 PLC自由口通信PLC作为一种高效、灵活、可靠的控制器,已经广泛地应用在包括数字逻辑控制、运动控制、闭环过程控制、数据处理和联网通信等工业控制领域。
在联网通信方面,PLC与上位计算机设备一起,可以组成“集中管理、分散控制”的分布式工业控制系统。
在这种控制系统中,PLC与上位机的通信对系统整体性能有着较大的影响。
面对众多厂家不同类型的PLC,它们在功能编程上没有统一的标准而且在通信协议上也是千差万别,选择一种即能满足通信要求又经济实用的通信协议是非常关键的。
本文以S7-200PLC为对象,详细研究了S7-200PLC在自由端口模式下与PC之间的通信方法,并采用.net环境下的C#语言编写通信程序实现了计算机与PLC之间的通信。
这种通信方式硬件投入低,通信协议灵活,可以在多个工业控制领域得到广泛的应用。
1 S7-200 PLC与上位机的通信方式S7-200 系列PLC与上位机进行通信主要有以下几种方式:(1)通过S7-200 PLC的OPC服务器(pc access)作为上位机的OPC服务器,这种方式只须在OPC服务器中配置相应的测点数据,编程简单,但通信速率不高,用户不能自由修改通信协议;(2)利用触摸屏,这种方式需要根据触摸屏兼容的通信协议进行选择,通信可靠性高,但灵活性差,触摸屏界面编程功能也不够强大;(3)利用通用编程软件实现,这种方法虽然系统开发工作量大,对技术人员的水平和经验都要求较高,但编程灵活,可以实现比较复杂的功能。
本文采用了第三种通信方式,在开发通信软件时考虑了S7-200 PLC所特有的一种通信方式—自由口通信模式。
在自由口模式下用户可自定义协议,利用串口和PLC的通信口来收发数据,通信功能完全由用户程序控制,通信任务和信息定义均需由用户编程实现,通过调用子程序来进行接收中断、发送中断、发送指令(XMT)、接收指令(RCV)等通信控制操作。
2 自由口通讯工作模式的定义在中小规模系统,通信速率要求不是特别高的情况下,S7-200 PLC自带的编程口可以作为通信口使用。
S7200自由口模式下PLC与计算机的通信作者:F.X. 发布会员:admin 版权:原创发表日期:2008-5-24 阅读:424次概述----本例说明如何以自由协议实现计算机与S7-200的通信,计算机作为主站,可以实现对PLC从站各寄存器的读/写操作。
----计算机通过COM口发送指令到PLC的PORT0(或PORT1)口,PLC通过RCV接收指令,然后对指令进行译码,译码后调用相应的读/写子程序实现指令要求的操作,并返回指令执行的状态信息。
通信协议----在自由口模式下,通信协议是由用户定义的。
用户可以用梯形图程序调用接收中断、发送中断、发送指令(XMT)、接受指令(RCV)来控制通信操作。
在自由口模式下,通信协议完全由梯形图程序控制。
指令格式定义计算机每次发送一个33字节长的指令来实现一次读/写操作,指令格式见表1 说明:起始字符----起始字符标志着指令的开始,在本例中被定义为ASCII码的"g",不同的PLC从站可以定义不同的起始字符以接收真对该PLC的指令。
指令类型----该字节用来标志指令的类型,在本例中05H代表读操作,06H代表写操作。
目标PLC站地址----目标PLC站地址占用指令的B2、B3两个字节,以十六进制ASCII码的格式表示目标PLC的站地址。
目标寄存器地址----在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"。
同理,如果要写入5个字节的数据,M中应写入"0A"。
要写入的数据----要写入的数据在指令中以十六进制ASCII码的格式表示,占用指令的B14-B29共16个字节。
数据区必须填满,但只有前M个字节的数据会被写入目标寄存器。
一条指令最多可以写入8个字节的数据(此时M 中应写入"10",代表十进制的16)BCC校验码----在传输过程中,指令有可能受到任何的干扰而使原来的数据信号发生扭曲,此时的指令当然是错误的,为了侦测指令在传输过程中发生的错误,接收方必须对指令作进一步的确认工作,以防止错误的指令被执行,最简单的方法就是使用校验码。
BCC校验码的方法就是将要传送的字符串的ASCII码以字节为单位作异或和,并将此异或和作为指令的一部分传送出去;同样地,接收方在接到指令后,以相同的方式对接收到的字符串作异或和,并与传送方所送过来的值作对比,若其值相等,则代表接收到的指令是正确的,反之则是错误的。
----在本例中,bcc为指令B1到B29的异或和,BCC为bcc的十六进制ASCII码。
----bcc=B1 xor B2 xor B3 xor B4 xor …… xor B29结束字符----结束字符标志着指令的结束,在本例中被定义为ASCII码的"G",不同的PLC从站可以定义不同的结束字符以接收真对该PLC的指令。
PLC在接到上位机指令后,将发送一个21字节长反馈信息,格式见表2说明:起始字符----起始字符标志着反馈信息的开始,在本例中被定义为ASCII码的"g",不同的PLC从站可以定义不同的起始字符,这样上位机可以根据信息的起始字符来判断反馈信息的来源。
状态信息----该字节包含指令执行的状态信息,在本例中01H 代表读取正确02H 代表写入正确03H 代表BCC校验码错误04H 代表指令不合法数据区----反馈信息的B3到B18为读指令所要读取的数据,以十六进制ASCII码表示。
BCC校验码----与上位机指令中的BCC校验码类似,它是反馈信息B3到B18的异或和。
结束字符----结束字符标志着反馈信息的结束,在本例中被定义为26H。
指令中为何要使用ASCII码----一条指令除包含数据外,还包含必要的控制字(起始字符、结束字符、指令类型等)。
如果指令中的数据直接以其原本的形式传输,则不可避免的会与指令中的控制字发生混淆。
----例如本例中,指令的起始字符为"g",其ASCII码值为67H,结束字符为"G",其ASCII码值为47H。
假设要写入的数据中也有47H,并且数据直接以其原本的形式传输,则PLC会因为接收到了数据中的47H而停止接收,这样PLC接收到的指令将是一个不完整的非法指令,很可能造成PLC的误动作。
----为了避免这种情况的发生,可以用文本来传送二进制数据。
通过以16进制ASCII码的格式描述数据,每个二进制的字节都可以表示成一对ASCII编码,这对编码表示这个字节的两个16进制字符。
这种格式可以表示任何的数值,仅仅使用ASCII代码的30H到39H(表示0到9)和41H到46H(表示A到F)。
A SCII码的其余部分可以用作控制字(起始标志、结束标志、指令类型等)。
这样,数据中的47H以ASCII 码的形式进行传送就变成了34H 37H 两个字节,从而避免了PLC因接收到数据中的47H而停止接收的错误。
表1 上位机指令格式Byte0 起始字符Byte1 指令类型(读/写)Byte2 目标PLC站地址(十六进制ASCII码)Byte3Byte4 目标寄存器地址(十六进制ASCII码)Byte5Byte6Byte7Byte8Byte9Byte10Byte11Byte12 读/写字节数M(十六进制ASCII码)Byte13Byte14 要写入的数据(十六进制ASCII码)Byte15Byte16Byte17Byte18Byte19Byte20Byte21Byte22Byte23Byte24Byte25Byte26Byte27Byte28Byte29Byte30 BCC校验码(十六进制ASCII码)Byte31Byte32 结束字符表2 反馈信息格式Byte0 起始字符Byte1 状态信息Byte2 数据区(十六进制ASCII码)Byte3Byte4Byte5Byte6Byte7Byte8Byte9Byte10Byte11Byte12Byte13Byte14Byte15Byte16Byte17Byte18 BCC校验码(十六进制ASCII码)Byte19Byte20 结束字符PLC程序执行过程----PLC在第一次扫描时执行初始化子程序,对端口及RCV指令进行初始化。
初始化完成后,运行RCV指令使端口处于接受状态。
----RCV会将以"g"开头"G"结尾的指令保存到接收缓冲区,并同时产生接收完成中断。
----RCVcomplete中断服务程序用来处理接收完成中断事件,它会将接收缓冲区中的十六进制ASCII码还原成数据并保存,同时置位Verify子程序的触发条件(M0.1)。
----Verify子程序首先复位本身的触发条件以防止子程序被重复调用,然后求出接收缓冲区中指令的BCC校验码并与指令中的BCC校验码进行比对。
如果相等则置BCC码校验正确的标志位(M0.0)为1;如果指令格式正确(指令的结束标志在接收缓冲区中特定的位置VB133)而BCC码不相等,则发送代表BCC校验码错误的反馈信息;如果指令格式不正确(VB133中不是指令的结束标志),则返回代表指令格式错误的反馈信息。
----Read子程序的触发条件为:指令中的站地址与本机站地址相符、指令类型为读指令、BCC检验码正确。
当条件满足时,Read子程序被执行。
Read子程序首先禁止RCV,然后将指令所要读取的数据转换成十六进制ASCII码并写入发送缓冲区、计算BCC检验码、最后发送反馈信息。
----Write子程序的触发条件为:指令中的站地址与本机站地址相符、指令类型为写指令、BCC检验码正确。
当条件满足时,Write子程序被执行。
Write子程序首先禁止RCV,然后将指令中的数据写入目标寄存器,最后发送代表写入正确的反馈信息。
----PLC每接到一条指令后都会发送一条反馈信息,当反馈信息发送完成时,会产生发送完成中断,XMTc omplete中断服务程序用来处理发送完成中断事件。
在XMTcomplete中断服务程序中所要执行的操作包括:复位BCC校验码正确的标志位(M0.0);允许RCV;bcc码寄存器清零;重新装入用于计算BCC校验码的地址指针;接收缓冲区中存放指令结束字符的字节VB133清零(用来判断下一条指令格式是否正确)。
PLC寄存器地址分配----此程序占用PLC寄存器的VB100-VB199,内部继电器占用M0.0和M0.1。
寄存器地址分配见表3、表4、表5、表6。
表3 接收缓冲区VB100 字符数VB101 起始字符Byte0VB102 指令类型(读/写)Byte1VB103 目标PLC站地址(十六进制ASCII码)Byte2 VB104 Byte3VB105 目标寄存器地址(十六进制ASCII码)Byte4 VB106 Byte5VB107 Byte6VB108 Byte7VB109 Byte8VB110 Byte9VB111 Byte10VB112 Byte11VB113 读/写字节数M(十六进制ASCII码)Byte12 VB114 Byte13VB115 要写入的数据(十六进制ASCII码)Byte14 VB116 Byte15VB117 Byte16VB118 Byte17VB119 Byte18VB120 Byte19VB121 Byte20VB122 Byte21VB123 Byte22VB124 Byte23VB125 Byte24VB126 Byte25VB127 Byte26VB128 Byte27VB129 Byte28VB130 Byte29VB131 BCC校验码(十六进制ASCII码)Byte30 VB132 Byte31VB133 结束字符Byte32表4 译码区VB134 PLC站号(ATH from VB103-VB104)VB135 合成为VD135作为目标寄存器的地址指针(ATH from VB105-VB112)VB136VB137VB138VB139 读/写字节数(ATH from VB113-VB114)VB140 bcc码(ATH from VB131-VB132)VB141 未使用VB142VB143VB144VB145VB146VB147VB148VB149 和成为VD149作为VB102的地址指针用以计算BCC校验码VB150VB151VB152表5 发送缓冲区VB153 字符数VB154 起始字符Byte0VB155 状态信息Byte1VB156 数据区(十六进制ASCII码)Byte2VB157 Byte3VB158 Byte4VB159 Byte5VB160 Byte6VB161 Byte7VB162 Byte8VB163 Byte9VB164 Byte10VB165 Byte11VB166 Byte12VB167 Byte13VB168 Byte14VB169 Byte15VB170 Byte16VB171 Byte17VB172 BCC校验码(十六进制ASCII码)Byte18 VB173 Byte19VB174 结束字符Byte20表6 其它VB175 合成为VW175作为接收时计算bcc码循环的INDXVB176VB177 合成为VW177作为发送时计算bcc码循环的INDXVB178VB179 接收数据的bcc码VB180 发送数据的bcc码VB181 合成为VD181作为VB156的地址指针(计算发送反馈信息的bcc码时使用)VB182VB183VB184VB185至VB198 未使用VB199 本机站号程序清单主程序:NETWORK 1LD SM0.1 //第一次扫描调用初始化子程序CALL initializeNETWORK 2LDB= VB134, VB199 //指令中的站地址与本机站地址相符AB= VB102, 5 //指令类型为读指令A M0.0 //BCC码校验正确CALL Read //调用读子程序NETWORK 3LDB= VB134, VB199 //指令中的站地址与本机站地址相符AB= VB102, 6 //指令类型为写指令A M0.0 //BCC码校验正确CALL Write //调用写子程序NETWORK 4LD M0.1 //指令接收完成后调用BCC码校验子程序CALL VerifyNETWORK 5LD SM4.5 //当端口空闲时启动RCVRCV VB100, 0Read子程序:NETWORK 1LD SM0.0 //停止端口0的接收R SM87.7, 1R M0.0, 1RCV VB100, 0NETWORK 2LD SM0.0 //将数据写入发送缓冲区MOVB 103, VB154MOVB 1, VB155HTA *VD135, VB156, 16MOVB 26, VB174MOVB 21, VB153NETWORK 3LD SM0.0 //计算BCC校验码FOR VW177, +1, +16NETWORK 4LD SM0.0XORB *VD181, VB180NETWORK 5LD SM0.0INCD VD181NETWORK 6NEXTNETWORK 7LD SM0.0HTA VB180, VB172, 2 //BCC校验码写入发送缓冲区NETWORK 8LD SM4.5 //发送反馈信息XMT VB153, 0Write子程序:NETWORK 1LD SM0.0 //停止端口0的接收R SM87.7, 1R M0.0, 1RCV VB100, 0NETWORK 2LD SM0.0 //装入要写如数据源的地址指针MOVD &VB115, VD145NETWORK 3LD SM0.0 //写入数据ATH *VD145, *VD135, VB139NETWORK 4LD SM0.0 //指令执行的反馈信息写入发送缓冲区MOVB 21, VB153MOVB 103, VB154MOVB 2, VB155MOVB 26, VB174NETWORK 5LD SM4.5 //发送指令执行的反馈信息XMT VB153, 0Verify子程序:NETWORK 1LD SM0.0R M0.1, 1 //复位verify子程序的执行条件NETWORK 2LD SM0.0 //计算BCC码FOR VW175, +1, +29NETWORK 3LD SM0.0XORB *VD149, VB179NETWORK 4LD SM0.0INCD VD149NETWORK 5NEXTNETWORK 6LDB= VB179, VB140 //当BCC码校验正确时,M0.0置1AB= VB133, 71S M0.0, 1NETWORK 7LDB= VB133, 71 //BCC码错误时发送反馈信息AB<> VB179, VB140MOVB 21, VB153MOVB 103, VB154MOVB 3, VB155MOVB 26, VB174R SM87.7, 1RCV VB100, 0XMT VB153, 0NETWORK 8LDB<> VB133, 71 //指令格式错误或RCV超时时发送反馈信息MOVB 21, VB153MOVB 103, VB154MOVB 4, VB155MOVB 26, VB174R SM87.7, 1RCV VB100, 0XMT VB153, 0Initialize子程序:NETWORK 1LD SM0.0MOVB 9, SMB30 //0口"9600,N,8,1"NETWORK 2LD SM0.0 //RCV指令初始化MOVB 16#EC, SMB87MOVB 103, SMB88MOVB 71, SMB89MOVB +1000, SMW92MOVB 35, SMB94R SM87.2, 1NETWORK 3LD SM0.0ATCH RCVcomplete, 23 //连接口0接收完成的中断NETWORK 4LD SM0.0ATCH XMTcomplete, 9 //连接口0发送完成的中断NETWORK 5LD SM0.0ENI //中断允许NETWORK 6LD SM0.0MOVB 2, VB199 //将本机站地址装入寄存器NETWORK 7LD SM0.0MOVB &VB102, VD149 //装入地址指针MOVB 0, VB179 //BCC码寄存器清零MOVB &VB156, VD181 //装入地址指针MOVB 0, VB180 //BCC码寄存器清零RCVcomplete中断程序NETWORK 1LD SM0.0ATH VB103, VB134, 2 //指令译码(ASCII码到十六进制)ATH VB105, VB135, 8ATH VB113, VB139, 2ATH VB131, VB140, 2S M0.1, 1 //置位Verify子程序的触发条件MOVB 0, VB179 //BCC码寄存器清零MOVD &VB102, VD149 //装入地址指针XMTcomplete中断程序NETWORK 1LD SM0.0R M0.0, 1 //复位BCC校验码正确的标志位S SM87.7, 1 //允许口0进行接收MOVB 0, VB179 //BCC校验码寄存器清零MOVB 0, VB180 //BCC校验码寄存器清零MOVD &VB102, VD149 //重新装入地址指针MOVD &VB156, VD181MOVB 0, VB133 //接收缓冲区中存放指令结束字符的字节清零。