由于PLC的NTP时间同步模式总是失败,我想用wincc读取PC的日期和时间,然后吧读取的时间和日期每隔一定的周期再写到PLC实现PLC的时间同步,具体怎么做,希望各位大神赐教
最佳答案
不知道你是什么PLC,不同PLC的数据格式可能不一样。Wincc里这样写的
SYSTEMTIME systime;
char dty,dtm,dtd,dth,dtn,dts;
#pragma code ("kernel32.dll")
void GetLocalTime(SYSTEMTIME *);
#pragma code ()
SYSTEMTIME systime;
unsigned char *p=NULL;
GetLocalTime(&systime);
SetTagDateTime("DT",systime);
//Integer to BCD
/*
p=malloc(8);
*p=(systime.wYear%100/10 <<4)+systime.wYear%10;
*(p+1)=(systime.wMonth/10<<4) +systime.wMonth%10;
*(p+2)=(systime.wDay/10<<4) +systime.wDay%10;
*(p+3)=(systime.wHour/10<<4) +systime.wHour%10;
*(p+4)=(systime.wMinute/10<<4) +systime.wMinute%10;
*(p+5)=(systime.wSecond/10<<4) +systime.wSecond%10;
*/
DT是Wincc内部变量,没有PLC,长度8的日期与时间类型,经实验,这个SetTagDateTime("DT",systime);指令会自动转换格式,很可能是西门子S7-300的DT数据类型格式
接下来PLC里调用一下时钟设置指令,数据就是上面的变量DT,改成外部变量,触发变量在这脚本的末尾设置一下:类似SetTagBit("M0.0",1); 脚本放在全局脚本中,周期执行
图片说明:
提问者对于答案的评价:
我的PLC是412-5H,我试一下,谢谢您!
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc369065.html