新闻中心

PRESS CENTER 纵横智控
你的位置: 首页 新闻 产品资讯
纵横智控

EG系列边缘计算网关实现与基恩士PLC对接

2024-05-27 10:22:43 阅读: 发布人:纵横智控

PLC又叫可编程逻辑控制器,是一种常见的、简单操作的自动化控制设备,常常被应用在工业制造中,工程师通过PLC可以实现对各类机械设备或生产过程的控制。纵横智控的EG系列智能网关,可以对接多品牌的PLC,包括西门子、三菱、欧姆龙、施耐德、松下、基恩士、倍福、台达、汇川、信捷、安川、永宏、富士、麦格米特、罗克韦尔等等品牌。具体可参看PLC节点

EG系列边缘网关(EG8200pro、EG8200、EG8200mini、EG8000、EG8000mini、EG8100),通过PLC节点,完成与PLC的通信,下面通过示例来讲解EG系列边缘网关是如何对接基恩士品牌PLC的。

边缘计算网关/物联网平台/网关模块/纵横智控


概述

Keyence节点用于和基恩士品牌的PLC进行读写通信。Keyence节点支持的协议:MC-3E、KV TCP、KV Serial。请根据PLC的型号以及支持的协议配置该节点。

/*******************************协议*******************************/
协议:MC-3E
		 KV Serial
		 KV TCP
/*****************************网络信息*****************************/
地址:PLC的IP
端口:PLC通信端口
连接超时:和PLC建立连接的超时时间
通讯超时:和PLC通信超时时间
保活时间:TCP连接保活时间
/*****************************串口信息*****************************/
串口:网关和PLC连接的串口号
波特率:按需设置
数据位:按需设置
停止位:按需设置
校验位:按需设置
通信超时:通信超时时间,默认2000ms
超时间歇:分帧间隔,-1为不设置
/*****************************PLC信息*****************************/
MC-3E:
		站号:通常为0
		网络号:通常为0
		二进制:选中使用二进制通信,否则使用ascii通信
		按字写入位:按字读->修改位->按字写
		字符颠倒:字符两两字节颠倒
KV Serial/KV TCP:
		使用站号:勾选使用站号
		站号:通信站号
/*****************************地址信息*****************************/
地址示例:
地址类型	    					描述         	备注
R015/R0.15 (XF,X1A0)	输入继电器	   	字+位组合(16),范围: R00000~R99915
R015/R0.15 (YF,Y1A0)	输出继电器		 	字+位组合(16),范围: R00000~R99915
B0										链接继电器		 	址16进制,范围: B0~B7FFF
MR000/MR0.0						内部辅助继电器	字+位组合(16),范围: MR00000~MR99915
LR015/LR0.15					锁存继电器			字+位组合(16),范围: LR00000~LR99915
CR015/CR0.15					控制继电器			字+位组合(16),范围: CR0000~CR7915
CM0										控制寄存器			范围: CM0000~CM5999
DM0										数据寄存器			范围: DM00000~DM65534
EM0										扩展数据寄存器	范围: EM00000~EM65534
FM0										文件寄存器			范围: FM00000~FM32767
ZF0										文件寄存器			范围: ZF000000~ZF524287
W0										链路寄存器			16进制地址,范围: W0000~W7FFF
TN0										定时器当前值		范围: TN0000~TN3999
TS0										定时器触点			范围: TS0000~TS3999
TC0										定时器线圈			范围: TC0000~TC3999
CN0										计数器当前值		范围: TN0000~TN3999
CS0										计数器触点			范围: CS0000~CS3999
CC0										计数器线圈			范围: CC0000~CC3999
/*****************************工作模式*****************************/
工作模式:读/写
触发条件:定时循环读/外部触发读

输入

msg.payload
#对象数组,每个对象表示一个要执行的操作,数组表示可批量执行
#以下为每个对象的属性:
func
#要执行的读写操作,请参考下表
body.address
#要操作的地址/起始地址
body.length
#要操作的地址长度(以字节为单位)
body.name
#节点执行完毕以后,以此对象为key输出,否则以address为key输出
body.value
#要写入的值

func

Notes

example

ReadByteArray

读连续地址的字节数据

{ func: "ReadByteArray", body: { name: "abc", address: "DM0", length: 3 } }

WriteByteArray

向连续地址写入字节数据

{ func: "WriteByteArray", body:{ name: "", address: "DM0", value: "00 1A 2B 3C 4D 5E" } }

ReadBool

读取单个地址的布尔数据

{ func: "ReadBool", body: { name: "", address: "R0.1" } }

ReadBoolArray

读取连续地址的布尔数据

{ func: "ReadBoolArray", body: { name: "", address: "R0", length: 6 } }

WriteBool

向单个地址写入布尔数据

{ func: "WriteBool", body: { name: "", address: "R0.1", value: true } }

WriteBoolArray

向连续地址写入布尔数据

{ func: "WriteBoolArray", body: { name: "", address: "R0", values: [true, false, true, false, true, false] } }

ReadInt16

读取单个地址的16位有符号整数

{ func: "ReadInt16", body: { name: "", address: "DM100" } }

ReadInt16Array

读取连续地址的16位有符号整数

{ func: "ReadInt16Array", body: { name: "", address: "DM120", length: 6 } }

WriteInt16

向单个地址写入16位有符号整数

{ func: "WriteInt16", body: { name: "", address: "DM100", value: 123 } }

WriteInt16Array

