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]=1

Sys.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 available
	
	InitLibrary();  // Required for accessing Power PMAC library

	//modbus client 使用socket0 连接到 Server
	ModbusConnect(0);

	//自定义读写 float数据
	float wdata[5] = {0,0,0,0,0};3
	float rdata[5] = {0,0,0,0,0};
	
	//开始连续执行,若要退出 p110=0
	pshm->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 write
		ModbusFloatWrite(0,0,5,wdata);
		//modbus float read
		ModbusFloatRead(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 10ms
		nanosleep(&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。

相关推荐
7ACE6 小时前
Wireshark TS | 关闭连接和超时重传
网络协议·tcp/ip·wireshark
qq192263812 小时前
双机并联自适应虚拟阻抗下垂控制(droop)MATLAB仿真模型 即原价 下垂控制 电压电流双...
tcp/ip
27399202912 小时前
qt 获取IP地址(公网 本机)
qt·tcp/ip·php
了一梨13 小时前
网络编程:TCP Socket
linux·c语言·tcp/ip
FPGA技术实战14 小时前
基于XADC IP核的FPGA芯片温度读取设计
网络协议·tcp/ip·fpga开发
老蒋新思维14 小时前
范式重构:从场景锚点到价值闭环——AI智能体落地知识产业的非技术视角|创客匠人
网络·人工智能·网络协议·tcp/ip·数据挖掘·创始人ip·创客匠人
ICT技术最前线15 小时前
电信宽带怎么申请公网ip?企业组网避坑指南
网络·网络协议·tcp/ip·电信宽带
葱卤山猪17 小时前
【Qt】 TCP套接字通信学习文档
qt·学习·tcp/ip
老蒋新思维17 小时前
创客匠人万人峰会启示:AI+IP 生态重构,知识变现进入 “共生增长” 时代
网络·人工智能·网络协议·tcp/ip·重构·创始人ip·创客匠人
上海云盾-小余17 小时前
TCP业务DDoS防护专项方案
网络协议·tcp/ip·ddos