如何根据WinCC设置S7控制器的时间
如何根据WinCC设置S7控制器的时间?
描述:
下面的方法只能进行时间设置而不能完成时间同步的功能。
因为必须考虑到延迟,比如报文的处理时间,C 脚本的运行时间等,因此这个方法在精度方面不如真正的时间同步精确。
还要注意时间跳变(向前/向后)的发生,这就意味着这个方法不适用于必须按时间正向顺序的应用。
The following solution writes the time (type
DATE_AND_TIME) with a WinCC script into a global data block (DB) of the controller下面的方法是使用WinCC的脚本把时间(DATE_AND_TIME类型)写到PLC的全局数据块(DB)中。
在function block (FB)中,时间从DB中读出并写到临时/本地变量(时戳)中。
该变量在系统功能块"Set_Clock"调用时被传送,从而设置到PLC中。
更多信息:
•时钟同步的设置参考条目ID: 16622902.
•如何通过以太网组态时钟同步参考条目ID: 2416068.
•如何通过PROFIBUS组态时钟同步参考条目ID:
11932931.
说明:
过程
步
骤.
1 创建一个数据块(在本例中是DB1),其中有一个
"DATE_AND_TIME" 类型的变量和一个"Byte"类型变量。
图 01: 创建DB1
2 按照给定的顺序在FB的临时/本地区域中创建下列变量。
1.时戳TimeStamp定义为"Date_And_Time"类型
2.返回值ret_value定义为"Int"类型
3 在FB中创建一个新的network,并拷贝下面.txt文件中的
STL代码到这个network中:
AWL-Code.txt ( 786 bytes )
注意:
图 02: 在WinCC变量管理器中创建DB1_YEAR
名称地址
DB1_YEAR DB1.DBB0 (已经在图02中创建) DB1_MONTH DB1.DBB1
DB1_DAY DB1.DBB2
DB1_HOUR DB1.DBB3
DB1_MINUTE DB1.DBB4
DB1_SECOND DB1.DBB5
DB1_FLAG DB1.DBB8
图 03: 必需的变量
5 打开全局脚本编辑器,使用“文件>新建项目函数”新建项目
函数
6 删除函数模版,插入下面.txt文件中的C脚本并保存。
C-Skript.txt ( 542 bytes )
7 使用循环动作或“按钮”动作调用该函数。
版本:
上述步骤是在以下环境中测试的:
U DB1.DBX 8.0
SPBN end
L DB1.DBB 0 // Year
T LB 0
L DB1.DBB 1 // Month
T LB 1
L DB1.DBB 2 // Day
T LB 2
L DB1.DBB 3 // Hour
T LB 3
L DB1.DBB 4 // Minutes
T LB 4
L DB1.DBB 5 // Secounds T LB 5
L DB1.DBB 6 // 1/1000 Sec T LB 6
L DB1.DBB 7 // 1/1000 Sec T LB 7
CALL "SET_CLK"
PDT :=#TimeStamp
RET_VAL:=#ret_value
R DB1.DBX 8.0 //reset Flag
end: NOP 0。
wincc怎么往PLC中写入时间?
wincc怎么往PLC中写入时间?
wincc怎么往PLC中写入时间?我想从WINCC中往300PLC的定时器写时间,但是问题是,直接写得话,单位是MS,就算是在WINCC中对模拟变量做线性标定,那也不行,因为我要写得时间范围是1小时到2个半小时,在以毫秒为单位的情况下,线性标定也达不到那么长得时间,请问还有什么方法吗?
问题补充:
你在PLC里对时间进行转换处理就可以了。
这个方法好啊,但是能不能说具体点
最佳答案
从上位机写整型数INT或实数REAL到PLC,首先该数值需包含以毫秒为单位的时间值,在写入PLC的数据存储区后,利用ITD(IntegertoDoubleInteger)或RND (RealtoDoubleIntegerwithRoundingOff)将该值转换为双整形,然后将该值写到类型为TIME的变量里,在程序中调用FC40,将TIME转换成S5TIME即可。
由HMI输入秒数,在PLC中进行换算:
秒数*1000>>得到毫秒数>>FC40(TIM_S5TI)>>转换得到正确地S5TIME
参考链接:
/download/Upload/AS/applicati on/A0335.pdf
《如何根据WinCC设置S7控制器的时间?》
/CN/view/zh/7802886
参考资料:/service/answer/solution.aspx?Q_ ID=33793&cid=1029。
【案例】S7-200SMART实时时间如何在触摸屏上显示并写入
【案例】S7-200SMART实时时间如何在触摸屏上显示并写入蓝字"技成PLC课堂”关注我们哦!今天为大家带来如何在威纶通触摸屏上显示S7-200SMART PLC 实时时间,有些时候,我们想在触摸屏显示PLC实时时间,还有监控PLC很麻烦,接下来就带大家不用监控PLC直观的在触摸屏上去显示实时时间。
一、读实时时钟时间第一步:(在桌面打开STEP 7-MicroWIN SMART编程软件)第二步:(用字节转整数+BCD码转整数指令来读取实时时钟时间【B_I—BCD_I】)第三步:(读取实时时钟指令【READ_RTC】)二、写时钟时间第一步:(用整数转BCD码+整数转字节来写入时钟设定时间【BCD_I—I_B】)第二步:(设置实时时钟指令【SET_RTC】)第三步:(监控读取PLC实时时间,当时时间:2020年6月11日15:09星期四)第四步:(监控写入PLC设定时间,设定时间: 2016年6月12日18:22分星期日)注意事项:在最后第八位表示星期的时候其中1 = 星期日,7 = 星期六,0 = 表示禁止计星期。
三、组态触摸屏显示时间第一步:(在桌面上打开Utility Manager组态软件)第二步:(创建一个读取时间画面)1. 通过鼠标选中数字右击来新增基本画面并把窗口名称重新命名(读取时间)2. 设置数显、关联地址、设置标签文字、设置功能键切换窗口。
第三步:(创建一个写入时间画面)1. 通过鼠标选中数字右击来新增基本画面并把窗口名称重新命名(写入时间)2. 设置数显、关联地址、设置标签文字、设置功能键切换窗口。
四、在线模拟看一下第一步:(点击启动读取按钮,现在读取PLC时间是:2020年10月12日星期一 10:01 04秒)第二步:(先写入一个日期和时间,然后点击启动写入按钮,切换到读取时间窗口这时会看到时间已经写入成功并计时开始)(来源:技成徐成爽,未经允许不得转载,违者必究!)。
如何同步操作面板与 S7-200300400 控制器的日期和时间
1.操作面板同S7-200 CPU间的时钟操作1.1使用S7-200 CPU时钟对操作面板的时钟同步步骤如下:(1) 在Micro/Win中,周期调用READ_RTC函数,以定时读取S7-200 CPU的系统时钟,将时钟信息存放在V区,比如VB100。
(2) 如果是用WinCC Flexible 组态:请先设置好通讯参数;然后在“区域指针”页内,建立“日期/时间plc”, 指向S7-200 中存放时间信息的区域VW100即可。
见下图:(3) 如果是用ProTool组态:请先设置好控制器的通讯参数;然后插入“日期/时间-PLC” 区域指针, 指向S7-200 中存放时间信息的区域VW100即可。
见下图:1. 2通过面板修改S7-200 PLC时钟大致设置如下:(1) 在操作面板项目中创建: 1个标志变量(比如:地址为V20.0)和年、月、日、时、分、秒6 个BYTE变量,分别连接到PLC的连续V区中,比如:VB70 – VB75。
(2) 在MicroWin中,用标志变量触发来调用SET_RTC,将VB70 – VB75作为时间参数传递给该函数,来实现通过面板修改S7 PLC时间。
(3) 注意:给S7-200设定系统时间时,不要给时间信息中的“星期”字节赋“0”值,请给出确切的“星期几”否则会导致时钟同步失败。
或将此字节置为常数1。
本章详细设置参考例程如下: ( 1247 KB )2.操作面板同S7-300/400 CPU间的时钟操作2.1 使用S7-300/400 CPU时钟对操作面板的时钟同步步骤如下:(1) 在Step7中:新建DB块DB1,在DB1中按顺序定义两个变量:MyTimeDate 类型为DATE_AND_TIMEtemp 类型为DWORD周期调用SFC1(READ_CLK)函数(可以在OB35中调用),以定时读取S7-300 CPU的系统时钟,将时钟信息存放在变量DB1. MyTimeDate中。
wincc时间的问题_1
wincc时间的问题
在做WINCC历史数据及曲线的控件时,数据的时间都是根据操作系统的时间,而操作系统的时间又可以随便调整,严格的讲,这些数据对应的时间存在很大的风险,比如操作人员随意更改了系统时间,WINCC存取的数据时间就不正确了,有什么办法可以很好的处理呢。
最佳答案
1、对于服务器/客户机结构,将WinCC时基设置为服务器时间,再做好服务器时间的校准和Windows操作权限设置工作即可;
2、对于单站结构,归档数据各自为政,无法共享,做好单站时间的校准和Windows操作权限设置工作即可;
3、规范的话,可以将AS时间设置为主时钟源,为网络上其他设备授时,或者设置单独的GPS或NTP服务器作为主时钟源。
再做好各Windows系统的操作权限设置工作即可。
wincc时间格式的更改
时间显示的格式是在WinCC在线趋势控制中通过“控制面板>区域和语言设置>区域选项>自定义>时间”设置的。
在此可指定想使用12还是24小时的显示格式。
如果设置被更改,系统必须重新启动才能使更改生效。
1.利用Wincc本身的时间控件,就是那个不能变24小时制的。
在打开画面中做一C动作。
代码如下:SetPropChar(lpszPictureName,"控件1","LocaleID","2052");问题解决。
对于时间控件显示时间的一点补充在第一种方法里,在打开画面里赋了C动作之后,在画面一打开的时候时间控件就有个框,非得在其他地方点一下才可以,问我怎么解决。
我刚看了一下,出现那个虚线框的原因是因为在对控件N赋值之后,控件自然就成为了画面的焦点。
我看了一下,在控件的属性里,有一项叫“FocusRect”,把这个取消就可以了。
2.在全局脚本中做一动作。
代码如下:#pragma code("kernel32.dll");void GetLocalTime(SYSTEMTIME* lpst);#pragma code();SYSTEMTIME time;GetLocalTime(&time);SetTagWord("Time1",time.wYear );SetTagWord("Time2",time.wMonth );SetTagWord("Time3",time.wDay );SetTagWord("Time4",time.wHour );SetTagWord("Time5",time.wMinute );SetTagWord("Time6",time.wSecond );SetTagWord("Time7",time.wDayOfWeek );其中Time1~Time7为所建立的变量,我建立的是16位有符号数,在画面上做几个输入输出域连上即可。
WinCC显示和更改PLC中的时间变量
return FALSE; } hProp = RPJCreatePropertyHandle( g_szProj, pError ); if( !hProp ) {
printf( "Error RPJCreatePropertyHandle(...) " );
return FALSE;
}
if( !RPJSetJobProps( hProp, jobname, pError ) )
{
printf( "Error RPJSetJobProps(...)
" );
RPJDeletePropertyHandle( hProp, pError );
return FALSE;
}
(VARTYPE)typ,
if( !RPJSetProperty( hProp, propname1, ptr1,
200, pError ) )
{
printf( "Error RPJSetProperty(...)
" );
RPJDeletePropertyHandle( hProp, pError );
2. 取消时间范围的选择,并建立好变量选择,这里的变量应该是变 量记录中的归档变量,其采集时间是从归档变量中设置的。
3. 完成后退出并新建打印作业。取消启动参数的选择,选择时间范 围中的绝对时间。
4. 实现打印功能最关键的是一个新建的项目函数,西门子的教程上 有例子。我已将条是调试通过。
/*********************************************************************** ******/
wincc flexible 中如何设定日期和时间?并且断电不消失
wincc flexible 中如何设定日期和时间?并
且断电不消失
winccflexible中如何设定日期和时间?并且断电不消失啊?‘
最佳答案
首先HMI作用是读取和写入数据组态值的设备。
它本身就没有这个功能,需要通过PLC进行的。
断电记忆功能需要在PLC中进行,如果是200可以通过添加电池卡或者设置数据保持地址范围进行,300的话直接采用数据块地址编程(数据块默认值是断电保持型的)。
200PLC的读取和写入系统时钟指令为:READ_RTC/SET_RTC
300plc的读取和写入系统时钟指令为:SFC0、SFC1
以上读取和写入时钟的地址存储形式都以字节形式进行的。
在HMI设备上组态若干个I/O域,赋值与PLC的读取和写入地址一致的地址和写入时钟的按钮。
S7-400PLC系统时间设置方法及在炼钢厂中的应用
【 关键词 】P L C S t e p 7数据类型 系统时间
西 门子公 司 自控系 统在 武钢 集 团 昆钢 第 三 炼钢 厂 中 应用 非常 广 泛 ,例 如 4 撑转 炉、
3 # L F精 炼 炉 等 过 程 系 统 。 西 门 子 s 7 . 4 0 0 P L C
系统具有可靠性 高、抗干扰 能力强、适用性强 等特点 ,而且软件 易学易用 ,接 口容易,编程
电子技术 ・ E l e c t r o n i c T e c h n o l o g y
S 7 — 4 0 0 P L C系统时 间设置方法及在炼钢厂 中的应 用
文/ 景 志 峰 刘 宁 雁 。
—●t●蜘
1 :Tit le:
主要 介绍 西门子 S 7 — 4 0 0 P L C 硬 件 系统 中 ,利 用 S t e p 7编 程 软 件 进行 对 P L C硬 件 系统 进 行 时 间 设 定 的 方 法 , 以 及 用 编 程 软 件 读 取 系统 时 间 的 方 法 通 过 这 种 方 法 的 运 用 , 成 功地 运 用 于 武 钢 集 团 昆钢 第 三 炼 钢 厂 能 耗 累 计 、 产 量 统 计 等 工作 。
整个系统 由转 炉倾动系统、氧枪升 降系统 、散 装料下料体统 、 底吹系统等几个主要环节组成 。 本 文主 要介 绍 在 s 7 — 4 0 0 P L C系 统 中,如 何对 C P U的系 统时 间进 行设 定,如 何 同步计 算机 时 间,如 何运 用系统功能块完成系统时 间的读 取 。系 统时 间如何 具体运用 于炼钢 厂 4 转炉
其方法如 下:
T I ME ( 简称 D T ) 。DT时 间这种 数据类 型是 西 门子 P L C 中比较特 殊 的一 种数 据类 型,它 长 度为 6 4 b i t ,共包 含 8个字 节, 分别 是 B y t e 0 .
wincc 怎样实现数字时钟?
wincc 怎样实现数字时钟?怎样实现wincc软件gps授时。
就是,plc控制站及操作站wincc,接受gps的时间?plc通过winccc传受。
最佳答案1、首先通过你的计算机或plc建立与gps接收机联系,其后应用wincc来读取这个时间数据。
有关gps接收器提供了详细的说明及如何装配和配置gps接收,详见:/information/manage/edit/uploadfile/gi s/ch26.pdf2、wincc如何获取系统时间:wincc通道“systeminfo”:从winccv5.0sp2开始,wincc就提供了通道“systeminfo”,通过该选项就可以建立一个wincc文本变量来获取系统时间。
该wincc变量可以用于在过程画面中显示本地计算机的系统时间,或者在全局脚本中利用该变量。
但是不可以通过它来进行时间设置3、相关文档:详见连接:/cn/llisapi.dll?func=cslib. csinfo&objid=24202491&nodeid0=10805585&caller=view&lan g=zh&siteid=cseus&aktprim=0&objaction=csopen&extranet=st andard&viewreg=cn参见《如何同步操作面板与s7-200/300/400控制器间的日期和时间》的例子:/cn/llisapi.dll?func=cslib. csinfo&objid=34281179&load=treecontent&lang=zh&siteid=cs eus&aktprim=0&objaction=csview&extranet=standard&viewre g=cn。
plc时间同步
关于该用法的详尽信息可参看 WinCC 在线帮助:“ WinCC 信息系统 > 使用 WinCC > 创建过程画面 > 使用控件 > WinCC 数字/模拟时钟控件”。
注意:
该控件无法为其它应用(例如全局脚本)提供时间值或者通过其设置(改变)时间值。
可以在 Windows 提示符窗口中输入“help time”或者“help date”可以看到这两个命令的简要描述。
可以在 WinCC 的脚本 ( C 或者 VB 脚本 ) 中使用以上提及的命令提示符命令。下面提供了 C 及 VB 脚本样例程序:
Global Script C
ProgramExecute("cmd /c time 14:16");
注意:
本地计算机时间是字符串类型的。通过 WinCC 变量读出后,可以编辑该字符串,可以将其拆分(例如年,月,日,时,分秒)。应该注意的是该时间显示的格式与操作系统的区域设置相一致。
(3) Windows API 函数
可以在 C 全局脚本中调用 Windows API 函数:
GetLocalTime(),
or
system("time 14:16");
VBScript
Dim objWshShell
Set objWshShell = CreateObject("Wscript.Shell")
objWshShell.Run "cmd /C time 14:16", 1
void GetLocalTime(SYSTEMTIME *lpst);