向连续地址写入16位有符号整数

{ func: "WriteInt16Array", body: { name: "", address: "DM120", values: [1, 2, 3, 4, 5, 6] } }

ReadUInt16

读取单个地址的16位无符号整数

{ func: "ReadUInt16","DM body: { name: "", address: "DM200" } }

ReadUInt16Array

读取连续地址的16位无符号整数

{ func: "ReadUInt16Array", body: { name: "", address: "DM210", length: 6 } }

WriteUInt16

向单个地址写入16位无符号整数

{ func: "WriteUInt16", body: { name: "", address: "DM200", value: 456 } }

WriteUInt16Array

向连续地址写入16位无符号整数

{ func: "WriteUInt16Array", body: { name: "", address: "DM210", values: [0, 1, 2, 3, 4, 5] } }

ReadInt32

读取单个地址的32位有符号整数

{ func: "ReadInt32", body: { name: "", address: "DM300" } }

ReadInt32Array

读取连续地址的32位有符号整数

{ func: "ReadInt32Array", body: { name: "", address: "DM310", length: 6 } }

WriteInt32

向单个地址写入32位有符号整数

{ func: "WriteInt32", body: { name: "", address: "DM300", value: 456 } }

WriteInt32Array

向连续地址写入32位有符号整数

{ func: "WriteInt32Array", body: { name: "", address: "DM310", values: [6, 7, 8, 9, 10, 11] } }

ReadUInt32

读取单个地址的32位无符号整数

{ func: "ReadUInt32", body: { name: "", address: "DM400" } }

ReadUInt32Array

读取连续地址的32位无符号整数

{ func: "ReadUInt32Array", body: { name: "", address: "DM410", length: 6 } }

WriteUInt32

向单个地址写入32位无符号整数

{ func: "WriteUInt32", body: { name: "", address: "DM400", value: 290 } }

WriteUInt32Array

向连续地址写入32位无符号整数

{ func: "WriteUInt32Array", body: { name: "", address: "DM410", values: [12, 13, 14, 15, 16, 17] } }

ReadInt64

读取单个地址的64位有符号整数

{ func: "ReadInt64", body: { name: "", address: "DM500" } }

ReadInt64Array

读取连续多个地址的64位有符号整数

{ func: "ReadInt64Array", body: { name: "", address: "DM510", length: 6 } }

WriteInt64

向单个地址写入64位有符号整数

{ func: "WriteInt64", body: { name: "", address: "DM500", value: 310 } }

WriteInt64Array

向连续地址写入64位有符号整数

{ func: "WriteInt64Array", body: { name: "", address: "DM510", values: [20, 21, 22, 23, 24, 25] } }

ReadUInt64

读取单个地址的64位无符号整数

{ func: "ReadUInt64", body: { name: "", address: "DM600" } }

ReadUInt64Array

读取连续地址的64位无符号整数

{ func: "ReadUInt64Array", body: { name: "", address: "DM610", length: 6 } }

WriteUInt64

向单个地址写入64位无符号整数

{ func: "WriteUInt64", body: { name: "", address: "DM600", value: 330 } }

WriteUInt64Array

向连续地址写入64位无符号整数

{ func: "WriteUInt64Array", body: { name: "", address: "DM610", values: [20, 21, 22, 23, 24, 25] } }

ReadFloat

读取单个地址的单精度浮点数

{ func: "ReadFloat", body: { name: "", address: "DM700" } }

ReadFloatArray

读取连续地址的单精度浮点数

{ func: "ReadFloatArray", body: { name: "", address: "DM710", length: 6 } }

WriteFloat

向单个地址写入单精度浮点数

{ func: "WriteFloat", body: { name: "", address: "DM700", value: 1.1 } }

WriteFloatArray

向连续地址写入单精度浮点数

{ func: "WriteFloatArray", body: { name: "", address: "DM710", values: [1.1, 2.2, 3.3, 4.4, 5.5, 6.6] } }

ReadDouble

读取单个地址的双精度浮点数

{ func: "ReadDouble", body: { name: "", address: "DM800" } }

ReadDoubleArray

读取连续地址的双精度浮点数

{ func: "ReadDoubleArray", body: { name: "", address: "DM810", length: 6 } }

WriteDouble

向单个地址写入双精度浮点数

{ func: "WriteDouble", body: { name: "", address: "DM800", value: 12.3 } }

WriteDoubleArray

向连续地址写入 双精度浮点数

{ func: "WriteDoubleArray", body: { name: "", address: "DM810", values: [7.1, 8.2, 9.3, 10.4, 11.5, 12.6] } }

ReadString

读取字符串

{ func: "ReadString", body: { name: "", address: "DM900", length: 6 } }

WriteString

写入字符串

{ func: "WriteString", body: { name: "", address: "DM900", value: "hello world!" } }

输出

msg.payload
#一个对象,包含了读写指令的结果
#读结果示例:msg.payload={VB10:0x10,VB11:0x11}
#写结果示例:msg.payload={VB10:true,VB11:true}


通过以上设置,就实现了EG系列边缘网关与基恩士PLC的对接,如果有不清楚的地方,欢迎随时联系我们。

纵横智控以领先的物联网通信终端及解决方案提供商为企业定位,以品质精良、服务卓越为产品导向,为用户创造更多价值。感兴趣的小伙伴可以访问我们纵横智控官网进行了解,也可以直接拨打电话咨询技术专员,我们将竭诚为您服务!

热门产品