产品规格模块式包装说明全新
长春西门子中国代理商电源供应商
引言
西门子工控产品在我国有较高的市场占有率,它的通信及网络产品有着引导世界工控技术潮流的作用,研究西门子工控产品及通信技术的实际应用问题有着广泛普遍的重要意义。本文通过对某市级公司的配送分拣系统的研究,探讨了在bbbbbbs环境下,用Delphi开发的数据库应用软件与西门子S7-300之间通信的实现问题。该配送分拣系统计算机部分结构如图1所示。
PLC
该系统管理计算机接收信息局域网发送来的各条送货线路当天的访销信息数据,在此基础上管理计算机建立起以送货线路为单位的配方数据库,将配方数据分批次连续地下传给PLC。PLC 根据下传的配方数据对系统控制使其连续分拣和收集,同时系统工作状态及工作数据通过PROFIBUS 现场总线在两个触摸屏TP27-10得到动态显示,后在收集工位自动得到一箱对应一个销售网点的用户配料。为了提高调系统试效率,我们在DELPHI和Microsoft Access数据库平台上编写了用于PLC控制程序的调试软件。
从上看出该系统能否研制成功要解决的问题是:西门子S7-300系列PLC通讯协议不公开,管理计算机和调试计算机上三方软件编制的程序如何实现PC机与西门子S7-300系列PLC信息交换?通过技术调研和实际调试,我们成功实现了在VB、DELPHI程序开发平台上开发的管理程序及调试程序与S7-300系列PLC通信,顺利完成了系统研制任务。限于篇幅,本文以调试软件的通信实现方法来讨论三方应用软件与西门子S7-300 PLC的通信问题。
2调试软件设计
根据PLC控制程序的调试要求,该调试软件使用DELPHI的数据库技术把事先设计的60个配方数据写入数据库,根据调试需要也可通过人机界面对数据库中的数据进行任意修改,当执行“下传数据”命令时把数据库中的数据字段进行一定数据处理后通过调用PRODAVE S7软件包写入PLC中对应的DB(DATA BLOCKS)块,其中一条记录对应一个DB块,每条记录的一个字段对应该DB块中的一个字。该调试软件也可按一定顺序读PLC中各DB块中的字,并把读取的数据经过处理后写入数据库,以供调试人员检查写入数据的正确性。PC机与PLC CPU318-2DP MPI口之间的数据通信是通过PC/MPI适配器硬件连接实现的。
3.1 通信软件
实现PC机与PLC之间的数据通信是一个棘手的问题。西门子公司的PRODAVE S7软件包的动态链接库(DLL)提供了大量的基于bbbbbbs NT,bbbbbbs95/98,bbbbbbs3.11或MS-DOS的函数,这样就使用户解决PLC与PC之间的数据交换和数据处理问题变为可能。
3.2 通信函数
在DELPHI的bbbbbb Pascal语言中,要访问动态链接库DLL(Dynamic bbbb Library)中的例程有两种方式。一种是静态引入方式;另一种是动态引入方式。
本软件使用静态引入方式,即在单元的Interface部分用External指示字列出要从DLL中引入的例程。如果要引入的例程比较多,就可以用一个专门的单元来集中声明要引入的例程。
PLC控制程序调试软件用到的PRODAVE函数主要有:
(1)load_tool PC机与PLC系统初始化链接;
(2)unload_tool 断开PC机与PLC系统链接;
(3)db_read 从PLC的DB块中读数据字;
(4)db_write 向PLC的DB块中写数据字。
S7PLC之间进行以太网通讯,S7、TCP、ISO、ISO-on-TCP等传输协议,哪些通讯设置一定要设置、IP、TSAP等参数,或者说这些传输协议分别需要设置哪些参数,而其他参数不需要设置,为什么?
问题:先回答问题,同时提问。
关于协议通讯,我认为速度由快到慢应该是profinet(对TCP堆栈结构进行了处理)、ISO、UDP、TCP、ISO on TCP、 S7。这里我有问题提问:我把ISO放到TCP前,是源自我对基于寻址的ISO速度比基于IP寻址的TCP要快的感觉。
接下来还有一些问题:
1.你说“它加载在ISO和ISO on TCP上,位于ISO/OSI的7层。进行S7连接时很有意思,它的封装了它的复杂性。”使我理解了做S7通讯时,TCP/IP那个勾打不打是有区别的,打了就是ISO on TCP,不打就是ISO,这曾经是困扰我一晚上没睡着觉的一件事情。复杂性还有其他方面可以体现的吗?还有并没有体现出来却要复杂的地方吗?
2.ISO on TCP地址,是在TCP上加入了ISO的校验机制,想请教都加入了什么样的校验机制,作为“ISO的变形”,为什么已经寻址地址了,既然已经寻址地址了,还有什么校验机制可加。
3.对于SAP,什么时候需要建立服务访问点,是向上访问建立,向下访问需要建立服务访问点吗?FDL通讯里需要建立的是LSAP,是基于数据链路层的。
我愿抛弃我论坛和找答案中的全部财产,向你去请教。
谢谢你的回答,真的很感谢,很敬佩你
1.我发现回答字数10000字,字数应该没问题。
2.回答提问:TCP和UDP虽同在四层,但是有区别的,TCP保证数据能并且按顺序到达,是的连接传输,然而资源要求也比较多,结构也比较复杂。TCP需要在传输方的两端建立一的连接(通过信号的三次握手),然后通过数据包的各项校验确保数据正确。做过带握手协议的底层编程会帮助理解这个问题。UDP设计初衷就是尽可能快的将数据包发送出去。所以UDP协议显得非常精简。你只要建立一个包,构造一个有目标信息的IP头,然后发出去。连接。。
3."ISO协议是面向于数据块的,而TCP/IP是面向于流的",的确,TCP包是流的,没有边界,ISO发送的是离散的对象,需要有数据结束标志。
4.西门子PLC的ISO on TCP是附加了RFC1006,但实际上不能说ISO on TCP就是RFC1006,因为ISO on TCP还可以附加RFC983,RFC2126等协议。
你提到S7、TCP、ISO、ISO-on-TCP这些都是以太网通讯的通讯协议,不过你忘了还应该有UDP, PROFINET这些协议,西门子的PLC所支持的。 PLC
哪些通讯设置一定要设置、IP、TSAP等参数?这个问题问得好,这恰恰是由于你所使用的不同的协议造成的。例如,使用TCP/UDP/IP莱通讯,从字面上看,我们需要设置IP地址,因为这里需要包含IP的重要的信息。如果了解不同PC中的应用程序也就是不同进程的通讯,需要设置网卡的IP地址,不过还有一点隐含的就是端口号的信息,这也就是为什么在SIMATIC Net手册中提到在PLC组态以太网通讯时尽量不要用1~2000的端口号,这是因为如果你有连接PC等设备,那么可能PC的一些服务无法完成,因为你的PLC占用了这个端口号,例如:HTTP80。所以使用TCP/IP通讯只需要设置IP地址(加不加网关,看是否有路由器)和端口号。
针对TSAP,他的全名应该是TCP service access point,也就是TCP的服务访问点。其实这个问题解释起来比较复杂,可以从ISO/OSI参考模型说起。这7层之间如果想通讯,就是通过SAP来完成的,不过每一层的SAP都是具有不同名字,例如IP层的SAP称为ISAP。这些是很的术语,OSI/ISO对应的TCP/IP的模型中,TSAP对应的就是Port,即端口号。这也就是说SAP是层层之间的寻址而且要。对于ISO协议来说,没有IP层,那么意味着不能路由,所以寻址只能通过地址。对于访问高层的应用程序就需要TSAP了。不过你在Step7组态时,不需要改变任何的TSAP,因为Step7自动生成了符合ISO协议的TSAP标识。这要下载这些组态信息PLC之间就可以相互识别。
ISO on TCP也就是RFC1006,它是ISO的变形,因为早期的以太网协议并不是很多应用于工业控制,不像TCP/IP这样广泛。而西门子早期的协议使用ISO,不过它的缺点我已经描述过了。所以出现RFC1006为了实现路由。
S7的协议比较特殊,属于西门子内部不公开的协议,而且不基于任何的网络,MPI,PROFIBUS上都可以运行S7协议。它加载在ISO和ISO on TCP上,位于ISO/OSI的7层。进行S7连接时很有意思,它的封装了它的复杂性。
其实,还有很多问题我没有描述,如果有问题,我们可以进一步交流。不过实际上,这些都是由于协议的不同所产生的。所以理解协议是重要的。不过,我可以问问你,同样大小的数据,使用你所说的协议通讯,那种方式快呢?
郎凡,当你提出这样的问题时,我感到很惊讶,因为可以达到这样的理解高度的人很少,而且做项目的时候很少有人关心这样的详细的信息。好吧,那么我可以给你详细的解释,不过我愿意我们去探讨这些问题。恨有趣,我想这是论坛中长的问题和长的回答吧,可以破了论坛的纪录了。我怕1000字不够啊!哈哈!
对于你的回答的排序,我可以肯定的回答你,你的说法是正确的,不过理解上应该是这样,根据ISO/OSI参考模型,数据在进行接收和发送时会解包和封装。这些就需要耗费时间,层数越多耗费时间越长,不过这里有一个问题TCP和UDP同在4层,为什么UDP比TCP快呢?
对于TCP/IP是否打勾,结果是什么样的?很欣赏你的钻研精神。其实结果很简单正如你所说的。其实我所说的复杂性,除了组态就是它的协议了,由于它的协议不公开,所以我认为S7协议是一个大包,也就是MPI,PROFIBUS,Ethernet上的S7协议部有区别的,因为S7协议毕竟是7层的协议,由于所嫁接的底层协议毕竟是不同的。所以这种多样性就是复杂性的一种体现。另外,对于细节协议,S7协议的应答十分两步的,是对协议层的应答,接着应答应用层,这也是它的复杂性。Step7在NetPro中作的很普遍,所以不易察觉。
ISO on TCP不需要组态这是真的,因为应用层寻址并不是依靠地址,而是依靠IP和Port来完成的。在TCP上加入不是ISO的校验机制,而是ISO的协议与其连接。因为ISO协议与TCP协议是不同的,ISO协议是面向于数据块的,而TCP/IP是面向于流的。其协议的本质就是有没有数据的结束标志。
对于SAP,你不用考虑太多,它只是层与层之间的桥梁,所以向下向上都会有SAP,而在Step7中所显示的SAP往往是向上的,因为应用层毕竟是相对立特殊的,不像TCP/IP那样普遍。在任何时候都需要建立的,只不过在TCP/IP中你看到的是端口号。
PLC 我查了一下你的“财产”,没有多少嘛,怎么给我啊?
开个玩笑,不过真的欣赏你的精神!!有问题尽管问,不过这里的篇幅不多了,你可以重新提个问题.
感谢你的评价。不过智慧圆,分开读为智、慧、圆。好像金庸小说中少林高僧的法号啊......
1,10000字确实够用。
2,你说的很正确。不过对于Step7 TCP的连接可以有两种方式,一种是通过Open IE的方法,通过功能块确定Server/Client的关系来实现动态的一种连接,也可以断开这个连接。PLC对于这个连接个数同样是有限制的。另外一种就是在NetPro中建立TCP连接,当下载组态后,连接自动建立,但这个资源不能动态释放。连接一旦建立,数据就开始通讯了。不过每个包数据的大小并不是我们决定的,而是TCP的滑动窗口算法决定的。所以使用TCP协议时,速度的快慢不是我们所能把握的。对于你说的“资源要求也比较多,结构也比较复杂”这句话,我同意。其实你可以这样理解,如果你把TCP和UDP的报文头放在一起比较,你会恍然大悟。所以有无连接并不是限制快慢的关键因素。
3,正确。另外流的概念就是你所接收的并不一定是你所发送的。而数句块的概念所接收的一定是你所发送的。
4,在我的印象中RFC1006就是ISO on TCP的版本的为3。而你说的RFC983是RFC1006的替代版本。不过这个替代版本并不与FRC983兼容,所以可能在理解上有些偏差。
0.引言
电子技术的日益发展,通讯接口给工业控制的自动化集中控制带来的变化,系统的分布控制,网络的远程监控等都是通过通讯来实现监控。各个智能设备之间要进行正常通讯,要保证以下3个条件一致:通讯硬件界同;通讯参数设置一致;以及通讯协议一致。在串口的通讯中,界面都已经是标准化,参数设定亦可透过设定来保持一致。但在智能自动化设备中,由于和产品都存在差异,对于同一种产品,不同的就可能存在不同的通讯协议!所以,智能设备的通讯,设备的选择是关键!但针对同种协议的产品,就有可能缩小设备选型范围,势必会对系统的组成存在影响。如造成成本的提升,系统得不到优化等问题。
现就针对通讯协议,介绍永宏PLC的自由口通讯协议做介绍。即通过自由协议,可以跟任何一个智能设备进行连接,进行数据的传输。大大方便了技术人员的选型,有利控制系统的优化,性价比的提升!
1.系统硬件要求
1.1 永宏FBs-PLC通讯功能
永宏FBs-PLC提供相当强大的通讯功能,SoC单晶片中集合5个高速通讯端口。主机自带一个通讯端口。多样的扩展方式,可以选择通讯模块或者通讯板实现通讯端口的扩展,单一主机可以多扩展至5个通讯端口;可以选择ASCII码或者速度快一倍的二进制码来传输;每个通讯端口通讯速率高达921.6Kbps;支持RS-232,RS-485,USB和Ethernet等界面;通讯协议提供永宏标准通讯协议,工业界通用的ModBus标准协议,以及自由口协议。这里我们就永宏PLC的自由通讯协议做进一步探讨。
1.2 永宏PLC自由通讯协议简介
所谓自由通讯协议,永宏PLC作为主站,根据通讯的从站设备通讯格式来编写通讯传输数据格式,以保证通讯格式的一致性。在符合从站设备的数据格式时设备才能识别主站发送出来的命令要求,再根据命令来进行处理数据、做响应回复等工作。这样将大大提高PLC控制对象的通讯接口兼容。
图1.1 RS-485单主多从通讯示意图
如图1.1所示,一个永宏PLC可以跟多个智能从站进行通讯;智能从站可以同为一种设备不同,或者不同设备不同,例如其他的PLC、变频器、智能仪表等,只要符合RS-485通讯要求即可组网。
2. 软件系统要求与设计
2.1 串行口通讯协议格式
在串行通讯中,数据的格式一般如下图所示:
图1.2 串行口一般通讯数据格式
在协议中,一些通讯协议要求命令请求码,一些则不需要;从起始符到结束符,格式都相似。
起始符:表示通讯命令的开始, 常用02H表示。
地址:从站设备的地址, 范围在“00H~7FH”。
功能码:从站设备所规定的功能码,以响应主站的作动要求。
数据:根据命令码执行的数据区。
校验:为保证数据的准确的通讯,协议中都设定校验码。常见的校验有CRC,CHECKSUM。
结束符:表示一笔通讯命令的完成。通常使用03H表示。
在所使用的设备中会,做相关的协议规定和参数说明,所以我们只要依照设备的通讯格式编写通讯命令,请求从站执行命令,并根据主站是否要求做相关的回应,来完成响应。下面,我们会以与士林变频器通讯为实例,做相关的介绍。
2.2 永宏PLC端软件设计
永宏PLC在通讯编程方便提供相当便利的指令和编程方法。在指令方式,使用一个功能指令配合通讯表格,即可完成通讯命令。下面就对指令与表格编辑做相关介绍。永宏PLC提供两个通讯指令FUN150和FUN151,其中FUN150用于ModBus协议通讯用,这里就不做介绍,详细请参考《永宏PLC使用手册》介绍。FBs-PLC可由Por t 1、2、3 或4 等四个通讯端口来作永宏多台CPU bbbb联机或与具有RS-232/RS-485通讯接口的智能型外围通过通讯方式作联机整合应用。
FUN151(Cbbbb)通讯联机便利指令可那个通讯端口以何种工作模式运作共有Mode 0~ 3 四种工作模式, 其中的Mode 3 模式为〝高速bbbb 网络〞模式只允许Port 2使用,其余都为“一般bbbb 网络”,下表是高速bbbb 与一般bbbb 指令模式的差别说明。
引言
西门子工控产品在我国有较高的市场占有率,它的通信及网络产品有着引导世界工控技术潮流的作用,研究西门子工控产品及通信技术的实际应用问题有着广泛普遍的重要意义。本文通过对某市级公司的配送分拣系统的研究,探讨了在bbbbbbs环境下,用Delphi开发的数据库应用软件与西门子S7-300之间通信的实现问题。该配送分拣系统计算机部分结构如图1所示。
该系统管理计算机接收信息局域网发送来的各条送货线路当天的访销信息数据,在此基础上管理计算机建立起以送货线路为单位的配方数据库,将配方数据分批次连续地下传给PLC。PLC 根据下传的配方数据对系统控制使其连续分拣和收集,同时系统工作状态及工作数据通过PROFIBUS 现场总线在两个触摸屏TP27-10得到动态显示,后在收集工位自动得到一箱对应一个销售网点的用户配料。为了提高调系统试效率,我们在DELPHI和Microsoft Access数据库平台上编写了用于PLC控制程序的调试软件。
从上看出该系统能否研制成功要解决的问题是:西门子S7-300系列PLC通讯协议不公开,管理计算机和调试计算机上三方软件编制的程序如何实现PC机与西门子S7-300系列PLC信息交换?通过技术调研和实际调试,我们成功实现了在VB、DELPHI程序开发平台上开发的管理程序及调试程序与S7-300系列PLC通信,顺利完成了系统研制任务。限于篇幅,本文以调试软件的通信实现方法来讨论三方应用软件与西门子S7-300 PLC的通信问题。
2调试软件设计
根据PLC控制程序的调试要求,该调试软件使用DELPHI的数据库技术把事先设计的60个配方数据写入数据库,根据调试需要也可通过人机界面对数据库中的数据进行任意修改,当执行“下传数据”命令时把数据库中的数据字段进行一定数据处理后通过调用PRODAVE S7软件包写入PLC中对应的DB(DATA BLOCKS)块,其中一条记录对应一个DB块,每条记录的一个字段对应该DB块中的一个字。该调试软件也可按一定顺序读PLC中各DB块中的字,并把读取的数据经过处理后写入数据库,以供调试人员检查写入数据的正确性。PC机与PLC CPU318-2DP MPI口之间的数据通信是通过PC/MPI适配器硬件连接实现的。
3.1 通信软件
实现PC机与PLC之间的数据通信是一个棘手的问题。西门子公司的PRODAVE S7软件包的动态链接库(DLL)提供了大量的基于bbbbbbs NT,bbbbbbs95/98,bbbbbbs3.11或MS-DOS的函数,这样就使用户解决PLC与PC之间的数据交换和数据处理问题变为可能。
3.2 通信函数
在DELPHI的bbbbbb Pascal语言中,要访问动态链接库DLL(Dynamic bbbb Library)中的例程有两种方式。一种是静态引入方式;另一种是动态引入方式。
本软件使用静态引入方式,即在单元的Interface部分用External指示字列出要从DLL中引入的例程。如果要引入的例程比较多,就可以用一个专门的单元来集中声明要引入的例程。
PLC控制程序调试软件用到的PRODAVE函数主要有:
(1)load_tool PC机与PLC系统初始化链接;
(2)unload_tool 断开PC机与PLC系统链接;
(3)db_read 从PLC的DB块中读数据字;
(4)db_write 向PLC的DB块中写数据字。
3.3 通信程序的实现
在该调试软件中用一个专门的单元集中声明要引入的PRODAVE S7动态链接库的例程,然后在程序中在引用这个单元,即把引入单元“prodave”加到程序的Uses子句。该引入单元的代码如下:
unit prodave;
interface
type
Tadr_table_type=record
adr:byte; segmentid:byte;
slotno:byte; rackno:byte;
end;
function load_tool(no:Byte;name:PChar;adr_table_type:PChar):Integer;stdcall;external "w95_s7.dll";
function unload_tool:Integer;stdcall;external "w95_s7.dll";
function db_read(blockno:integer;no:integer;amount:pointer;buffer:pointer):integer;stdcall;external "w95_s7.dll";
function db_write(blockno:integer;no:integer;amount:pointer;buffer:pointer):integer;stdcall;external "w95_s7.dll";
……
implementation
end.
在调试软件的主程序中调用该引入单元前,须将软件包prodave.pas文件加到工程中。这样才能在主程序中调用w95_s7.dll中的函数,具体程序调用实现如下:
implementation
uses prodave;
{$R *.DFM}
……
begin
plc_adr_table[0> := 2; {address} plc_adr_table[1> := 0; {segment id}
plc_adr_table[2> := 2; {slotno} plc_adr_table[3> := 0; {rackno} plc_adr_table[4> := 0;
res := Load_tool(1,"S7ONLINE",@plc_adr_table); //初始化链接
函数load_tool的作用在于初始化适配器,初始化参数的地址以及选定的界面。程序在读写PLC数据前应该用该函数初始化PC机与PLC的连接。
此函数传送以下3个参数:
no:此参数设置可连接的数量,连接个数可以达到16个。此例中,no=1;
device:用户驱动设备名称,如MPI驱动器的设备名为“S7ONLINE”;
plc_adr_table:连接部分的地址列表指针。
如果没有错误,此函数返回0,否则返回错误信息的相应十六进制代码。下面给出数据下载程序:
begin
error:=false;
table1.first; //定位到配方表的记录
for i:=2 to 61 do //把60个配方数据写到DB2-DB61
begin
for j:=1 to 42 do //把42个库位的自动配烟数的值高低字节调换位置存入buffer数组
begin
c0:=table1.fields.fields[j>.asinteger;
clow:=c0 shl 8;
chigh:=c0 shr 8;
cdate:=clow xor chigh;
buffer[j-1>:=cdate;
end;
anzahl:=42;
dbno:=i; //DB块
dwno:=1; //1个数据字,即DW2
res := db_write(dbno,dwno,@anzahl,@buffer);
函数db_write()的作用是从PC机的数组变量“buffer”中给PLC的“dbno”个数据块中从“dwno”个数据字开始写“anzahl” 个数据字。如果数据块不存在,将返回错误信息的代码。如果要写的数据字数目的长度过了数据块的长度,要写的数据字的长度将得到正,同时此函数还返回303H的错误信息。
需要特别注意的是:数据在缓冲区存放的顺序是从高字节到低字节。而bbbbbb Pascal语言中,变量类型为word的变量,它的数据存放顺序是从低字节到高字节。因而,在对所读取的数据进行操作时或给PLC数据块中写数据字时要进行相应的处理。
结束程序之前,调用适配器函数unload_tool断开PC机与PLC的连接。否则,将引起PC机死机,或者系统紊乱。
由于数据上传与数据下载的实现方法相近,限于篇幅,数据上传实现的方法本文不予介绍,请读者参考数据下载实现方法部分。
4结束语
运用DELPHI开发环境编写的PLC控制程序调试软件,具有界面友好、人机交互功能方便、数据库功能强大灵活的优点,具有一定的通用性和实用性。而且通过调用PRODAVE S7软件包的动态链接库实现PC机对PLC CPU318-2DP数据的读写操作,不但数率快,而且正确率高。在对PLC控制系统的调试过程中,可以大大缩短调试周期,提高工作效率。此通信技术的实现对西门子工控产品的应用及PROFIBUS现场总线的推广应用有着广泛普遍的重要意义。
SIMATIC S7-200系列PLC适用于各行各业,各种场合中的检测、监测及控制的自动化。S7-200系列的强大功能使其无论是立运行还是相连成网络皆能实现复杂控制功能。此系列PLC的CPU型号有:CPU 221,CPU 222,CPU 224,CPU 226和CPU 226XM。本控制系统采用CPU224,它具有四种通讯方式: PLC资料网
一:PPI方式
PPI通讯协议是通过普通的两芯屏蔽双绞电缆进行联网,物理上采用RS485电平,波特率为9.6kbit/s,19.2kbit/s和187.5kbit/s。PPI通讯网络是一个令牌传递网。
二:MPI方式
S7-200可以通过内置接口连接到MPI网络上,波特率为19.2kbit/s,187.5kbit/s。S7-200 CPU在MPI网络中作为从站,它们彼此间不能通讯。
三:自由通讯方式
S7-200可以由用户自己定义通讯协议,与任何通讯协议公开的其它设备、控制器进行通讯。波特率为38.4kbit/s(可调整)。
四:PROFIBUS-DP网络
在S7-200系列的CPU中,都可以通过增加EM277扩展模块的方法支持PROFIBUS DP网络协议。传输速率可达12Mbit/s。
1 前言
PLC以的性和方便的可编程性广泛应用于工业控制领域。实现PC机与PLC通信的目的是为了向用户提供诸如工艺流程图显示、动态数据画面显示、报表显示、窗口技术等多种功能,为PLC提供良好的人机界面。本文详细介绍了FX系列PLC的通信协议,并在bbbbbbs环境下,使用VB6.0开发通信程序,实现了PC机与FX系列PLC之间的串行通信。
2 PC机与PLC实现通信的条件
带异步通信适配器的PC机与PLC只有满足如下条件,才能互联通信:
(1)带有异步通信接口的PLC才能与带异步通信适配器的PC机互联。还要求双方采用的总线标准一致,否则要通过“总线标准变换单元”变换之后才能互联。
(2)双方的初始化,使波特率、数据位数、停止位数、奇偶校验都相同。
(3)要对PLC的通信协议分析清楚,严格地按照协议的规定及帧格式编写PC机的通信程序。PLC中配有通信机制,一般不需用户编程。
3 PC机及与FX系列PLC的串行通讯
3.1 硬件连接
PC机与FX系列PLC不能直接连接,要经过FX-232AW单元进行RS232C/RS-422的变换,下图表示了它们之间的连接关系:
PLC
3.2 FX系列PLC的通信协议
在PC机中依据互联的PLC的通信协议来编写通信程序,因此先介绍FX系列PLC的通信协议。
(1)数据格式
FX系列PLC采用异步格式,由1位起始位、7位数据位、1位偶校验位及1位停止位组成,波特率为9600bps,字符为ASCII码。格式如下:
(2)通信命令
FX系列PLC有4个通信命令,它们是读命令、写命令、强制通命令、强制断命令,如下表所示。表中X—输入继电器;Y—输出继电器;M—辅助继电器;S—状态元件;T—定时器;C—计数器;D—数据寄存器。
(3)通信控制字符
FX系列PLC采用面向字符的传输规程,用到5个通信控制字符,如下表所示。
PLC
*当PLC对PC机发来的ENQ不理解时,用NAK回答。
(4)报文格式
PC机向PLC发送的报文格式如下:
其中STX为开始标志:02H;ETX为结束标志:03H;CMD为命令的ASCII码;SUMH,SUML为从CMD到ETX按字节求累加和,溢出不计。由于每字节十六进制数变为两字节ASCII代码,故校验和为SUMH与SUML。
数据段格式与含义如下:
*写命令的数据段有数据,读命令的数据段则无数据。
读/写字节数为01H~40H(1~64)个。
PLC向PC机发送的应答报文格式如下:
*对读命令的应答报文数据段为要读取的数据,一个数据占两个字节,分上位下位:
PLC
对写命令的应答报文无数据段,而用ACK及NAK作为应答内容。
(5)传输过程
PC机与FX系列PLC之间采用应答方式通信,传输出错则组织重发。其传输过程如下:
PLC根据PC机的命令,在每个循环扫描结束处的END语句后组织自动应答,用户在PLC一方编写程序。
4 利用VB6.0编写通信程序
下面以一个简单的例子来说明编写通信程序的要点。设PC机要求从PLC中读入从D123开始的4个字节的数据(D123,D124),其传输应答过程及报文如下(图略可向作者索取):
命令报文中10F6H为D123的地址,04H表示要读入4个字节的数据。校验和SUM=30H+31H+30H+46H+36H+30H+34H+
03H=174H,溢出部分不计,故SUMH为'7',SUML为‘4’,相应的ASCII码为“37H”,“34H”。应答报文中4个字节的十六进制数,其相应的ASCII码为8个字节,故应答报文长度为12个字节。
根据PC机与FX系列PLC的传输应答过程编制出如下所示的通信程序流程图略。
利用VB的MSComm控件,按照流程图可以编写如下通信程序实现PC机与FX系列PLC之间的串行通信以完成数据的读取。MSComm控件可以采用轮询或事件驱动的方法从端口数据。在这个例子中使用了轮询方法。
(1)通信口初始化
Private Sub Initialize()
MSComm1.CommPort = 1
MSComm1.Settings = ″9600,E,7,1″
MSComm1.InBufferSize = 1024
MSComm1.OutBufferSize = 1024
MSComm1.bbbbbLen = 0
MSComm1.bbbbbMode = combbbbbModeText
MSComm1.Handshaking = comNone
MSComm1.PortOpen = True
End Sub
(2)请求通信与确认
Private Function MakeHandShaking() As Boolean
Dim InPackage As bbbbbb
MSComm1.OutBufferCount = 0
MSComm1.InBufferCount = 0
MSComm1.Output = Chr(&H5)
Do
DoEvents
Loop Until MSComm1.InBufferCount = 1
InPackage = MSComm1.bbbbb
If InPackage = Chr(&H6) Then
MakeHandShaking = True
Else
MakeHandShaking = FalseEnd If
End Function
(3)发送命令报文
Private Sub SendFrame()
Dim Outbbbbbb As bbbbbb
MSComm1.OutBufferCount = 0
MSComm1.InBufferCount = 0
OutStrin = Chr(&H2)+″0″+″10F604″+Chr(&H3)+″74″
MSComm1.Output = Outbbbbbb
End Sub
(4)读取应答报文
Private Sub ReceiveFrame()
Dim Inbbbbbb As bbbbbb
Do
DoEvents
Loop Until MSComm1.InBufferCount = 12
Inbbbbbb = MSComm1.bbbbb
End Sub
5 结束语
以本文所述机制编写的通信程序已成功用于以FX2N型PLC作为主控制器的高层建筑玻璃幕墙清洗机器人系统中,通过该通信程序,实现了PC机对PLC的监视和控制。同时,本程序对PC机与其它型号PLC之间的通信也有一定的借鉴意义。
低封炉是CRT生产过程中重要环节之一,主要用于通过焙烧使屏锥封接。它一般包括炉体、驱动装置、置换装置及炉上栏杆踏台等几部分。炉体包括炉本体、网带导轨、RC风机以及加热器等几部分。炉本体由碳素钢及不锈钢组成,内填保温棉,循环风道由不锈钢内腔板组成。RC风机起搅拌作用,使炉内温度均匀性好。加热器由电热丝和不锈钢框架组成,起到恒温作用。驱动部设有自动张紧装置及网带跑偏调节机构,主要是通过变频器实现网带速度连续可调,使工件在炉体内匀速移动。
下面以BMCC5L低封炉延长为例说明其控制系统部分的实现,它主要包括低压受电柜,3个加热柜和温控柜。其工作原理是:低压受电柜提供炉上风机、热丝等电源,通过温控柜内的控温器设定温度,用控温器的输出控制加热柜中的电力调整器,调整器的输出控制加热器,调整炉体温度, 达到工艺要求温度。在温度控制柜内有一套PLC系统和触摸屏,实现整个系统自动开机,自动关机,故障随时报警等功能,达到实时监控的作用。本系统主要是完成14个加热区的加热丝、RC风机、排风机、冷风机以及后8个区冷却阀的控制。
2 控制系统硬件配置
PLC资料网
图1 系统硬件配置框图
本系统共有260点:数字量输入162点,数字量输出98点。控制系统采用OMRON公司的C200HG-CPU43,属于中型PLC,内有RS232通讯口,它能满足较的要求。基板多10个槽,这样每个槽26点,需要使用32点的模块,所以输入选用高密集型的C200H-ID216,输出选用组2高密度晶体管输出单元C200H-OD215,由此可知6个输入模块,4个输出模块。再者在该系统中增加一块串性通信板C200HW-COM06,通过RS232口与触摸屏通讯,达到人机交换。在监控方面采用的是digital公司的GP577R-TC41-24VP,实现手动控制和监控报警。其系统硬件配置如下:
温控柜面板上的控温器控制低封炉炉温,具有PID调节功能,与加热柜内的SCR电力调整器配合使用,可实现加热器的电压在0~**范围内调节,根据设定温度与当前温度的差值,自动调节输出到加热器上的电压值,从而使炉内温度获得控制。
加热柜为低封炉的加热器提供电源,内装有电力调整器,由温度控制柜内的温控来自动调节其输出功率,达到控温的目的。该部分别控制新增1~14区加热。柜中,装有空气开关为新增1~14区电力调整器SCR提供电源。SCR调整器上装有能够显示各相电压,电流大小,输出功率大小等的显示面板。此面板还可以显示出SCR调整器的异常状态。
风机动力部分为低封炉的RC风机,以及排风机、冷风机提供电源,其电源通断也由空气开关控制。通过交流接触器在给定电流范围内输出到各风机,控制其运行与停止。
3 控制系统软件设计
图3 系统控制流程图了节约篇幅在此不再给出梯形图,下面对流程图给予解释。PLC上电后,判定各风机是否全开,只有风机全开才能使加热丝工作。进行模式选择,主要有自动和手动两种状态。在自动模式,按动面板上自动启动按钮,自动灯亮,这样风机自动开移位寄存器运行,各区风机自动逐次开。当所有风机全部工作后,加热块1自动启动,这样1~5区加热移位寄存器运行,使得1~5区加热丝开始工作。随后加热块2自动启动,6~14区加热移位寄存器运行,使得6~14区加热丝开始工作。从而根据工艺要求各区设定温度进行PID自动调节,直至满足要求。当需要停止生产时,则要使热丝和风机停止工作。这样按动控制柜上自动停止按钮,这样各区热丝逐次停止工作。此时进行自动停计时,时间到自动停止各区风机。
在手动模式下,按动面板上风机启动按钮,使得各区风机逐次开。当所有风机全部正常工作后,再按动面板上的加热块1启动按钮,1~5区热丝开始工作。同样按动加热块2启动按钮,6~14区热丝也开始工作。系统稳定后,工件可以进行陪烧。当需要停止时,则要按动加热块1停止按钮,1~5区热丝开始停止。按动加热块2停止按钮,6~14区热丝也开始停止加热。当热丝全部停下来时,按动风机停止按钮,则各区风机依次停止运转。直到下一次启动。
如果在生产过程中工件出现异常情况,按动非常停止按钮,网带停止转动,进行紧急处理。并且任何区热丝或风机出现异常情况,在控制柜上或触摸屏上都有对应的显示,及其相应的声光报警,通知操作人员。
4 监控系统说明
本系统使用DIGITAL公司GP577R-TC41-24VP型触摸屏作为上位监控,可以实时的显示现场信号、实时报警并对控制点进行控制。监控系统由5个窗口组成:系统主画面窗口、加热区RC风机运转画面、加热区热丝运转画面、冷却阀运转画面、设备故障履历画面。五个窗口之间建立了链接,通过窗口中的按钮进行切换,并与PLC建立变量之间连接,通过触摸屏实时显示相应的状态信息,构成系统整体监控。
现以系统主画面为例,说明监控画面的功能。系统主画面分为两个区域:灯部件区域和开关部件区域。灯部件区域在画面的左部,使用PLC的I/O点作为监控显示,当这些监控点状态为ON时,显示,当为OFF时显示白色。从而表明原柜和新柜以及网带当前状态是在自动状态还是收动状态,是运行还是停止,是正常还是异常。开关部件区域主要是作为选择按钮,当触摸这些按钮是就会切换到相关的页。异常发生按钮主要是监控系统是否有异常状况发生,如有显示红色,触摸可调转到故障画面,显示哪个设备出现何种故障。触摸冷却阀按钮,就会跳转到冷却阀运转画面,显示各冷却阀的开闭状态,是否故障。触摸风机手动按钮,切换到加热区RC风机运转画面,显示各区风机是否在运行状态,有无异常情况发生,对应区的风机是开还是关。触摸加热手动按钮,切换到加热区热丝运转画面,该画面主要是显示各区热丝是否在运行状态,有无异常情况发生,对应区的热丝是加热还是停止。触摸设备故障履历按钮,就会显示何时发生报警,何时恢复,是否确认。并且在五个窗口中都可以互相切换,方便监控。
http://zhangqueena.b2b168.com