PLC | YiEDGE边缘计算(网关)框架使用 Gos7 与 西门子 PLC 通讯
目录
Golang 作为高性能编程语言,在边缘计算领域越来越流行,编译完超小的二进制,打包成 docker image 作为微服务框架在边缘计算领域是最佳选择。
Gos7
作为 Golang 原生的 S7 PLC 对接实现是非常不错的选择,本文将简单介绍 Gos7 在边缘计算框架YiEDGE
中的使用。
上一篇文章“PLC|Golang 连接 Siemens S7/TCP 协议读取数据”介绍了如何独立使用 Gos7 与 PLC通讯,作为基础,你应该有所熟悉了。
理解 Gos7 API 结构
Client API
API AG(Automatisationsgerät)
AG 相关的 API 主要是负责 PLC 读取/写入数据,对应的 PLC 内部,最常用的应该是:DB 段。
- Read/Write IPU (AB)
- Read/Write IPI (EB)
- Read/Write Merkers(MB)
- Read/Write Data Block (DB)
- Read/Write Timer (TM)
- Read/Write Counter (CT)
- Multiple Read/Write Area
- Get Block Info
/***************start API AG (Automatisationsgerät)***************/
//Read data blocks from PLC
AGReadDB(dbNumber int, start int, size int, buffer []byte) (err error)
//write data blocks into PLC
AGWriteDB(dbNumber int, start int, size int, buffer []byte) (err error)
//Read Merkers area from PLC
AGReadMB(start int, size int, buffer []byte) (err error)
//Write Merkers from into PLC
AGWriteMB(start int, size int, buffer []byte) (err error)
//Read IPI from PLC
AGReadEB(start int, size int, buffer []byte) (err error)
//Write IPI into PLC
AGWriteEB(start int, size int, buffer []byte) (err error)
//Read IPU from PLC
AGReadAB(start int, size int, buffer []byte) (err error)
//Write IPU into PLC
AGWriteAB(start int, size int, buffer []byte) (err error)
//Read timer from PLC
AGReadTM(start int, size int, buffer []byte) (err error)
//Write timer into PLC
AGWriteTM(start int, size int, buffer []byte) (err error)
//Read counter from PLC
AGReadCT(start int, size int, buffer []byte) (err error)
//Write counter into PLC
AGWriteCT(start int, size int, buffer []byte) (err error)
//multi read area
AGReadMulti(dataItems []S7DataItem, itemsCount int) (err error)
//multi write area
AGWriteMulti(dataItems []S7DataItem, itemsCount int) (err error)
/*block*/
DBFill(dbnumber int, fillchar int) error
DBGet(dbnumber int, usrdata []byte, size int) error
//general read function with S7 sytax
Read(variable string, buffer []byte) (value interface{}, err error)
//Get block infor in AG area, refer an S7BlockInfor pointer
GetAgBlockInfo(blocktype int, blocknum int) (info S7BlockInfo, err error)
/***************end API AG***************/
API PG(Programmiergerät)
PG 相关的 API 主要是针对 PLC 本体的一些启停、设备信息读取、时钟读写等。
/***************start API PG (Programmiergerät)***************/
/*control*/
//Hotstart PLC, Puts the CPU in RUN mode performing an HOT START.
PLCHotStart() error
//Cold start PLC, change CPU into runmode performing and COLD START
PLCColdStart() error
//change CPU to stop mode
PLCStop() error
//return CPU status: running/stopped
PLCGetStatus() (status int, err error)
/*directory*/
//list all blocks in PLC, return a Blockslist which contains list of OB, DB, ...
PGListBlocks() (list S7BlocksList, err error)
/*security*/
//set the session password for PLC to meet its security level
SetSessionPassword(password string) error
//clear the password set for current session
ClearSessionPassword() error
//return the CPU protection level info, refer to: §33.19 of "System Software for S7-300/400 System and Standard Functions"
//return S7Protection and its properties.
GetProtection() (protection S7Protection, err error)
/*system information*/
//get CPU order code, return S7OrderCode
GetOrderCode() (info S7OrderCode, err error)
//get CPU info, return S7CpuInfo and its properties
GetCPUInfo() (info S7CpuInfo, err error)
//get CP info, return S7CpInfo and its properties
GetCPInfo() (info S7CpInfo, err error)
/*datetime*/
//read clock on PLC, return a time
PGClockRead(datetime time.Time) error
//write clock to PLC with datetime input
PGClockWrite() (dt time.Time, err error)
/***************end API AG***************/
Helper API
Helper API 主要负责从 buffer 中读取/写入指定的数据类型到变量中。
- Read/Write a boolean
- Read/Write a value(int)
- Read/Write a float (Real)
- Read/Write chars
- ...
等,各种数据格式。
PLC 数据交互步骤
- 创建 PLC TCP 连接
- 根据测点 command 读取/写入偏移量
- 返回结果数据
基于 EdgeX Foundry 的 S7 device service 驱动已开源
https://www.yiqisoft.cn/blogs/edgex/517.html
关于 亿琪软件
上海亿琪软件有限公司成立于2016年,专注于 5G 通信、AI 人工智能、边缘计算和大数据网络安全多项技术领域,致力于物联网领域前沿技术的创新,为用户提供全方位、智能化和安全的物联网解决方案。
2023年,公司发布“YiFUSION|工业边缘智能融合一体机”产品,为工业客户提供一整套的边缘计算+AI能力:高性能数据采集、多类型数据融合、AI算法集成、云端业务对接。在边缘网关的基础上,集成了 IoT 平台的边缘协同能力、本地Web SCADA 和 HMI 功能、本地数据存储、边缘 AI 视频分析、行业应用集成等。
2022年公司推出 “YiCLOUD|亿琪云”一站式物联网应用解决方案。公司的业务涵盖了智慧城市、智慧农业、智能工厂和智慧园区等多个领域,公司软硬件产品和解决方案获得华为技术认证,得到中国移动OCP认证,公司还是边缘计算产业联盟ECC成员。
感知物联,畅快无限。
联系我们
网站:http://yiqisoft.cn
邮件:support@yiqisoft.cn
电话:021-68863086
手机:186-1666-9123