OMRON C200HX44与组态王的联接 点击:1540 | 回复:2



hncdld

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 50回
  • 年度积分:0
  • 历史总积分:67
  • 注册:2006年6月24日
发表于:2009-03-20 12:38:08
楼主

新人请教:OMRON C200HX44与组态王的联接采用CPU上面的232联接,电缆怎么制作?在组态王上面的通讯设置是怎么样的?数据位和停止位的定义,选取OMRON C CERIAL  HOSTLINK是不是,I/O映射操作,I/O离散怎么不行呀,不能对BIT设置,能提供帮助不胜感激!




AXIAO82

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 147回
  • 年度积分:0
  • 历史总积分:259
  • 注册:2005年9月25日
发表于:2009-03-21 12:28:01
1楼

具体的看下组态王的帮助,下面的希望对你有帮助。

组态王支持与欧姆龙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中真正的值





euro2008

  • 精华:4帖
  • 求助:0帖
  • 帖子:228帖 | 12358回
  • 年度积分:2963
  • 历史总积分:29795
  • 注册:2004年4月26日
发表于:2009-03-21 12:39:49
2楼
可以用232口的编程电缆试试

热门招聘
相关主题

官方公众号

智造工程师