欧姆龙plc通讯协议

合集下载

欧姆龙plcTCP通讯协议

欧姆龙plcTCP通讯协议

前几天工作需要学习了一下欧姆龙TCP通讯协议。

专注了几天吧,现在总结一下,顺便和大家分享一下欧姆龙plc TCP通讯协议和注意要点,我用的那款PLC是NJ501-1300,我也不清楚欧姆龙别的系列PLC通讯协议有没有区别,我觉得大体应该差不多了吧!朋友们有条件可以试试哈。

我电脑是建立客户端的,plc做位服务器。

这样做有个弊端,每次通讯失败就要重新连接。

TCP通讯有个特点每次通讯前都要先握手,握手成功后才可以发数据。

因为以前没有接触过,不懂,在上面打了好多圈圈,不管是复制别人的通讯格式还是手抄,都通讯失败。

还有一点就是找的通讯手册全是英文的,实在是有点心有余而力不足的感觉。

所以作为新接触TCP通讯协议的朋友一定要注意这点。

下面我们来介绍一下通讯协议,分两部分:1.FINS节点地址数据发送(客户端->服务器)握手命令发送握手格式:上面是从手册上摘的握手格式。

下面我们具体分析一下:FINS(包头)数据长度功能码错误码末位IP地址发送:46494E530000000C000000000000000000000002(本机IP地址末位为02)。

A B C D EA:FINS命令(固定包头)B:数据长度=从功能码数起至数据结尾(以字节为单位,一个字节占用两位)C:功能码分为00000000:客户端服务端00000001:服务端客户端00000002:FINS贞发送命令00000003:FINS贞发送错误通知命令00000006:确立通信连接D:错误码分为00000000:为正常00000001:数据头不是FINS或ASCII格式00000002:数据长度过长00000003:命令(C功能码)错误00000020:连接/通信被占用E:000000C7为本机IP地址末位(十六进制表示),如PLC为客户端:192.168.250.1本机IPC (服务器)IP:192.168.250.02。

再重申一遍,发数据前一定要先发握手数据。

c#基于TCPIP、CIP协议的欧姆龙PLC通信

c#基于TCPIP、CIP协议的欧姆龙PLC通信

c#基于TCPIP、CIP协议的欧姆龙PLC通信⼀、关于CIP协议 CIP通信是Common Industrial Protocl(CIP)的简称,它是⼀个点到点的⾯向对象协议,能够实现⼯业器件(传感器,执⾏器)之间的连接,和⾼等级的控制器之间的连接。

⽬前,有3种⽹络DeviceNet,ControlNet,EtherNet/IP使⽤CIP通信协议作为其上层⽹络协议,由ODVA组织统⼀管理,以确保其⼀致性和精确性。

⼆、EtherNet/IP通信 EtherNet/IP(Ethernet/Industrial Protocol),是⼀个⼯业级的通信⽹络,⽤于⼯业器件间⾼速的信息交换,这些器件包括简单的IO器件(传感器),还有复杂的控制器(机器⼈,PLC,焊机,过程控制器)。

EtherNet/IP使⽤CIP(Common Industrial Protocl),其使⽤EtherNet和TCP/IP技术传送CIP通信包,CIP作为开放的应⽤层,位于EtherNet和TCP/IP协议之上。

