整理欧姆龙PLC全系列HostLink通信协议串口动态链接库DLL.docx
- 文档编号:12745858
- 上传时间:2023-04-21
- 格式:DOCX
- 页数:25
- 大小:24.21KB
整理欧姆龙PLC全系列HostLink通信协议串口动态链接库DLL.docx
《整理欧姆龙PLC全系列HostLink通信协议串口动态链接库DLL.docx》由会员分享,可在线阅读,更多相关《整理欧姆龙PLC全系列HostLink通信协议串口动态链接库DLL.docx(25页珍藏版)》请在冰豆网上搜索。
整理欧姆龙PLC全系列HostLink通信协议串口动态链接库DLL
(1)结合评价对象的特点,阐述编制安全预评价报告的目的。
一、最新欧姆龙PLC全系列HostLink通信协议串口动态链接库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、打开串口
FunctionComOpen
(nport,BaudRate,DataBits,Parity,StopBits:
longint;User:
Pchar):
longint;stdcall;
参数:
nport:
打开串口号,取值为1~8,代表COM1~COM8;
BaudRate:
波特率,取值为1200、2400、4800、9600、19200、38400(推荐使用9600或
19200);
DataBits:
数据位,取值为5、6、7、8(推荐使用7或8);
Parity:
校验位,取值为1(E)、2(O)、3(M)、4(S)、5(N),注括号里是校验位的英文缩
写;
StopBits:
停止位,取值为1
(1)、2
(2)、3(1.5),注括号里是实际的停止位位数
User:
DLL授权用户名;
返回值:
长整型,操作成功返回1,否则返回0;打开串口不成功即返回0时的原因:
1)、串口不存
在或被占用;2)、DLL试用过期;3)、DLL授权注册不正确。
使用举例:
ComOpen(1,9600,7,1,1,'wjun'),打开COM1口,并设定波特率=9600、数据位=7、校验位=E(偶
校验)、停止位=1,授权用户='wjun'。
2、关闭串口
FunctionComClose(nport:
longint):
longint;stdcall;
参数:
nport:
串口号,取值为1~8,代表COM1~COM8;
返回值:
长整型,操作成功返回1,否则返回0;
使用举例:
ComClose
(1),关闭打开的COM1口。
3、读取PLC的操作状态----{这很重要因为HostLink只有在监视或编程状态才可以进行写操
作与强制操作,工控应用中应使用监视状态}
............................
..................
FunctionComMS(nport,node:
Longint):
Longint;stdcall;
参数:
nport:
串口号,取值为1~8,代表COM1~COM8;
node:
PLC站号或节点号(单元号),取值为0~31;
返回值:
长整型,返回值:
0:
编程、1:
运行、2:
监视、3:
读取错误;
使用举例:
ComMS(1,0),由串口1读取0号PLC的操作状态;
4、改变PLC的操作状态
FunctionComSC(nport,node,State:
longint):
Longint;stdcall;
参数:
nport:
串口号,取值为1~8,代表COM1~COM8;
node:
PLC站号或节点号(单元号),取值为0~31;
State:
PLC状态参数,取值为0:
编程、1:
运行、2:
监视;
返回值:
长整型,操作成功返回1,否则返回0;
5、读取PLC的型号代码
FunctionComMM(nport,node:
Longint):
Pchar;stdcall;
参数:
nport:
串口号,取值为1~8,代表COM1~COM8;
node:
PLC站号或节点号(单元号),取值为0~31;
返回值:
Pchar(字符串),返回值:
"Error":
表示读取错误
其他见下表:
型号代码PLC型号
"01"C250
"02"C500
"03"C120
"0E"C2000
"10"C1000H
"11"C2000H/CQM1/CPM2A/CPM2C/CPM1/CPM1A/SRM1(-V2)
"12"C20H/C28H/C40H/C200H/C200HS
"20"CV500
"21"CV1000
"22"CV2000
"30"CP1H
"40"CVM1-CPU01-E
"41"CVM1-CPU11-E
"42"CVM1-CPU21-E
所有字符串返回值都以"@"为字符串数据终止符,有效字符串为"@"之前的所有字符串组;
6、测试PC与PLC的通信是否可以有效执行
FunctionComTS(nport,node:
longint):
Longint;stdcall
参数:
nport:
串口号,取值为1~8,代表COM1~COM8;
node:
PLC站号或节点号(单元号),取值为0~31;
返回值:
长整型,测试成功返回1,否则返回0;
7、PLC存储器数据的读取(IR/SR、LR、HR、AR、DM、T-PV值、T-状态值)
FunctionComWR(nport,node,address,Count:
longint;Order:
pchar):
Pchar;stdcall;
参数:
nport:
串口号,取值为1~8,代表COM1~COM8;
node:
PLC站号或节点号(单元号),取值为0~31;
address:
寄存器地址,取值请参欧姆龙PLC手册;
Count:
读取寄存器个数,T-状态值的读取最大可读一次都120个,其它一次可读30个字的数据;
Order:
读取各区命令字符见下表:
命令代码读取区域
"RR"IR/SR
"RL"LR
"RH"HR
"RJ"AR
"RD"DM
"RC"T-PV值
"RG"T-状态值
返回值:
字符串数据,字符串数据的终止符为"@";
使用举例:
ComWR(1,0,0,4,'RR'),由COM1读取0000~0003四个寄存器的值,如返回值为
“0001006403E809F0@”,则表示0000=0001,0001=0064,0002=03E8,0003=09F0;
1)、非T区的读取返回值为16进制字符串组,可以将返回值如上四位一组再转换成“0000~FFFF”
的整数值;
-----------------
读字符串序列如:
|0001|0064|03E8|009F||@|
-----------------
IR区0000000100020003终止符
对T/C区:
2)、如读T-PV值,例ComWR(1,0,0,4,'RC')则返回BCD码组合数据,表示T的PV值(当前值)
-----------------
读字符串序列如:
|0001|01000|1000|0159||@|
-----------------
T区0000000100020003终止符
3)、如读取T/C-状态值,例ComWR(1,0,0,4,'RG')则返回0、1字符串组,表示T/C的完成状态
----------------
读字符串序列如:
|1|0|0|1||@|
----------------
T区0000000100020003终止符
8、PLC存储器数据的写入(IR/SR、LR、HR、AR、DM)
FunctionComWW(nport,node,address:
longint;Sendstr,Order:
pchar):
Longint;stdcall;
参数:
nport:
串口号,取值为1~8,代表COM1~COM8;
node:
PLC站号或节点号(单元号),取值为0~31;
address:
寄存器地址,取值请参欧姆龙PLC手册;
Sendstr:
给PLC写入的字符串数据组;IR/SR区一次最多写30个字、LR区、HR区、AR区注意不要超出
地址范围、
DM值区一次最多写29个字。
Order:
写入各区命令字符见下表:
命令代码写入区域
"WR"IR/SR
"WL"LR
"WH"HR
"WJ"AR
"WD"DM
返回值:
长整型,操作成功返回1,否则返回0;
使用举例:
ComWW(1,0,0,'0001006403E8009F','WR'),由串口1预置值0号PLC的IR区的0000=1,
0001=100,0002=1000,0003=159。
写入值为16进制字符串组
写字符串序列如:
|0001|0064|03E8|009F|
--------------
IR区0000000100020003
9、PLC的线圈强制置位(IR、LR、HR、AR、TIM、TIMH、TIML、TMHH、CNT、CNTR)
FunctionComFBitset(nport,node,address,Bit:
longint;Order:
pchar):
Longint;stdcall;
参数:
nport:
串口号,取值为1~8,代表COM1~COM8;
node:
PLC站号或节点号(单元号),取值为0~31;
address:
寄存器地址,取值请参欧姆龙PLC手册,
Bit:
强制置位字地址的位地址,取值0~15,TIM、TIMH、TIML、TMHH、CNT、CNTR强制置位时的
取值总是0。
Order:
强制置位各区命令字符见下表:
命令代码强制置位区域
"CIO"IR/SR
"LR"LR
"HR"HR
"AR"AR
"TIM"定时器完成标志
"TIMH"高速定时器完成标志
"TIML"长定时器完成标志
"TMHH"特高速定时器完成标志
"CNT"计数器完成标志
"CNTR"可逆定时器完成标志
返回值:
长整型,操作成功返回1,否则返回0;
使用举例:
ComFBitset(1,0,0,0,'CIO'),强制置位(IR)0.00;
ComFBitset(1,0,0,0,'TIM'),强制置位(T)0000。
10、PLC的线圈强制复位(IR、LR、HR、AR、TIM、TIMH、TIML、TMHH、CNT、CNTR)
FunctionComFBitreset(nport,node,address,Bit:
longint;Order:
pchar):
Longint;stdcall;
参数:
nport:
串口号,取值为1~8,代表COM1~COM8;
node:
PLC站号或节点号(单元号),取值为0~31;
address:
寄存器地址,取值请参欧姆龙PLC手册;
Bit:
强制复位字地址的位地址,取值0~15;TIM、TIMH、TIML、TMHH、CNT、CNTR强制复位时的
取值总是0。
Order:
强制复位各区命令字符见下表:
命令代码强制复位区域
"CIO"IR/SR
"LR"LR
"HR"HR
"AR"AR
"TIM"定时器完成标志
"TIMH"高速定时器完成标志
"TIML"长定时器完成标志
"TMHH"特高速定时器完成标志
"CNT"计数器完成标志
"CNTR"可逆定时器完成标志
返回值:
长整型,操作成功返回1,否则返回0;
使用举例:
ComFBitreset(1,0,0,0,'CIO'),强制复位(IR)0.00;
ComFBitreset(1,0,0,0,'TIM'),强制复位(T)0000。
11、PLC的多线圈强制置位复位(IR、LR、HR、AR、TIM、TIMH、TIML、TMHH、CNT、CNTR)
FunctionComFRSset(nport,node,address:
longint;Sendstr,Order:
pchar):
Longint;stdcall;
参数:
nport:
串口号,取值为1~8,代表COM1~COM8;
node:
PLC站号或节点号(单元号),取值为0~31;
address:
寄存器地址,取值请参欧姆龙PLC手册;
sendstr:
给多线圈写入的值,该值为16进制字符串组成的16个字符串依下表次排列,TIM、TIMH
、TIML、TMHH、CNT、CNTR强制置位复位时仅第15位是有效的其它将被忽略。
-----------------------------
--
字符串序列:
|0|2|3|5|4|8|2|5|3|0|2|8|0|2|3|5
|
-----------------------------
--
bit1514131211109876543210
16进制字符串所表示的处理意义参下表:
0:
不改变位状态
2:
复位
3:
置位
4:
强制复位
5:
强制置位
8:
取消强制置位/复位
Order:
强制置位复位各区命令字符见下表:
命令代码复位区域
"CIO"IR/SR
"LR"LR
"HR"HR
"AR"AR
返回值:
长整型,操作成功返回1,否则返回0;
使用举例:
ComFRSset(1,0,0,'0235482530280235','CIO'),DLL将给(IR)0000按下表动作:
0.150不改变位状态
0.142复位
0.133置位
0.125强制置位
0.114强制复位
0.108取消强制置位/复位
0.092复位
0.085强制置位
0.073置位
0.060不改变位状态
0.052复位
0.048取消强制置位/复位
0.030不改变位状态
0.022复位
0.013置位
0.005强制置位
12、取消所有被强制置位、复位、及多位强制置复位的强制状态
FunctionComFCancel(nport,node:
longint):
Longint;stdcall;
参数:
nport:
串口号,取值为1~8,代表COM1~COM8;
node:
PLC站号或节点号(单元号),取值为0~31;
返回值:
长整型,操作成功返回1,否则返回0;
使用举例:
ComFCancel(1,0),取消PLC中所有被强制置位、复位的单元
注:
使用强制命令后PLC程序、写入命令都无法改变被强制的位的状态值,因此在实际工控应用中
建议用写入命令或多线圈强制置位复位命令ComFRSset中的字符串处理码的2:
复位、3:
置位来操作
置位复位。
如果一定要用强制命令,那么在记得使用后用取消强制命令来恢复管理。
由此可以推出下面的置位与复位函数,注意采用置位与复位函数,置位或复位的结果将受PLC程序
输出的影响,推崇置/复位用在输入条件中。
13、PLC的线圈置位(IR、LR、HR、AR、TIM、TIMH、TIML、TMHH、CNT、CNTR)
FunctionComSet(nport,node,address,Bit:
longint;Order:
pchar):
Longint;stdcall;
参数:
nport:
串口号,取值为1~8,代表COM1~COM8;
node:
PLC站号或节点号(单元号),取值为0~31;
address:
寄存器地址,取值请参欧姆龙PLC手册,
Bit:
置位字地址的位地址,取值0~15,TIM、TIMH、TIML、TMHH、CNT、CNTR置位时的取值总是0
。
Order:
置位各区命令字符见下表:
命令代码置位区域
"CIO"IR/SR
"LR"LR
"HR"HR
"AR"AR
"TIM"定时器完成标志
"TIMH"高速定时器完成标志
"TIML"长定时器完成标志
"TMHH"特高速定时器完成标志
"CNT"计数器完成标志
"CNTR"可逆定时器完成标志
返回值:
长整型,操作成功返回1,否则返回0;
使用举例:
ComSet(1,0,0,0,'CIO'),置位(IR)0.00;
ComSet(1,0,0,0,'TIM'),置位(T)0000。
14、PLC的线圈复位(IR、LR、HR、AR、TIM、TIMH、TIML、TMHH、CNT、CNTR)
FunctionComReset(nport,node,address,Bit:
longint;Order:
pchar):
Longint;stdcall;
参数:
nport:
串口号,取值为1~8,代表COM1~COM8;
node:
PLC站号或节点号(单元号),取值为0~31;
address:
寄存器地址,取值请参欧姆龙PLC手册;
Bit:
复位字地址的位地址,取值0~15;TIM、TIMH、TIML、TMHH、CNT、CNTR复位时的取值总是0
。
Order:
复位各区命令字符见下表:
命令代码复位区域
"CIO"IR/SR
"LR"LR
"HR"HR
"AR"AR
"TIM"定时器完成标志
"TIMH"高速定时器完成标志
"TIML"长定时器完成标志
"TMHH"特高速定时器完成标志
"CNT"计数器完成标志
"CNTR"可逆定时器完成标志
返回值:
长整型,操作成功返回1,否则返回0;
使用举例:
ComReset(1,0,0,0,'CIO'),复位(IR)0.00;
ComReset(1,0,0,0,'TIM'),复位(T)0000。
在本DLL中去除了一些特权操作指令接一些不太容易在现场应用中使用的指令(如果有朋友
认为指令怎么不全而你正好需要的话请注册时与我提出我会将你需要的指令加入。
)
三、DLL附加函数说明
1、串口打开状态的读取
FunctionComTrue(nport:
longint):
longint;stdcall;
参数:
noprt:
串口号,取值为1~8,代表COM1~COM8;
返回值:
长整型,串口打开返回1,否则返回0;
2、整数转换成16进制字符串(为VC等非RAD开发环境所增设)
FunctionCIntToHex(Cint,Digits:
Longint):
Pchar;stdcall;
参数:
Cint:
待转换整数,取值为(0~65535);
Digits:
转换的字符串位数,指定位数小于实际位数时按实际输出;
使用举例:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 整理 欧姆 PLC 系列 HostLink 通信协议 串口 动态 链接 DLL