wincc和PLC时间交换

由于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);   脚本放在全局脚本中,周期执行

图片说明:

wincc和PLC时间交换  wincc和PLC时间交换  wincc和PLC时间交换  

提问者对于答案的评价:
我的PLC是412-5H,我试一下,谢谢您!

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc369065.html

(1)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月5日 下午3:27
下一篇 2021年7月5日 下午3:28

相关推荐

发表回复

登录后才能评论