注意:实例在使用时不能超出试用版的地址限制,否则无法正确通讯。
一、最新三菱PLC FX系列PLC编程口通信协议动态链接库DLL(以下简称DLL),是为满足工业通信需要,针对工业领域要求上位机对PLC实时采集与控制的组态编程而设计。本DLL是采用Delphi语言开发的标准串口通讯库,具有以下特点:
1)、实时性、可靠性好,可根据通信数据量自行调整通信时间;
2)、适用于多PLC联网和上位机通信,满足多方面的需要;
3)、函数接口功能全,操作简单;
4)、附加实用转换与读取函数,易于快速开发(VC等非RAD开发环境的开发);
5)、支持USB、PC扩展卡等扩展串口号;
6)、支持多种操作系统win9x/win2000/winXP;
7)、可在多种编程环境下使用,例如VB、VC、Delphi等开发环境。
二、DLL函数说明
1、打开串口
Function ComOpen(nport:longint;User:Pchar):longint;stdcall;
参数:nport: 打开串口号,取值为1~8,代表COM1~COM8;
User:DLL授权用户名;
返回值:长整型,操作成功返回1,否则返回0;打开串口不成功即返回0时的原因:1)、串口不存在或被占用; 2)、DLL试用过期; 3)、DLL授权注册不正确。
使用举例:
ComOpen(1,'wjun') , 打开COM1口。
2、关闭串口
Function ComClose(nport:longint):longint;stdcall;
参数:nport: 串口号,取值为1~8,代表COM1~COM8;
返回值:长整型,操作成功返回1,否则返回0;
使用举例:
ComClose(1) ,关闭打开的COM1口。
3、PLC存储器的预置(D)
Function ComDWrite(nport,address:longint;sendstr:pchar):longint;stdcall;
参数:
nport: 串口号,取值为1~8,代表COM1~COM8;
address: 寄存器地址,取值为0~4095(此值需根据不同的PLC操作选择合适的地址范围);
sendstr: 给寄存器写入的值,该值为4个一组的16进制字符串组其取值为0000~FFFF(整数值为0~65535),当要写入多个寄存器值时依次排列即可。如给D0与D1写值100和1000,先将100转成16进制字符串0064、1000转成16进制字符串03E8,则sendstr=006403E8;一次最多写32个寄存器即字符串长应小于等于128;
---------- ---- ~ ---------
写字符串序列如: | 0000 | FFFF | 0010 | 0064 | ~ | 0010 | 0064 |
---------- ---- ~ ---------
返回值:长整型,操作成功返回1,否则返回0;
使用举例:
ComDwrite(1,0,‘006403E8’),由串口1预置值D0=100,D1=1000。
4、PLC存储器的读取(C、D、T)
Function ComDRead(nport,address,Count:longint;element:Pchar):Pchar;stdcall;
参数:
nport: 串口号,取值为1~8,代表COM1~COM8;
address: 寄存器地址,取值为D区0~4095、C、T(定时器/计数器当前值)区0~255;
Count: 读取寄存器个数,最多读取32个寄存器;DLL读取的越界会自动舍去
element:元件名称,支持D、C、T;
返回值:字符串数据,字符串数据的终止符为"@";
使用举例:
ComDRead(1,0,4,'D') ,由COM1读取D0~D3四个寄存器的值,如返回值为“0001006403E809F0@”,则表示D0=0001, D1=0064,D2=03E8,D3=09F0;
---------- ---- ---
读字符串序列如: | 0001 | 0064 | 03E8 | 009F | | @ |
---------- ---- ---
返回值为16进制字符串,可以将返回值如上四位一组再转换成“0~65535”的整数值。
5、PLC的多线圈强置(C、M、S、T)
Function ComEForce(nport,address:longint;element,sendstr:pchar):longint;stdcall;
参数:
nport: 串口号,取值为1~8, 代表COM1~COM8;
address: 位单元地址,定时器C:0~255、M:0~2047、S:0~999、T:0~255、特M: M8000~M8255;
element:元件名称,支持C、M、S、T;
sendstr: 给多线圈写入的值,该值为2个一组的16进制字符串组其取值为00~FF(整数值为0~255),当要写入多个值时依次排列即可。例如: 字节地址C0'(实际由位地址位C0~C7)、字节地址C1'(实际由位地址位C8~C15),如给C0'赋值80、C1'赋值CF,则sendstr=80CF;一次最多写64个字节,即字符串长应小于等于128;
---------- - ~ ------
写字符串序列如: | 00 |