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

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

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

注:没有注册的用户只能写入00001~00006范围的状态值;

4)、16功能码写多个保持寄存器数据功能函数

Function FCN16(nport,node,address,Count:longint;Sendstr:pchar):longint;stdcall;

参数:

nport:   串口号,取值为1~8,代表COM1~COM8;

node:   modbus从站号,取值1~255;

address: 元件地址,取值范围从40001~4XXXX地址区(保持寄存器)值(你要写标准modbus的40001地址这个值为0000,依次类推)

Count:  写入字元件个数,一次最多60个但不能超出寻址范围;

Sendstr: 给字写入的值,该值为4个一组的16进制字符串组其取值为0000~FFFF(整数值为0~65535);

返回值: 长整数,操作成功返回1,不能写入或操作错误返回0;

当要写入多个字值时依次排列即可。如给40001与40002写值100和1000,先将100转成16进制字符串0064、1000转成16进制字符串03E8,

则sendstr=006403E8;一次最多写64个字即字符串长应小于等于256;

                            ---------- ----   ~  ---------
写字符串序列如:             | 0064 | 03E8 | 0010 | 6004 |   ~     | 0008 | 0400 |
                            ---------- ----   ~  ---------

使用举例:

FCN16(1,2,1,"000A0102"),由COM1给modbus 2号从站40002(标准modbus地址)的字单元写入给10(16进制000A)、40003(标准modbus地址)

的字单元写入给258(16进制0102)返回值为1表示成功;

注:没有注册的用户只能写入40001~40003范围的状态值;

5)、modbus功能码16的扩展功能函数

       1、单保持寄存器的0~15相应位的置位 (40001.0-40001.15~4XXXX.0-4XXXX.15)
            
       Function FCN16_xSet(nport,node,address,Bit:longint):longint;stdcall;

参数:

nport:   串口号,取值为1~8,代表COM1~COM8;

node:   modbus从站号,取值1~255;

address: 元件地址,取值范围从40001~4XXXX地址区(保持寄存器)值(你要写标准modbus的40001地址这个值为4000,依次类推)

Bit:     保持寄存器的位,取值0~15;

返回值: 长整数,操作成功返回1,不能写入或操作错误返回0;

使用举例:

FCN16_xSet(1,12,2,0),由COM1将modbus 12号从站40003(标准modbus地址)的第0个位状态值置1,返回值为1表示成功

注:没有注册的用户不能使用本功能;

        2、单保持寄存器的0~15相应位的复位 (40001.0-40001.15~4XXXX.0-4XXXX.15)
            
        Function FCN16_xReset(nport,node,address,Bit:longint):longint;stdcall;

参数:

nport:   串口号,取值为1~8,代表COM1~COM8;

node:   modbus从站号,取值1~255;

address: 元件地址,取值范围从40001~4XXXX地址区(保持寄存器)值(你要写标准modbus的40001地址这个值为4000,依次类推)

Bit:     保持寄存器的位,取值0~15;

返回值: 长整数,操作成功返回1,不能写入或操作错误返回0;

使用举例:

FCN16_xReset(1,10,3,12),由COM1将modbus 10号从站40004(标准modbus地址)的第12个位状态值置0,返回值为1表示成功

注:没有注册的用户不能使用本功能;

        3、单保持寄存器的0~15相应位的置复位 (40001.0-40001.15~4XXXX.0-4XXXX.15)指使相应的位短时间通断一次(接通约60ms)
            
        Function FCN16_xSetReset(nport,node,address,Bit:longint):longint;stdcall;

参数:

nport:   串口号,取值为1~8,代表COM1~COM8;

node:   modbus从站号,取值1~255;

address: 元件地址,取值范围从40001~4XXXX地址区(保持寄存器)值(你要写标准modbus的40001地址这个值为4000,依次类推)

Bit:     保持寄存器的位,取值0~15;

返回值: 长整数,操作成功返回1,不能写入或操作错误返回0;

使用举例:

FCN16_xSetReset(1,10,9,10),由COM1将modbus 10号从站40010(标准modbus地址)的第10个位状态值置1后约60ms再置0,返回值为1表示成功

注:没有注册的用户不能使用本功能;

四、DLL附加函数说明 (本段函数对未注册用户没有限制,完全可以使用。)

1、串口打开状态的读取

Function ComTrue(nport:longint):longint;stdcall;

参数:

noprt: 串口号,取值为1~8,代表COM1~COM8;

返回值:长整型,串口成功打开返回“1”,否则返回“0”;

这里读取是DLL有效取得了串口的控制权,如果其他程序占用(串口不存在)等原因仍返回“0”。

2、整数转换成16进制字符串 (为VC等非RAD开发环境所增设)

Function CIntToHex(Dcint,Digits:Longint):Pchar;stdcall;

参数:

Cint: 待转换整数,取值为(0~65535);

Digits: 转换的字符串位数,指定位数小于实际位数时按实际输出;

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

使用举例:

CIntToHex(200,2),则返回字符串“C8@”;
CIntToHex(200,4),则返回字符串“00C8@”;
CIntToHex(200,8),则返回字符串“000000C8@”;
CIntToHex(4500,4),则返回字符串“1194@”;
CIntToHex(4500,3),则返回字符串“1194@”,因为“194”不足以表示4500这个数所以按实际输出字符串“1194@”;

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

3、16进制字符串转换成整数 (为VC等非RAD开发环境所增设)

Function CHexToInt(CHex:Pchar):Longint;stdcall;

参数:

CHex: 待转换字符串,取值为(0000~FFFF);

使用举例:

CHexToInt("03E8"),则返回整数1000;

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

4、抽取(0~65535)所示整数中(0~15)某个位的值

Function CinBin(CHex,Start:longint):longint;stdcall;

参数:

CHex: 待转换整数,取值为0~65535(0000~FFFF);

Start: 抽取的位,取值为(0~15);

使用举例:

CinBin(15,3),则返回值1; 
CinBin(15,4),则返回值0;
CinBin(1000,6),则返回值1;

读取MB0组合成的字节值为“FC”(252)时,要读取M0.1的值时,则调用CinBin(252,1)返回值0表示M0.1的值为0。

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

5、返回字符串Text左边的Count个字符  (为VC等非RAD开发环境所增设)

Function CLeftStr(Text:Pchar;Count:longint):Pchar;stdcall;

参数:

Text: 字符串原型;

Count: 指定返回左侧字符串个数;

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

使用举例:

CleftStr("123456", 3) = "123@";

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

6、返回字符串Text右边的Count个字符  (为VC等非RAD开发环境所增设)

Function CRightStr(Text:Pchar;Count:longint):Pchar;stdcall;

参数:

Text: 字符串原型;

Count: 指定返回右侧字符串个数

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

使用举例:

CRightStr("123456", 3) = "456@";

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

7、返回字符串Text从Start开始的Count个字符 (为VC等非RAD开发环境所增设)

Function CMidStr(Text:Pchar;Start,Count:longint):Pchar;stdcall;

参数:

Text: 字符串原型;

Start: 指定返回字符串的起始位置;

Count: 指定返回字符串个数;

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


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