Omron_HostLink.dll V3.2 HostLink通信协议串口通讯动态链接库DLL(以下简称DLL),是为满足工业通信需要,
针对工业领域要求上位机对欧姆龙系列PLC通讯实时采集与控制的组态编程而设计。
本DLL是采用Delphi语言开发的标准串口通讯库,具有以下特点:
1)、遵循欧姆龙HostLink通信协议;
2)、支持多串口并发操作,支持多线程串口通讯,将串口通讯对主程序的影响降至最低;
3)、实时性、可靠性好,通用性强;
4)、适用于多PLC(下位机)联网和上位机通信,满足多方面的需要;
5)、函数接口功能全,操作简单,支持欧姆龙PLC的绝大部分地址的读写功能函数;
6)、支持USB、PC扩展卡等扩展串口号;
7)、支持多种操作系统win9x/win2000/winXP(标准Win32 DLL);
8)、易于快速开发(VC等非RAD开发环境的开发);
9)、更新原有函数调用方式采用数组调用数据发生与接收,初学者快速入门;
10)、可在多种编程环境下使用,例如VB、VC、Delphi、PB、Labview、易语言等开发环境;
11)、扩展了函数功能读取下位机中的双字、单精度浮点等类型数据,更加符合工业自动化领域的工控软件的开发。
软件版本更新及相关说明:
Omron_HostLink.dll V3.2 HostLink通信协议串口通讯链接库,实现了对欧姆 龙全系列PLC的HostLink协议的支持,
(删减了一些特权指令)wangjun于2010年在原有omron.dll V2.0版基础上的更新版,重写了函数结构,采用数据接收
和发送缓冲区(数组)方式传递,读出和写入单元数据使用更方便。对于16位整数和32位整数读取写入均按有符号整数
处理,小数的返回按单精度浮点型(2进制浮点)处理读取方式。提供扩展功能函数,方便用户实现混合数据读取。
能够同时满足32个串口并发情况下的正常使用。
Omron_HostLink.dll V3.2 分为完美版和单机版两个版本,本DLL于2010年最新规整优化了部分源码,
通过DLL发送缓存区与接收缓存区数据传递的功能扩展,使多语言环境的使用更加便利。
全新的串口通信DLL控件,完美的VB、VC、delphi例程及工件手册是,广大立志利用各类高级语言进行上位机软件开发的首先工具。
注意:实例在使用时不能超出试用版的地址限制,否则无法正确通讯。
电 话:13912935690 025-84359545
腾讯QQ:157610979
邮 箱:157610979@QQ.com
wjun7610@yahoo.com.cn
chinawanglong@163.com
当需要进行16位整数、32位整数、32位浮点数值进行混合读写时,所需拓展函数包括:
1)、DecBitBin 字整数的位抽取;
2)、Int32ToInt_16h 双字到字转换高位字;
3)、Int32ToInt_16l 双字到字转换低位字;
4)、Int16ToInt32 字到双字的转换;
5)、Float32ToInt_16h 浮点到字转换高位字;
6)、Float32ToInt_16l 浮点到字转换低位字;
7)、Int16ToFloat32 字到浮点的转换;
8)、介绍如何实现数据的混合读取和写入;
这里以VB程序为例叙述一下如何进行混合数据的读写。
混合数据的读写,一般都是与PLC的DM区元件的进行操作,因其他
元件区可能不一定支持32位整数及32位单精度浮点数。
这里PLC中DM0、DM1、DM4、DM5是16位整数元件,DM2是32位整数元件,DM6是32位单精度浮点元件
1、混合数据的读
Dim nodeI, addrI, ReadInt As Long
Dim buffer(1024) As Long ‘定义一个数据接收缓冲区 整型为1024,浮点型为256
Dim strreal As String
nodeI = Val(Combnode.Text) ‘取得PLC节点号
addrI = 0 ‘其实地址从DM0开始,DM0~DM7,8个寄存器值
ReadInt = OmronReadInt(ComPort, nodeI, addrI, 8, "DM", buffer(0)) ‘读取字元件值
If ReadInt = 8 Then
ReadText(0).Text = Trim(Str(buffer(0)))
ReadText(1).Text = Trim(Str(buffer(1)))
ReadText(2).Text = Trim(Str(Int16ToInt32(buffer(3), buffer(2)))) ‘DM2为32位整数元件
ReadText(3).Text = Trim(Str(buffer(4)))
ReadText(4).Text = Trim(Str(buffer(5)))
strreal = Trim(Str(Int16ToFloat32(buffer(7), buffer(6)))) ‘DM6为32位单精度浮点数元件
ReadText(5).Text = Format(strreal, "0.000")
End If
2、混合数据的写
Dim SendInt As Integer
Dim SendFloat As Single
Dim nodeI, addrI, addrBit, ReadInt, SendDint As Long
Dim nameplc As String
Dim buffer(1024) As Long ‘定义一个数据发送缓冲区 整型为1024,浮点型为256
‘将混合的数据转换成16位整数,数组
SendInt = Val(SendText(0).Text) ‘16位整数
buffer(0) = SendInt
SendInt = Val(SendText(1).Text) ‘16位整数
buffer(1) = SendInt
SendDint = Val(SendText(2).Text) ‘32位整数
buffer(2) = Int32ToInt_16l(SendDint)
buffer(3) = Int32ToInt_16h(SendDint)
SendInt = Val(SendText(3).Text) ‘16位整数
buffer(4) = SendInt
SendInt = Val(SendText(4).Text) ‘16位整数
buffer(5) = SendInt
SendFloat = Val(SendText(5).Text) ‘32位浮点数
buffer(6) = Float32ToInt_16l(SendFloat)
buffer(7) = Float32ToInt_16h(SendFloat)
Call OmronWriteInt(ComPort, nodeI, addrI, 8, "DM", buffer(0)) ‘按16位整数写入PLC