SIEMENS西门子连云港授权代理商
为什么在FM350-1中选24V编码器,启动以后,SF灯常亮,FM350-1不能工作?
要检查一下,首先在软件组态中要选择编码器类型(为24V),再检查一下,FM350-1侧面的跳线开关,因为缺省的开关设置为5V编码器,一般用户没有设置,开机后,SF灯就会常亮。另外,还可以看看在线硬件诊断,可以看看错误产生的原因,是否模板坏了。
62: FM350-1的锁存功能是否能产生过程中断?
FM350-1的锁存功能是不能产生过程中断,但是可以产生过零中断。
FM350-1的装载值必须为零,随者锁存功能的执行(DI的上升沿开始),当前的计数值被储存到另一地址然后置为初始值零,产生过零中断,在OB40中可以读出中断并相应的锁存值。 锁存值也可以从FM350-1的硬件组态地址的前4个字节中读出。
63: 在FM350-1中,怎样触发一个比较器输出?
FM350-1中自带的输出点具有快速性、实时性,不必要经过CPU的映像区处理。输出点一般对应于比较器,首先在硬件组态中定义比较器输出类型,如:输出值为1或为脉冲输出,然后在程序中设置比较值。在FM350-1中,地址在通讯DB(UDT生成)块中为18(比较值1)、22(比较值2),类型为DINT,然后输出点28.0(DQ0)、28.1(DQ1),这样比较器就可以工作了。
64:在FM350-2中,工作号的作用是什么?
工作号是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。 但写任务不能循环写,只能分时写入。
65:如果对于4-20 mA模拟量输入模块来说,小于4 mA后转换的数字量是多少?
如果小于4ma,那么将会是输出负值,例如 -1对应的是3.9995mA,而1.185 mA 时,这个数值是-4864 (10进制)但是如果小于1.185mA,如果禁止断线检测,这个值是8000(16进制)如果有断线检测,会变成7FFF(16进制)。
66:怎样对模拟量进行标准化和非标准化?
可以使用以下功能块:
1.在块FC164中,x和y都是整数。
2. FC165中x是整数,y是实数。
3. FC166中x是实数,y是整数。
4. FC167中x和y都是实数。
67:S7系列PLC之间较经济的通讯方式是什么?
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(主循环组织块)调用接收块。
68:整个系统掉电后,为什么CPU在电源恢复后仍保持在停止状态?
整个系统由一个DP主站S7-300/400以及从站组成。而从站通过一个主开关被切断了电源。由于内部的CPU电压缓冲器,CPU 仍继续运行大约50ms到100ms。此阶段里 CPU 识别出所连接的从站的故障。如果没有编程OB86和OB122的话,CPU 就会因为这些有故障的从站而继续保留在停止状态。
69:在点到点通信中,协议 3964(R)和RK 512 之间的区别是什么?
这两个协议的主要区别在于消息报头和响应消息的不同。使用RK 512,提供有较高的数据完整性,程序 3964(R) 当传送信息数据时,程序 3964(R)将控制字符(安全层)添加到信息数据上。这些控制字符通信伙伴,检查数据是否全部接收,是否无错误。
70:当一个DP从站出故障,如何在输入的过程映像被清成“0”以前保存它们?
当一个DP从站出故障时,OB86(通过S7-300/400)被调用。可用下列方法“保存”输入的过程映像:
1. 把从站的所有输入循环地复制到一个独立的区里。
2.如果从站出问题,则 OB86 被启动。在此 OB 里你可设一个标志位来可防止进一步的循环复制操作。
3. 当从站返回总线后,你把 OB86 里的标志位复位
141:应用软件冗余当一个长度错误出现导致CPU处于STOP模式应该作些什么?
当在OB100中设置软件冗余功能块FC100时,必须注意下列情况:参数IEC_NO 的背景数据块必须至少有两个字的长度,同样应用于冗余用户程序的参数 DB_NO的数据块也必须时这样。
142:在S7程序中,有许多FC、FB块, 我怎样对其中的一些块进行保护, 而其它的块可以是开放的呢?
1) Step7中, 可以先开一块如OB1, 在"file"中选择"Generate Source"或快捷方式"Ctrl+T",弹出一个画面,填写"bbbbbb name"如"tt",然后按OK确认,就会再弹出另一个画面,左边是你的程序中所有的块,如果你需要保护哪些块, 就把这些块移到右边,如FB1、FB2等等, 然后退出所有的程序块,再进入SIMATIC Manager中。
2) 在S7 Program Sources找到文件tt,双击tt打开,在*四行中加入"Know_How_Protect", 然后编译, 无错后存盘。这样FB1、FB2就被保护住,如想去掉保护,在tt中去掉"Know_How_Protect"编译存盘即可。
注意: 千万不要丢失或删除源文件(如tt), 否则程序被保护, 用户可以另存到其它目录中,或Export Source到硬盘中,再删除源文件,这样别人只能看到未保护的块。
143:SFB41,SFB42,SFB43和FB41,FB42,FB43的区别?
SFB41(CONT_C),SFB42(CONT_S),SFB43(PULSEGEN)块和FB41(CONT_C),FB42(CONT_S),FB43(PULSEGEN)的区别: SFB41,42,43与FB41,42,43的参数设置是一样的。SFB41,42,43只能用于CPU314IFM;FB41,42,43可用于CPU313以上的CPU(除CPU314IFM),因为SFB41,42,43集成于CPU314IFM中,而在普通CPU中没有这些块。
144:如何在多例兼容功能块中找到变量地址?
在多例兼容功能块中,为块参数和静态本地数据加载与地址寄存器AR2有关的**地址。如果要在情景数据块中找到变量的**地址,则必须把域内指针(只是AR2的地址)加载到变量地址。
样例:
TAR2 //将地址寄存器加载到累加器AC1(偏移量)
UD DW#16#00FF_FFFF // 关闭区域ID
L P##variable //加载变量地址
+D // 增加偏移量和变量地址
LAR1 // 保存地址寄存器AR1中的结果
这样可在AR1中获得**地址以进行进一步处理。
当功能块作为本地实例调用时,总要使用该方法。比如,在一个功能块中创建可做为类型“FB”的静态变量的功能块。这样所调用的情景数据块的数据偏移量就存储到情景数据块中。单个实例的偏移量在AR2中。如果不调用作为本地实例的功能块,则可以结束计算。值‘ 0’就在地址寄存器中。
注意事项:如果改变程序中的地址寄存器AR2,那么也改变了变量的偏移量地址。因此就不能保证再对变量进行正确访问。在这种情况下,必须预先保存AR2,并 在对程序动作完之后将其 复位为初始状态。
样例:
TAR2 // 在累加器中加载偏移量地址
T #save // 比如,静态本地数据域 0中的变量
L DID 0 // 地址**是由DI加载的beds L AR2 // 核对
145:怎样才能访问上一函数的本地数据?
如要访问以前的本地数据(“V-e > L”数据),可以传送一自创建ANY指针或**地址到被调用的FC。如果传送的是自创建ANY指针,区域指针会指向其本地数据,而这是无意义的。> 因此“V”区域码必须置于ANY指针中。此码必须准确传送。当***地址时可由编译器完成此工作。
常规程序结构:
以ANY指针或**(地址)方式传送:
LAR1 P##target //本地定义的ANY变量初始地址
L W#16#87 //为“V”区域载入码
T LB[AR1,P#6.0] //传送到ANY变量
CALL FCxy
source1: = #target //传送自创建的ANY指针
source2: = P#L 0.0 BYTE 8 //传送完全L数据区
**寻址与通过ANY指针寻址的区别:
下图显示了**寻址与通过自创建ANY指针寻址间的区别。在这种情况下“ 87”码不传送,因此ANY指针指向其本地区域。