您当前的位置:五五电子网电子知识plc技术PLC维护PC(上位机)与PLC串行通讯协议与串口DLL之 正文
PC(上位机)与PLC串行通讯协议与串口DLL之

PC(上位机)与PLC串行通讯协议与串口DLL之

点击数:7957 次   录入时间:03-04 12:02:40   整理:http://www.55dianzi.com   PLC维护

在参数错误等非法的情况下返回“Error@”

使用举例:

CMidStr("123456",2,3) = "234@";

"@"为字符串数据的终止符。

8、字符串Cstr开始于字符串Ostr的位置 (为VC等非RAD开发环境所增设)

Function Cinstr(Ostr,Ckstr:Pchar;Dcint:Longint):Longint;stdcall;

参数:

Ostr:  字符串原型;

Cstr:  查询的字符串;

Dcint: 设定查询字符串的起始位置,取值>=1,即最少从源字符串的第一个字符开始查询;

返回值:长整型;

使用举例:

CinStr("1Tfdg23456","2",2) = 6

注:在参数不正确等出错情况下返回值为“0”。

9、PC喇叭的报警过程函数;

Function MyBeep(SoundHz:longint):longint;stdcall;

参数:SoundHz:长整型;

返回值:长整型,操作成功返回“1”,否则返回“0”。

使用举例:

MyBeep(2000); 按2000的频率发出报警声。

DLL中关于传出字符串值的函数都以"@"为字符串函数值终止符,这是对多开发环境应用时方便用户正确读取返回字符串数据而设。

五、Delphi、VB、VC语言环境的开发使用说明

1、Delphi语言环境开发说明

在Delphi环境下将modbus.dll、serialmodbus.slip(许可文件)复制到应用程序目录下(即将上述文件与编译后的可执行文件方入同一文件内);

在工程文件的主程序窗体(pas)文件中声明:

  Function ComOpen(nport,BaudRate,DataBits,Parity,StopBits:longint;User:Pchar):longint;stdcall;External’modbus.dll’;
  Function ComClose(nport:longint):longint;stdcall;External’modbus.dll’;
  Function FCN01(nport,node,address,Count:longint):Pchar;stdcall;External’modbus.dll’;
  Function FCN02(nport,node,address,Count:longint):Pchar;stdcall;External’modbus.dll’;
  Function FCN03(nport,node,address,Count:longint):Pchar;stdcall;External’modbus.dll’;
  Function FCN04(nport,node,address,Count:longint):Pchar;stdcall;External’modbus.dll’;
  Function FCN05S(nport,node,address:longint):longint;stdcall;External’modbus.dll’;
  Function FCN05R(nport,node,address:longint):longint;stdcall;External’modbus.dll’;
  Function FCN06(nport,node,address:longint;Sendstr:pchar):longint;stdcall;External’modbus.dll’;
  Function FCN15(nport,node,address,Count:longint;Sendstr:pchar):longint;stdcall;External’modbus.dll’;
  Function FCN16(nport,node,address,Count:longint;Sendstr:pchar):longint;stdcall;External’modbus.dll’;
  Function FCN16_xSet(nport,node,address,Bit:longint):longint;stdcall;External’modbus.dll’;
  Function FCN16_xReset(nport,node,address,Bit:longint):longint;stdcall;External’modbus.dll’;
  Function FCN16_xSetReset(nport,node,address,Bit:longint):longint;stdcall;External’modbus.dll’;
  Function ComTrue(nport:longint):longint;stdcall;External’modbus.dll’;
  Function MyBeep(SoundHz:longint):longint;stdcall;External’modbus.dll’;

其它附加函数Delphi有实用函数,建议用Delphi自带函数,如需使用声明参照上例;

注:所有DLL的函数必须声明方能使用,建议本DLL的声明采用示例所示的静态声明方式。 声明后可以在程序中使用这些函数,附加函数

中除ComTrue、CinBin、MyBeep等Delphi系统自带有类似功能函数。通信时必须先使用ComOpen函数打开串口,在串口打开后可以有效操作

相关函数,为确保通信可在程序运行开始时打开串口,程序退出前关闭串口。应用程序退出之前请务必将关闭所有串口,如串口没有关闭

而退出程序将抛出异常错误。

确保应用程序在关闭释放前关闭打开的串口。解决方法,在form的OnDestroy事件中加入如下语句:

for i:=1 to 8 do
begin
  if ComTrue(i)=1 then ComClose(i);
end;

在Delphi中给中给DLL中的函数传pchar值问题,建议string型转换到Pchar型采用strPCopy()函数,Pchar型转换到string型采用straps()函数,

不推荐使用直接转换法即string到Pchar类型采用Mpchar=Pchar(str),Pchar到string采用str:=Mpchar (str为string类型、Mpchar为Pchar

类型)。上述可以详细参照DEMO程序。
 
2、VB语言环境开发说明

在VB环境下将modbus.dll、serialmodbus.slip(许可文件)复制到应用程序目录下(即将上述文件与编译后的可执行文件方入同一文件夹内);

函数说明中给出的是Delphi的函数原型,在VB中声明时只要注意一下类型的对应即可Delphi中的longint类型对应VB中的Long类型、

Delphi中的Pchar对应VB中的String类型,下面给出主要函数的声明:

Private Declare Function ComOpen Lib "modbus.dll" (ByVal nport As Long, ByVal BaudRate As Long, ByVal DataBits As Long, ByVal Parity As Long, ByVal StopBits As Long, ByVal User As String) As Long
Private Declare Function ComClose Lib "modbus.dll" (ByVal nport As Long) As Long
Private Declare Function FCN01 Lib "modbus.dll" (ByVal nport As Long, ByVal node As Long, ByVal address As Long, ByVal Count As Long) As String
Private Declare Function FCN02 Lib "modbus.dll" (ByVal nport As Long, ByVal node As Long, ByVal address As Long, ByVal Count As Long) As String
Private Declare Function FCN03 Lib "modbus.dll" (ByVal nport As Long, ByVal node As Long, ByVal address As Long, ByVal Count As Long) As String
Private Declare Function FCN04 Lib "modbus.dll" (ByVal nport As Long, ByVal node As Long, ByVal address As Long, ByVal Count As Long) As String
Private Declare Function FCN05S Lib "modbus.dll" (ByVal nport As Long, ByVal node As Long, ByVal address As Long) As Long
Private Declare Function FCN05R Lib "modbus.dll" (ByVal nport As Long, ByVal node As Long, ByVal address As Long) As Long
Private Declare Function FCN06 Lib "modbus.dll" (ByVal nport As Long, ByVal node As Long, ByVal address As Long, ByVal Sendstr As String) As Long
Private Declare Function FCN15 Lib "modbus.dll" (ByVal nport As Long, ByVal node As Long, ByVal address As Long, ByVal Count As Long, ByVal Sendstr As String) As Long
Private Declare Function FCN16 Lib "modbus.dll" (ByVal nport As Long, ByVal node As Long, ByVal address As Long, ByVal Count As Long, ByVal Sendstr As String) As Long
Private Declare Function FCN16_xSet Lib "modbus.dll" (ByVal nport As Long, ByVal node As Long, ByVal address As Long, ByVal Bit As Long) As Long
Private Declare Function FCN16_xReset Lib "modbus.dll" (ByVal nport As Long, ByVal node As Long, ByVal address As Long, ByVal Bit As Long) As Long

上一页  [1] [2] [3] [4] [5] [6] [7]  下一页


本文关键字:暂无联系方式PLC维护plc技术 - PLC维护