当前位置: 首页 > news >正文

PMAC与Modbus主站进行Modbus Tcp通讯

PMAC与Modbus主站进行Modbus Tcp通讯

创建modbus通讯参数

在项目的PMAC Script Language\Global Includes下创建一个名为00_Modbus_Para.pmh的pmh文件。

Modbus[0].Config.ServerPort = 0 
Modbus[0].Config.ConnectTimeOut = 6000
Modbus[0].Config.SendRecvTimeOut = 0 Modbus[0].Config.ServerIpAddr[0]=127
Modbus[0].Config.ServerIpAddr[1]=0
Modbus[0].Config.ServerIpAddr[2]=0
Modbus[0].Config.ServerIpAddr[3]=1Sys.ModbusServerEnable = 1;

具体的参数查看手册,样例使用的是本机的回环地址。

创建modbus 后台C程序

在C Language\Background Programs下添加一个后台C应用程序,名为capp1。在capp1文件夹下创建一个capp1.c的source文件。

int main(void)
{	struct timespec sleeptime = {0};sleeptime.tv_nsec = NANO_10MSEC;	// #defines NANO_5MSEC & NANO_10MSEC are availableInitLibrary();  // Required for accessing Power PMAC library//modbus client 使用socket0 连接到 ServerModbusConnect(0);//自定义读写 float数据float wdata[5] = {0,0,0,0,0};3float rdata[5] = {0,0,0,0,0};//开始连续执行,若要退出 p110=0pshm->P[110] = 1;while(pshm->P[110]){//P变量赋值到要写入的变量wdata[0] = (float)pshm->P[0];wdata[1] = (float)pshm->P[1];wdata[2] = (float)pshm->P[2];wdata[3] = (float)pshm->P[3];wdata[4] = (float)pshm->P[4];//modbus float writeModbusFloatWrite(0,0,5,wdata);//modbus float readModbusFloatRead(0,0,5,rdata);//读取的变量赋值到P变量pshm->P[100] = rdata[0];pshm->P[101] = rdata[1];pshm->P[102] = rdata[2];pshm->P[103] = rdata[3];pshm->P[104] = rdata[4];//执行一次sleep 10msnanosleep(&sleeptime,NULL);}//断开modbus 连接				ModbusClose(0);CloseLibrary();return 0;
}

创建启动程序

在PMAC Script Language\PLC Programs文件夹下创建一个plc1.plc程序。

//延时启动c app
call Timer.msec(500)system "/var/ftp/usrflash/Project/C\ Language/Background\ Programs/capp1.out"disable plc 1

运行

右击项目选择构建并下载项目,下载完成后终端发送save保存到控制器。
在Watch界面上查看sys.ModbusServerThreads值是否是1。
添加监控数据p0,5和p100,5
在这里插入图片描述

在终端输入enable plc 1,启动plc程序。
在终端输入p0=1,2,3,4,5
在这里插入图片描述
在终端中输入p110=0退出连续执行
在终端中输入p0=0,p100的值并不会变化,并且sys.ModbusServerThreads变成了0.
在这里插入图片描述
终端再启用plc1程序后
在这里插入图片描述
watch界面数据更新,p100值为0。

http://www.lryc.cn/news/143984.html

相关文章:

  • MyBatis分页插件PageHelper的使用及MyBatis的特殊符号---详细介绍
  • Qt(C++)计算一段程序执行经过的时间
  • UnionTech OS(统信桌面操作系统)安装 g++ 和 cmake
  • php_webshell免杀--从0改造你的AntSword
  • RocketMQ mqadmin java springboot python 调用笔记
  • Java aspose 将HTML导出成Excel文件
  • 原生微信小程序 动态(横向,纵向)公告(广告)栏
  • pandas和polars简单的对比分析
  • Feign远程调用的使用
  • Postman API测试之道:不止于点击,更在于策略
  • 5G 数字乡村数字农业农村大数据中心项目农业大数据建设方案PPT
  • Golang Gorm 一对多的添加
  • 图像扭曲之锯齿
  • 【分布式技术专题】「OSS中间件系列」Minio的文件服务的存储模型及整合Java客户端访问的实战指南
  • 构建个人博客_Obsidian_github.io_hexo
  • 烟花厂人员作业释放静电行为检测算法
  • ARTS挑战第二周-T:PHP数组相关操作
  • 【如何对公司网络进行限速?一个案例详解】
  • 服务器安全-修改默认ssh端口
  • 保护隐私的第一步:从更新浏览器开始
  • Python爬虫框架之快速抓取互联网数据详解
  • 【算法专题突破】双指针 - 盛最多水的容器(4)
  • 循环神经网络(RNN) | 项目还不成熟 |还在初级阶段
  • 【Spring Boot】数据库持久层框架MyBatis — MyBatis简介
  • K8S Nginx Ingress实现金丝雀发布
  • 【C++入门】new和delete(C/C++内存管理)
  • C++设计模式之桥接模式
  • 前端速查速记系列----评论列表
  • hiredis的安装与使用
  • 【InsCode】InsCode打造的JavaSE与Linux命令互融的伪Linux文件系统小项目