GE 9030系列modbusTCP通讯手册文档格式.docx
《GE 9030系列modbusTCP通讯手册文档格式.docx》由会员分享,可在线阅读,更多相关《GE 9030系列modbusTCP通讯手册文档格式.docx(27页珍藏版)》请在冰豆网上搜索。
CRS字的位置分配给每个COMMREQ函数在COMMREQ命令块中。
COMMREQ功能块的FT输出:
此输出表示检测到PLCCPUCOMMREQ功能块和/或命令块出错,未传递命令块到以太网接口。
控制COMMREQ功能块执行的逻辑程序在开发控制COMMREQ函数执行的逻辑时必须小心。
COMMREQ功能必须由一次触发启动,以防止COMMREQ被触发每次CPU扫描都会重复执行,因为这会超出以太网接口和可能需要手动重启。
在启动COMMREQ之前检查某些状态位功能也很重要。
特别是,LAN接口OK位应用作联锁,以当以太网接口不工作时,防止执行COMMREQ功能。
在通道上启动COMMREQ后,不应再向直到一个非零CRS字从以太网返回到程序接口4.4-4Series90的TCP/IP以太网通信™PLC用户手册-2002年5月GFK-1541B
通信请求的操作
下面的图和文本解释了如何执行通信请求以完成
从远程Modbus/TCP设备读取的数据。
该图具体说明了成功的数据读取操作
1当有电源流到COMMREQ函数时,通信请求开始客户机PLC。
此时,命令块数据从PLCCPU发送到以太网接口。
2如果命令块为无效。
如果语法正确,则在数据传输后返回CRS字。
。
COMMREQ功能块和命令块
本节描述所有通信请求的通用编程结构:
COMMREQ功能块和命令块。
当逻辑程序将电源传递给COMMREQ功能块。
Enable:
用于激活COMMREQ功能块的控制逻辑。
有关以下信息,请参见第5节开发您的程序。
IN:
命令块的位置。
它可以是面向单词区域内的任何有效地址
Series90-30以太网接口的内存(%R,%AI或%AQ)。
SYSID:
一个十六进制字值,它提供机架(高字节)和插槽(低字节)位置
以太网接口。
注意,如果使用GEFanuc的VersaProPLC软件,则前导零
此十六进制字值不显示在屏幕上;
例如,0004将显示为4。
示例:
任务:
对于90-30系列以太网接口,必须始终将其设置为零。
注意安全
输入错误的任务值可能会导致以太网接口失败。
FT输出:
如果PLCCPU(而不是以太网接口)检测到COMMREQ失败。
在这种情况下,不会为此更新其他状态指示器通信请求。
当COMMREQ功能启动时,命令块从PLCCPU发送到以太网接口。
命令块包含要由执行的命令的详细信息界面。
命令块的CPU内存中的地址由COMMREQ功能块。
此地址可以是面向单词区域中的任何有效地址内存(%R、%AI或%AQ,用于Series90-30EthernetInterface)。
命令块无效通常使用块移动编程指令设置。
命令块具有以下结构:
输入命令块信息时,请参阅以下定义:
(字1)数据块长度:
数据块的数据块部分的字长度命令块。
数据块部分从命令块的字7开始。
长度为从字7的数据块开始测量,而不是从命令块。
每个命令的正确值,以及每个命令的相关长度命令,将在下一节中指定。
(字2)WAIT/NOWAIT标志:
对于TCP/IP以太网,此标志必须设置为零通信。
COMMREQ状态字:
以太网接口更新CRS字以显示成功或失败命令失败。
命令字3和4指定CRS的PLC内存位置一句话。
(字3)COMMREQ状态字内存类型:
该字指定CRS字。
下表列出了内存类型:
(字4)COMMREQ状态字地址偏移量:
该字包含已选择内存类型。
状态字地址偏移量是一个基于零的数字。
例如,如果如果要将%R1作为CRS字的位置,则必须为偏移量指定零。
偏移量对于%R100,将是99位小数。
但是,请注意,这是频道命令。
(字5):
保留。
设置为零。
(字6):
(字7及以上)数据块:
数据块定义要执行的通道命令。
有关如何填写通道命令信息的信息,请参阅下一节
ModbusTCP通道命令
本节介绍通道命令的操作。
详细的描述和包括每个通道命令的示例。
有四个通道命令:
ƒ打开Modbus/TCP连接
ƒ关闭Modbus/TCP连接
ƒ从Modbus/TCP设备向PLC读取数据
ƒ将数据从PLC写入Modbus/TCP设备
打开Modbus/TCP客户端连接(3000)
Modbus/TCP以太网接口使用一个频道。
Modbus/TCP客户端通信最多可使用十六(16)个通道。
当前分配给SRTP通信的信道数可以限制特定应用程序中客户端连接可用的通道。
打开的Modbus/TCPCOMMREQ请求通信子系统将带远程Modbus/TCP设备的通道。
使用本文后面定义的COMMREQ可编程逻辑控制器可在远程设备之间传输数据。
一旦为Modbus/TCP客户端通信分配了一个通道,该通道将保持不变分配。
仅当:
应用程序关闭通道,由于PLC转换为停止,或基础TCP连接已终止。
远程Modbus/TCP设备的IP地址在打开的Modbus/TCP中指定使用标准点十进制格式的COMMREQ。
不接受其他IP地址格式。
COMMREQ状态字(CSR)表示打开Modbus/TCP的成功或失败客户端连接命令。
如果COMMREQ请求无效的通道号或已分配的通道COMMREQ失败,CSR设置为非零值以识别失败。
有关详细的CSR故障代码,请参阅本文档后面的“状态数据”部分。
命令3000示例
在IP地址10.0.0.1处建立到远程Modbus/TCP设备的通道(通道5)。
返回COMMREQ状态字到%R10。
12月(十六进制)
字100008(0008)通道命令数据块长度
字200000(0000)始终为0(无等待模式请求)
字300008(0008)CRS字的内存类型(%R)
字400009(0009)CRS字地址减1(%R10)*
保留字50万(0000)
字60000(0000)保留
Word703000(0BB8)打开Modbus/TCP客户端连接
字800005(0005)信道号(5)
字900001(0001)远程设备地址类型
字1000004(0004)远程设备地址长度
字1100010(0010)第1位字节的数值
字1200000(0000)第2个八位位数值
单词1300000(0000)第3个八位位数
单词1400001(0001)第4八位位数值
*单词4(CRSWordaddress)是命令块中唯一基于零的地址。
只有这个
值需要从预期地址中减去1。
(单词7)通道命令号:
Word7是打开Modbus/TCP的命令id
客户端连接命令。
如果与指定设备的TCP连接成功,则为分配。
(单词8)通道号:
字8指定要为Modbus/TCP分配的信道号客户端连接。
通道1-16可用于客户端通信。
(单词9)地址类型:
Word9指定为远程设备指定的IP地址类型。
此单词中需要一
(1)个值。
(字10)IP地址长度:
字10指定IP地址的长度。
价值这个单词需要四(4)个。
(单词11)IP地址1八位:
字10指定IP地址的第一个八位集的值。
(单词12)IP地址2八位:
字11指定IP的第二个八位集的值地址。
(单词13)IP地址3八位:
字12指定IP的第三个八位集的值地址。
(单词14)IP地址4八位:
字13指定IP的第四个八位集的值地址。
关闭Modbus/TCP客户端连接(3001)
应用程序通过发出关闭命令来关闭Modbus/TCP客户端连接
Modbus/TCP客户端连接COMMREQ。
CloseCOMMREQ关闭底层TCP连接并为其他通信任务释放通道。
如果COMMREQ中的通道号标识非Modbus/TCP客户端连接或非活动通道,则返回错误响应。
命令3001示例
终止在通道5上建立的Modbus/TCP客户端连接。
十进制(十六进制)
字100002(0002)信道命令数据块的长度
字300008(0008)CRS字的存储器类型(%R)
字500000(0000)保留
字600000(0000)保留
Word703001(0BB9)关闭Modbus/TCP客户端连接
字800005(0005)频道号(5)
*字4(CRS字地址)是命令块中唯一基于零的地址。
值要求从预期地址中减去1。
(字7)通道命令号:
字7请求关闭通道服务。
(字8)通道命令号:
字8表示以前用一个命令打开的通道
打开Modbus/TCP客户端连接请求。
未分配的通道会导致错误
回应。
从Modbus/TCP设备(3003)读取数据
从Modbus/TCP设备COMMREQ读取的数据请求从Modbus/TCP设备到PLC。
读取数据COMMREQ必须引用激活的先前通过开放的Modbus/TCP客户端连接建立的Modbus/TCP通道通信请求。
寄存器、线圈或异常状态数据可从远程Modbus/TCP设备读取。
这个Modbus功能代码指定数据类型。
读取数据的有效功能代码
COMMREQ如下表所示:
地址和长度指定数据在远程设备中的位置以及要传输的数据单元。
长度是要传输的寄存器或线圈数。
Modbus协议功能代码7,读取异常状态不需要地址作为删除设备从内部位置检索异常状态。
当线圈数据小于16位的偶数倍时,线圈数据总是用零填充返回PLC。
从远程设备返回的数据存储在Read中指定的PLC数据区域中Modbus/TCP设备COMMREQ。
数据可以存储在任何PLC数据区中。
请参阅第页4-14可编程逻辑控制器的数据区和识别码列表。
注意第一项在每个数据区域中引用的是项1而不是项0。
COMMREQ状态字(CSR)表示读取数据的成功或失败通信请求。
如果COMMREQ请求的通道号无效或任何其他字段无效COMMREQ失败,CSR设置为非零值以识别失败。
参见章节详细的CSR故障代码请参阅本文档后面的“状态数据”
命令3003示例1
从远程Modbus/TCP设备的地址30200读取四个输入寄存器。
存储在位置%R20处注册。
将COMMREQ状态字返回到%R10。
字100008(0008)信道命令数据块的长度
字703003(0BBB)从Modbus/TCP设备读取
字800006(0006)频道号(6)
Word900004(0004)Modbus功能代码
字1000008(0008)本地PLC内存类型
字1100020(0014)本地PLC起始地址
远程服务器中的字1200200(00C8)地址
字1300004(0004)远程设备中的寄存器数
字1400001(0001)单位标识符
只有这个值要求从预期地址中减去1。
字7将COMMREQ标识为从Modbus/TCP设备命令块。
(字8)信道号:
字8标识先前分配给的信道号与远程Modbus/TCP服务器通信。
(字9)Modbus功能码:
字9指定Modbus功能码4,读取输入寄存器。
(字10)本地PLC内存类型:
字10-11指定本地PLC中的位置,其中以太网接口将存储从远程设备接收到的数据字10的有效值
如下所示
(字11)本地PLC存储器地址:
字11确定本地PLC存储器中的起始地址用于存储远程设备数据的PLC。
输入的值是偏移量(1-基于)从PLC存储器开始,为字10中指定的存储器类型和模式。
根据指定的模式,此偏移量将以位、字节或字为单位。
有效范围值的大小取决于PLC的内存范围。
用户负责确保该区域足够大,可以包含请求的数据而不覆盖其他应用程序数据。
(字12)远程设备地址:
字12指定远程Modbus/TCP中的地址设备。
注:
功能代码决定Modbus地址区域3xxx或4xxx,字12为此区域内的地址(例如,在本例中输入200而不是30200)。
(字13)远程设备中的数字寄存器:
字13指定寄存器的数量(16位字)从远程设备读取。
(字14)单元标识符:
字14是Modbus/TCP单元标识符,是一种特殊的控制代码用于Modbus/TCP消息。
默认值为1。
对于大多数Modbus/TCP设备,此值为1除非以太网到串行网桥用于多点到ModbusRTU设备。
命令3003,示例2
从远程Modbus/TCP服务器的地址10005读取九(9)个输入离散值。
存储位置%T3处的寄存器(位模式)。
字100008(0008)信道命令数据块的长度(8–14字)
Word900002(0002)Modbus功能代码
字1000074(004A)本地PLC内存类型
字1100003(0003)本地PLC起始地址
字1200005(0005)地址在远程设备中
字1300009(0009)从远程设备读取的输入离散数
(字9)Modbus功能代码:
字9指定Modbus功能代码2,读取输入状态。
字10-11指定本地PLC中的位置,其中以太网接口将存储从远程设备接收的数据。
单词10的有效值
见第4-14页。
字13指定输入的数量从远程设备读取数据。
(字14)单位标识符:
默认为1。
此字段通常由以太网到串行网桥用于指定多点链路上Modbus从站的地址。
Modbus/TCP单元标识符是Modbus/TCP消息块中使用的特殊控制代码。
对于大多数Modbus/TCP,该值为1信息。
命令3003,示例3–读取异常状态
从远程Modbus/TCP服务器读取异常状态。
将ExceptionData存储在位置%Q4(位模式)。
Word900007(0007)Modbus功能代码
字1000072(0048)本地PLC存储器类型
字1100004(0004)本地PLC启动地址
字12000(0000)保留
字1300001(0001)数据大小
单词7将COMMREQ标识为读取异常Modbus/TCP设备的状态。
字8标识先前分配给的信道号
与远程Modbus/TCP服务器通信。
(Word9)Modbus功能代码:
Word9指定Modbus功能代码7,读取异常
状态。
字10-11指定本地PLC中的位置,其中
以太网接口将存储从远程设备接收的数据。
字11确定本地PLC存储器中的起始地址
用于存储远程设备数据的PLC。
输入的值是偏移量(1-
基于)从PLC存储器开始,为字10中指定的存储器类型和模式。
有效范围
值的大小取决于PLC的内存范围。
用户负责确保该区域
足够大,可以包含请求的数据而不覆盖其他应用程序数据。
(单词12)保留:
单词12保留,必须设置为零。
(单词13)数据大小:
单词13是数据大小,必须设置为1。
此字段通常由以太网到串行网桥用于
指定多点链路上Modbus从站的地址。
Modbus/TCP单元标识符是
Modbus/TCP消息块中使用的特殊控制代码。
对于大多数Modbus/TCP,该值为1
信息。
将数据写入Modbus/TCP设备(3004)
将数据写入Modbus/TCP设备COMMREQ请求从PLC到控制器的数据传输
Modbus/TCP服务器。
写入数据COMMREQ必须引用活动的Modbus/TCP通道
以前使用开放式Modbus/TCP客户端连接COMMREQ建立。
寄存器或线圈可写入远程Modbus/TCP设备。
Modbus功能代码
指定数据类型。
写入数据COMMREQ的有效功能代码在
下表:
地址偏移量和长度指定Modbus/TCP设备中的位置和地址的数量
要传输的数据单元。
地址偏移量是相对于基址的偏移量。
长度是
要传输的寄存器或线圈数。
PLC数据区是写入Modbus/TCP设备的数据源。
数据的来源
可以是任何PLC数据区(见第4-14页)。
功能代码5,强制单线圈,是Modbus/TCP支持的唯一线圈操作
客户。
此功能强制线圈打开或关闭。
要强制线圈关闭,使用值0作为
COMMREQ数据值。
为了强制线圈接通,值1用作COMMREQ数据
价值观。
COMMREQ状态字(CSR)表示写入数据的成功或失败
通信请求。
如果COMMREQ指定了无效的通道号或任何其他无效字段
COMMREQ失败,CSR设置为非零值以识别失败。
参见章节
详细的CSR故障代码请参阅本文档后面的“状态数据”
命令3004,示例1–设置单个寄存器
将一个寄存器从%AI10写入远程Modbus/TCP服务器的地址40200。
归还
COMMREQ状态字到%R10。
使用信道6,一个先前用Open打开的信道
Word703004(0BBC)写入Modbus/TCP设备
字900006(0006)Modbus功能代码–预设单寄存器
字1000010(000A)本地PLC内存类型
字1100010(000A)本地PLC起始地址
字1200200(00C8)远程设备中的地址
字1300001(0001)远程设备中的寄存器数
字7将COMMREQ标识为写入数据
远程Modbus/TCP设备。
字9指定Modbus功能码6,预置单
注册。
字10–11指定本地PLC中的位置
以太网接口将获取要写入远程PLC的数据。
的有效值
单词10列在第4-14页。
(字11)本地PLC起始地址:
字11确定本地PLC的起始地址
从中写入数据的PLC。
输入的值是从
字10中指定的存储器类型和模式的PLC存储器的开头。
此偏移将
可以是位、字节或字,具体取决于指定的模式。
值的有效范围取决于
在PLC的内存范围上。
字12指定远程设备中的目标寄存器
设备。
(字13)远程设备中寄存器的数量:
字13指定要存储的寄存器的数量
写入远程设备。
对于Modbus功能代码6,必须设置预设单寄存器
到1。
命令3004,示例2–强制单线圈
将远程Modbu