镇江地区西门子模块代理
S7-300/400PLC程序采用结构化程序,把程序分成多个模块,各模块完成相应的功能。结合起来就能实现一个复杂的控制系统。就像语言一样,用子程序实现特定的功能,再通过主程序调用各子程序,从而能实现复杂的程序。
在S7-300/400PLC中写在OB1模块里和程序就是主程序,子程序写在功能(FC),功能块(FB)。
FC运行是产生临时变量执行结束后数据就丢失-----不具有储存功能
FB运行时需要调用各种参数,于是就产生了背景数据块DB。例如用FB41来作PID控制,则它的PID控制参数就要存在DB里面。FB具有储存功能
系统功能块(SFB)和系统功能(SFC)也是相当于子程序,只不过SFB和SFC是集成在S7 CPU中的功能块,用户能直接调用不需自已写程序。
SFC与FC不具有储存功能,FB和SFB具有储存功能 。
OB模块相当于子程序,负责调用其他模块。如果程序简单只需要OB就可以实现。
用西门子PLC编程时,可以用到功能块FB和功能FC(FB、FC都是组织块)资料上说FB与FC都可以作为用户编写的子程序,但是我不明白这两个组织块之间到底有什么区别阿?在应用上到底有什么不同之处吗?
FB--功能块,带背景数据块
FC--功能,相当于函数
他们之间的主要区别是:FC使用的是共享数据块,FB使用的是背景数据块
举个例子,如果您要对3个参数相同的电机进行控制,那么只需要使用FB编程外加3个背景数据块就可以了,但是,如果您使用FC,那么您需要不断的修改共享数据块,否则会导致数据丢失。FB确保了3个电机的参数互不干扰。
FB,FC本质都是一样的,都相当于子程序,可以被其他程序调用(也可以调用其他子程序)。他们的大区别是,FB与DB配合使用,DB中保存着FB使用的数据,即使FB退出后也会一直保留。FC就没有一个的数据块来存放数据,只在运行期间会被分配一个临时的数据区。
在实际编程中,是使用FB还是FC,要看实际的需要决定。
启动模式设置
S7-1200 启动模式可以在“CPU 属性-常规-启动” 进行设置。如下图 1 所示:
图 1. CPU启动选项设置
①“上电后启动”:定义了CPU 上电后的启动特性,共有以下三个选项,用户可根据项目的特点及性来选择,默认选项为“暖启动-断电前的操作模式”:
“不重新启动(保持为STOP 模式)”:CPU 上电后直接进入STOP 模式;
“暖启动-RUN模式”:CPU 上电后直接进入RUN模式;
“暖启动-断电前的操作模式”:选择该项后,CPU上电后将按照断电前该CPU 的RUN模式启动,即断电前CPU处于运行模式,则上电后 CPU 依然进入RUN模式;如果断电前CPU 处于STOP状态,则上电后CPU进入STOP模式。
如果在发生掉电或故障时,CPU 处于 STOP 模式,则 CPU 将在上电时进入 STOP 模式并保持 STOP 模式,直至收到进入 RUN 模式的命令;
如果在发生掉电或故障时,CPU 处于 RUN 模式,则在未检测到可禁止 CPU 进入 RUN 模式的条件下,CPU 将在下次上电时进入 RUN 模式。
②“比较预设与实际组态”:定义了 S7-1200 PLC站的实际组态与当前组态不匹配时的 CPU 启动特性:
“仅在兼容时,才启动CPU”:所组态的模块与实际模块匹配(兼容)时,才启动CPU。
“即便不匹配,也启动CPU”:所组态的模块与实际模块不匹配(不兼容)时,也启动CPU。
注意:
如果选择了"即便不匹配,也启动CPU",此时的用户程序无常运行,必须采取相应措施!所以要慎重选择该项。
③ “组态时间”:在 CPU 启动过程中,为集中式 I/O 和分布式 I/O分配参数的时间,包括为 CM 和 CP 提供电压和通信参数的时间。如果在设置的“组态时间”内完成了集中式 I/O 和分布式 I/O的参数分配,则CPU立刻启动;如果在设置的“组态时间”内,集中式 I/O 和分布式 I/O未完成参数分配,则 CPU 将切换到 RUN 模式,但不会启动集中式 I/O 和分布式 I/O;
④ “OB应该可中断”:“OB应该可中断”后,在OB 运行时,*高**级的中断可以中断当前OB,在此OB 处理完后,会继续处理被中断的 OB。如果不“OB应该可中断”,则**级大于2的任何中断只可以中断循环OB,但**级为2~25的OB不可被*高**级的OB 中断。
启动时 CPU 执行的操作
启动特性:
在暖启动期间,所有非保持性位存储器内容都将并且非保持性数据块内容将复位为来自装载存储器的起始值。将保留保持性位存储器和保持性 DB 中的内容。
不管选择哪种启动模式,已编写的所有启动 OB 都会执行。
不执行任何基于时间的程序。
中断控制的程序的执行于:OB 82(诊断中断)
禁用模块上的输出。
不*新过程映像;可以对输入进行直接 I/O 访问。
如下图 2 所示:
图 2. 启动时 CPU 执行的操作
关于 启动 OB 的详细说明, 请参考以下文档:
S7-1200 启动(Start up)组织块
常见问题:
1.
哪些情况会导致 S7-1200 CPU 无法启动?
以下的情况会导致 S7-1200 CPU 断电后再上电无法启动:
检测到的某些错误会阻止 CPU 进入 RUN 模式;
在“CPU 属性-常规-启动” 设置为不重新启动(保持为 STOP 模式);
暖启动 - 断电前的模式:CPU 组态为“暖启动 - 断电前的模式”,且在发生掉电或故障时,CPU 处于 STOP 模式,则 CPU 将在上电时进入 STOP 模式并保持 STOP 模式;
在 CPU 设备组态的属性里选择了“允许通过用户程序重新组态设备”。而 WRREC 指令在启动 OB 中传送完控制数据记录后组态控制才会生效。如果已启用组态控制但 CPU 不具有控制数据记录,则在退出 STARTUP 模式时会转到 STOP 模式。
具体请参考:
组态控制功能
2. 为什么CPU断电后,再上电CPU没有报任何错误,但CPU却运行不起来?
答:原因是CPU没有硬件开关用于启停控制,CPU上电后的启停由CPU属性中的“启动”选项来决定(如图1所示)。其默认设置为“暖启动-断电前的操作模式”,此时如果是断电前CPU因故障停止,那么再上电后即使没有故障,CPU也会延电前的状态,保持STOP 模式。或者设置成“不重新启动”,则CPU 上电后直接进入STOP 模式。如果在以上两种模式下,CPU无法启动,需要通过博途软件在线功能启动CPU。
所以必须将启动选项设置为“暖启动-RUN模式”,才能保证在没有错误的情况下,CPU上电后直接进入RUN模式。
6ES72211BF320XB0 | SM1221 数字量输入模块, 8 输入24V DC |
6ES72211BH320XB0 | SM1221 数字量输入模块, 16 输入24V DC |
6ES72221HF320XB0 | SM1222 数字量输出模块, 8输出继电器 |
6ES72221BF320XB0 | SM1222 数字量输出模块, 8输出24V DC |
6ES72221XF320XB0 | SM1222 数字量输出模块, 8输出切换继电器 |
6ES72221HH320XB0 | SM1222 数字量输出模块, 16输出继电器 |
6ES72221BH320XB0 | SM1222 数字量输出模块, 16输出24V DC |
6ES72221BH321XB0 | SM1222 数字量输出模块, 16输出24V DC 漏型 |
6ES72231BL321XB0 | SM1223 数字量输入输出模块 16输入24V DC/ 16输出24V DC 漏型 |
6ES72231PH320XB0 | SM1223 数字量输入输出模块 8输入24V DC/ 8输出继电器 |
6ES72231BH320XB0 | SM1223 数字量输入输出模块 8输入24V DC/ 8输出24V DC |
6ES72231PL320XB0 | SM1223 数字量输入输出模块 16输入24V DC/ 16输出继电器 |
6ES72231BL320XB0 | SM1223 数字量输入输出模块 16输入24V DC/ 16输出24V DC |
6ES72231QH320XB0 | SM1223 数字量输入输出模块 8输入120/230V AC/ 8输出继电器 |
6ES72314HD320XB0 | SM1231 模拟量输入模块 4AI 13位分辩率 |
6ES72315ND320XB0 | SM1231 模拟量输入模块 4AI 16位分辩率 |
6ES72314HF320XB0 | SM1231 模拟量输入模块 8AI 13位分辩率 |
6ES72315PD320XB0 | SM1231 热电阻模块 4RTD 16位分辩率 |
6ES75162GN000AB0 | SM1231 热电偶模块 4TC 16位分辩率 |
6ES72315PF320XB0 | SM1231 热电阻模块 8RTD 16位分辩率 |
6ES72315QF320XB0 | SM1231 热电偶模块 8TC 16位分辩率 |
6ES72324HB320XB0 | SM1232 模拟量输出模块 2AO 14位分辩率 |
6ES72324HD320XB0 | SM1232 模拟量输出模块 4AO 14位分辩率 |
6ES72344HE320XB0 | SM1234 模拟量输入输出模块 4AI/2AO |
6ES72385XA320XB0 | SM 1238 电能测量模块 480V AC |
6ES72411CH320XB0 | CM1241 RS485 /422通讯模块 |
6ES72411AH320XB0 | CM1241 RS232通讯模块 |
6ES72411CH301XB0 | CB1241 RS485信号板通讯模块 |
6ES72784BD320XB0 | SM1278 I/O Link Master |
6ES72213AD300XB0 | SB1221 数字量信号板模块,支持5V DC输入信号, 4输入 5V DC,高频率200KHZ |
6ES72213BD300XB0 | SB1221 数字量信号板模块,支持24V DC输入信号,4输入 24V DC ,高频率200KHZ |
6ES72221AD300XB0 | SB1222 数字量信号板模块 支持5V DC 输出信号, 4输出 5V DC,高频率200KHZ |
6ES72221BD300XB0 | SB1222 数字量信号板模块 4输出 24V DC 0.1A 高频率200KHZ |
6ES72230BD300XB0 | SB1223 数字量信号板模块 2输入24V DC/ 2输出24V DC |
6ES72233AD300XB0 | SB1223 数字量信号板查模块,支持5V DC输入信号,2输入 5V DC/2输出 5V DC 0.1A,高频率200KHZ |
6ES72233BD300XB0 | SB1223 数字量信号板模块,支持24 V DC输入信号, 2输入24V DC/ 2输出24V DC 0.1 A ,高频率200KHZ |
6ES72324HA300XB0 | SB1232, 模拟量信号板模块, 1AO |
6ES72314HA300XB0 | SB1231, 模拟量信号板模块, 1AI, 10位分辩率, (0-10V) |
6ES72315PA300XB0 | SB1231, 热电阻信号板模块,1 RTD 类型: Platinum (Pt) |
6ES72315QA300XB0 | SB1231, 热电偶信号板模块,1 TC1 类型: J, K |