三、CIP通信报⽂1.注册会话ID private byte[] Registercmd = new byte[28]{ //--------------------------------------------------------Header 24byte------------------------------------- 0x6F,0x00,//命令 2byte 0x04,0x00,//Header后⾯数据的长度 2byte 0x00,0x00,0x00,0x00,//会话句柄 4byte 0x00,0x00,0x00,0x00,//状态默认0 4byte 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//发送⽅描述默认0 8byte 0x00,0x00,0x00,0x00,//选项默认0 4byte//-------------------------------------------------------CommandSpecificData 指令指定数据 4byte 0x01,0x00,//协议版本 2byte 0x00,0x00,//选项标记 2byte};2.提取会话ID-注册请求的应答报⽂private byte[] RefRegistercmd = new byte[28]{ //--------------------------------------------------------Header 24byte------------------------------------- 0x6F,0x00,//命令 2byte 0x04,0x00,//CommandSpecificData的长度 2byte 0x6B,0x01,0x01,0x00,//会话句柄 4byte 由PLC⽣成 0x00,0x00,0x00,0x00,//状态默认0 4byte 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//发送⽅描述默认0 8byte 0x00,0x00,0x00,0x00,//选项默认0 4byte//-------------------------------------------------------CommandSpecificData 指令指定数据 4byte 0x01,0x00,//协议版本 2byte 0x00,0x00,//选项标记 2byte};public byte[] SessionHandle=new byte[4]{0x6B,0x01,0x01,0x00};//从应答报⽂提取的会话ID后续读写PLC的报⽂中,需要包含PLC返回的会话ID3.读数据服务请求报⽂报⽂由三部分组成 Header 24个字节、CommandSpecificData 16个字节、以及CIP消息(由读取的标签⽣成)实例,读取单个标签名为 TAG1的报⽂总长度为64个字节private byte[] Header = new byte[24]{ 0x6F,0x00,//命令 2byte 0x28,0x00,//长度 2byte(总长度-Header的长度)=40 0x6B,0x01,0x01,0x00,//会话句柄 4byte 0x00,0x00,0x00,0x00,//状态默认0 4byte 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//发送⽅描述默认0 8byte 0x00,0x00,0x00,0x00,//选项默认0 4byte};private byte[] CommandSpecificData = new byte[16]{ 0x00,0x00,0x00,0x00,//接⼝句柄 CIP默认为0x00000000 4byte 0x01,0x00,//超时默认0x0001 4byte 0x02,0x00,//项数默认0x0002 4byte 0x00,0x00,//空地址项默认0x0000 2byte 0x00,0x00,//长度默认0x0000 2byte 0xb2,0x00,//未连接数据项默认为 0x00b2 0x18,0x00,//后⾯数据包的长度 24个字节(总长度-Header的长度-CommandSpecificData的长度)};private byte[] CipMessage = new byte[24]{ 0x52,0x02 //服务默认0x52 请求路径⼤⼩默认2 0x22,06,0x24,0x01,//请求路径默认0x01240622 4byte 0x0A,0xF0,//超时默认0xF00A 4byte 0x0A,0x00,//Cip指令长度服务标识到服务命令指定数据的长度 0x4C,//服务标识固定为0x4C 1byte 0x03,// 节点长度 2byte 规律为 (标签名的长度+1/2)+1 0x91,//扩展符号默认为 0x91 0x04,//标签名的长度 0x54,0x41,0x47,0x31,//标签名:TAG1转换成ASCII字节当标签名的长度为奇数时,需要在末尾补0 ⽐如TAG转换成ASCII为0x54,0x41,0x47,需要在末尾补0 变成 0x54,0x41,0x47,0 0x01,0x00,//服务命令指定数据 默认为0x0001  0x01,0x00,0x01,0x00//最后⼀位是PLC的槽号};PLC回复报⽂:6F0018006B01010000000000000000000000000000000000000000000100020000000000B200 0800 CC 00 0000C1000000 CC-服务标识00-填充字节0000-状态 0为正常 0800:CC-0000的长度C100-数据类型:Bool0000为数据false实例,读取多个标签名为 TAG、TAG1的报⽂总长度为86个字节6F003E006B01010000000000000000000000000000000000000000000100020000000000B2002E005202200624010AF020000A02200224010200060010004C0391035441470001004C039104544 Header:6F003E006B01010000000000000000000000000000000000 24byteCommandSpecificData: 00 00 00 00 0100020000000000B2002E00 16byteCipMessage:5202 20062401 0AF0 2000 0A02 20022401 02000600 1000 4C0391 03 54414700 0100 4C0391045441473101000100010052-服务代码02 -请求路径⼤⼩20062401-请求路径0AF0超时 20 00 CIP指令长度(0A-00之间的长度为32个字节)0A-服务代码(多个标签)02-请求路径⼤⼩20022401请求路径0200 标签的数量0600 偏移量(初始值为:2+标签数量*2)1000 偏移量 =标签服务长度+初始偏移量(有⼏个标签就有⼏个偏移量)4C 03 91 03 54414700 0100 标签TAG 4C039104544147310100 标签TAG1PLC回复报⽂:6F0034006B01010000000000000000000000000000000000000000000100020000000000B20024008A000000020006001300CC000000D00005003232323232CC000000D00005003232323232 76byteHeader:6F0034006B01010000000000000000000000000000000000 24byteCommandSpecificData:000000000100020000000000B2002400 16byteCipMessage:8A00 00000200 06001300 CC 00 0000 D000 0500 3232323232 CC000000D000050032323232328A-多个标签0000 -状态0200-项数0600-标签TAG偏移量1300-标签TAG1偏移量 0000-状态0正常D000-数据类型:string0500:字符串长度(字符串类型特有的)3232323232-数据 "22222":⽬前常⽤的数据类型: C1-BOOL C2-SINT C3-Short C4-Int C7-UShort C8-UInt CA-Float CB -Double D0-String4.写⼊数据服务报⽂实例,往标签名为:TAG1 写⼊true 数据类型为 bool写⼊报⽂:68byte6F002C006B01010000000000000000000000000000000000 000000000100020000000000B2001C00 5202200624010AF00E004D03910454414731C1000100010001000100header:6F002C006B01010000000000000000000000000000000000 24byteCommandSpecificData:000000000100020000000000B2001C00 16byteCIPmessage:52 02 20062401 0AF0 0E00 4D 03 91 04 54414731 C100 0100 0100 01000100 28byte52-服务标识02-请求路径⼤⼩ 20062401-请求路径,默认0AF0-超时0E00-CIP指令长度(绿⾊部分的长度)4D-写⼊标识03-(标签名的长度+1)/2+1 91-扩展符号04-标签TAG1的长度54414731 -标签名的ASCII表⽰C100-数据类型 0100-默认项 0100-数据 TRUE(2byte) 01000100 - 默认最后⼀位为PLC槽号PLC回复报⽂:6F0014006B0101 00000 00000000000000000000000000000 000000000100020000000000B2000400CD000000 44byteheader:6F0014006B01010000000000000000000000000000000000 24byteCommandSpecificData:000000000100020000000000B2000400 16byteCIPMessage:CD 00 0000 CD-服务标识 00-填充字节 0000-状态好注意:当写⼊字符串类型时,写⼊的数据长度为奇数时,需要在数据后填充⼀个字节05.扩展知识⾸先建⽴起TCP连接,CIP通信端⼝默认为44818。

基于欧姆龙PLC#FinsTcp协议上位机通讯(一)-PLC配置

基于欧姆龙PLC#FinsTcp协议上位机通讯(一)-PLC配置

基于欧姆龙PLC#FinsTcp协议上位机通讯(⼀)-PLC配置
背景:
在做⼯控系统集成软件开发中遇到需要和欧姆龙PLC对接,考虑项⽬⼯期优先想到了采⽤FinsTCP通讯协议。

接下来就是记录如何⼀步步实现这⼀通讯模块,记录⾃⼰的实现过程以便⾃⼰不会忘记,也为后续有遇到同样问题的朋友带来帮助。

本篇介绍如何配置欧姆龙PLC及PLC数据块构建,你可以了解到PLC连接,地址块数据监控。

以下为配置步骤
1.连接
⽹线直连电脑,注意⽹线查TCP/IP通讯端⼝;
这⾥采⽤“Sysmac studio”编程环境;需⾃⾏安装;
连接测试
创建⼯程配置IP,默认IP->192.168.250.1
配置完指定IP后需上传到PLC.先转在线
再上传
这样IP就设置完毕。

2.Fins设置
默认9600端⼝
默认设置
3. 建⽴协议数据块地址
根据上位机与PLC协议建⽴数据结构
这样基本就完成了上位机与PLC通讯要求。

接下来进⾏测试!
4.测试
先转到在线,再监控地址
监控如下,可以⼿动修改值
使⽤finstcp协议编写的上位机⼯具测试:
成功!
下⼀篇介绍如何基于C#编程语⾔实现与欧姆龙PLC通讯.。

欧姆龙PLC通信协议

欧姆龙PLC通信协议

欧姆龙 PLC 通信协议参考: W342 --SYSMAC CS/CJ Series Communications Commands欧姆龙通信命令可分为两类:1: C-mode commands 只可通过串口通讯 2: FINS commands 既可通过串口通讯也可通过各类网络通信(适应性较强) 面只讲 FINS 命令一、命令发送:FINS 直连发送命令如下:FINS command code见下表5-1-1 FINS COmmandSThefdlwirg table IlStS the FINS CCXnmands.命令后面紧跟着就是内存区域寻址,见下表Command Code 后面紧跟着需要访问的地址,地址可分为按字地址或按位地址,取决于你需要访的的是字还是某一位。

由紧跟着Command Code 后面的那个字节( I/O memory area designation )区分是读取字还是读取位,还是写入字或写入位,具体定义见下表:5-2-2 I/O MemOry AddreSS DeSignatiOnS按字地址:选取表中Data Type 列中为Word 的命令(命令在Memory area code 内)按字地址的三个地址位中,只使用前两个,最后一个字节为Ascii 码”00”,其后跟两个字节为需要传输的数据量,然后紧跟着就是传输的数据,数据高位在前低位在后。

例如从H12 开始读取7 个字的数据,命令为:0101 B2 001200 0007 例如将W3、W4、W5 分别置数据1234 、ABCD、7890,命令为:0102 B1 000300 0003 1234ABCD7890按位地址:选取表中Data Type 列中为Bit 的命令(命令在Memory area code 内)按位地址的三个地址位中,前两个指示位所在的字,最后一个字节指示位在字中的位置(0~15),其后跟两个字节为需要传输的数据量,然后紧跟着就是传输的数据,每一位的值用一个字节的数据代替,当寻址的位为0 时用ascii码“ 0”代替,当寻址的位为1 时用ascii 码“ 1”代替。

Omron-Fins通讯协议

Omron-Fins通讯协议
00 00成功与否标识00 40或95 05标识码不清楚
00 02为读取内容
如果要把10个数据写入到从DM10开始的10个数据区中
则发送命令如下:
80 00 02 00 56 00 00 13 00 00 01 02 82 00
Data1-Data10
具体说明如下:
UDP/IP帧
FINS命令帧
80 00 02 00 0A
0A
源IP地址
目标IP地址
源IP地址:PLC地址(IP地址最后位)
目标IP地址:通讯主机地址(IP地址最后位)
而PLC返回命令如下:
80 00 02 00 00 56 00 00 13 00 00
不同pic型号返回有区别,这里仅作参考
实例:(读取CIO区452地址:01C4;长度为1个字)
发送码:80 00 02 00 20 00 00BE00 00 01Байду номын сангаас01 80 01C400 00 01说明80 00 02 00消息头
响应
01 01
00 00
Data1—Data10
命令码
结束码
读取的10个字的数据
当结束码不为0000时,则代表执行错误,应重发当前帧。
2
Fins在以太网上帧格式比较简单,简单来说就是在上面所说的Fins帧的基础上加上以
太网的包头就可以了。具体帧格式分为UDP/IP帧格式和TCP/IP帧格式。
2.1 FINS UDP/IP
OMRON FINS
1. OMRON FINS
1.1
FINS(factory in terface network service)通信协议是欧姆龙公司开发的用于工业
自动化控制网络的指令/响应系统。运用FINS指令可实现各种网络间的无缝通信,通

欧姆龙plc通讯协议格式

欧姆龙plc通讯协议格式

欧姆龙plc通讯协议格式
欧姆龙CPM1A型plc与上位计算机通信的顺序是上位机先发出命令信息给PLC,PLC返回响应信息给上位机。

每次通信发送/接受的一组数据称为一“帧”。

帧由少于131个字符的数据构成,若发送数据要进行分割帧发送,分割帧的结尾用CR码一个字符的分界符来代替终终止符。

发送帧的一方具有发送权,发送方发送完一帧后,将发送权交给接受方。

发送帧的基本格式为:
其中:
@ ——为帧开始标志;
机号——指定与上位机通信的PLC(在PLC的DM6653中设置);
识别码——该帧的通信命令码(两个字节);
正文——设置命令参数;
FCS——帧校验码(两个字符),它是从@开始到正文结束的所有字符的ASCⅡ码按位异或运算的结果;
终止符——命令结束符,设置“*”和“回车”两个字符表示命令结束。

响应的基本格式为:
其中:
@ ----为帧开始标志;
机号----应答的的PLC号,与上位机指定的PLC号相同;
识别码----该帧的通信命令码,和上位机所发的命令码相同;
结束码----返回命令结束有无错误等状态;
正文——设置命令参数,仅在上位机有读数据时生效;
FCS——帧校验码,由PLC计算给出,计算方法同上;终止符——命令结束符。

omron plc tcp 协议

omron plc tcp 协议

omron plc tcp 协议
欧姆龙PLC TCP协议是一种工业控制协议,允许运行欧美龙PLC(Programmable Logic Controller)的计算机系统和其他计算机系统以及计算机设备之间的双向通信。

欧姆龙
PLC TCP协议是基于RJ45连接和TCP / IP协议(Transmission Control Protocol / Internet Protocol)来实现实时数据交换,有助于构建一个引人入胜、安全可靠的PLC网络。

欧姆龙PLC TCP协议是特别硬件设计,以降低通信代价,使用范围更高,能够满足采集及控制技术等行业对PLC网络要求。

这种协议提供了多种数据传输机制,从而实现多种功能,比如软件和硬件调试、连接分布式系统、灵活应用网络设备等等。

运行欧姆龙PLC TCP协议的系统可以有效地处理大量信息,可以实现远程监控和远程控制,同时可以提供全面的报警信息,实现实时的备份系统。

此外,在PLC系统中运行欧姆龙PLC TCP协议的系统还可以提供用户自定义的安全策略
管理,加强安全机制,确保网络是安全可靠的。

总而言之,欧姆龙PLC TCP协议是一种行业领先的创新协议,为PLC系统提供了可靠的、灵活的通信技术。

它可以实现大容量数据传输,提供更安全、更可靠的PLC网络应用,
是PLC网络管理的理想解决方案。

关于欧姆龙plc串口通讯协议

关于欧姆龙plc串口通讯协议

1.无协议通信无协议通信是不使用固定协议,协议不经过数据转换,通过通信端口输入、输出指令,如txd、rxd指令,发送接收数据的功能。

这种情况下,通过plc的系统设定将串行端口的串行通信模式设为无协议通信(串行端口1、2都可以)。

通过该无协议通信,与带有rs-232端口或rs-422a/485 端口的通用外部设备,按照txd、rxd指令进行单方面发送接收数据。

例如,可进行来自条形码阅读器的数据输入以及向打印机的数据输出等简单的数据接收和发送。

无协议通信时发送接收的消息帧:开始代码和结束代码之间的数据用txd指令进行发送,或者将插入“开始代码”及“结束代码”之间的数据用rxd 指令进行接收。

当按照txd指令发送时。

将数据从i/o存储器中读取后发送。

按照rxd指令接收时,仅将数据保仔到i/o存储器的指定区域。

“开始/结束代码”均由plc系统设定来指定。

1次txd指令或rxd指令可发送的信息的长度(不包括开始代码或结束代码)最大是256字节。

2.nt链接通信cp1h在pt(可编程终端)及nt链接(1台链接多台的1:n模式)下可进行通信,但在nt链接(1:1模式)下不能进行通信。

pt为nt31/631(c)-v2系列触摸屏或ns系列触摸屏的情况下,可使用高速nt链接。

nt链接可以通过plc系统设定及pt本体上的系统菜单进行设定。

利用pt本体上的系统菜单进行设定时,可通过以下操作进行pt侧的设定。

(1)在pt本体的系统菜单内的存储切换菜单的【串行端口a】或【串行端口b】,选择【nt链接(1:n)】。

(2)按【设定】按钮,将【通信速度】设定为【高速】。

3.上位链接通信上位链接包括两个方面,即从上位计算机到plc和plc到上位计算机。

在前者中,对于cpu单元,从上位计算机发布上位链接指令(c模式指令)或fins指令,进行plc的i/o存储器的读写、动作模式的变更及强制置位/复位等各种控制。

在后者中,对于上位计算机,从cpu单元发出fins指令,发送数据和信息。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

欧姆龙PLC通讯协议
简介
PLC(Programmable Logic Controller,可编程逻辑控制器)是一种用于自动化控制的电子设备,广泛应用于工业控制系统中。

欧姆龙(Omron)是一家知名的自动化控制解决方案提供商,其PLC产品在许多行业中被广泛使用。

本文档将介绍欧姆龙PLC通讯协议,包括其基本原理、通讯方式以及常见的通讯协议类型。

通讯协议的基本原理
在自动化控制系统中,PLC通讯协议起着关键的作用。

它定义了PLC与其他设备(如上位机、传感器、执行器等)之间进行数据交换的规则和格式。

通讯协议使得不同设备之间能够准确、可靠地传输和解析数据,实现各种控制操作。

通讯协议的基本原理包括以下几个方面:
1.数据格式:通讯协议定义了数据在传输过程中的格式,通常包括数据
头、数据体和数据尾等部分。

这些格式使得接收设备能够准确地解析数据,并执行相应的操作。

2.通讯方式:通讯协议规定了PLC与其他设备之间进行通讯的方式,
包括串口通讯、以太网通讯等。

不同的通讯方式具有不同的特点和应用场景,选择合适的通讯方式可以提高通讯的稳定性和速度。

3.协议类型:通讯协议根据不同的应用场景和需求,分为多种类型,如
Modbus协议、Profibus协议等。

每种协议都有自己的特点和优势,根据实际需求选择合适的协议能够实现更好的通讯效果。

欧姆龙PLC通讯方式
欧姆龙PLC支持多种通讯方式,常见的包括串口通讯和以太网通讯。

下面将对这两种通讯方式进行简要介绍。

串口通讯
串口通讯是一种基于RS232或RS485等标准的通讯方式,通过串口将PLC与其他设备连接起来。

欧姆龙PLC通常支持多个串口接口,可以与多个设备进行通讯。

串口通讯的优点是成本较低,适用于小规模的控制系统。

然而,由于串口通讯
的传输速率较低,其通讯距离有限,且易受干扰。

因此,在一些大规模、复杂的控制系统中,串口通讯的应用相对较少。

以太网通讯
以太网通讯是一种基于以太网协议的通讯方式,通过以太网将PLC与其他设备连接起来。

欧姆龙PLC通常具有以太网接口,支持与上位机、传感器、执行器等
设备进行通讯。

以太网通讯的优点是传输速率快、通讯距离远,并且具有较好的稳定性和可靠性。

它适用于大规模、复杂的控制系统,能够满足高速、高效的数据交换需求。

欧姆龙PLC常见的通讯协议类型
欧姆龙PLC支持多种通讯协议,根据不同的应用需求可以选择适合的通讯协议。

以下是一些常见的欧姆龙PLC通讯协议类型:
1.C-mode Host Link协议:这是一种欧姆龙PLC与上位机之间的通讯
协议,通过串口通讯实现。

它支持从上位机向PLC发送指令,以及从PLC向上位机发送数据。

2.FINS协议:FINS(Factory Interface Network Service)协议是一种用
于欧姆龙PLC之间进行通讯的协议。

它支持以太网通讯方式,能够实现多个
PLC之间的数据交换和协调。

3.EtherNet/IP协议:EtherNet/IP是一种基于以太网的工业自动化通
讯协议。

欧姆龙PLC可以通过EtherNet/IP协议与其他设备(如传感器、执
行器等)进行通讯,实现数据的传输和控制。

总结
本文介绍了欧姆龙PLC通讯协议的基本原理、通讯方式以及常见的通讯协议类型。

通讯协议在自动化控制系统中起着重要的作用,能够实现不同设备之间的数据交换和协调。

选择适合的通讯方式和协议能够提高系统的稳定性和效率,满足不同应用场景的需求。

注:本文档仅用于技术交流和学习,禁止用于商业用途。

相关文档
最新文档