02 2021 档案
摘要:不知道怎么回事,和虚拟机有关系吗?
阅读全文
摘要:今天下了班,快走到门岗了,忽然不确定自己是不是关掉了办公室的灯,又走回去确认了一下,关是关上了,但自己做过的事情怎么就记不住了呢?白天做软件配置编程的时候也是这样,总是忘记一些细节上的东西,看来需要改善一下方式了。
阅读全文
摘要:时间还是过的快,2021就过完1/6了。忙忙碌碌好像也没啥收获。
阅读全文
摘要:现场有一个300的AI模板坏了,换一个新的上去,忘了取掉和前连接器相连部分的保护罩了,怎么也插不进前连接器,还是不仔细啊。
阅读全文
摘要:checkbox属于是微软microsoft form2.0控件组,在citect中可以用来实现一些人机交互功能。我在使用中觉得不如在wincc中好用,也可能是我技术不到位吧。 在页面中插入checkbox控件,可以看到是没有选项名称的。 双击控件打开设置窗口,也没有看到直接写选项名称的地方,复选框
阅读全文
摘要:在论坛上看到有人提问如何在citect中制作管道介质的流动效果,以前在wincc中实现过,citect没有wincc那么丰富的功能,但也是可以实现的,此文介绍的方法不是唯一的,也未必是最优的,但可以做出相应的效果。 假设pump1在运行时,管道内介质流动,需要有动画效果。先在unity中硬件组态,新
阅读全文
摘要:在unity软件中没有随机数的函数,不过可以自己编程产生,思路参考http://www.ad.siemens.com.cn/club/bbs/post.aspx?b_id=4&a_id=1022310 这是西门子软件的做法,施耐德中思路是一样的。本次练习基于quantum PLC硬件 在unity中
阅读全文
摘要:如果希望知道CPU什么时间做过热启动和冷启动,可以通过读取系统信息来实现。施耐德PLC有系统位%S0和%S1,分别在PLC冷启动和热启动时第一个周期置位为1,启动正常后复位0,%S对M340、M580、quantum、momentum unity、Premium、Atrium几个系列的PLC都是有效
阅读全文
摘要:实际应用中很大概率需要做累积功能用于成本计算,以前在学习练习的时候,自己通过设计计时功能做累积,方法有点笨拙了,实际上施耐德PLC提供了系统位S4、S5、S6,S7,分别对应时基10ms、时基100ms和时基1s,1minute,这个系统位对M340、M580、quantum、momentum un
阅读全文
摘要:在学校西门子300、400PLC时,OB100组织块中可以放置程序,在PLC上电初始化时,执行一次,以后不再执行,这样可以用于变量赋初始值。施耐德quantum PLC也可以。施耐德PLC没有西门子OB组织块那样的概念,施耐德使用系统位,%S21就是这样的系统位,第一次上电时%S21置位1,下一个循
阅读全文
摘要:2015版本练习过这个功能,2018版本一样的使用方法。 在unity中新建一个real变量InputValue1,地址%MW29,在citect2018也新建一个变量InputValue1,地址400029,real类型。画面上放一个数字控件,数字控件关联inputvalue1,在输入-键盘命令新
阅读全文
摘要:这个练习的关键是下位机中那些系统字和系统位都是什么含义。对于quantum plc来说%SW49至%SW53是关于日期时间的信息。 %SW49:星期几: 1 = 星期一 2 = 星期二 3 = 星期三 4 = 星期四 5 = 星期五 6 = 星期六 7 = 星期日 %SW50:秒 (16#SS00)
阅读全文
摘要:紧接着前面的练习,在unity中新建一个双整型变量strTime,然后写下面的程序 这个程序就是将时间转换为双整型。 在citect2018中新建一个IO变量TimeInt和一个内部字符串变量strTime 打开cicode编辑器,新建一个citectVBA文件,写以下代码 Function Int
阅读全文
摘要:第一个练习是citect2018连接unity的模拟器,使用了一个整型变量做练习,今天练习了连接字符串变量。在unity中,字符串变量占用8个字,每个字存储2个字符。 在线看str1_HMI数据可以看到,只能存储16个字符。 在citect项目中,新建一个string类型变量,地址为400002,使
阅读全文
摘要:今天做练习的时候,画面插入标签,标签列表是空白的,明明在变量表中是有内容的啊。经过网上查找,可以通过这种方法解决。在citect studio中点击左边的“选项按钮,取消“在填充标签列表时显示设备项”这个选项,不需要再编译一次,回到编辑画面,插入标签时就能看到变量列表了。
阅读全文
摘要:有好几个月懈怠没有加强自我学习了,我觉得不能这样下去。citect2018也下载很久了,一直想尝鲜,一直自我安慰时间还早。还是得自我学习,今后什么情况谁也想不到,多会一点总归是好的。 Citect的界面有微软的IDE风格,刚开始的时候觉得不习惯,单看了一段时间后,也挺好的。第一步先在unity中新建
阅读全文
摘要:今天在现场看到一套S7 400H的PLC,ROCK0的CPU模板stop等长亮橙色,REDF长亮红色,MSTR长亮橙色,rack0长亮橙色。ROCK1的CPU模板EXTF长亮红色,STOP长亮橙色,REDF长亮红色,rock1长亮橙色。153-2模板也有报错。在线看诊断信息,出现过很多错误,大概的意
阅读全文
摘要:今天写考察报告,word文件插入了很多照片,文件变得很大100多M,使用微信给别人发的时候提示文件过大发送不了,不得不对文件进行瘦身。 打开word文件,选中任意一个照片对象,鼠标右键 选择图片选项卡,然后点击左下方的压缩按钮 设置对文档中所有的图片都压缩,其他设置可以默认,然后确定,最终保存文件,
阅读全文
摘要:前面的博客学习了在excel中单个条件统计个数,有时候需要复杂条件统计个数,excel中有一个countifs函数,看起来和countif长得差不多,但是功能强大的太多。比如有这样一张表格 如果我们要统计销售员是四川人的人数,那么在空白单元格写入=COUNTIF(E1:E11,"四川")就行了,如果
阅读全文
摘要:今天做一张表,需要统计表格中满足某个条件的数据个数,excel有一个函数countif,简单的条件个数统计没有问题。为了不至于忘记用法,把它写下来。 比如有这样一个表格 在D5到D11之间有一组数据,如果要统计这个范围内大于等于100的数据的个数,那么写入公式=COUNTIF(D5:D11,">=1
阅读全文
摘要:今天值班,需要创建一个月报表的excel文件,每天一个工作表,表格格式是固定的,如果点击增加工作表,在复制粘贴的方法新增工作表,会很麻烦。有一个简单的方法。 打开一个excel文件,点击菜单文件-选项 打开的对话框选择常规选项卡,找到“新建工作簿时包含的工作表数”,设置成30. 退出,然后新建一个e
阅读全文
摘要:现场有两套s7 200 smart plc,ip地址分别是192.168.0.61和192.168.0.62,两套装置作用一样,需要采集以下数据。 打开pc access smart,新建2个PLC,分别设置地址为192.168.0.61和192.168.0.62 在每一个PLC连接下面,新建ite
阅读全文
摘要:现场有一套AC800F的系统,5个IO机柜,其中4个在中控室机柜间,还有一个在远一点的泵房,通过DP电缆连接,通讯总是不稳定,检查了一下最远的机柜间距有180多米,通讯速率设置的是1.5M,网上说这个速率理论传输距离是200米,可能是现在环境不够理想吧。现在把通讯速率改成500k,看看效果怎么样。到
阅读全文
摘要:在使用word时,如果序号有10条以上,某些序号后就会有空格,这些空格是可以删掉的。 点击“开始-段落”右下角的箭头 弹出的对话框将默认值表位修改成0字符。 点击确定按钮后就好了 还有一种方法。 选中序号,然后鼠标右键,选择调整列表缩进,弹出的菜单如下 编号之后的下拉列表选择空格,然后点击确定按钮,
阅读全文
摘要:在52plc.net上看到有人分享的地址,这里也再次广告一下www.52plc.net,施耐德美女技术支持王工创建,非常的好。 https://www.schneider-electric.cn/zh/work/support/e-learning/e-learning-new.jsp Citect
阅读全文
摘要:wincc博图有好些个版本,一直有点迷糊这些版本到底有啥区别,后来在亿万电器网上看到一个帖子说这个事情,转载过来。 描述可以订购以下版本的 WinCC (TIA Portal) :WinCC Basic、WinCC Comfort、WinCC Advanced 和 WinCC Professiona
阅读全文
摘要:工作上的事情忙碌着,停搬了几天。明天本来想休息的,又要去现场了,什么时间是一个头啊。
阅读全文
摘要:前面的博客定义数组变量时候,数组是一个静态的,有时候数组的大小事先不能够确定,这个时候就需要定义动态数组,动态数组的定义方法和VB中差不多。 Sub defineArray() Dim array() Dim count,i count=10 Redim array(count) For i=1 T
阅读全文
摘要:前面的博客介绍了根据数组如何在owc chart上绘制一条曲线,如果想修改成其他类ixngde图表,只需要修改.type参数的数值就行了,比如修改成Cht.Type=1 就能绘制棒状图了。
阅读全文
摘要:前面的博客记录了mschart绘制曲线,今天练习使用owc chart绘制曲线,先从最简单的开始——绘制一条曲线,数据来源是数组,是简单的等比例数组。假设画面上添加了一个microsoft office chart 11.0控件,这个控件在office较早版本安装程序里面是有的,安装完之后在cite
阅读全文
摘要:通讯打通了,抛弃了中间加NPort的思路,回归硬接线的方法,希望通讯稳定。
阅读全文
摘要:modebus RTU通讯应该比较顺利啊,不就是中间加了一对MOXA NPort5110转成以太网吗?今天继续努力一下。
阅读全文
摘要:昨天的博客记录了使用citectVBA脚本如何设置mschart画一条曲线,很多情况下我们不只需要一条,可能要画多条曲线,今天的练习,使用citectVBA画两条曲线。数据源还是listview控件,为了让不同数据的曲线更加分明,我把两组数据差距设置的比较明显,如下图所示。 新建以下脚本 Sub C
阅读全文
摘要:以前在学习wincc vbs的时候,使用mschart结合listview控件做过曲线图的练习。在citect中使用citectVBA也可以实现制作曲线图的功能。 假设有这样一个初始化后的listview控件,访问名是chart_AN4 页面上插入一个mschart控件,访问名姿势chart_AN7
阅读全文
摘要:前面的博客记录了如何用citectVBA脚本给listview控件列标题添加图标,通过脚本还可以给subitems添加图标。 先写以下脚本,注意红色部分 Sub listviewIniAddicon() Dim i As Integer main_AN4.View =3 '设置外观为报表形式 mai
阅读全文
摘要:前面的博客记录了如何初始化listview,如何添加列标题和内容,如果我们希望listview好看一点,可以给列标题加上图标。先从网上随意找一些icon图标,在页面上插入microsoft imagelist控件,假设这个控件的访问名是main_AN16。将刚才找到的图标逐个插入 可以看到每个ico
阅读全文
摘要:listview内容生成后,有时候希望使用过程中能够交换列的顺序,可以设定.allowcolumnorder属性值为true Sub listviewIniAllowColumnReorder() Dim i As Integer main_AN4.View =3 '设置外观为报表形式 main_A
阅读全文
摘要:listview填充数据后,有时会希望能够点击列标题排序。假设有这样listview控件,画面名称是page2,控件访问名是page2_AN6 如果希望那个点击列标题排序,那么添加以下脚本 Sub page2_AN6_ColumnClick(Byval item As ColumnHeader) p
阅读全文
摘要:前面的博客记录了listview初始化、添加checkbox的脚本设置。如果我们希望能够删除listview指定的行,可以按照以下思路:首先计算勾选了多少行,接下来判断勾选的行数是不是大于0,如果大于0,就循环一下过程,直到勾选行数为0:让行号为1,如果当前行被勾选,就删除当前行,行号不变,勾选行数
阅读全文
摘要:今天在vejio citect2015做练习,有两个页面,一个是page1,一个是page2,上面都有一个控件AN4,l两个页面AN4的访问名分别是page1_AN4和page2_AN4.最开始只有page1时候,写完citectVBA脚本编译没有问题,后来增加了page2,编译总是提示not de
阅读全文
摘要:前面的博客记录了如何设置listview控件,使其带有checkbox,可以多选。有时候我们希望不要多选,只能单选,那么对listview控件的ItemCheck事件写脚本,就能实现这个功能。假设页面名字是page1,listview控件的访问名是page1_AN4,那么该控件的ItemCheck事
阅读全文
摘要:listview控件有一个checkbox属性,可以在编辑状态设置,也可以在脚本里面设置,下面的脚本演示了如何在脚本中加粗文字设置显示checkbox。 Sub ListViewAddcheckbox() Dim i As Integer page1_AN4.View =3 '设置外观为报表形式 p
阅读全文
摘要:很久没有学习练习citect软件的控件使用了,今天开始ListView练习。以前做过wincc下VBS脚本操作listview,换到citect的CitectVBA语法,有点不一样。 新建一个页面main,插入listView控件,访问名是main_AN4,再放置一个按钮控件。新建一个citectV
阅读全文
摘要:现场有一套AC800F的系统,冗余结构,CI840挂IO模板,CBF8.1开发,有点年头了。最近新增加了一个IO机架,始终无法连上,抱错“控制站不存在”或者“控制站没有就绪”。因为新增加的这个IO架与现有的系统没有在一个房间,相距100米左右,使用西门子DP线连接。本来以为是很轻松的事情,结果折腾了
阅读全文
摘要:我们在写word文档时,有时候希望将个章节标题写到新的一页上,如果傻傻的按回车有点麻烦。可以先将要写的各章节标题书写好,比如是这样子 然后全选文字,然后设置段落,点击段落设置处的小箭头,打开设置对话框,选择“换行和分页”选项卡,勾选“段前分页”,然后确定。 选择视图菜单,显示比例中选择多页,就能看到
阅读全文
摘要:今天在QQ聊天时,对方发了几十张照片过来,开始想在聊天窗口中一张一张保存,实在是累人,想在聊天窗口中多选然后保存,也没成功。后来查询网络,聊天记录都放在了“C:\Users\John\Documents\Tencent Files\”下QQ号码文件夹下面的“\Image\C2C”下面,可以根据修改时
阅读全文
摘要:一篇word文档,通常有封面、目录、正文几个部分,我们在添加页眉页脚时候,可能只希望正文有页眉页脚,封面和目录不设置页眉页脚,这个是可以做到的。比如有这样一个文档 我们把鼠标光标移动到正文也最前面,点击菜单“布局”-“页面设置”-“分隔符”-“分节符-下一页” 这样已操作,前面的封面和目录就是第一节
阅读全文
摘要:今天打开一个CAD文件,看到了一堆无规则的线条,很是烦人,实际上这是CAD打开了硬件加速造成的 找到工具菜单,如果没有看到“工具”菜单,那么点击下图中向下的小箭头 然后选择显示菜单栏 工具菜单可见后,选择工具-选项菜单,切换到“系统”选项卡。点击硬件加速下的“图形性能”按钮,对话框中“效果设置”,关
阅读全文
摘要:今天在家做一个文档,一开始就插入了一个表格,表格编辑了大部分后想起来需要在表格前插入一行写一些文字,尝试拖拽表格想在最前面挤出一行始终不行,实际上把光标放在表格第一行第一个单元格问之前,然后按下回车键,就可以在表格前插入一个空白行了。
阅读全文
摘要:最近在使用excel文件处理台账时,需要点击一个连接直接打开另外一个文件,默认的操作是建立绝对路径,但如果用U盘拷贝到其它计算机上后,由于路径改变,连接就无效了。经过查询网络,可以使用相对路径,方法如下。 比如excel文件名字叫做台账.xlsx,放在“d:\台账”文件夹下,要点击G3单元格内“证书
阅读全文
摘要:有时候会遇到excel文件中的表格隐藏了多个行和列,比如这样子: 要一次性显示所有隐藏的航很简单,全选所有内容,鼠标放到列上,右键-取消隐藏就能显示所有的列了。 鼠标放到行上,右键-取消隐藏就能显示所有的行了。
阅读全文
摘要:word编辑目录时,会遇到正文的页码不是从第一页开始的情况,这种情况下需要先设置页码格式。菜单插入-页码-设置页码格式,选择起始页码为1. 然后在目录页最后插入分节符。 插入分节符是通过点击菜单布局-分隔符,插入分节符实现的。 这样做完之后,重新生成一下目录正文页码就是从1开始了。 通过分节符,还可
阅读全文
摘要:前两天一个同事问我word中标个能不能计算公式,我一下子蒙了,以前都是在excel处理数据统计计算的。我想都是office家族成员,做一个公式计算,word也应该能行,通过查询网络,自己试验一遍,果然可以计算公式。假设有这样一个表格,需要统计产量综合和平均值。 先把光标停留在一车间总数单元格,然后点
阅读全文
摘要:前两天在使用word时候,需要将一个表格从第20行拆分为2个。以前使用笨办法是新建一个表格,然后把原表格11行和以后的表格内容复制粘贴过去,再删除原表格11行以及以后的内容。经过查询网络,有一个较快的方法。将鼠标移到第10行末尾,然后按下ctrl+shift+enter组合键,自动的就会打断表格拆分
阅读全文
摘要:今天加班在办公室遇到这样一个问题:office2016双击excel文件不能打开,只有通过点击excel的文件-打开才能打开excel文件,通过搜索网络终于找到解决办法。 打开注册表编辑器,找到“HKEY_CLASSES_ROOT\Excel.Sheet.12\shell\Open\command”
阅读全文
摘要:这段时间一直在练习citect使用citectVBA语句通过ADO连接sql server数据库,数据库是微软免费版本的sqlexpress。最开始使用 strcon = "Provider = SQLOLEDB.1;password = 3390011;user id = sa;Initial C
阅读全文
摘要:最近做一个练习,后台数据库使用sqlserver2008,发现无法编辑200行以上的数据,使用select查询语句得到的数据,又无法编辑,经过查询网络,找到解决方法如下。 打开microsoft sql server management studio,在菜单“工具”-“选项”打开对话框,选择左边树
阅读全文
摘要:最近手上项目需要从citectVBA调用cicode函数,经过QQ群热心网友指点,知道了使用CicodeCallOpen("CitectVBA函数名字")来调用,如果需要返回值,就使用 变量名=CicodeCallOpen("CitectVBA函数名字")
阅读全文
摘要:最近有个项目用到了M580,后面的工作需要读取系统日期时间信息,查看帮助后发现这些信息存放在%SW50到%SW53四个系统字里面。%SW50是SS00,%SW51是HHMM,%SW52是MMDD,%SW53是YYYY,在unity程序中使用FBD这样写程序 %SW49可以读取星期几的数据,1是星期1
阅读全文
摘要:前面的博客记录了初始化Citext.ComboBox控件选项,这几篇记录如何知道使用者选择了哪一项。假设Citext.ComboBox控件访问名依然是main_AN17。在cicode编辑器中添加以下CitectVBA代码 Sub SelComboBox()msgbox "您选择的是第" & Cst
阅读全文
摘要:citect有一个Citext.ComboBox控件,是下拉列表款,后面的练习中,我会使用这个控件做较复杂的条件查询,这一篇先练习初始化控件,填入选项数据。在页面上插入一个Citext.ComboBox控件,假设其访问名是main_AN17。在cicode编辑器中插入以下citectVBA脚本: S
阅读全文
摘要:前一篇博客记录了如何从sql数据库表中读取记录显示在msflexgrid控件中,这一篇记录如何向sqlserver写数据。在citect建立三个本地标签flow1,flow2,flow3 在cicode编辑器写下面的脚本 Sub AddRecordToSQLDB()Dim conn As Objec
阅读全文
摘要:本练习是在sql server2008R2上进行。假设有一个数据库CitectDB,虾米啊有一个数据表Rpt1,有如下数据: 在citect上有一个msflexgrid控件,访问名是main_AN4,在项目管理器的cicode编辑器上写如下citectVBA代码: Sub SqlTableTomsf
阅读全文
摘要:前面的博客记录了连接excel、access数据表的方法,今天实验了一下连接sql server数据表,语句都是类似的。我在计算机上安装了sql server 2008R2 EXPRESS版本,也就是所谓的官方免费版本,连接数据库使用windows系统帐户和sql登录两种方式,给sa账户设置密码12
阅读全文
摘要:前面的博客记录了判断某个程序(比如计算器)是不是已经打开。这一篇博客进一步,如果程序打开了就关闭它,如果程序没有打开就打开它。 Sub killoropenprocess()Dim strComputer As stringDim objWMIService As ObjectDim colProc
阅读全文
摘要:比如判断计算器是否在运行,如果在运行就关掉它。 Sub killprocess()Dim strComputer As stringDim objWMIService As ObjectDim colProcessList As ObjectDim i As ObjectstrComputer =
阅读全文
摘要:有时候我们需要判断某个程序是否已经运行,使用citectvba脚本可以实现这个功能,下面的代码实验判断计算器程序是否运行,通过进程查找calc.exe是否存在来判断。 Sub FindProcess()Dim strComputer As stringDim objWMIService As Obj
阅读全文
摘要:我们使用citect采集了现场数据形成报表后,有时候需要把数据定时发电子邮件给某些人。微软的CDO组件支持邮件发送功能,我在学习citectVBA发邮件时,经历了一些波折,我在这篇博客把这些学习过程下来。 我的想法是点击画面上的按钮,后台脚本用一个qq信箱给一个126信箱发一封电子邮件,不需要打开浏
阅读全文
摘要:前两天在qq群里看到有人问如何使用citectVBA取得昨天的日期,我看了一下CitectVBA资料,一个坏消息是没有日期加减计算的函数,一个好消息是excel里面丰富的日期时间函数可以计算昨天的日期,而且citect可以读取excel文件内容。当然可以在citectvba中通过if……then一大
阅读全文
摘要:假设c盘根目录下有一个text.xlsx文件,希望得到R1C1的数值,那么在cicode编辑器写以下CitectVBA代码: Sub getdatafromexcel()Dim xlApp As ApplicationDim objwb As ObjectDim objst As ObjectDim
阅读全文
摘要:比如我们有这样一个access表格 希望在citect中的MSFlexgrid控件显示信息时,是这样的排版 那么在前面讲access数据写入msflexgrid代码基础上可以写以下代码 Sub msflexgridMergerow()Dim InsertRowCount,colcount,i,j A
阅读全文
摘要:以前在学习wincc的时候,练习过对wincc项目建立快捷方式,这样不需要打开wincc项目管理器也能直接运行项目。在citect中也可以实现类似的功能。本次练习找的是7.4版的citect,安装在c盘默认路径下。首先打开citect项目管理器,选中需要建立快捷方式的项目。在C:\ProgramDa
阅读全文
摘要:前面的博客记录了在excel一个区域划全部的边框,其实还可以自定义左、右、上、下、斜边框,以及边框线等等。在citectVBA编辑器写以下代码: Sub ExcelBordersCnfg()Dim fileName As stringDim xlApp As ApplicationSet xlApp
阅读全文
摘要:和wincc学习时一样,我想把access数据表中的内容写入msflexgrid控件,这一次联系CitectVBA方式。main画面上msflegrid控件编码是AN7,在access数据库myaccess有一个表table1,有这样的内容: 在编辑器中写入下面的代码: Sub ConnAccess
阅读全文
摘要:两边控制系统技术人员为主力,我做点辅助工作,希望顺利。
阅读全文
摘要:今天再次实验昨晚的ADO连接ACCESS数据表,由于ACCESS数据表名字是table,造成Set ors=ocom.Execute语句根本没有执行,也没有citectVBA编译错误,access中定于表名也没有报错,折腾了一段时间终于悔悟了。把表名字改成table1马上就好了。这给了一点教训,那些
阅读全文
摘要:前面的博客记录过使用cicode通过ODBC连接ACCESS数据库,其实使用CitectVBA也能连接。本篇记录如何使用citectVBA脚本通过ADO方式连接ACCESS数据库,并且得到数据表记录数。其实了解了数据库连接写法,取得记录和字段值就相对容易了。 假设有一个myaccess数据库,下面有
阅读全文
摘要:前面的博客介绍了如何使用cicode获取控件属性,使用citectVBA也可以获取控件属性。在页面main上放置一个microsoft flexgrid控件,其编号是AN4,在citectVBA编辑器中写入以下代码: Sub VBA_GetObjPropTest()msgbox main_AN4.c
阅读全文
摘要:前面一篇博客记录了怎么创建一个excel文件并录入数据,数据录入之后还需要进行合并单元格、表格线之类的操作,使用脚本可以让这些定义全自动完成。 CitectVBA编辑器中插入以下脚本: Sub CreateExcelFileByVBA(sFileName As string)Dim xlApp As
阅读全文
摘要:现场有一个项目,笔记版电脑上使用step7 V5.5SP3组态,CP343-1固件版本使用3.3,现场工控机使用STEP7V5.5SP2,打开项目程序时提示硬件需要升级,硬件组态没有CP343-1的3.3版本。考虑到把工控机的step7V5.5SP2升级到SP3,会造成和WINCC兼容性破坏,现场工
阅读全文
摘要:最近一个项目,S7 300的硬件(315-2DP),硬件下载后,在线时诊断信息说硬件已经组态,但是没有有效信息,感觉是CPU读取不到IO模板的信息。反复检查发现,CPU和IO通过有源总线背板连接,而300CPU不支持同一个机架的热插拔的。采取的解决思路是:把CPU和CP343-1取下来,CPU所在的
阅读全文
摘要:以前在wincc学习时,练习过创建一个excel文件,并且将数据写入新创建的excel文件。cicode代码似乎没有那么灵活,写数据到还要用到ODBC连接。不过CitectVBA功能还是不错的,本篇就记录怎么创建excel文件和写数据,思路和在wincc一样。 创建一段CitetVBA代码 Sub
阅读全文
摘要:citect写脚本,可以使用cicode,也可以使用CitectVBA,这篇博客开始记录citectVBA变成学习。先从一个简单的练习开始。 在citect项目管理器的菜单 工具-cicode编辑器 新建一个CitectVBA文件,写如下脚本 Sub mymsg()msgbox("这是一个Citec
阅读全文
摘要:有些情况下,我们需要把flexgrid控件的数据导出到excel文件,那么第一步就是需要创建一个excel文件 FUNCTION CreateExcelFile()STRING filepath;INT file;filepath="[run]:\"+IntToStr(DateYear(TimeCu
阅读全文
摘要:前面的博客记录了怎么通过ODBC连接ACCESS数据库。有时候会遇到这样的情况,一个项目拷贝到其他计算机,或者现在的这台计算机重装了操作系统,那么就需要配置ODBC,如果不是原程序作者,可能根本不知道这么一回事。这样就需要自动的创建ODBC连接了。 在项目使用的access数据库同一个路径下,建立一
阅读全文
摘要:我在论坛里面看到有人询问怎么使用cicode函数去的当前计算机名字,我虽然不知道为什么要取计算机名字,但觉得这个问题有点意思,可以扩展思维一下cicode怎么取得取计算机系统其他信息。 cicode没有直接取得计算机名字的函数,但是我们可以曲线救国——先把计算机名字想办法放到txt文件中,然后从文件
阅读全文
摘要:microsoft date and time picker控件我们可能用到,尤其是在查询数据的时候。这个控件可以设置成显示日期或者时间,还可以设置显示的格式。本篇记录如何读取用户选择的日期时间信息。 在画面上放置两个microsoft date and time picker控件,属性分别设置如下
阅读全文
摘要:实际应用中,可能需要将数据记录到access数据表。假设前面建立的mydatabase中有一张表myreport,表结构是这样子的: 为了模拟现场数据,新建6个内部real变量,添加2个事件,每1秒钟产生6个随机数: 在cicode编辑器中写入以下代码: FUNCTION insertData(RE
阅读全文
摘要:如果我们需要把access数据表内容显示在microsoft flexgrid 中。 在cicode中添加以下代码: FUNCTION ConnAccess()OBJECT hFlexgrid;INT hsql,hrec,hrowcount,i;STRING sSQL,sNumber,sName,s
阅读全文
摘要:前面的博客记录了如何使用odbc方式连接access数据库。本篇记录如何计算连接的数据表有多少条记录。 在cicode写入以下代码: FUNCTION ConnAccess()INT hsql,hrec,hrowcount;STRING sSQL;hsql = SQLConnect("DSN=mya
阅读全文
摘要:在access中新建一个数据库mydatabase,新建一个数据表mytable,保存为2003版本,2016版本的access连接不成功。在控制面板中找到odbc连接,新建一个DNS。如果操作系统是windows 7 64位的,可能发现只有sql server驱动。 这种情况下使用这样的方法解决:
阅读全文
摘要:如果我们希望在microsoft flexgrid控件中对单元格文件做出控制,可以在cicode代码中这样写: FUNCTION FlexGridText(INT row,INT col,STRING txt)OBJECT hFexGridhFexGrid=ObjectByName("AN9");_
阅读全文
摘要:前面的脚本介绍了如何动态设定microsoft flexgrid 控件的行数和列数。本片记录如何动态设定改空间单元格的文本。先从一个简单的练习做起。我们希望完成后,在第2行,第三列显示hello,像这个样子: 在cicode编辑器写入以下代码: FUNCTION FlexGridText(INT r
阅读全文
摘要:citect提供了activex控件,微软的grid控件在做数据表方面有很大的用处。这篇博客开始,记录在学习使用grid控件方面的一些体会。 首先,学习通过cicode脚本设置microsoft flexgrid行数和列数的方法。这里得到了施耐德王工的大力帮助,表示非常的感谢,也给王工创建的施耐德自
阅读全文
摘要:现场有一台计算机,目前通过MBE连接现场支持modbus tcp的仪表,想同时连接kepware,kepware作为OPC Server,citect作为OPC Client。节前试了一阵子,编译的时候错误很多。放松一段时间后,今天办公室加班的时候用unity模拟器和kepware模拟器测试了一下,
阅读全文
摘要:施耐德收购悉亚特公司以后,将原有的CitectSCADA加入了OFS(施耐德OPC server)等施耐德的软件然后形成了Vjieo Citect。另外Vijeo Citect和CitectSCADA的工程可以互相使用(前提是高版本的软件可以打开低版本的工程),但是两者的软件、补丁和狗都不能通用。
阅读全文
摘要:citect软件实际应用中会涉及到读写数据库表,数据库的连接是最基本的操作,今天经过测试,找到了使用cicode代码连接sql server数据库的方法,和wincc中vbs有点不一样。 在citect项目管理器的菜单“工具”-“cicode编辑器”新建function,名字叫做connDB 代码如
阅读全文
摘要:今天自己做练习的时候,遇到中文显示乱码的情况,操作系统是中文版,Citect也是安装的中文版。这种情况可以在Citect项目管理器菜单“工具”-“计算机设置编辑器”,打开对话框,新建一个参数组Language ,下面建一个子项LocalLanguage,值为Chinese(Simplified, P
阅读全文
摘要:前面的博客记录了在事件中对单个变量赋值,如果是对2个变量赋值,那么其他的设置不变,只需要在动作那里,两个变量赋值语句使用英文分号隔开就行了。
阅读全文
摘要:如果我们需要每周某一天(比如星期天)某一个时刻执行,在定义周期的时候需要注意。如果安装的citect是中文版,那么你看到的是中文书写的星期一到星期天,要是你直接就选择了这些中文定义的周期,编译的时候会报错,此时需要填写英文的写法,这应该是citect的一个问题,不知道打上补丁以及高版本的citect
阅读全文
摘要:前面的博客介绍了每月某一天某一时刻,每日某一时刻对某一个变量赋值,有时候我们还需要按照一定频率(比如每5秒/10秒)做某些计算,这个时候就需要在事件定义时,频率参数选择00:00:10(每10秒),时间参数为空,动作参数实验一下写成DayValue=DayValue+10,保存编译运行,就能看出每隔
阅读全文
摘要:前面的博客记录了citect软件每天定时对一个数据赋值,通过事件实现的方法。如果是每月某一天定时对一个数据赋值,那么就是在事件定义有区别。周期参数写每月某一天的英文缩写,每月第一天为1ST,每月第2天为2nd,每月第3天为3rd,每月第四天为4th,每月第5天为5th,以此类推。
阅读全文
摘要:在使用citect时,有时候会需要在每天某个时候对一个数据赋值,比如每晚24点对日累计量清零(当然也可以在下位机程序做),这个在citect中还是很容易的。还是用前面博客的例子,citect作为opc client,实验在每天某个时候对一个数据清零。 先在wincc中新建一个内部变量DayValue
阅读全文
摘要:节前在现场需要在一台运行citect V7.4的计算机上通过OPC读取网上邻居其他OPC Server数据时,始终不成功,DCom设置都没问题,物理连接也没有问题。今天在同一台计算机上安装wincc和citect做了测试,数据能够读取了,节后再去现场测试一下,希望顺利。现在把设置记录下来,希望对今后
阅读全文
摘要:今天上午在检查设备台帐时,发现有两栏分别是确认日期和有效期,这两个日期之间是固定的时间差,为1年少1天,别人发来的表格这两个时间比较乱,有的相隔半年,有的相隔一年。表格内容较多,如果一个一个的修改十分的费劲,好在excel支持公式计算。比如确认日期在L列,数据从第5行开始,有效期在I列,从第5行开始
阅读全文
摘要:Excel中Ctrl+E有很多牛逼的用法,可以事半功倍。 一 拆分单元格显示内容 比如有这样一列含有姓名和性别,我们希望将信息分开,分解显示姓名和性别。如果一个一个重新输入实在是太慢,如果使用函数,又需要记忆函数书写方式。现在可以在旁边插入两列,分别写姓名和性别。 在姓名一栏写“张小三”,性别一栏写
阅读全文
摘要:现场安装了申克皮带秤,需要把信号引入citect显示,秤仪表支持modbus协议,本以为是轻松事情,还是折腾了一天,现把关键点记下来,便于今后类似情况处理。 首先皮带秤仪表配置了Modbus TCP协议和IP地址。在Citect的通讯向导配置选择Modicon Quantum PLC,按照TCP协议
阅读全文
摘要:今天下午临时需要连接一下远程桌面,很久没有使用这种功能了,一时有点懵不知道怎么弄了。好在有万能的互联网搜索了一下,知道了怎么弄。 首先对方计算机要开放权限允许远程桌面连接,然后在这台计算机开始-运行输入: mstsc /v: 10.128.31.21 /console 当中的IP地址就是对方计算机I
阅读全文
摘要:最近现场新装了申克电子皮带秤,需要把瞬时量和累积量采集上来放入上级管理系统里面。经过摸索,按照以下方法实现: 1.在皮带秤一侧,设置参数-输入参数。输入密码7353,然后找到块19(参数19)通讯设置,先设置19.1通讯协议,默认是“无”,这里选择modbus TCP。然后找到参数21以太网设置,分
阅读全文
摘要:前面的博客记录了怎样加密用户自定义DFB块,如果设置密码时没有选择密码加密,那么使用ultraedit是可以看到明文密码的,方法如下。 使用ultraedit打开.stu文件解压后的文件夹,选择pathbase.db文件,找 61 04 09 后面的ascii字符,直到00 62. 在它前面一点还可
阅读全文
摘要:项目编程中,有时候我们需要自定义DFB块,但是不希望别人查看或者修改我们自己写的DFB块,此时可以对DFB加密。在DFB类型新建和写段程序之后,鼠标放到导出的功能块类型下刚才新建的块那里,右键-属性,在保护项那里选择保护的类型,我们选择只读,然后输入设置的密码,保存。以后打开项目程序就只能看这个DF
阅读全文
摘要:前面介绍了使用UltraEdit查看unity pro程序段密码的方法,实际上unity pro程序段密码同时还在binappli子文件夹的station.apx文件中。使用ultraEdit打开这个文件,ctrl+g查找十进制地址1200,就可以看到程序段密码了。
阅读全文
摘要:前面的博客记录了怎么设置密码。我们实际应用中可能遇到忘记程序段密码或者不知道原作者设置的程序段密码情况。结合亿万郭版的教学,可以使用ultraEdit软件查找出程序段的密码。我是用unity pro V8做的实验。 unity程序加密后,使用winrar解压.stu文件,会生成一个文件夹,用Ultr
阅读全文
摘要:有时候不希望别人看程序或者修改程序,就需要对unity程序加密,unity程序加密很简单的。打开unity程序,在项目属性中,有一个“保护”选项卡。 应用程序密码用于打开应用程序时保护,必须输入正确的密码才能打开。 段密码用于保护程序段,程序段的保护分为只读(可以打开不能修改),不可读写(不让改,也
阅读全文
摘要:西门子官方的一个教程页面,内容还是蛮多的。 http://www.ad.siemens.com.cn/productportal/Prods/WinCC/WinCC_functiondepth.aspx
阅读全文
摘要:IP(INGRESS PROTECTION)防护等级系统是由IEC(INTERNATIONAL ELECTROTECHNICAL COMMISSION)所起草。将电器依其防尘防湿气之特性加以分级。IP防护等级是由两个数字所组成,第1个数字表示灯具离尘、防止外物侵入的等级,第2个数字表示灯具防湿气、防
阅读全文
摘要:我们在使用PDF文档时,有时候页面需要旋转才便于阅读。通常我们使用菜单栏上视图-旋转视图功能,但是旋转后并不能保存,下一次打开文档还是需要旋转一次,不是很方便。如果阅读的软件是Adobe Acrobat Professional的话,可以在菜单选择“视图-工具-组织页面”,然后选择需要旋转的页面,再
阅读全文
摘要:在画面上放置一个按钮,但牛的鼠标点击事件中写入以下代码: exec("C:\Program Files\Microsoft Office\root\Office16\EXCEL.EXE i:\test.xlsx",1) exec函数有两个参数,第一个参数写出了excel软件的安装路径和excel文件
阅读全文
摘要:有时候我们需要知道当前登录的用户名字是什么,可以使用这样的方法。 新建内部变量username表示当前用户名,string类型。在页面上放置一个数字控件,字符串类型,连接username变量。在页面属性的事件“当页面显示时”添加以下代码: IF UserInfo(0) = "1" THENusern
阅读全文
摘要:如果希望一运行项目程序就以某个用户的身份操作,那么可以在项目的初始页面属性-事件-进入页面时,添加以下代码: Login("user3", "123456"); 第一个参数是用户名,第二个参数是这个用户的登录密码。保存编译运行,可以直接点击页面跳转按钮而不用重新登录了。
阅读全文
摘要:HMI中我们经常需要从一个页面跳转到另外一个页面,在按钮的点击事件中添加以下代码即可: PageDisplay("目标页面名称")
阅读全文
摘要:有时候我们希望将HMI上一些操作进行权限限制,这个时候就涉及到用户和权限的设置了,本文记录如何实现这种功能。 我们点击Citect工程编辑器的菜单“系统-角色”,可以看到系统有一个默认的角色Administrators,权限是1到8(所有的等级)。点击菜单“系统-用户”,在弹出的对话框新建一个用户a
阅读全文
摘要:通常我们需要在画面上显示当前计算机的日期和时间,可以这样处理。在画面上放置两个字符型变量,显示值属性分别写入以下代码: time(1); TimeToStr(TimeCurrent(), 2); 保存编译,运行后就能显示当前计算机的日期和时间了。
阅读全文
摘要:有时候我们需要点击按钮来关闭正在运行的项目程序,可以在按钮的鼠标点击事件中添加以下代码: ShutdownForm(); 保存编译运行,点击按钮就会提示是不是要关闭运行的程序,选择是就会关闭。 使用shutdown()也可以满足要求
阅读全文
摘要:今天需要配置一下MOXA NPort5100,接上网线使用配置软件可以搜索到设备,但是默认是锁上的,需要解锁才能进行配置,手册里面看不到密码,尝试了什么admin,pawword等等都不好使,后来灵光一现,试了试moxa,居然就是这个。
阅读全文
摘要:我在使用citect V7.4的趋势控件的时候发现,编辑状态下无法配置每个趋势笔的纵轴范围,默认的范围又不适用实际的情况,运行时给每个趋势笔重新设置纵轴范围后,只要画面一切换,纵轴范围又回到了初始默认范围,很不方便。 好在citect支持脚本,本博客就介绍如何让趋势控件记住分配好每个趋势笔的纵轴范围
阅读全文
摘要:本例子针对两套quantum PLC通讯进行讲解。 有两套Quantum PLC系统,使用IO扫描数据通讯,一个IP地址是192.168.0.22,一个IP地址是192.168.1.24,IO扫描配置只需要在一套PLC配置即可,比如在192.168.0.22这一套PLC配置。 打开Unity软件,在
阅读全文
摘要:工作中遇到一个excel文件十几兆,打开非常慢,表格内容实际上没有多少。使用下述方法后,文件容量变成几百K。 先打开文件,漫长等待后终于完全打开了。然后逐一选择各个分表,快捷键ctrl+G,打开“定位”对话框,点击“定位条件”按钮,弹出的对话框选择“对象”,然后确定,等待一定时间后,可以看到大量的文
阅读全文
摘要:项目中我们需要对模拟量输入进行处理,进入Quntum PLC的4-20mA输入模拟量经过模数转换4095数字量,最红还需要转换成工程量纲。我们可以在上位机建立变量的时候做工程量纲转换,也可以在下位机程序里面做转换。这片博客记录如何在下位机程序unity中完成转换。 假设实际工程有一个本地机架和一个远
阅读全文
摘要:今天和施耐德400通电话,咨询了关于vejio citect 授权的事情,vejio citect硬件狗授权点数和项目已用授权点数查看方法在前面一篇博客有引述。今天咨询官方得知,在citect中定义的变量标签,如果没有在画面、趋势控件、报警控件中引用,也就是说定义了一个变量如果在citect运行时没
阅读全文
摘要:来自:http://www.52plc.net/read.php?tid=2690&fid=3Q1Citect单机版(标准版)和服务器版本(完整版)的区别? 单机版和完整版相同的地方是包含了所有的驱动协议,但是不同的是以下三个方面: 1,单机版不支持升级到完整版; 2,单机版不支持网络架构 3,单机
阅读全文
摘要:我们使用过Wincc就会知道,如果安装过AS-OS引擎,那么可以在下位机建立好符号表之后上载到Wincc中,省去上位机建立变量的麻烦,尤其是在变量非常多的情况下。Citect也有类似的功能。 我们在前面unity练习的例子上新建一些变量如下: 保存项目。 新建一个Citect项目。建立好集群、网络地
阅读全文
摘要:有时候我们需要通过弹出提示框来传达一些信息,还有的时候我们需要让操作人员二次确认即将进行的操作。在Citect中,可以通过Message函数来实现。 在前面例子基础上,画面上放入一个按钮,用于实验弹出提示框。按钮的输入-“按下”事件中填入代码: Message("标题","提示文本",48) 保存、
阅读全文
摘要:使用过Wincc的知道,在Wincc中有一个叫做Slider的控件,可以绑定变量,运行时鼠标滑动滑块可以改变数值。我在Citect 7SP4中没有看到这个类型的控件,不过呢,可以自己做一个。 在前面练习的基础上在页面上画一个矩形,双击打开属性设置页。在外观选项卡勾选“填充的”,然后指定颜色;3D效果
阅读全文
摘要:前面的例子都是在一个页面里面做的,通常我们的页面都不止一个,需要随时切换。新建一个项目,把集群、IOServer、变量标签等都配置好。新建一个页面选择PageMenu类型。添加一个按钮,文字写上“数字显示”,保存为Menu。新建一个页面,名字叫做DisplayNum,放上mw1和mw2两个数字控件,
阅读全文
摘要:我们在做HMI时候,需要有动态效果来表示现场设备的不同状态。这个例子介绍将圆形的背景颜色和水平位置动态化。在画面上放一个圆形,圆形的“外观”属性页勾选填充,颜色设定为红色,表示默认的情况下填充红色。“填充”属性页选择开/关量,标签选M2,OFF颜色红色,ON颜色绿色。“平移”选项卡中在水平平移表达式
阅读全文
摘要:citect还可以通过键盘输入改变数值。在前面的练习的页面上放一个数字控件。这个控件的“输入”-“键盘命令”对话框中添加一个键序列BUTTON_DN,表示鼠标左键按下,语句行部分写入MW2=FormNumPad("标题",MW2,16)表示MW2变量的数值等于一个屏幕键盘的输入。屏幕键盘的标题是“标
阅读全文
摘要:前面介绍了按钮改变布尔类型变量的例子。有时候我们还需要通过按钮改变其他类型变量数值。本例子就通过按钮的不同鼠标事件修改数值,同时体验这几个事件的不同之处。 在unity新建一个real变量MW2,地址%MW2.在citect新建一个Real变量,地址400003,名称MW2.页面上放置一个数字控件,
阅读全文
摘要:在前面例子基础上,unity新建一个EBOOL变量M2,地址%M501。在citect新建一个digital变量,名字叫做M2,地址是000501。画面上放置两个按钮,分别在其“输入”-“按下”写入M2=1和M2=0,就可以对这个BOOL变量置位和复位了。 我们可以看到对于按钮控件,在“输入”选项卡
阅读全文
摘要:前面简单的介绍哦啊了一下unity建立quantum plc IO架构、变量、程序的方法。有了下位机,我们通常还需要有上位机。这篇博客就记录如何连接unity模拟器。 打开citect项目管理器,新建一个项目CtectPrj4,模板风格默认。 1. 在工程编辑器选择菜单“服务器”-“集群”,新建一个
阅读全文
摘要:unity和step7类似,可以对下位机程序做导入导出操作,不光是整个项目,还可以单独对硬件、变量表、程序等进行导入导出,灵活性很高。方法也很简单,在需要导出导入的位置鼠标右键,选择导出/导入,然后找到指定位置即可。 使用导出功能可以把不同版本的项目程序进行操作。直接打开项目程序,如果版本不一致打开
阅读全文
摘要:使用过西门子PLC的知道,西门子CPU有一个时钟存储器,默认使用M0.0至M0.7存储不同频率的时钟,我们常用到M0.5来完成一些每秒做一次的程序功能。quantum plc似乎没有这样的系统变量。我尝试着自己写了一个这样的功能,每秒叠加一次。 在上个例子的程序中新建一个变量MW1,地址是%MW1,
阅读全文
摘要:假期总觉得短暂,又开始上班了。手上事情堆着,没啥动力去做,可能是年纪大了懈怠了。
阅读全文
摘要:前面的博客记录了怎么组建一个包含RIO的quantum plc。要使用上位机软件和PLC通讯的话,还需要组建一个网络的。我们选取的是140NOE75101模块,希望使用以太网通讯。首先在目录浏览器树形结构的“通讯”那里右键,添加一个网络,弹出的对话框中,可用网络列表选择“以太网”,写一个名字,然后确
阅读全文
摘要:有一两年时间没有使用施耐德unity项目了,自己都觉得忘记太多了。两个月后自己还要做一个除尘的项目编程调试,下位机就是使用unity V4,必须得熟悉一下了。今天从基础开始练习吧。 新建一个项目,选择quantum plc,CPU选择140CPU65160。插入140CPS11420、140CPU6
阅读全文
摘要:前两天在QQ群里面有群友问如何实现以下功能:点击按钮弹出登录对话框,如果账户密码正确就直接跳转到某个页面。本来觉得这个应该是一个简单的问题,这两天工作一直很忙也没有实际做一下。今天稍有点时间,实验了一下,还是需要点心思的。 新建一个Wincc项目,创建一个用户user1,设定好密码。新建两个页面Ne
阅读全文
摘要:有时候PDF文档被加密了使用不方便,以下两个网站可以在线解密。 https://pdfio.co/zh/unlock-pdf/ http://freemypdf.com/ 要是PDF打开需要密码就没招了
阅读全文
摘要:今天有群友在QQ上咨询怎么在wincc上实现点动效果,就是鼠标按下画面上的按钮,数值增加/减少,鼠标一松开就停止增加/减少;鼠标按下按钮bool变量就置位,鼠标一松开就复位(就像现场点动设备一样)。其实这个还是很好实现的,本例子是在下位机和上位机结合实现效果。 新建一个S7 300的PLC,启用时钟
阅读全文
摘要:GY代表室外,T代表油膏填充式,A代表铝-聚乙烯粘结护套,4代表4根光纤,A1B代表多模A1B光纤,62.5代表纤芯直径、125代表光纤包成直径。 在多模光纤中主要有A1a、A1b两种,其中A1a纤芯直径50um,A1b纤芯直径62.5um,千万不能混用了! 这个型号的全称为金属加强构件,松套层绞油
阅读全文
摘要:有一个群有问如何做出彩灯霓虹效果,觉得有点意思。以前看网上有过介绍,再次看到这个问题就像自己尝试着做一下。 首先想到的是主要逻辑在下位机做。打开step7新建一个项目,插入s7 300硬件,CPU属性中勾选时钟存储器。 新建一个DB块,插入一个整型变量 新建OB100,插入程序段初始化数值 在OB1
阅读全文
摘要:最近现场遇到这样一个事例:有一个大约10年前的S7 300系统,CPU是317-2DP,通过DP网络挂菲尼克斯IO产品。现在需要增加输入输出模板,选型为ET200M。第一次把ET200M的机架和菲尼克斯IO挂在同一个DP网段下载,CPU报错死机。检查接线等没有问题。 于是尝试菲尼克斯IO和ET200
阅读全文
摘要:今天QQ群里面有人问如何设置使趋势控件每个时间主刻度正好是0:00,我测试了一下,如果趋势控件属性-常规的时间基准不设置成UTC,那么主刻度的时间肯定是北京时间,也就是UTC0点+8小时。但是修改成UTC之后,看趋势就很不方便了。 我觉得控制主刻度没有什么意义嘛。
阅读全文
摘要:前面一篇博客介绍了如何把Access内容取出显示在表格控件上的脚本,今天实验了一下如何定时向Access数据表添加纪录。 在Access数据库MyDB下新建一个数据表Mytable2,字段结构如下: 新建一个全局vbs脚本如下: Option ExplicitFunction action Dim
阅读全文
摘要:我以前做过vbs编程ADO方式将SQL Server数据表查询结果显示在MSHFGrid中。前两天一个网友问如何把ACCESS数据表内容显示出来,我尝试了一下,还是比较简单的。 假设D:\Wincc_Access下面有一个ACCESS数据库叫做MyDB.mdb,下面有一张表Mytable1,表格有几
阅读全文
摘要:上个月就计划3月份进入citect的学习练习,事情一忙就耽搁了——实际上也是自己懒惰吧。citect以前自己也练习过,还做了一个小的项目,不过时间一长就忘记了,那个项目上位机部分也没有什么高深的功能,甚至报表也没有。现在还是从第一部开始吧。这次学习使用了citect2015,也就是V7.5。安装程序
阅读全文
摘要:安装西门子软件的时候可能遇到提示需要重启,可是重启后依然说需要重启,这种情况下可以使用以下方法解决。打开注册表 HEEY_LOCAL_MACHINE\SYSTEM\CURRENTCONTROLSET\CONTROL\SESSION MANAGE\下的PendingFileRemameOpeaatio
阅读全文
摘要:今天晚上在群上看到有一个网友问起过在wincc中如何实现同一个按钮,如果是用户1点击就退出wincc项目程序,如果是用户2点击就退出用户程序并关机。单独的退出wincc和单独的关机脚本,都可以使用向导来自动生成,根据用户不同执行不同的操作,无非就是加上条件判断而已,其实还是很好实现的。 新建一个wi
阅读全文
摘要:今天下午现场维护人员反映说Wincc和S7 300PLC通讯不上,但是下位机软件Step7和PLC可以连接。详细询问得知现场工控机主板损坏后换了一台计算机,使用DP通讯卡和上位机通讯。从step7可以连接的情况看,网卡、DP线缆、PLC通讯接口物理上应该没有问题,问题应该是参数设置上。到了现场检查变
阅读全文
摘要:今天看论坛,有一个网友安装step7到Help Engine步骤时就一直停在那里进行不下去,也没有死机,我记得自己在windows7上安装step7也遇到过这个问题。后面有网友回复了快解决办法: 首先退出安装,然后就要准备干净系统重装了。因为windows7没有老版win help文件,需要装kb9
阅读全文
摘要:我们在wincc中使用c脚本设定一些颜色的时候,需要知道每种颜色对应什么数值,或者说在c脚本中怎么表示。 BLACK 0 黑 两者均可 BLUE 1 兰 两者均可 GREEN 2 绿 两者均可 CYAN 3 青 两者均可 RED 4 红 两者均可 MAGENTA 5 洋红 两者均可 BROWN 6
阅读全文
摘要:今天在D盘上新建wincc项目时,提示“未知”的错误,无法创建。我检查了一下项目名称、路径,觉得没有什么问题,重启计算机后仍然这样,心中一紧,难道是wincc软件坏掉了需要重新安装吗?OMG! 后来无意间看到D盘只有不到7M的剩余空间,问题应该就是这里了。删除掉了一些不要的东西,再次新建项目,一切O
阅读全文
摘要:在142练习中,虽然把数据表字段分级装入了TreeView控件,但是我们看到数字前面没有标注flow1、flow2和flow3,如果我们希望最终展示出来的效果要加上注释,那么也很简单,只需要稍稍修改一下sql语句即可(已经标注红色)。 新建四个内部变量,均为文本型,名字分别为CurDate、flow
阅读全文
摘要:我家里计算机上的winccV7.3损坏了,不得已重装了一下,折磨人的过程。以前练习过使用vbs脚本把sql server表的内容用树形结构显示在TreeView控件中,今天练习了c脚本完成同样的功能。数据表还是利用136那张数据表,画面上放置一个treeview控件,名字修改为TV,添加一个按钮,在
阅读全文
摘要:我的wincc软件出了毛病,于是ghost回去了。登录sql server2008的时候,使用sql账户登录提示了18456错误。按照网上的提示做了以下处理后正常登录了。 1. 先使用windows系统安全方式登录sql server管理器。由于我是用的是sa账户登录,打开安全性,找到sa账户,确保
阅读全文
摘要:前面一篇博客记录了怎么初始化treeview控件,但是节点都是收缩的,如果希望初始化时节点都是展开的,那么需要在后面添加红色部分的脚本。 在画面上放置一个treeview控件,名字修改为TV,画面打开事件加入以下c脚本: #include "apdefap.h"void OnOpenPicture(
阅读全文
摘要:以前做过使用vbs初始化treeview,填入常数形成树形结构如下图: 在画面上放置一个treeview控件,一个按钮,按钮的鼠标点击事件中添加以下c脚本 #include "apdefap.h"void OnClick(char* lpszPictureName, char* lpszObject
阅读全文
摘要:前面的练习可以看出ListView第一列可以是复选框便于操作人员勾选,那么我们有时候需要计算勾选了多少行,勾选的行flow1和,flow1最大值、最小值。本篇博客使用c脚本完成上述目的。我们还是使用前面博客里面的数据库做练习,建立4个内部文本变量,名字分别为CurDate、flow1、flow2、f
阅读全文
摘要:前面的博客记录了如何使用c脚本从数据表将数据显示在ListView控件中,有时候我们还需要使用脚本修改ListView控件中某些数据。以前的博客记录过使用vbs脚本修改,今天实验了c脚本可以达到同样的效果。 假设已经有这样一个ListView控件,显示了一些数据如下图(为了方便填入数据,在画面打开事
阅读全文
摘要:以前联系过使用vbs将数据库Report下数据表的内容放入控件Listview中。今天练习了使用c脚本实现同样的功能。在数据库Report下有一个数据表,表结构如下: 表中已经有以下内容 变量管理下新建4个8位文本变量,名字分别为CurDate,flow1,flow2,flow3,分别用来存放数据库
阅读全文
摘要:以前的博客记录过使用vbs往listview填入常数,现在练习使用c脚本实现同样的功能,最终形成这样一个效果。 在画面上放入一个listview控件,名字修改为LV,放一个按钮,按钮的鼠标点击事件中添加以下c脚本: #include "apdefap.h"void OnClick(char* lps
阅读全文
摘要:前面的博客记录了使用常数数组在function trend绘制曲线,有时候x和y的数值来自于现场其他设备或者系统,我们事先并不知道x和y的数值是多少,这个时候数据源就要选择归档变量了,而且不需要使用脚本设置。新建两个变量xValue和yValue,都是32位浮点数,并且加入变量归档。由于没有实际的外
阅读全文
摘要:前面的博客记录了在wincc V7.3,使用vbs把常数数组在function trend上绘制曲线,这篇博客记录如何使用c脚本实现同样的功能。画面上有一个按钮,名字叫做btn,有一个function trend名字叫做trend,按钮的鼠标点击事件中添加以下c脚本 #include "apdefa
阅读全文
摘要:以前做过练习,可以在Functrend控件上绘制曲线,时间一长有点忘记了。今天有一个网友问如何使用常数数组绘制,我试着再做了一遍,其实还是挺好做的。 在画面上放置一个按钮,名字为btn,放置一个Functrend控件,名字修改为FuncTrend,按钮的点击事件添加以下vbs脚本 Sub OnCli
阅读全文
摘要:周末有群友在qq群上说他的客户提出这样一个需求,希望用户操作关键设备时做二次确认,默认选择“取消”按钮,如果5秒不做任何操作,那么系统自动替操作人员选择“取消”。我以前做练习的时候也想到过使用msgbox做二次确认操作,不过也没有想得这么细。既然是客户提出的,那么就要想办法满足,毕竟是“衣食父母”嘛
阅读全文
摘要:前面的一篇博客记录了如何读取多个变量归档数据到mshgrid控件,根据的是西门子官网的教学。有网友询问为什么他照着官网方法就是无法导出到excel。我自己也做了一遍,没有问题。本篇主要记录导出按钮的脚本。 前面的准备工作与上一篇一致,导出按钮的vbs脚本如下: Sub OnClick(ByVal I
阅读全文
摘要:有群友在群里询问过wincc怎么把变量归档里面的数据读取出来,这个我以前也没做过,不过好在官网有教程,但教程只是介绍了读取一个变量的方法,而且教程是写入excel——不过这个不是关键。我照着教程的方法,按照自己的理解做了读取两个变量到控件中,两个以上变量的方法可以照着做就是了。 西门子官方教学的链接
阅读全文
摘要:在网上看到有人询问wincc页面添加onlinetable控件后,运行时只循环交替显示两条记录,变量记录和计算机属性启动项目设置都正确,onlinetable控件关联的也是归档变量。其实问题出现在onlinetable控件属性设置上。 把“属性”-“时间列”设置一下“时间范围”就是了,数据最大值为3
阅读全文
摘要:今天在群里有人询问wincc脚本操作一个已经存在的excel文件时,怎么避免重复打开一个文件,其实这个很好实现的。按钮的vbs脚本如下: Sub OnClick(ByVal Item) Dim path,xlApppath= "c:\myxls.xlsx"Set xlApp=CreateObject
阅读全文
摘要:西门子官网有一个“跟我做”教学,介绍了利用折线来模拟管道内水流的动画效果,还可以控制水流快慢,顺流逆流。但是有一个群友反映说V7.3中使用教学里面的代码不好使。我看了一下教学,按照思路做了一下,也稍稍修改了一下vbs代码,亲测在wincc v7.3好使。西门子官方教学的地址如下: http://ww
阅读全文
摘要:有一个群友咨询在画面上打开一个画面窗口控件时,如何让画面窗口自动获取焦点。虽然这个问题没有什么实际意义,通常打开画面窗口后,再点击画面窗口类的内容,画面窗口就自然会获取焦点,如果你只是需要看看什么也不操作,那么画面窗口有没有获取焦点,其实一点关系也没有。不过为了探寻究竟,还是尝试着使用脚本功能完成这
阅读全文
摘要:我在使用浙江中控ECS100系统时,需要鼠标点击发一个脉冲的时候,如果设置鼠标按下tag=ON,鼠标弹起tag=OFF,理论上应该可行,但实际测试没有任何效果。这应该是鼠标点击的按下弹起时间太短,根本没有被检测到造成的。这种情况下只能设置鼠标按下tag=ON,弹起时不做任何设置,在程序中使用TP块,
阅读全文
摘要:今天在群里看到有人问怎么实现趋势控件坐标轴标签文字纵向显示,这是一个有意思的问题,以前也没注意到,反复尝试,始终不行,哪怕想通过脚本在文本中插入回车换行的ascii码都不行。趋势控件的纵坐标文字ValueAxisLabel和label一样,是不支持换行的。 这个需求是一个群友的业主提出来的,我不知道
阅读全文
摘要:我在使用ECS100系统时,生产作业区有这样的需求,需要在整点和每日零时做一些数据处理。使用条形图或者功能块,无法取CPU时间,经过测试可以用ST语句做一个自定义功能块,在需要的时候引用就是了,ST功能块语句如下: Function_Block MyBlock VAR_INPUT IN1:INT;
阅读全文
摘要:今天在现场对中控ECS100的一个系统做程序修改,需要对模拟量输入的数据做一些统计处理。我知道AI在硬件配置时候指定了量程范围,程序中是半浮点数,我使用了类型转换将其转成浮点数,满以为转换后还是测量值,结果在线一看是一个纯小数,还需要乘上量程范围才行。看来硬件配置那里设置变量名和量程,实际上只是省掉
阅读全文
摘要:以前使用unity软件的时候,在家做了修改拿到现场后,连线总是提示需要完全下载,PLC会停机。与施耐德技术交流后,对方建议这种你先修改,可以保存在本地硬盘上,但是不要做编译。拿到现场后,连线,再做增量编译然后下载,就会只对修改部分下载不会造成PLC停机了。当然硬件配置、网络拓扑的修改还是需要完全下载
阅读全文
摘要:现场有unity架构的quantum PLC 冗余系统,使用一段后,发现CPU面板提示不在冗余状态了,一直以为是模板的冗余部件或者之间的光纤出了问题。后来与施耐德技术交流,得知使用过程中如果出现了程序修改,需要再给传输给standby plc。传输有两种方式,一种是通过面板按钮,一种是通过unity
阅读全文
摘要:现场有一套quantum plc系统,冗余架构,cpu为140CPU43412。下位机使用concept开发。前段时间CPU模板坏了一个,这个型号的CPU官方通知已经停产多年,从代理商手上买备件又担心买到二手的返修货,于是下决心升级到unity架构,CPU升级到140CPU67160,使用unity
阅读全文
摘要:有时候我们需要将数据库条件查询的结果显示在表格控件中,前面的博客记录过VBS的方法,本篇记录使用c脚本实现同样的功能。 在画面上放置一个microsoft date and time picker,名字修改为DT,放置一个microsoft Hierarchical flex control,名字修
阅读全文
摘要:前面一片博客记录了怎么使用c脚本分别提取date and time picker控件的年、月、日,有时候我们需要提取选择的日期,还需要把这个日期按照YYYY-MM-DD这样的格式进行显示。在wincc画面上放置一个date and time picker控件,名字修改为DT,放置一个按钮,按钮的鼠标
阅读全文
摘要:有时候我们打开一个从别的计算机上拷贝过来的项目,wincc提示“当前不允许访问该项目”,应该这样解决:找到这个项目文件夹,删除projectopend.lck文件即可。这应该是在源计算机上做项目复制的时候,项目没有关闭退出,造成复制的项目被锁住了。
阅读全文
摘要:microsoft data and time picker我们会使用到,尤其是在有关日期选择的操作上。我们选取了一个日期后,有时候需要分别提取年、月、日或者日期数值,用于其他操作(比如数据库查询),以前用vbs很好做,也有博客记录脚本。今天使用c脚本来实现同样的功能。 在wincc建立year、m
阅读全文
摘要:有时候我们需要定期往一个sql数据表添加纪录,以前尝试过vbs脚本,今天通过c脚本实现同样的功能。假设有一个sql数据库Report,下面有一个数据表,有以下几个字段: CurNo 表示序号,bigint数据类型,主键,自动递加1;CurDate,字符串,纪录当前日期;CurTime 字符串,记录当
阅读全文
摘要:本来这篇博客是要记录c脚本报表功能的,这里先插入一篇纪录获取系统日期时间的方法。系统的力气和时间我们会经常用到,单独写出来以便今后查阅。 在按钮的点击事件中插入以下c脚本: #include "apdefap.h"void OnClick(char* lpszPictureName, char* l
阅读全文
摘要:以前的博客记录了使用vbs脚本来添加和删除数据表,今天尝试使用c脚本实现同样的功能。假设有一个数据库DB,我们希望在下面新建/删除一个数据表Mytable,这张表有三个字段: Curindex 这是一个整型变量,是主键,不允许为空,会自动加1;stuno是char变量;,不允许为空;name是cha
阅读全文
摘要:以前的博客记录了使用vbs脚本判断数据库下是否有某个数据表的方法,今天测试了使用c脚本实现同样的功能。在按钮的点击事件中添加以下c脚本,判断数据库MyDB下面是不是有数据表Mytable: #include "apdefap.h"void OnClick(char* lpszPictureName,
阅读全文
摘要:以前测试过vbs脚本新增和删除数据库的脚本,今天是用c脚本做一次。假设sql server平台已经启用了sa用户,我们先判断一个数据库NewDB是否存在,如果不存在就创建它。在按钮的点击事件中添加以下脚本: #include "apdefap.h"void OnClick(char* lpszPi
阅读全文
摘要:前面我使用vbs做过判断数据库是否存在的脚本,今天使用c脚本做了一个练习也实现了功能,假设数据库sa用户已经开放使用,在按钮的点击事件中添加以下脚本: #include "apdefap.h" void OnClick(char* lpszPictureName, char* lpszObject
阅读全文
摘要:以前测试用使用vbs往数据表添加纪录,今天尝试着c脚本实现同样的功能,c语言不是太熟,磕磕绊绊测试了较长时间,总算是实现了功能。假设在wincc附带的sql server管理器下的master数据库下有一个report表,表有flow1、flow2、flow3三个字段,数据库启用了sa用户。由于仅仅
阅读全文
摘要:如果想添加年、月、日、小时、分钟、秒钟信息,那么脚本这么写: #include "apdefap.h"void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { #pragma code("k
阅读全文
摘要:前面一片文章记录了如何在wincc中使用c脚本往一个excel文件中写入数据。通常情况下我们写入数据后还需要做一下排版,比如合并单元格,居中,边框线之类的操作,下面的脚本就是实现这个功能的。 #include "apdefap.h"void OnClick(char* lpszPictureNam
阅读全文