怎样来提高PLC程序运行速度,可以采用以下几种编程方法,仅供参考:
1:根据工程实际需求,进行功能块规划,编写子程序
在PLC中 ,子程序是为一些特定的控制目的编制的相对独立的程序。执行子程序调用指令CALL等,如果条件不满足子程序调用时,程序的扫描就仅在主程序中进行,不再去扫描这段子程序,这样就减少了不必要的扫描时间。
2:用字或双字数据传送给DO点方法来控制输出
在PLC的应用中通常都会有大量的输出控制,用字或双字数据传送给DO点方法来控制输出可以提高速度,只要根据实际应用的要求,合理分配输出地址,变换控制输出控制字,可以大大减少PLC程序执行的步数,从而加快PLC的程序运行速度。
3:脉冲触发SET、RESET
PLC中,使用SET指令只执行一次即可,不必每次扫描都执行这个指令,很适合与脉冲输出(PLS/PLF)指令配合使用。有些工程人员忽视了这个问题,使用了常规的方法来驱动SET指令,无意中增加了PLC程序扫描运行时间
4:避免了类型转换,方法如下:
以S7-200为例,它的内存格式与我们常用的 PC 机正好相反,它是高字在前,低字在后的。所以我们可以将字变量放在后两个字节,在程序初始化时将前两个字节清零(程序的其它地方不得使用这两个字节)。
如我们定义符号时将字变量定义在 VW2,同时保持 VW0 的值为零。则程序中可以用 VW2 以字型访问该变量,同时也可以 VD0 以双字型访问,避免了类型转换。
为了避免使用时混淆,最好以明确的符号定义来区分字类型和双字类型。在此强烈推荐类匈牙利命名法:以前缀指示变量类型,用首字母大写的有意义的英文单词的组合作变量名。本人习惯用以下缀:
b ---- 字节型变量(byte)
w ---- 字型变量(word)
d ---- 双字变量(double)
r ---- 实型变量(real)
f ---- 位变量(flag)
btn --- 自复位按钮式输入(button)
sw ---- 切换开关或自锁按钮输入(switch)
sig --- 传感器、编码等电平信号输入(signal)
rly --- 输出继电器位(relay)
……
当然,这个根据个人习惯来,没有定则,主要是利于自己区分。
假如有一个字类型变量名为 VarName,为使用前面的转换技巧,我们可以这样定义:
wVarName ---- VW2
dVarName ---- VD0
在程序初始化时将 VW0 清零(如果是不需要记忆的变量,直接将 dVarName 清零也可)或者在数据块中将 VW0 设置为零。则以后需要以字类型访问变量时就用 wVarName,需要以双字类型访问变量时就用 dVarName。完全不需要类型转换。
本方法可以极大的减少程序语句数,使程序更简洁、可读性更好,由于不需要做耗时的类型转换,程序运行效率也得到提高。且数学运算量越大,效率提高越明显。
缺点是要多占用两字节的内存,以后程序中不能使用 VW0。但 S7-200 的 RAM 空间很大,一般是用不完的,以 226 为例,有多达 10K 的 RAM,偶从来没有超过 1K。 这些 RAM 都是花钱买来的,不用白不用,不用也是浪费了。
同理,如果有字节型变量经常需要与字类型变量相互转换,让字节变量占用一个字的内存宽度浪费一个字节,避免类型转换。
关于第3点"使用SET指令只执行一次即可,不必每次扫描都执行这个指令,有些工程人员忽视了这个问题,使用了常规的方法来驱动SET指令,无意中增加了PLC程序扫描运行时间"
不是很理解,能不能说得细一点,
1:如果在ob里编写子程序段,是扫描的,但是如果您编写为FC调用,那么在FC的调用条件没有满足时,FC中的程序暂时不执行。这也是我所说节省时间的意思。
2:PLC的执行步数根据程序长短会不同,扫描时间会根据执行步数的不同而不同,如果用一个mov指令完成8个数字量输出的控制,当然比用8个mov指令完成8个数字量输出的控制所需要的程序步数少。
添加一个:
4:避免了类型转换,方法如下:
以S7-200为例,它的内存格式与我们常用的 PC 机正好相反,它是高字在前,低字在后的。所以我们可以将字变量放在后两个字节,在程序初始化时将前两个字节清零(程序的其它地方不得使用这两个字节)。
如我们定义符号时将字变量定义在 VW2,同时保持 VW0 的值为零。则程序中可以用 VW2 以字型访问该变量,同时也可以 VD0 以双字型访问,避免了类型转换。
为了避免使用时混淆,最好以明确的符号定义来区分字类型和双字类型。在此强烈推荐类匈牙利命名法:以前缀指示变量类型,用首字母大写的有意义的英文单词的组合作变量名。本人习惯用以下缀:
b ---- 字节型变量(byte)
w ---- 字型变量(word)
d ---- 双字变量(double)
r ---- 实型变量(real)
f ---- 位变量(flag)
btn --- 自复位按钮式输入(button)
sw ---- 切换开关或自锁按钮输入(switch)
sig --- 传感器、编码等电平信号输入(signal)
rly --- 输出继电器位(relay)
……
当然,这个根据个人习惯来,没有定则,主要是利于自己区分。
假如有一个字类型变量名为 VarName,为使用前面的转换技巧,我们可以这样定义:
wVarName ---- VW2
dVarName ---- VD0
在程序初始化时将 VW0 清零(如果是不需要记忆的变量,直接将 dVarName 清零也可)或者在数据块中将 VW0 设置为零。则以后需要以字类型访问变量时就用 wVarName,需要以双字类型访问变量时就用 dVarName。完全不需要类型转换。
本方法可以极大的减少程序语句数,使程序更简洁、可读性更好,由于不需要做耗时的类型转换,程序运行效率也得到提高。且数学运算量越大,效率提高越明显。
缺点是要多占用两字节的内存,以后程序中不能使用 VW0。但 S7-200 的 RAM 空间很大,一般是用不完的,以 226 为例,有多达 10K 的 RAM,偶从来没有超过 1K。 这些 RAM 都是花钱买来的,不用白不用,不用也是浪费了。
同理,如果有字节型变量经常需要与字类型变量相互转换,让字节变量占用一个字的内存宽度浪费一个字节,避免类型转换。
以上就是提高PLC运行速度的编程方法。
关键字:PLC 运行速度 编程方法
引用地址:提高PLC程序运行速度的编程方法
1:根据工程实际需求,进行功能块规划,编写子程序
在PLC中 ,子程序是为一些特定的控制目的编制的相对独立的程序。执行子程序调用指令CALL等,如果条件不满足子程序调用时,程序的扫描就仅在主程序中进行,不再去扫描这段子程序,这样就减少了不必要的扫描时间。
2:用字或双字数据传送给DO点方法来控制输出
在PLC的应用中通常都会有大量的输出控制,用字或双字数据传送给DO点方法来控制输出可以提高速度,只要根据实际应用的要求,合理分配输出地址,变换控制输出控制字,可以大大减少PLC程序执行的步数,从而加快PLC的程序运行速度。
3:脉冲触发SET、RESET
PLC中,使用SET指令只执行一次即可,不必每次扫描都执行这个指令,很适合与脉冲输出(PLS/PLF)指令配合使用。有些工程人员忽视了这个问题,使用了常规的方法来驱动SET指令,无意中增加了PLC程序扫描运行时间
4:避免了类型转换,方法如下:
以S7-200为例,它的内存格式与我们常用的 PC 机正好相反,它是高字在前,低字在后的。所以我们可以将字变量放在后两个字节,在程序初始化时将前两个字节清零(程序的其它地方不得使用这两个字节)。
如我们定义符号时将字变量定义在 VW2,同时保持 VW0 的值为零。则程序中可以用 VW2 以字型访问该变量,同时也可以 VD0 以双字型访问,避免了类型转换。
为了避免使用时混淆,最好以明确的符号定义来区分字类型和双字类型。在此强烈推荐类匈牙利命名法:以前缀指示变量类型,用首字母大写的有意义的英文单词的组合作变量名。本人习惯用以下缀:
b ---- 字节型变量(byte)
w ---- 字型变量(word)
d ---- 双字变量(double)
r ---- 实型变量(real)
f ---- 位变量(flag)
btn --- 自复位按钮式输入(button)
sw ---- 切换开关或自锁按钮输入(switch)
sig --- 传感器、编码等电平信号输入(signal)
rly --- 输出继电器位(relay)
……
当然,这个根据个人习惯来,没有定则,主要是利于自己区分。
假如有一个字类型变量名为 VarName,为使用前面的转换技巧,我们可以这样定义:
wVarName ---- VW2
dVarName ---- VD0
在程序初始化时将 VW0 清零(如果是不需要记忆的变量,直接将 dVarName 清零也可)或者在数据块中将 VW0 设置为零。则以后需要以字类型访问变量时就用 wVarName,需要以双字类型访问变量时就用 dVarName。完全不需要类型转换。
本方法可以极大的减少程序语句数,使程序更简洁、可读性更好,由于不需要做耗时的类型转换,程序运行效率也得到提高。且数学运算量越大,效率提高越明显。
缺点是要多占用两字节的内存,以后程序中不能使用 VW0。但 S7-200 的 RAM 空间很大,一般是用不完的,以 226 为例,有多达 10K 的 RAM,偶从来没有超过 1K。 这些 RAM 都是花钱买来的,不用白不用,不用也是浪费了。
同理,如果有字节型变量经常需要与字类型变量相互转换,让字节变量占用一个字的内存宽度浪费一个字节,避免类型转换。
关于第3点"使用SET指令只执行一次即可,不必每次扫描都执行这个指令,有些工程人员忽视了这个问题,使用了常规的方法来驱动SET指令,无意中增加了PLC程序扫描运行时间"
不是很理解,能不能说得细一点,
1:如果在ob里编写子程序段,是扫描的,但是如果您编写为FC调用,那么在FC的调用条件没有满足时,FC中的程序暂时不执行。这也是我所说节省时间的意思。
2:PLC的执行步数根据程序长短会不同,扫描时间会根据执行步数的不同而不同,如果用一个mov指令完成8个数字量输出的控制,当然比用8个mov指令完成8个数字量输出的控制所需要的程序步数少。
添加一个:
4:避免了类型转换,方法如下:
以S7-200为例,它的内存格式与我们常用的 PC 机正好相反,它是高字在前,低字在后的。所以我们可以将字变量放在后两个字节,在程序初始化时将前两个字节清零(程序的其它地方不得使用这两个字节)。
如我们定义符号时将字变量定义在 VW2,同时保持 VW0 的值为零。则程序中可以用 VW2 以字型访问该变量,同时也可以 VD0 以双字型访问,避免了类型转换。
为了避免使用时混淆,最好以明确的符号定义来区分字类型和双字类型。在此强烈推荐类匈牙利命名法:以前缀指示变量类型,用首字母大写的有意义的英文单词的组合作变量名。本人习惯用以下缀:
b ---- 字节型变量(byte)
w ---- 字型变量(word)
d ---- 双字变量(double)
r ---- 实型变量(real)
f ---- 位变量(flag)
btn --- 自复位按钮式输入(button)
sw ---- 切换开关或自锁按钮输入(switch)
sig --- 传感器、编码等电平信号输入(signal)
rly --- 输出继电器位(relay)
……
当然,这个根据个人习惯来,没有定则,主要是利于自己区分。
假如有一个字类型变量名为 VarName,为使用前面的转换技巧,我们可以这样定义:
wVarName ---- VW2
dVarName ---- VD0
在程序初始化时将 VW0 清零(如果是不需要记忆的变量,直接将 dVarName 清零也可)或者在数据块中将 VW0 设置为零。则以后需要以字类型访问变量时就用 wVarName,需要以双字类型访问变量时就用 dVarName。完全不需要类型转换。
本方法可以极大的减少程序语句数,使程序更简洁、可读性更好,由于不需要做耗时的类型转换,程序运行效率也得到提高。且数学运算量越大,效率提高越明显。
缺点是要多占用两字节的内存,以后程序中不能使用 VW0。但 S7-200 的 RAM 空间很大,一般是用不完的,以 226 为例,有多达 10K 的 RAM,偶从来没有超过 1K。 这些 RAM 都是花钱买来的,不用白不用,不用也是浪费了。
同理,如果有字节型变量经常需要与字类型变量相互转换,让字节变量占用一个字的内存宽度浪费一个字节,避免类型转换。
以上就是提高PLC运行速度的编程方法。
上一篇:直流电机换向器的工作原理
下一篇:数控伺服系统的主要性能指标
推荐阅读最新更新时间:2024-05-03 00:47
单片机与PLC之间的串行通信实现
随着微处理器、计算机和数字通信技术的飞速发展,计算机控制已经扩展到了几乎所有的工业领域。其中,PLC和单片机在小规模控制系统中获得了广泛的应用。 在塑料挤出机温度自动控制中,选用S7-200系列PLC作为主控器件,PIC16F877单片机作为温度数据采集和模数转换芯片,单片机通过通信端口将数据传输给PLC,由于采用了RS-485接口标准,传输距离可达1000m。PLC经过PID运算后控制加热圈以保持温度恒定。下面结合实例就PLC和单片机的通信实现做一下介绍。 2、硬件构成 2.1、PIC16F877单片机 Microchip公司的PIC16F877单片机采用哈佛总线结构和精简指令集技术,具有功耗低、运行速度高、驱动能力强和外
[网络通信]
单片机和PLC的区别
若是单片机用梯形图之类编程语言,大家会不会用单片机代替PLC? 单片机的应用考量的是开发者的能力、经验,这其中的能力包括电源、滤波、隔离、软件的规范、通讯、对工艺的理解、更重要的是器件选择、采购、焊接、老化、改进、可扩展性、外壳设计、面板设计、小批量、大批量、开发周期.......其中的任何一条都可能成为制约! PLC的应用考验的能力:选型、应用程序的编写、工艺、调试、降低成本。好像比单片机要少的多。 所以除非单个的应用大于5000台,否则还是用plc好些。 看看典型的单片机的应用吧:家用电热水器、家用空调、微波炉、电饭煲、电子计价秤、标准仪表..... 单片机在工业领域逐渐被嵌入式、dsp等取代,在50元以下
[单片机]
地铁变电站PLC自动化系统设计
摘要:用PLC来实现地铁变电站自动化的RTU功能,能够很好地满足“三遥”的要求。本系统采用了Modicon Quantum系列PLC,来实现变电站自动化的RTU功能。 1 引 言 地铁的供电系统为地铁运营提供电能。无论地铁列车还是地铁中的辅助设施都依赖电能。地铁供电电源一般取自城市电网,通过城市电网一次电力系统和地铁供电系统实现输送或变换,然后以适当的电压等级供给地铁各类设备。 地铁全面采用变电站自动化设计,由于变电站数量多、设备多,在加上其完善的综合功能,信息交换量大,而且要求信息传输速度快和准确无误。在变电站综合自动化系统中,监控系统至关重要,是确保整个系统可靠运行的关键。 变电站自动化系统,经过几代的
[工业控制]
西门子s7-200smart与s7-1200PLC通信技术
本文以采用1个CPU1215C(6ES7215-1AG40-0AB0),1个S7-200SMART PLC为例,介绍它们之间的S7通信。 硬件: S7-1200CPU S7-200 SMART CPU (固件V2.0) PC(带以太网卡) TP以太网电缆 软件: TIAV16 STEP 7 Micro/WIN SMART V2.1 所完成的通信任务: S7-1200将通信数据区DB1中的200个字节发送到S7-200SMART的VB数据区。 S7-1200读取S7-200SMART中的VB数据区存储到S7-1200的数据区DB2。 S7-1200侧硬件组态和网络组态 1使用TIAV16 软件新建一个项目,添加1个
[嵌入式]
PLC在工业控制中的应用
PLC有大有小,所以它的控制范围也可大、可小。小的只控制一个设备,甚至一个部件,一个站点;大的可控制多台设备,一条生产线,以至于整个工厂。可以说,工业控制的大小场合都离不开PLC。 最初PLC主要用于开关量的逻辑控制。随着技术进步,PLC应用领域不断扩大。如今不仅用于开关量控制,还用于模拟量及数字量的控制,可采集与存储数据,还可对控制系统进行监控;还可联网、通讯,实现大范围跨地域的控制与管理。 PLC已日益成为工业控制装置家族中一个重要的角色。 01用于开关量控制 PLC控制开关量的能力是很强的。所控制的入出点数,少的十几点、几十点,多的可到几百、几千,甚至几万点,由于它能联网,点数几乎不受限制,不管多少点都能控制,所
[嵌入式]
PLC在污水深度处理控制系统中的应用
1 引言
大连开发区污水处理一厂于1988年建厂。污水厂分两期实施建成,总设计规模8万m3/d。一期工程设计规模3.5万m3/d,二期工程设计规模4.5万m3/d。一期工程设计出水达到二级标准。二期工程为升级改造工程,出水执行的排放标准将由原二级标准提高到一级A标准,其主要控制指标可达到“再生水用作工业用水水源的水质标准”以及“景观环境用水的再生水水质标准”的观赏性景观环境用水中的河道类标准。该污水处理厂升级改造控制系统的全套硬件设备及软件由和利时公司提供,系统设计工作由大连市市政设计研究院有限公司完成。
2 污水深度处理的工艺升级改造方案
大连开发区污水处理一厂的工艺升级改造方案由五部分组成:一级处理系统、二级处理系
[嵌入式]
西门子S7-200 SMART PLC位逻辑指令总述
基本指令是PLC最常用的指令,主要包括位逻辑指令、定时器指令和计数器指令 总述:位逻辑指令 在STEP 7-Micro/WIN SMART 软件的项目指令树区域,展开“位逻辑”指令包,可以查看所有的位逻辑指令,如图4-1所示。位逻辑指令有16条,可大致分为触点指令、线圈指令、立即指令、RS触发器指令和空操作指令。 图4-1 位逻辑指令 一、 触点指令 触点指令可分为普通触点指令和边沿检测触点指令。 1.普通触点指令 普通触点指令说明如表4-1所示。 表4-1 普通触点指令说明 2.边沿检测触点指令 边沿检测触点指令说明如表4-2所示。 表4-2 边沿检测触点指令说明 二、线圈指令 1.指令说明 线圈指令说明如表4-3所
[嵌入式]
提高编程技巧的十大方法
1.学习一门新的编程语言(Learn a new programming language) 学习一门新的编程语言将有助于你开拓新的思维方式,特别是当你使用不熟悉的语言时,你将学习到很多种思维方法应用到语言中。而所学习到的新思维方式,你可以运用在你所熟知的语言中。甚至有时你会使用新学的语言进行你的重要项目。
2. 阅读好的且具有挑战性的编程书籍 ( Read a good, challenging programming book )
从书中你将学到很多,虽然实践很重要,但通过阅读好的且具有挑战性编程书籍是你改变思维方式重要的一步。这种具有挑战性的书籍包括The Art of Computer Programmi
[安防电子]