PMAC與Modbus主站進(jìn)行Modbus Tcp通訊
創(chuàng)建modbus通訊參數(shù)
在項(xiàng)目的PMAC Script Language\Global Includes下創(chuàng)建一個(gè)名為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;
具體的參數(shù)查看手冊(cè),樣例使用的是本機(jī)的回環(huán)地址。
創(chuàng)建modbus 后臺(tái)C程序
在C Language\Background Programs下添加一個(gè)后臺(tái)C應(yīng)用程序,名為capp1。在capp1文件夾下創(chuàng)建一個(gè)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數(shù)據(jù)
float wdata[5] = {0,0,0,0,0};3
float rdata[5] = {0,0,0,0,0};
//開(kāi)始連續(xù)執(zhí)行,若要退出 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];
//執(zhí)行一次sleep 10ms
nanosleep(&sleeptime,NULL);
}
//斷開(kāi)modbus 連接
ModbusClose(0);
CloseLibrary();
return 0;
}
創(chuàng)建啟動(dòng)程序
在PMAC Script Language\PLC Programs文件夾下創(chuàng)建一個(gè)plc1.plc程序。
//延時(shí)啟動(dòng)c app
call Timer.msec(500)
system "/var/ftp/usrflash/Project/C\ Language/Background\ Programs/capp1.out"
disable plc 1
運(yùn)行
右擊項(xiàng)目選擇構(gòu)建并下載項(xiàng)目,下載完成后終端發(fā)送save保存到控制器。
在Watch界面上查看sys.ModbusServerThreads值是否是1。
添加監(jiān)控?cái)?shù)據(jù)p0,5和p100,5文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-679207.html
在終端輸入enable plc 1,啟動(dòng)plc程序。
在終端輸入p0=1,2,3,4,5
在終端中輸入p110=0退出連續(xù)執(zhí)行
在終端中輸入p0=0,p100的值并不會(huì)變化,并且sys.ModbusServerThreads變成了0.
終端再啟用plc1程序后
watch界面數(shù)據(jù)更新,p100值為0。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-679207.html
到了這里,關(guān)于PMAC與Modbus主站進(jìn)行Modbus Tcp通訊的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!