新闻中心
PRESS CENTERPLC又叫可编程逻辑控制器,是一种常见的、简单操作的自动化控制设备,常常被应用在工业制造中,工程师通过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的对接,如果有不清楚的地方,欢迎随时联系我们。
纵横智控以领先的物联网通信终端及解决方案提供商为企业定位,以品质精良、服务卓越为产品导向,为用户创造更多价值。感兴趣的小伙伴可以访问我们纵横智控官网进行了解,也可以直接拨打电话咨询技术专员,我们将竭诚为您服务!