VES7软件包写入PLC中对应的DB(DATABLOCKS)块,其中一条记录对应一个DB块,每条记录的一个字段对应该DB块中的一个字。
该调试软件也可按一定顺序读PLC中各DB块中的字,并把读取的数据经过处理后写入数据库,以供调试人员检查写入数据的正确性
PC机与PLCCPU318-2DPMPI口之间的数据通信是通过PC/MPI适配器硬件连接实现的。
3数据通信
3.1通信软件
实现PC机与PLC之间的数据通信是一个棘手的问题。西门子公司的PRODAVES7软件包的动态链接库(DLL)提供了大量的基于Wind
owsNT,Windows95/98,Windows3.11或MS-DOS的函数,这样就使用户解决PLC与PC之间的数据交换和数据处理问题变为可能。
3.2通信函数
在DELPHI的ObjectPascal语言中,要访问动态链接库DLL(DynamicLinkLib
rary)中的例程有两种方式。一种是静态引入方式;
另一种是动态引入方式。
本软件使用静态引入方式,即在单元的Interface部分用External指示字列出要从DLL中引入的例程。如果要引入的例程比较多,
就可以用一个专门的单元来集中声明要引入的例程。
PLC控制程序调试软件用到的PRODAVE函数主要有:
(1)l
oad_toolPC机与PLC系统初始化链接;
(2)unload_tool断开PC机与PLC系统链接;
(3)db_read从PLC的DB块中读数据字;
(4)db_write向PLC的DB块中写数据字。
3.3通信程序的实现
在该调试软件中用一个专门的单元集中声明要引入的PRODAVES7动态链接库的例程,然后在程序中在引用这个单元,即把引入单元
“prodave”加到程序的Uses子句。该引入单元的代码如下:
unitprodave;
interface
type
Tadr_table_type=record
adr:byte;segmentid:byte;
slotno:byte;rackno:byte;
end;
functionload_tool(no:Byte;name:PChar;adr_table_type:PChar):Integer;stdcall;external"w95_s7.dll";
functionunload_tool:Integer;stdcall;external"w95_s7.dll";
functiondb_read(blockno:integer;no:integer;amount:pointer;buffer:pointer):integer;stdcall;external"w95_s7.dll";
functiondb_write(blockno:integer;no:integer;amount:pointer;buffer:pointer):integer;stdcall;external"w95_s7.dll";
……
implementation
end.
在调试软件的主程序中调用该引入单元前,须将软件包prodave.pas文件加到工程中。这样才能在主程序中调用w95_s7.dll中的函
数,具体程序调用实现如下:
implementation
usesprodave;
{$R*.DFM}
……
begin
plc_adr_table[0>:=2;{address}plc_adr_table[1>:=0;{segmentid}
plc_adr_table[2>:=2;{slotno}plc_adr_table[3>:=0;{rackno}plc_adr_table[4>:=0;