上海西皇电气设备有限公司
联系人 :江 工(销售/维修经理)
24小时服务*** :18321993475 微信与电话号码同步
传真(Fax):021-57358110
商务( Q Q ):459170735
地址(Add):上海市金山区枫泾镇泾波路375号
本司***经营西门子PLC
6ES7-200/300/400/1200/6EP/6***/6GK/ET200/6SE变频器/电缆/DP接头/触摸屏 /变频器/数控伺服备件全系列产品、拥有***的技术团队,及***的从业人员,长期为客户提供西门子PLC的销售,安装,调试服务
欢迎您来电咨询高品质西门子驱动和自动化产品价格
用户可以把自己编制程序集成到编程软件Micro/WIN中。这样可以在编程时调用实现相同功能的库指令,而不必同时打开几个项目文件拷贝。指令库也可以方便地在多个编程计算机之间传递。
新建库操作步骤:
***步:在Micro/WIN的File(文件)菜单中,选择Creat Library...(建立库)命令;或者用鼠标右键单击指令树的Libraries(指令库)分支,选择Creat Library...
第二步:在Creat Library对话框中选择哪些子程序要集成为指令库
第三步:在Properties(属性)标签中设置
指定指令库名称
指定要生成的库文件的目录路径
指定版本信息
第四步:在Protection(保护)标签中设置密码
第五步:按OK按钮确定,输出指令库文件
指令库文件扩展名为.mwl,缺省情况下存在Micro/WIN安装目录下的lib文件夹中。库文件可以作为单独的文件拷贝、移动。
添加指令库
***步:在Micro/WIN的File(文件)菜单中选择Add/Remove Libraries...(添加/删除指令库)命令 ;或者在指令树的Libraries(指令库)分支上单击鼠标右键,选择Add/Remove Libraries...
第二步:按Add(添加)按钮,选择新定义的库文件路径。用户自定义库将自动添加到Micro/WIN指令树的Libraries分支下。
调用用户定义指令库
指令库的使用方法与子程序基本一样。
在OB1中两次调用上一个日志中的子程序SBR_0,在运行程序时发现,接通I0.0外接的小开关,Q0.0和Q0.1同时变为ON。这是因为分配给SBR_0的输出参数“电动机”的地址为L0.2,***次调用SBR_0之后,L0.2的值为ON。第二次调用SBR_0时,虽然起动按钮I0.2为OFF,但是因为两次调用SBR_0时局部变量区是公用的,此时输出参数“电动机”(L0.2)仍然为ON,所以第二次调用SBR_0之后,由于执行图4-40中的程序,输出参数“电动机”使Q0.1为ON。子程序的局部变量一定要遵循“先赋值后使用”的原则。
S7-200的子程序使用临时变量来传递参数,OUT类型的参数不会把实参读入形参,所以这里使用OUT形参的触点就出现了临时变量未赋值先使用的情况。将输出参数“电动机”的变量类型改为IN_OUT就可以解决上述问题。这是因为两次调用子程序,参数“电动机”返回的运算结果分别用Q0.0和Q0.1保存,在第二次调用子程序SBR_0,执行“O #电动机”指令时,因为“电动机”是IN_OUT参数,使用的是前一个扫描周期保存到Q0.1的值,与本扫描周期***次调用子程序后参数“电动机”的值无关。
简单地说,对于有记忆功能的电路,需要用存储单元来保存要记忆的变量值。S7-300的FB可以用静态变量来保存,而S7-200的子程序没有静态变量,只有用IN_OUT变量的实参(本例中的Q0.1)来保存变量值。
某日,客户打进电话来:“麻烦工程师,给一个编程的思路。我用的S7-200PLC,我想实时采集数据,如何才能实现永远记录***新的几条数据。”
答曰:“运用表指令,就能够实现。”
那么表指令怎么实现,下面我们来细说一下。
首先,需要将实时采集的数据,建立一个指定长度的表格(ATT填表指令)。实时记录***新数据,那么就要求这个表格具有***先出的功能(FIFO)。
1.ATT填表指令:向表格(TBL)中加入字值(DATA)。表格中的***个数值是表格的***大长度(TL)。第二个数值是表格的实际条目数。每次向表格中增加新数据后,条目计数加1。新数据被增加至表格中的***后一个条目之后,即无法再向表格中添加数据,报溢出。表格***多可包含100个条目,不包括指定***大条目数和实际条目数的参数。
2. FIFO***先出指令:从表(TBL)中移走***个数据,并将此数输出到DATA。剩余数据依次上移一个位置。每执行一条本指令,表中的数据数减1。
3.将这两个指令结合起来,先通过数据建表,当表格满了之后,再移出老的数据,填入***新数据。如下图所示:
注意:所有的表格读取和表格写入指令必须用边缘触发器指令***。
好啦,如果您需要实现实时记录***新数据,请参考吧。
用PTO 怎么才能让步进电机走完一段距离后自动反转回来?外部没有开关
答:1、主程序先正转,等到正转完了就中断,中断中接通个辅助触点(M0.X),当M.0X闭合,住程序中的反转开始运做.这样子就OK了。
2、用PTO指令让Q0.0 OR Q0.1高速脉冲,另一个点如Q0.2做方向信号,就可以控制正反转了,速度快慢就要控制输出脉冲周期了,周期越短速度越快,如果你速度很快的话请考虑缓慢加速,不然它是启动不了的,如果方向也变的快的话就要还做一个缓慢减速,不然它振动会蛮厉害,而且也会失步。
3、程NETWORK 1 // 用于单段脉冲串操作的主程序(PTO)
// ***扫描时,将映像寄存器位设为低
// 并调用子程序0
LD ***0.1
R Q0.0 1
CALL SBR_0
NETWORK 1 // 子程序0开始
LD ***0.0
MOVB 16#8D ***B67 // 设置控制字节:
// - 选择PTO操作
// - 选择单段操作
// - 选择毫秒增加
// - 设置脉冲计数和周期数值
// - 启用PTO功能
MOVW +500 ***W68 // 将周期设为500毫秒。
MOVD +4 ***D72 // 将脉冲计数设为4次脉冲。
ATCH INT_0 19 // 将中断例行程序0定义为
// 处理PTO完成中断的中断。
ENI // 全局中断启用
PLS 0 // ***PTO操作,PLS0 => Q0.0
MOVB 16#89 ***B67 // 预载控制字节,用于随后的
// 周期改动。
NETWORK 1 // 中断0开始
// 如果当前周期为500毫秒:
// 将周期设为1000毫秒,并生成4次脉冲
LDW= ***W68 +500
MOVW +1000 ***W68
PLS 0
CRETI
NETWORK 2
// 如果当前周期为1000毫秒:
// 将周期设为500毫秒,并生成4次脉冲
LDW= ***W68 +1000
MOVW +500 ***W68
PLS 0序注释
建立在线连接
需要在编程设备和可编程逻辑控制器之间建立一个在线连接,以用于***S7用户程序/块、从S7可编程控制器中将块上传到编程设备,以及用于其它活动:
调试用户程序
显示和改变CPU的工作模式
显示并设置CPU的时间与日期
显示模块信息
在线和离线比较块
诊断硬件
为了建立在线连接,必须通过合适的接口(例如,多点接口(MPI))连接编程设备和可编程逻辑控制器。然后可通过项目的在线窗口或"可访问节点"窗口访问可编程控制器。
通过"可访问节点"窗口建立在线连接
这类访问能使您快速访问可编程逻辑控制器,以用于诸如测试目的。可以访问网络中所有可访问的可编程模块。如果在编程设备上没有关于可编程控制器的项目数据,请选择此方式。
使用菜单命令PLC > 显示可访问节点,打开"可访问节点"窗口。在"可访问节点"窗口中,将显示网络中所有可访问的节点及其地址。
在"可访问节点"窗口中,还能显示不能用STEP 7(例如编程设备或操作面板)编程的节点。
在括号中还可显示下列附加信息:
(直接):该节点直接连接到编程设备(编程设备或PC)。
(无源):不能通过PROFIBUS DP对该节点进行编程和状态修改。
(等待):不能与该节点进行通信,因为其组态与网络中其它设置不匹配。
找到直接连接的节点
附加信息"直接"不支持PROFINET节点。为了仍旧能够找到直接连接的节点,请选择PLC > 诊断/设置 > 节点闪烁测试菜单命令。
在显示的对话框中,可以设置闪烁持续时间,然后启动闪烁测试。直接连接的节点将由闪烁强制LED识别。
如果强制功能***,就不能进行闪烁测试。
通过项目的在线窗口建立在线连接
如果在编程设备/PC上,已在项目中组态了可编程控制器,则可选用该方法。使用菜单命令视图 > 在线,打开SIMATIC管理器的在线窗口。它将显示可编程控制器上的项目数据(与此形成对比,离线窗口将显示编程设备/PC的项目数据)。在线窗口同时显示S7程序和M7程序的可编程控制器的数据。
可以使用该项目视图中的功能来访问可编程控制器。SIMATIC管理器"PLC"菜单中的某些功能可以在在线窗口中***,但不能在离线窗口中***。
有下列两种访问类型:
通过已组态的硬件访问
这意味着只能访问离线组态的模块。可以访问哪些在线模块取决于可编程模块组态时的MPI地址设置。
不通过已组态的硬件进行的访问
这要求存在着***于硬件而创建的S7程序或M7程序。(即,它直接位于项目之下)。在此可以通过指定S7/M7程序对象属性中相应的MPI地址,来决定哪些在线模块可以访问。
在线窗口的访问组合了可编程控制系统的数据和编程设备的相关数据。例如,如果在线打开项目下的S7块,显示的内容由以下部分构成:
来自S7可编程控制器中CPU的块的代码段
注释和符号,来自编程设备的数据库(假如它们是离线存在的)。当直接从连接着的CPU上,不存在项目结构的状态下打开块时,它们将以CPU中的存在状态显示,即不带符号和注释。
在多重项目中在线访问PLC
使用所分配的PG/PC进行跨项目访问
用于对象"PG/PC"和"SIMATIC PC站"的"分配PG/PC"功能也可以用于多重项目。
可以在多重项目的任意项目中为在线访问指定目标模块。该过程与只使用一个项目进行工作时的过程相同。
要求
用于在线访问PLC的PG/PC或PC站必须已经在多重项目中的任意一个项目中进行了分配。
注意:当打开对应的项目时,所分配的PG/PC或PC站将用***高亮显示。
只有在已经正确分配了打开项目的PG时,PG/PC的分配才可见。
跨项目子网已合并。
已经编译了多重项目的所有项目,且组态数据也已***到参与站;例如,用于给所有参与模块提供路由信息,以在PG/PC和目标模块之间建立连接。
目标模块可以通过网络进行访问。
使用分布式项目进行工作时可能遇到的问题
如果项目的分配发生改变,且项目不是在创建该项目的PG/PC上打开,则PG/PC分配不可见。
不过,所组态的PG/PC对象将仍然保持"已分配"状态,但具有"错误"的PG/PC。
此时,必须清除现有的分配,并重新分配PG/PC对象。这时,就可以毫无问题地在多重项目内对模块进行在线访问了。
使用分布式项目进行工作的提示
如果有一个以上的团队成员希望在他们的PG上在线访问PLC,有用的方法是,在多重项目中创建一个"PG/PC"或"SIMATIC PC站"对象,然后为PG的每个站建立一个分配。
根据是哪个PG打开了该项目,SIMATIC管理器将只用***箭头指示且已分配给该PG的对象。
用于访问可编程控制器的口令保护
使用口令保护,可以:
保护CPU中的用户程序,防止未***的修改(写保护)
保护用户程序的编程技术内容(读保护)
防止将会干涉进程的在线功能