版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。

...

驱动名称:bin/drivers/omronfinsdrv/ omronfinsdrv.exe

...

驱动配置

内置驱动,不需要增加和配置。

...

设备配置

对于通过网口的欧姆龙PLC:

在驱动omronfinsdrv下增加一个设备,如ormon1

...

  • 连接方式选择:tcp客户端
  • IP:PLC的网口 的IP地址,如不知道可以参考欧姆龙PLC编程软件说明,通过USB连上去查看或修改
  • 端口:缺省为9600
  • 其他参数:不需要配置
  • 参数1:单元号,缺省为0

...

接入串口(如CP1E,接入DB9针串口),进行串口配置

  • 连接方式选择:serial连接方式选择:serial。实际上时RS232
  • 波特率:按照欧姆PLC CX-P所配置大小,默认9600
  • 一般默认配置偶校验,数据位7,停止位2
  • 如下 parity=even;databits=7;stopbits=2
  • param1配置单元站号 由PLC决定
  • 最终以PLC给出的参数为准,可以通过欧姆龙PLC连接到PLC,看到:

...

  • 地址是数据的第一个字节的起始地址,数据长度取决于eview的数据类型,通常是:
    • 1位(bool类型)
    • 1个字节(uchar,char)
    • 2个字节(uint16,int16)
    • 4个字节(int32,uint32,float)
    • 8个字节(double)
  • 寄存器中除IR类型以4个字节为单位
  • 其余都是以字(2个字节为单位)
  • 寄存器地址从0开始,如D:0
  • 其中:CIO、WR、HR、AR、DM可以按位获取数据或控制,其他类型不能按位控制,但可以按位获取数据。按位获取的位序号从0到15

常用寄存器有:

PLC数据类型和eview数据类型的对应关系

PLC数据类型eview数据类型说明

int32

uint32


















  • DM数据区域,变量地址示例:
    • 按字:D20,D:20, 数据类型:int32/uint3220,数据类型:参考上表
    • 按位:D20.1,D:20.1, 数据类型:bool数据类型:通常bool
  • CIO,通用IO寄存器。地址示例:
    • 按字:CIO20, CIO:2020,数据类型:参考上表
    • 按位:CIO20.1, CIO:20.1, 数据类型:通常bool
  • HR,保持寄存器。地址示例:
    • 按字:H20, H:2020,数据类型:参考上表
    • 按位:H20.1, H:20.1, 数据类型:通常bool
  • WR,工作内存区。地址示例:
    • 按字:W20, W:2020,数据类型:参考上表
    • 按位:W20.1,W:20.1, 数据类型:通常bool
  • AR,辅助寄存器。地址示例:
    • 按字:A20, A:2020,数据类型:参考上表
    • 按位:A20.1,A:20.1, 数据类型:通常bool

错误处理

  • log日志在握手中返回了错误码:36(0x24)。查询下表,得到错误信息为:相同的FINS节点地址已经被使用。

    • 这个意思是说,客户端地址码在服务端已经注册了。客户端地址码应该是IP的最后1段,服务端已经登记了这段IP给其他客户端使用

    • 解决方法:程序中握手返回错误码时,会自动重新生成1个客户端码,这样总能遇到1个未登记在服务端的客户端码
  • log日志下面是正常的提示,不是错误: [INFO][2424] **************成功解析一个完整包,握手返回,返回的客户端地址:197 ,服务端地址:15!(设备名:YPLC15,块名:CIO_group_17, 事务号:31597)
  • log提示错误,读取不到数据:[ERROR][29fc] 收到读写响应包, 操作号:257, 操作结果:64<>0(设备名:YPLC12,块名:D_group_15, 事务号:1)
    • 查询通信文档英文版,这个64=0x40=01000000,该位表示的可能是:1: Special I/O Unit error

...

Unit No:单元号,对应PLC内置串口或串行通讯单元设置的Hostlink单元号.缺省为0
Header code:在PC主机直连PLC的情况下,头代码为FA
Response wait time:设置范围为0~F,单位为10ms,例如设置为2,则响应等待时间为20ms
ICF、DA2、SA2:在PC主机直连PLC的情况下,固定为00
Fins command code:参考Fins通讯手册P125,读命令:0101; 写命令:0102
Text:具体操作内容,读写区域、读取起始地址、数据长度等内容

FCS校验码,1个字节

帧结束标志*


  • 读取D0开始1个通道的值:读取D0开始1个通道的值(1个WORD):

请求:@00FA0000000000101B1000A0000087D请求:@00FA00000000001018200000000017C*

说明:@(起始代码) 00(PLC单元号)  FA(头部代码)  00(响应时间) 00(ICF) 00(DA2) 00(SA2) 00(SID,事务号)  0101(读取功能码) B1【82(WR区DM区) 000A0000(起始地址10起始地址0) 00(通道中的第几位) 00080001(读取8个通道) 读取1个寄存器)】 7D(校验码)*(结束标记)

返回:@00FA004000000001010000123447*

说明:@(起始代码) 00(PLC单元号) FA(头部代码) 00(响应时间) 40(ICF) 00(DA2) 00(SA2) 00(SID,事务号)  0101(读取功能码)  0000(返回状态?) 1234(读取到的1个字)  47(校验码)*(结束标记)

...

说明:@(起始代码) 00(PLC单元号) FA(头部代码) 00(响应时间) 40(ICF) 00(DA2) 00(SA2) 00(SID,事务号)  0101(读取功能码)  0000(返回状态?) 11112311AAAADDDDFFFF12323243A123(读取到的16个字)  37(校验码)*(结束标记)


  • 读取W区的一个位W20.5:???


  • 写W20开始的5个通道

请求:@00FA0000000000102B100140000050001000200030004000506*

...

说明:@(起始代码) 00(PLC单元号) FA(头部代码) 00(响应时间) 40(ICF) 00(DA2) 00(SA2) 00(SID,事务号)  0102(写入功能码)  0000(返回状态?) 40(校验码)*(结束标记)


  • 写W20.5开始的第6位


FINS-UDP协议分析


  • UDP访问方式:
  • 读取示例:读取DM区20个字, 从DM100H开始
    命令:80 00 02 00 41 00 00 0B 00 00 01 01 82 00 64 00 00 14
    说明:
    80 00 02       固定帧头
    00 41 00       设备的网络号,节点号,单元号
    00 0B 00       PC的网络号,节点号,单元号
    00 01 01        SID+MRC+SRC
    82 表示DM区
    00 64 首地址
    00 固定
    00 14 读取数量
  • 响应: D100=0x1388, D101=0x1770, D102=0x1b58
    c0 00 02 00 0b 00 00 41 00 00 01 01 00 00 13 88 17 70 1b 58 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    说明:
    C0 00 02    固定帧头
    00 0B 00     PC网络号,节点号,单元号
    00 41 00     设备网络号,节点号,单元号
    00 01 01     SID+MRC+SRC
    00 00
    数据区:
     13 88 17 70 1b 58 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00


FINS

...

TCP通讯手册与文档资料

FINS 串口文档资料