1. CC07 – FB902 特殊车型检测 功能块

功能块从IS读写站获取车型 ASCII码,转换新的车型代码,再从颜色识别传感器获得信号状态,转换成新的车型代码,这两种车型代码在功能块内部进行比较,并输出比较结果。同时把每一次触发的报警附加信息记录下来,压入存储队列,队列中保存了最近的1-900次以内的报警记录,例如队列报警记录设置为100,当第101次触发报警,则第1次发生的报警被弹出队列,存储到队列的出口Outlet,报警记录存储的是一个UDT结构体。当发生第102次报警时,则存储在出口Outlet的第1次报警记录被第2次报警覆盖,以此类推,循环覆盖下去。 注意:队列的计数器最大到 100 就不增加了,但队列的内容每一次报警触发,都会被更新,也就是队列的所有元素往后移动一位。

FB902 调用截图如下:

  1. 其中FB902 块中的 FC500 功能块更新了新版,调用如下:

注意下图中红色圈中的参数时新增加的,单队列中的记录达到设定计数“iDBSizeOfAll”后即为元素满了,输出参数“OutQueueFull”变为 “1”.

当元素满后,再增加一个元素则,所有元素往后移动一位,第1个元素被移动到“OutpAnyPopupElem” 输出参数,也就是元素满了 弹出Popup到出口. 当再有元素弹入队列,则第2个元素被弹出到“OutpAnyPopupElem” 输出参数,把原来存储的元素覆盖。

特别注意: AnyNewData 这个输入参数,必须要指定一个Struct 变量类型首地址。因为每个元素(单个数据集)长度(字节数)通过ANY 指针获得,不能直接给变量名(可以指定为Struct 变量名)。

  1. 增加了FB901 保存报警记录 功能块、
  1. CC07- FB901 功能块是用于存储特殊报警记录,并保存和报警记录相关的关键信息,为了客户查询故障,和追溯故障提供方便。

报警信号为BOOL 开关信号,当信号被触发时,功能块从IS 读写站块中获取当前读取到的车型信息,一般为 -0 – 200 字节 ASCII 码! FB901 功能块对ASCII 码进行转换,获得若干段 字符串,这些字符串保存了车型关键信息,例如: VIN码,车型代码, 底漆计数,面漆计数等等。 把这些信息保存到一个自定义的结构中,这个结构有96个字节组成,当报警信号触发时,把这个结构信息当一个元素保存到一个队列中,这个队列在FB901功能块内部,队列最大保存600个元素,也就是最大保存最新的600条报警记录,可供客户随时查看。FB901功能块生成的背景数据块很大, 一般有效的报警记录数设置为 200 以下。 当超过 200 个记录时,会增加 PLC CPU 负担,导致 CPU 扫描周期加长。需要注意

功能块调用如下:

  1. FB901 功能块参数介绍

InRBOcc             :  滚床站位信号

InDetectDone        : 报警信号触发发生

InRecordAct          :  报警记录激活,默认激活状态

InRepeatTrigg        : 报警记录被重复触发,当为“1“时,强制复位内部信号!防止多次触发,以保障每一次触发,之记录一次报警信息

InAlarm1 – InAlarm10  :  报警触发信号,最多可填10个报警信号,当“InRBOcc”和” InDetectDone“ 信号同时为“1“时,标识报警触发条件满足,此时检测InAlarm1 – InAlarm10 管脚10个报警信号状态,当遇到某个信号状态为“1“ 时把对应的续写站获取的车型信息 压入队列中保存起来,注意:一次可保存10种不同报警记录,不过每一个记录触发逻辑要在功能块外部写例如 当发生InAlarm1 报警时 ,事先把此警对应的IS 读写站获取的车型信息保存到“InAUXInfo” 结构体中,然后再触发” InDetectDone“ 信号。注意下图中的红圈中,报警触发完成前给功能块参数赋值,“InAUXInfo”参数中保存IS 读写站车型信息,“DB**.di1Alarm1TextID” 内部参数中赋值对应的报警ID号。此ID 用于HMI画面中对应的报警文本列表,事先定义好的。

