具体的看下组态王的帮助,下面的希望对你有帮助。
组态王支持与欧姆龙PLC通过串口RS232进行通讯。该驱动支持的硬件包括C系列、CS1系列、CJ1系列、CV系列,支持的协议为欧姆龙HostLink协议(包括C-mode指令和FINS指令)。
此帮助以实际测试的CJ1系列PLC为例,其它系列PLC均可参考此帮助。
硬件连接与配置
1、组态王与CJ1系列PLC间硬件连接如下图所示:
组态王设置
1、定义组态王设备
组态王定义设备时请根据所选用的PLC的具体型号定义设备:
【PLC】>【欧姆龙】>【C 系列】>【HostLink】
【PLC】>【欧姆龙】>【CJ系列】>【HostLink】
【PLC】>【欧姆龙】>【CS系列】>【HostLink】
【PLC】>【欧姆龙】>【CV系列】>【HostLink】
2、设备地址及通讯参数定义
有两种连接方式,即直连和通过网络连接, 因此地址格式有2种。
1.直通:nUnitNo
2.网络连接:nUnitNo:DNA.DA1.DA2
nUnitNo:与上位机直接相连的PLC的HostLink单元号,取值范围0-31
DNA:PLC所在网络的FINS网络号,取值范围0-127,通过PLC编程软件可以设置
DA1:PLC所在网络的FINS节点号,取值范围0-62,通过PLC编程软件可以设置
DA2:PLC所挂接的模块的单元号,必须为0,即只能读写CPU单元的数据
注意:1. 若是通过PLC与其它的PLC通信也就是通过FINS网络,则要采取nUnitNo:DNA.DA1.DA2这种格式,这种情况下,与计算机直连的PLC不能是C系列PLC,因为C系列的不支持网络连接功能。
2. 若仅仅通过串口与PLC直接通信,则采取nUnitNo这种格式即可。
默认的PLC设备地址为0,如果需要修改通信参数或设备地址,可以使用CX-Programmer工具,也可以使用欧姆龙提供的适配器。
建议的通讯参数:
设定项 推荐值
波特率 9600
数据位 8
停止位 1
校验位 无
3、组态王数据词典-IO变量定义
1)、组态王中寄存器列表
2)、特殊寄存器说明
CTRLA、CTRLC、HOK这三个寄存器是和寄存器DM批量写相关的寄存器,用于对CJ1系列和CS1系列PLC的DM区实现批量写的功能。
CTRLA:当该寄存器的值为1时,启动批量写功能,表示本设备进入批量写状态,此后数据会存入程序缓冲区,等待批量写命令到达后一起写入PLC的DM区。
CTRLC:批量写命令。当该寄存器的值为1时,缓冲区数据批量写入,下一次写之前,应该将CTRLC的值复位为0。
HOK:数据批量写成功标志,返回上一次数据批量写是否成功。
要进行数据批量写,必须先将CTRLA寄存器设置为1,再将所需要批量写的数据写入程序缓冲区,需要批量写入时再将CTRLC寄存器设置为1即可。因此对DM寄存器进行批量写操作按以下步骤进行:
(1) CTRLA = 1,启动批量写操作。HOK变为 FALSE,表示"批量写尚未成功完成";
(2) DMxxx = 数据,指定准备写的数据;
(3) CTRLC = 1,批量写执行;
(4) 返回后,HOK(0 写失败,1 写成功),CTRLA和CTRLC自动恢复到FALSE
注意:
(1)CTRLC写后,CTRLA和CTRLC自动回到FALSE,但是由于组态王需要一个采集周期才取得最新值,因此,为了保险起见,在启动批量写过程前,可以手动对CTRLA和CTRLC置FALSE。
过程示例:
CTRLA = 1;
DM1000 = 1234;
DM1023 = 8896;
CTRLC = 1;
CTRLA = 0;
CTRLC = 0;
(2)CTRLA一定要和CTRLC一起使用。
说 明:
1. CTRLA、CTRLC、HOK这三个寄存器用于对CJ1系列和CS1系列PLC的DM区实现批量写的功能
2.各寄存器针对不同类型定义的不同格式。
其中:
寄存器名称
定义格式
SHORT,USHORT,FLOAT,LONG,LONGBCD,BCD
BIT
BYTE
STRING
AR,DM, HR,IR,LR,SR,WR,CIO
Axxx:xxx代表内存区地址[0-65535]
Axxx.yy:yy代表位序号[0-15]
Axxx.yy:yy代表字节序号[0-1]
(0:低字节 1:高字节)
Axxx.yy:yy代表通道数[1-64],每个通道存储2个单字节字符
EM
Azz:xxx:zz代表EM块号[[0-12];xxx代表内存区地址[0-65535]
Azz:xxx.yy:yy代表位序号[0-15]
Azz:xxx.yy:yy代表字节序号[0-1](0:低字节 1:高字节)
Azz:xxx.yy:yy代表通道数[1-64],每个通道存储2个单字节字符
寄存器名称
定义格式
BCD
BIT
TIM、CNT
Axxx:xxx代表内存区地址[0-65535]
Axxx:xxx代表内存区地址[0-65535]
TSV、CSV
Axxx:xxx代表内存区地址[0-2047]
-----
以下这些为虚拟寄存器,即程序内部设计的寄存器
寄存器名称
定义格式
USHORT
BCD
BIT
TIMEOUT
Axxx:xxx仅代表通道[0-0]
-----
-----
ERROR
-----
Axxx:xxx仅代表通道[0-1]
-----
CTRLA、
CTRLC、
HOK
-----
-----
Axxx:xxx仅代表通道 [0-0]
3. 寄存器数据与变量类型的对应关系如下:
数据类型
变量类型
BIT
I/O离散
BYTE|SHORT|USHORT|BCD|LONG| LONGBCD
I/O整型
FLOAT
I/O实型
STRING
I/O字符串
4. TSV寄存器负责读取定时器的设定值、CSV寄存器负责读取计数器的设定值。
5. TIM寄存器,CNT寄存器:
定义成Bit则表示读取TIM,CNT寄存器的完成标志,定义为Bit类型时寄存器只读。
定义成BCD则表示读取或者设置定时器、计数器的当前值。
6. Error0为读数据产生的错误码,Error1为写数据产生的错误码,值为0表示没有错误。
7. PLC系列说明:
C系列:C2000H、C200H、C200HE、C200HE-Z、C200HG、C200HE-Z、C200HS、C200HX、C200HX-Z、C1000H、C**H、C**K、C**P、CQM1、C500、CPM1(CPM1A/CPM2*)
CJ系列:CJ1G、CJ1H、CJ1G-H、CJ1H-H
CS系列:CS1G、CS1JH
CV系列:CVM1、CVM1-V2、CV500、CV1000、CV2000。
注意事项:
1、定义变量前请首先确认PLC设备所包含存储区的地址范围,避免定义超过范围的寄存器变量,否则会引起数据读取错误,影响正常范围内数据的读取。
a、确认定义的通道在PLC存储区的范围之内。
b、避免在边界地址中定义长字节数据类型,例如LONG、LONGBCD、FLOAT。因为这些类型占用4个字节,而PLC的基本存储单元为2字节的字,组态王的读取的数据范围已经超过了PLC的实际范围。例如,CJ1系列PLC的AR存储区范围是0-959,而用组态王定义了AR959,数据类型为LONG,实际的操作地址为959和960,已经超过了PLC存储区范围,会造成读写数据错误
2、虽然所有寄存器都是读写型,但需要具体参考PLC使用说明,或者看PLC监视内存区,若监视区为灰色,则表示不可写,只读。上位机写数据的效果是:上位机保持一段写到PLC中的数据,随即读回PLC中真正的值