西门子S7-300,使用过程中遇到的难点
----------------------------------------------------------------------------------------------------------------------------为什么在FM350-1中选24V编码器,启动以后,SF灯常亮,FM350-1不能工作?
要检查一下,首先在软件组态中要选择编码器类型(为24V),再检查一下,FM350-1侧面的跳线开关,因为缺省的开关设置为5V编码器,一般用户没有设置,开机后,SF灯就会常亮。
另外,还可以看看在线硬件诊断,可以看看错误产生的原因,是否模板坏了。
FM350-1的锁存功能是不能产生过程中断,但是可以产生过零中断。
FM350-1的装载值必须为零,随者锁存功能的执行(DI的上升沿开始),当前的计数值被储存到另一地址然后置为初始值零,产生过零中断,在OB40中可以读出中断并相应的值。锁存值也可以从FM350-1的硬件组态地址的前4个字节中读出。
FM350-1中自带的输出点具有快速性、实时性,不必要经过CPU的映像区处理。输出点一般对应于比较器,首先在硬件组态中定义比较器输出类型,如:输出值为1或为脉冲输出,然后在程序中设置比较值。在FM350-1中,地址在通讯DB(UDT生成)块中为18(比较值1)、22(比较值2),类型为DINT,然后激活输出点28.0(DQ0)、28.1(DQ1),这样比较器就可以工作了。
工作号是S7-300CPU与FM进行通讯的任务号,每次的交换数据只是部分数据交换,而非全部数据,这样可以减少FM的工作负载,工作号又分写工作号和读工作号,例如在FM350-2中指定DB1为通讯数据块,如果把写工作号12写入到DB1.DBB0中,把200写入到DB1.DBD52中,再调用FC3写功能,这样***个计数器的初始值为200,这里工作号10的任务号是写***个计数器的初始值,DB1.DBB0为写工作号存入地址,DB1.DBD52为***个计数器装载地址区,同样读工作号100为读前4路,101为读后4路计数器,读工作号存入地址为DB1.DBB2。但写任务不能循环写,只能分时写入。
如果对于4-20 mA模拟量输入模块来说,小于4 mA后转换的
数字量是多少?
如果小于4ma,那么将会是输出负值,例如 -1对应的是3.9995mA,而1.185 mA 时,这个数值是-4864 (10进制)但是如果小于1.185mA,如果禁止断线检测,这个值是8000(16进制)如果有断线检测,会变成7FFF(16进制)。
可以使用以下功能块:
1.在块FC164中,x和y都是整数。
2. FC165中x是整数,y是实数。
3. FC166中x是实数,y是整数。
4. FC167中x和y都是实数。
MPI通讯是S7系列PLC之间一种***经济、数据量***小的一种通讯,需要做连接配置的站通过GD通讯,GD通讯适合于S7-300之间,S7-300、S7-400、MPI之间一些固定数据的通讯。不用作连接的MPI通讯适用于S7-300之间、S7-300与400之间、S7-300/400与S7-200 系列PLC之间的通讯,建议在OB35(循环中断100ms)中调用发送块,在OB1(主循环组织块)调用接收块。
整个系统掉电后,为什么CPU在电源恢复后仍保持在停止状
态?
整个系统由一个DP主站S7-300/400以及从站组成。而从站通过一个主开关被切断了电源。由于内部的CPU电压缓冲器,CPU 仍继续运行大约50ms到100ms。此阶段里 CPU 识别出所连接的从站的故障。如果没有编程OB86和OB122的话,CPU 就会因为这些有故障的从站而继续保留在停止状态。
在点到点通信中,协议 3964(R)和RK 512 之间的区别是什
么?
这两个协议的主要区别在于消息报头和响应消息的不同。使用RK 512,提供有***高的数据完整性,程序 3964(R) 当传送信息数据时,程序 3964(R)将控制字符(安全层)添加到信息数据上。这些控制字符激活通信伙伴,检查数据是否全部接收,是否无错误。
当一个DP从站出故障,如何在输入的过程映像被清成“0”以
前保存它们?
当一个DP从站出故障时,OB86(通过S7-300/400)被调用。可用下列方法“保存”输入的过程映像:
1. 把从站的所有输入循环地复制到一个独立的区里。
2.如果从站出问题,则 OB86 被启动。在此 OB 里你可设一个标志位来可防止进一步的循环复制操作。
3. 当从站返回总线后,你把 OB86 里的标志位复位。
对模拟量模块而言,如何处理未使用的通道?
如果模块带有MANA : 短接所有的未使用通道的M-到 MANA ,如果可能,连接MANA 到接地极,把模块的测量模式设置为:0 - 20/ + -20mA. ,短接未使用的COMP+/COMP-. IC+ / IC-可以保持悬空。
如果模块不带有 MANA : 把所有未使用的通道M-连接到使用通道的M-.等在输入端UCM > 2.5V 时,连接所有未使用的 M-到cpu的接地或系统的接地. 把模块的测量模式设置为:0 - 20/ + -20mA. ,短接未使用的COMP+/COMP-. IC+ / IC-可以保持悬空。
对于SM 331-7NF10-0AB0模块在4通道模式:禁止未用的通道,这些输入端悬空即可
对于Ex模块SM 331-7RD:未使用的通道可以保持悬空72:上位机与plc进行通讯,硬件都需要哪些?
哪些软件里含有CP5511,CP5512,CP5611,RS232 PC-A
dapter 的驱动?
如果安装了相应的软件后包含“Set PG/PC Interface …”组件,那么这些软件都含有CP5511,CP5512,CP5611,RS232 PC-Adapter 的驱动,只需在“Set PG/PC Interface …”->“Select…”->选择相应的驱动,然后“Install-->”即可。
具体的软件有Step7,Step7 MicroWin,Simatic Net,WinCC,Protool,Flexible,PCS7。
当试图通过TeleService建立PRODAVE MPI和样列程序之间
的通讯时,为什么会出现出错消息4501?
调制解调器没有响应,并产生了出错消息4501。在这个情况下,工作站的规范不正确。在TeleService对话框中检查工作站的名称和工作站(standort)规范。此处可能有个不正确的缺省设删除“station”(“standort”)域中的缺省名,或输入正确的工作站名。那么就可以使用调制解调器在PRODAVE MPIY和TeleService之间建立连接。
可以。从AS中“ONLINE,打开相关数据块(DB).使用软盘图标“OFFLINE”保存DB.
通过“File > Generate Source”在DB中产生STL源代码. 通过手动操作将BEGIN和END_DATA_BLOCK行之间的当前值与相应的声明(初始值)逐行 连接起来,从而得到下列声明语句:
STRUCT
wordVar : WORD := W#16#ABCD;
...
END_STRUCT ;
编译STL源代码。
在启动型OB(如用于S7-300的OB100和用于S7-400的OB100和OB101)和循环模式OB(OB1)中,必须调用数据通讯或程序管理(把PLC切换到STOP或RUN)所需的所有SFB。OB100是启动型OB,并在重新启动CPU时运行。例如,在该OB中,用标记M1.0和M0.1来释放***个通讯触发器。
一个位、字节或者字符域的尺寸是按照字节限制排列的——在所有其它情况下是按照字对齐的。表T6-1中给出了一个域的存储示例。操作系统计算域中单个元素末端位置的位地址。域被分配到从下一个字地址(或字节地址)。下一个数据类型从下一个整字开始(或者整字节).
声明部分:
在声明部分,必须定义一个与将被间接寻址的ARRAY有着同一结构的ARRAY。不一定非要将ARRAY声明为IN-OUT变量;也可以声明为TEMP、IN或OUT变量。
网络:
域宽度(OFFSET)在网络中定义。ARRAY中的单个元素的***小常规数据宽度是一个字节;即使在两个变量之间定义一个BOOL。有必要确定相关的域的宽度和确定下一个期望域的起始地址。可使用下面的算法:地址(指数):b = 元素长度*(指数 - 1)
创建具有不同数据类型的结构时,必须注意,在特定的环境下可能会自动插入填充字节。
保存ARRAY数据类型
示例:ARRAY [1..2,1..3] OF 整数 将生成下列域:
多维域是按照顺序保存的。在本例中整数 [1,1]后面是整数 [1,2],整数 [1,3]后面是整数 [2,1]。
STEP 7以 6 个字节保存POINTER参数。显示了用于保存POINTER参数类型的内存区域以及每个字节中保存的数据。POINTER参数类型保存了下列信息:DB号(如果DB中没有保存任何数据时为0)。CPU中的内存区域(表格中列出了不同内存区域的十六进制代码)。
数据的地址(按照Byte.Bit格式)。
如果将形式参数声明为POINTER参数类型,则只需要指定内存区域和地址。STEP 7自动将输入项目的格式转换为指针格式。
因为总是要首次调用Alarm8P(SFB35)块,怎样避免OB 1初
始化过程花费太长时间?
激活(首次调用)报警块Alarm(SFB33)、A larm_8(SFB34)和Alarm_8P(SFB35)比简单地执行作业检查需要多花费 2 到 3 倍的运行时间。当传送告警时,块的运行时间也会同样长。然而警报通常不会成群发生,当编程时,需要注意警报块的首次调用,因为此处用到的所有块需要很长的运行时间,因此被调用OB的运行时间在某些情况下将显著增加。将警报块的首次调用移动到OB 100/101/102,可以将较长的运行时间转换到启动过程。此处处理时间也会较长,但是由于与模块的参数设置同时进行,启动时间不会太长。
设法通过控制面板卸载STEP 7。如果安装文件已损坏,卸载程序常会出错,并伴随出错信息。另外STEP 7 CD包含文件Simatic STEP7.msi。可以通过这个文件卸载STEP 7。
如果您忘记了您在S7-300CPU Protection属性中所设定的密码,那么您只能够采用siemens的编程器PG(6ES7798-0BA00-0XA0)上的读卡槽或采用带USB接口的读卡器(USB delete?S7 Memory Card?prommer 6ES7792-0AA00-0XA0),选择SIMATIC Manager界面下的菜单 File 选项删除MMC卡上原有的内容,这样MMC就可以作为一个未加密的空卡使用了,但无法对MMC卡进行jie密,读取MMC卡中的程序或数据。
有两种方法:
1.在参数设置中“Gate function”选“Cancel count”软件门为0,在为1时,值将清零,
2.利用写“Job”的方式,写计数值的任务号为1。
CP342-5支持PROFIBUS DP协议,不能用于PROFIBUS FMS协议通讯,同样CP343-5只支持PROFIBUS FMS协议,不能用于PROFIBUS DP协议通讯,而CP342-5和CP343-5都支持PROFIBUS FDL的链接方式;
CP342-5 FO不支持3MB,6MB的通讯速率,如果您购买的是5.1版本的CP342-5,而STEP7中没有V5.1版的CP342-5时,则可以插入一个V5.0版的CP342-5模块,功能不受影响。CP342-5在S7-300系统中的安装位置与普通的S7-300 I/O模块一样,可以插在4至11这8个槽位中的任何一个。
No DP方式下:可以用CP342-5通讯口进行S7编程或进行PROFIBUS的FDL连接,连接人机界面;
DP Master方式下:CP342-5除了作为网络中的PROFIBUS主站之外,也可用于S7编程、FDL连接和连接人机界面。DP delay time参数一般不需设定,除非您采用FDL连接时,要与DP的I、O点刷新时间相一致,才根据PROFIBUS网络性能进行调整;
DP Slave方式下:CP342-5除了作为网络中的从站之外,如果选择了The module is an active node on the PROFIBUS subnet选择框,那么CP 342-5也可用于S7编程、FDL连接和连接人机界面,否则CP342-5只能作为从站使用;
一套S7-300系统中***多可以同时使用4块CP342-5模块,每块CP342-5能够支持16个S7 Connection,16个S5-Compatible Connection。当CP342-5处在No DP模式下工作时,***多同时支持32个通讯链接,而处在DP Slave或DP Master模式下时,***多同时支持28个通讯链接。CP342-5 作为PROFIBUS DP主站时,***多链接 124个从站,和每个从站***多可以交换244个输入字节(Input)和244个输出字节(Output),与所有从站总共***多交换2160个输入字节和2160个输出字节。CP342-5 作为从站时,与主站***多能够交换240个输入字节和240个输出字节。CP342-5 可以***多连接16个操作面板(OP)以及***多创建16个S7 Connnection。
如何实现在从站断电、通讯失败或从站通讯口损坏等现象出
现时,主站能够不停机?
需要在您的STEP7项目中插入相应组织块。插入这些组织块时,不需要编程内容,当从站断电、通讯失败等现象出现时,主站只报总线故障,但不停机。这样,无论从站先上电,还是主站先上电,系统都能正常运行:
在S7-300中加入OB82、OB86、OB122;在S7-400中加入OB82~OB87、OB122;
CP342-5连接上位机软件或操作面板时应该选择什么工作模
式?
如果您只是用CP342-5连接上位机软件或操作面板(OP),这时通讯采用的是S7协议,那么建议您选择No DP模式,并且不需要调用FC1(DP_SEND)和FC2(DP_RECV)功能块,它们只是在PROFIBUS DP通讯时才使用;
为什么系统上电后,即使CP342-5开关已经拨至Run,但始
终处于STOP状态?
应当检查STEP7程序和组态是否正确(删除程序,只下载硬件组态)、检查CP342-5连接的24V电源线是否正常、M端是否与CPU的M端短接、通讯电缆连接是否正确(确认通讯电缆未内部短路),CP的firmware是否正确。如果您确认可以排除以上原因,那么可能您的CP342-5已经损坏,请更换;
1.在STEP7中生成一个新的项目,并插入一个S7-300站。
2.在硬件组态窗口中选择一个S7300的导轨以及相应的CPU。
3.硬件组态窗口中,在路径 "SIMATIC 300 > CP 300 > PROFIBUS > CP342-5" 选中于您订货号和版本号对应的CP342-5,插入到S7300站对应的槽位中,注意如果您购买的是Version5.1,而组态中只能够找到Version5.0,您可以选用Version5.1替代Version5.0.。
4.在插入CP342-5的过程中,会弹出一个PROFIBUS属性窗口,请点击”New…”按钮,创建一个PROFIBUS网络PROFIBUS(1) ,并设定CP342-5作为从站的站地址为3。
5.双击CP342-5,打开CP342-5的属性窗口,在"Operating Mode" 标签页下选择"DP Slave" 选项,此时会弹出一个警示窗口,告知您如果要用CP342-5实现CPU和 PROFIBUS从站的通讯,必须调用FC1(DP_SEND)和FC2(DP_RECV)功能块,实现CPU与CP342-5之间的数据交换,而CP342-5与PROFIBUS的数据交换是自动完成的,不用编程。FC3和FC4用于诊断和通讯功能的控制,一般不用调用。
6.点击OK ,存盘编译。
1.在STEP7的SIMATIC Manager窗口中在插入一个S7300站;
2.重复以上组态从站步骤的2-4步,注意插入CP342-5时,不能点击”new…”按钮,而直接用鼠标选中以上创建的PROFIBUS(1)网络,点击OK;
在"Operating Mode"标签页中选择"DP Master"选项;
采用CP342-5的DP通讯口与采用CPU集成的DP通讯口进行
通讯有什么不同,这两种通讯口功能有什么不同?
可以通过CPU集成的DP通讯口或CP443-5模板的DP通讯口,调用Load/Transfer指令(语句表编程,如图2)、Mov指令(梯形图编程)或系统功能块SFC14/15访问从站上的I/O数据;
如果您使用342-5模块的DP通讯口进行通讯,那么您就不能使用Load/Transfer指令(语句表编程)、Mov指令(梯形图编程)直接访问PROFIBUS从站的I/O数据。采用CP342进行PROFIBUS通讯包括两个步骤:
1.CPU将数据传输到CP通讯卡的数据寄存器当中;
2.数据从CP342-5的数据寄存器当中写到PROFIBUS从站的Output数据区(反过来就是CPU读取从站Input数据的过程);CP342-5与从站的Input/Output数据区的通讯过程是自动进行的,但是您还必须自己手动的调用功能块FC1(”SEND”)和FC2 (”RECV”),完成CP342-5与CPU之间的数据交换。
功能块DP_SEND、DP_RECV"的返回值代表什么意思,如何理解?
"DP_SEND"功能块包括有"DONE","ERROR" 和 "STATUS"三个参数,用来指示数据传输的状态和成功与否。"DP_RECV"功能块包括有"NDR", "ERROR", "STATUS" 和 "DPSTATUS"四个参数,用来指示数据传输的状态和成功与否。您可以定义相应的数据地址区,存放这些返回值,分析返回的值的意思,当Error=False,STATUS=0,DONE=True,NDR=True时,说明CPU与CP342-5之间的数据交换成功进行。
DP从站,CP模板以及CPU之间的数据通讯过程是如何进行的?
使用CP342-5模块,无论调用"DP_SEND" 功能块还是"DP_RECV" 功能块,您都不能直接读写某个PROFIBUS从站的I/O数据。CP342-5模块有一个内部的Input和Output存储区 ,用来存放所有PROFIBUS从站的的I/O数据,较新版本的CP342-5模板内部存储器的Input和Output区分别为2160个字节,Output区的数据循环写到从站的输出通道上,循环读出从站输入通道的数值存放在Input区,整个过程是CP342-5与PROFIBUS从站之间自动协调完成的,您不需编写程序。您可以在PLC的用户程序中调用"DP_SEND"和"DP_RECV"功能块,读写CP342-5这个内部的存储器。
通过CP342-5,如何实现对PROFIBUS网络和站点的诊断功能?
用功能块"DP_DIAG" (FC 3) 可以在程序中对cp模块进行诊断和分析,可以通过job类型如DP 诊断列表,诊断单个dp状态,读取dp从站数据,读取cp或cpu的操作模式,读取从站状态等等。
为什么当CP342-5模块作为PROFIBUS DP主站,而ET200(如IM151-1或IM153-2)作为从站时,CP342-5上的SF等不停闪烁?
当S7-300系统中的CP342-5作为DP主站,下挂IM153-2 模块时,IM153-2只能作为DP主站,而不是S7从站运行。可以采取通过GSD文件将ET200从站组态进你的系统。随后IM153模块可作为 DP 标准从站运行。为此,您必须将GSD文件安装到硬件目录中(通过菜单序列Tools > "Install new GSD file")。在更新了硬件目录后您会在"PROFIBUS-DP > Additional Field Devices".中发现DP从站。
有的时候您在打开某些项目中的对象时,STEP7会弹出报错窗口,错误信息为 ’*.dll’文件无法被装载,代码是257:5,
错误信息是一个或多个对象不能被显示,出现这种错误的原因是您没有安装与要打开对象相关的软件包。
如果想通过上位或触摸屏对PLC中S5TIME类型的参数进行设定,有什么方法?
1.从上位机写整型数INT或实数REAL到PLC,首先该数值需包含以毫秒为单位的时间值,在写入PLC的数据存储区后,利用ITD(Integer to Double Integer)或RND(Real to Double Integer with Rounding Off)将该值转换为双整形,然后将该值写到类型为TIME的变量里,在程序中调用FC40,将TIME转换成S5TIME即可。
2.从上位机写WORD到PLC,首先该数值需包含以某时基为单位的时间值,在写入PLC的数据存储区后,用Word Logic下的WOR_W指令将该值与其时基相或,再利用MOVE指令将得到的数值写入S5TIME类型的变量中。
3.如果使用WinCC作为上位软件,或上位软件支持32位带符号浮点数,可以从上位写32位带符号浮点数到PLC中定义为TIME的变量,然后在程序中调用FC40,将TIME转换成S5TIME即可。
SFC 0 "SET_CLK" 设置CPU时钟
SFC 1 "READ_CLK" 读出CPU时钟
FC 3 "D_TOD_DT" 从DATE_AND_TIME 中取出DATE。
FC 6 "DT_DATE" 从DATE_AND_TIME 中取出the day of the week,即星期几
FC 7 "DT_DAY" 从DATE_AND_TIME 中取出时间
FC 8 "DT_TOD"
FC33用于S5TIME到TIME的转换
FC40用于TIME到S5TIME的转换
硬件要求:
使用普通的S7-300导轨和U型总线连接器是不能实现热插拔功能的,您必须购买有源总线底板,才能实现该功能。另外,您在配置时,必须使用MLFB 6ES7 153-1AA02-0XB0版本以上的接口模块,因为它支持DP协议的DPV1版本,而MLFB IM153-1AA00-0XB0模块是不支持该功能的。目前您能够购买到的IM153接口模块都支持热插拔,只有2-3年以前的IM153接口模块不支持热插拔。
软件要求:您必须在STEP7 5.1版本以上进行配置;
如果您采用S7-400 CPU或S7-400 CP作为DP主站,那么您可以直接在IM153的属性窗口的"Operating Parameters"标签页里配置热插拔功能。
1.在STEP7的硬件组态窗口的PROFIBUS DP目录中选择相应IM153模块,可以看出该模块支持“module exchange in opration”(热插拔);
2.将IM153模块拖到PROFIBUS总线上;
3.选择I/O模块,插入到ET200M站的各个槽位中;
4.双击ET200M站,打开属性窗口,选中“replac modules during operation“(热插拔)选项;
5.属性窗口中提供了ET200M站热插拔功能所需的有源总线导轨的订货号;
6.属性窗口中提供了该型号IM153,插入的I/O模块对应使用的有源总线底板的订货号;
除了以上的硬件组态之外,还要向S7-400中下载OB82、OB83、OB84、OB85、OB86、OB87、OB121、OB122等组织块。当ET200M从站上进行模块的热插拔时,中断组织块OB83 ,OB85,OB122被调用。
如果您采用S7-300 CPU 或 CP 342-5作为DP主站,那么您只能够通过安装GSD文件的方式将IM153模块组态成DP从站,并双击IM153,打开它的属性窗口,进行设置。否则您在STEP7的硬件组态窗口中直接将PROFIBUS DP目录ET200M文件夹下IM153模块挂在PROFIBUS总线上。
您能够通过STEP7软件的KNOW_HOW_PROTECT功能实现对您程序代码的加密保护。
如果您双击鼠标打开经过加密的程序块时,您只能看到该程序块的接口数据(即IN, OUT 和 IN/OUT 等类型的参数)和注释信息,而程序块中的代码及代码的注释,临时/静态变量是不能被看到的。同时您也无法对加密保护的程序块做出任何改动。
如何实现程序块保护:
1.打开程序编辑窗口LAD/FBD/STL;
2.将要进行加密保护的程序块生成转换为源代码文件(通过选择菜单 File— ;Generate source 生成);
3.在LAD/FBD/STL 窗口中关闭您的程序块,并在SIMATICManager项目管理窗口的source文件夹中打开上一步所生成的source文件;
4.在程序块的声明部分,TITLE行下面的一行中输入”KNOW_HOW_PROTECT”;
5.存盘并编译该source文件(选择菜单FileàSave,FileàCompile);
6.现在就完成了您程序块的加密保护.