InRecordEleQty        :  报警队列有效数量,0-600 ,最大设置为600 ,一般设置为100 ,因为设置太大会占用PLC CPU资源。

InAUXInfo                : 特殊报警附加参数信息,一般为IS 读写站获取车型信息,自定义结构

OnRecordDone            : 报警记录完成信号

OnRecordCount            :  当前报警记录的计数,当达到设置的有效数量时,一直显示最大有效计数,例如“InRecordEleQty”参数 设置为100,当第101次报警触发,计数器同样显示100,只不过内部所有元素向后移动一位,第一个元素被移除覆盖。

OnAlarmType          :发生报警的类型代码

OnAlarmTextNo        : 最后一次发生报警 对应的报警文本ID 号

  1. FB901 功能块对应的 HMI中获取报警文本,采用间接寻址,VB脚本代码获取报警附加信息。
  2. 报警记录查看画面
SIEMENS PLC S7-300 项目经验 01项目名称: ** 福特汽车,涂装改造项目,输送系统改造!项目中建立的 功能块,可移植到其他项目中,直接使用!软件平台: STEP7 V5.5 SP4 HF11油漆车间,输送改造项目,新增CC013区域,新增功能块介绍。CC07 – FB902 特殊车型检测 功能块功能块从IS读写站获取车型 ASCII码,转换新的...
1、功能介绍 PI699E7.3P61C-3产品实现了 PLC 与POE相结合,通过 PLC 传输数据的同时为PD设备供电; PLC 部分采用BCM60321S+BCM5241,POE控制部分采用MAX5971进行PSE供电控制, PLC 数据传输,物理层数据可以达到200Mbps,POE对外部供电48V,功率在15W以内设备均可以使用。 2、电路图 2.1 PLC +POE模块原理图:
作为在工控自动化行业侵淫已久的工程技术人员,无论在程序编 ,抑或现场处理都会总结出自己的一套,本文作者周舟,20 01 年开始接触PC控制和运动控制,先后就职于海天集团、施耐德电气、倍福自动化,宁波致迪自动化,以技术人员和市场人员的身份经历了浙江机械制造的重要发展阶段,也总结出自己的一套 PLC 编程经验,与大家分享。 上次看了邓李老师的文章《如何编 优质的 PLC /PAC程序?大神的这份作业建议你抄一下》颇有些感受。工作快20年,多少 了些程序,大多是和机器相关的,记得本科的毕业设计是用VB+数据采集卡 了一个拖
许多学习软件开发的学员不知道如何在个人简历中如何填 项目经验 ”或“项目描述”,最近接触的一些学习Java的学生在简历中,往往 项目经验 及描述都只能寥寥几笔完事,这样的简历肯定是不吸引招聘企业HR的。 那么软件开发人员如何才能 好个人简历中的 项目经验 及描述呢? 首先你要知道招聘企业想从你的 项目经验 里的描述中获得什么信息?他们真的在乎你的项目用在了那一行业?为这个行业提高了多少效率吗?实际上
在面试时,经过寒暄后,一般面试官会让介绍 项目经验 。常见的问法是,说下你最近的(或最拿得出手的)一个项目。 根据我们的面试经验,发现有不少候选人对此没准备,说起来磕磕巴巴,甚至有人说出 项目经验 从时间段或技术等方面和简历上的不匹配,这样就会造成如下的后果。 第一印象就不好了,至少会感觉该候选人表述能力不强。 一般来说,面试官会根据候选人介绍的项...
在面试时,经过寒暄后,一般面试官会让介绍 项目经验 。常见的问法是,说下你最近的(或最拿得出手的)一个项目。 根据我们的面试经验,发现有不少候选人对此没准备,说起来磕磕巴巴,甚至有人说出 项目经验 从时间段或技术等方面和简历上的不匹配,这样就会造成如下的后果。 1. 第一印象就不好了,至少会感觉该候选人表述能力不强。 2. 一般来说,面试官会根据候选人介绍的项目背景来提问题,假设面试时会问1... ================================================================================================ 2 01 91207 : 5V等电源输入时不要串联防反接用的二极管,否则由于二极管压降大和内阻大,从而使电.............................. 程序开始之前,扫描输入端子,按照一定顺序将所有输入信号 入到寄存器具有输入状态的输入映像寄存器中。 注意:在一个工作周期内采样结果的内容不会改变,只有在下一个扫描周期到来数据才会被更新。 PLC 完成了输入扫描工作后,按照顺序从0号地址开始的程序进行逐条扫描执行,并分别从输入映像寄存器、输出映像寄存器、以及辅助继电器中获得所需的数据进行运算处理,将程序执行的结果 入输出映像寄存器中保存。 注意:程序执行结果在全部的程序未被执行完毕之前不会输送到输
西门子 S7 -120 PLC 与PC通信可以通过以下几种方式实现: 1. 通过串口通信: S7 -120 PLC 具有一个RS232/RS485串口,可以通过串口连接到PC上。在PC上安装相应的通信软件,如STEP 7 Basic或TIA Portal,就可以实现 PLC 与PC之间的通信。 2. 通过以太网通信: S7 -120 PLC 具有一个以太网接口,可以通过以太网连接到PC上。在PC上安装相应的通信软件,如STEP 7 Basic或TIA Portal,就可以实现 PLC 与PC之间的通信。 3. 通过无线通信: S7 -120 PLC 可以通过无线模块连接到无线网络,从而实现与PC之间的通信。在PC上安装相应的无线通信软件,如Profinet IO或WirelessHART,就可以实现 PLC 与PC之间的无线通信。 总之, S7 -120 PLC 与PC之间的通信方式多种多样,可以根据实际需求选择合适的通信方式。
chresh: 我遇到的是另一个问题,在VC6.0下使用是正常的,到VS2010下编译时报错,gridctrltest\memdc.h(26): error C2011: “CMemDC”:“class”类型重定义 我认为微软已经实现了他们自己的CMemDC 类库,所以使用Keith Rule到memory DC库会报重定义错误。 解决办法重命名CMemDC为GCMemDC,记得同时修改MemDC.h及GridCtrl.cpp所有用到的CMemDC项。 还有一个问题, m_arColWidths.InsertAt(nColumn, (int)0);这一行说是函数重载了,不知道调用哪一个,这个函数有2个原型,一个带2个参数,一个带三个,带2个参数的那个第二个参数类型是CUIntArray *,所以把第二个参数类型修改了一下,如下: m_arColWidths.InsertAt(nColumn, (CUIntArray *)0); 编译通过。 GridCtrl 控件在VS2005 中使用 日志。 chresh: gridctrltest\memdc.h(26): error C2011: “CMemDC”:“class”类型重定义 我认为微软已经实现了他们自己的CMemDC 类库,所以使用Keith Rule到memory DC库会报重定义错误。 解决办法重命名CMemDC为GCMemDC,记得同时修改MemDC.h及GridCtrl.cpp所有用到的CMemDC项。 编译通过。 GridCtrl 控件在VS2005 中使用 日志。 chresh: 我遇到的是另一个问题,在VC6.0下使用是正常的,到VS2010下编译时报错,gridctrltest\memdc.h(26): error C2011: “CMemDC”:“class”类型重定义 我认为微软已经实现了他们自己的CMemDC 类库,所以使用Keith Rule到memory DC库会报重定义错误。 解决办法重命名CMemDC为GCMemDC,记得同时修改MemDC.h及GridCtrl.cpp所有用到的CMemDC项。 还有一个问题, m_arColWidths.InsertAt(nColumn, (int)0);这一行说是函数重载了,不知道调用哪一个,这个函数有2个原型,一个带2个参数,一个带三个,带2个参数的那个第二个参数类型是CUIntArray *,所以把第二个参数类型修改了一下,如下: m_arColWidths.InsertAt(nColumn, (CUIntArray *)0); 编译通过。