延安西门子PLC总代理商
- 供应商
- 浔之漫智控技术-西门子PLC代理商
- 认证
- 手机号
- 15221406036
- 经理
- 聂航
- 所在地
- 上海市松江区石湖荡镇塔汇路755弄29号1幢一层A区213室
- 更新时间
- 2024-05-08 07:10
121:如何判断电源出错,如:电池故障?
如果电源(仅s7-400)或缓冲区中的一个错误触发一个事件,则cpu操作系统访问ob81。
错误纠正后,重新访问ob81。电池故障情况下,如果电池检测中的batt.indic开关是激活的,则s7-400仅访问ob81。如果没有组态ob81,则cpu不会进入操作状态stop。如果ob81不可用,则当电源出错时,cpu仍保持运行。
122:如何诊断模拟量模板?
cpu 可以中断用户程序的执行处理诊断报警块ob 82。
在用户程序中你可以调用ob 82 中的sfc 51 或sfc 59 以从模板中获得更为详细
的诊断信息。
诊断信息在ob 82 退出之前都是一致的当ob 82 退出时将对模板作出诊断中断响
应。
123:对于小功率输入的触发器,如何避免线路损坏?
将触发器连接到sm322-8bf,如果它的1信号功率输入低于10ma(例如1ma),则可能会报告线路损坏。 不建议禁用“wirebreakage”诊断,因为这将禁用所有的诊断,并且当sm322-8bf在一定电流范围(0.5到10ma)内工作时,可能无法安全地开关。
补救措施:接一个与触发器平行的电阻,这样至少有10ma(24v ca. 2.4kohm)的电流。该电阻应该直接安放在触发器上,从而可以方便检测线路损坏。
图片:
西门子s7-300 150个问题解答之八
141:应用软件冗余当一个长度错误出现导致cpu处于stop模式应该作些什么?
当在ob100中设置软件冗余功能块fc100时,必须注意下列情况:参数iec_no的背景数据块必须至少有两个字的长度,同样应用于冗余用户程序的参数 db_no的数据块也必须时这样。
142:在s7程序中,有许多fc、fb块, 我怎样对其中的一些块进行保护, 而其它的块可以是开放的呢?
1) step7中, 可以先任意打开一块如ob1, 在"file"中选择"generatesource"或快捷方式"ctrl+t",弹出一个画面,填写"bbbbbbname"如"tt",然后按ok确认,就会再弹出另一个画面,左边是你的程序中所有的块,如果你需要保护哪些块,就把这些块移到右边,如fb1、fb2等等, 然后退出所有的程序块,再进入simatic manager中。
2) 在s7 program sources找到文件tt,双击tt打开,在第四行中加入"know_how_protect",然后编译,无错后存盘。这样fb1、fb2就被保护住,如想去掉保护,在tt中去掉"know_how_protect"编译存盘即可。
注意: 千万不要丢失或删除源文件(如tt), 否则程序被保护, 用户可以另存到其它目录中,或exportsource到硬盘中,再删除源文件,这样别人只能看到未保护的块。
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 https://将地址寄存器加载到累加器ac1(偏移量)
ud dw#16#00ff_ffff https:// 关闭区域id
l p##variable https://加载变量地址
+d https:// 增加偏移量和变量地址
lar1 https:// 保存地址寄存器ar1中的结果
这样可在ar1中获得地址以进行进一步处理。
当功能块作为本地实例调用时,总要使用该方法。比如,在一个功能块中创建可做为类型“fb”的静态变量的功能块。这样所调用的情景数据块的数据偏移量就存储到情景数据块中。单个实例的偏移量在ar2中。如果不调用作为本地实例的功能块,则可以结束计算。值‘0’就在地址寄存器中。
注意事项:如果改变程序中的地址寄存器ar2,那么也改变了变量的偏移量地址。因此就不能保证再对变量进行正确访问。在这种情况下,必须预先保存ar2,并在对程序动作完之后将其 复位为初始状态。
样例:
tar2 https:// 在累加器中加载偏移量地址
t #save https:// 比如,静态本地数据域 0中的变量
l did 0 https:// 地址是由di加载的beds l ar2 https:// 核对
145:怎样才能访问上一函数的本地数据?
如要访问以前的本地数据(“v-e >l”数据),可以传送一自创建any指针或地址到被调用的fc。如果传送的是自创建any指针,区域指针会指向其本地数据,而这是无意义的。>因此“v”区域码必须置于any指针中。此码必须准确传送。当指定地址时可由编译器完成此工作。
常规程序结构:
以any指针或(地址)方式传送:
lar1 p##target https://本地定义的any变量初始地址
l w#16#87 https://为“v”区域载入码
t lb[ar1,p#6.0] https://传送到any变量
call fcxy
source1: = #target https://传送自创建的any指针
source2: = p#l 0.0 byte 8 https://传送完全l数据区
寻址与通过any指针寻址的区别:
下图显示了寻址与通过自创建any指针寻址间的区别。在这种情况下“ 87”码不传送,因此any指针指向其本地区域。
146:怎样在db内进行间接寻址?
请参照:
在db内进行间接寻址例子
147:下面是一个在step7软件中实现简单指针寻址的例子程序,您可以参考它的结构实现您的指针寻址功能?
siemens指针寻址例子_cpu315
148:地址和符号寻址的定义和区别是什么?
在step7程序中要用到i/o信号、位寄存器、计数器、定时器、数据块及功能块。在程序中可以采用直接地址,或者更便于读程序的符号寻址,例如motor_a_on,或采用你的公司或行业常用的代码。这样在你的用户程序中就可以通过符号来寻址。
地址:地址由地址标识符和存储器的位置组成,例如 q1.0,i1.1, m2.0, fb21等。
符号地址 :如果为地址指定一个符号名,程序会更便于阅读和查错。
step 7可以自动将符号名翻译成所需的地址。如果要用符号名存取array、struct、数据块、局部数据、逻辑块、以及用户自定义数据类型,必须首先为地址指定一个符号名。
例如,可以为q0.0指定一个符号名motor_on,然后在程序中将motor_on作为一个地址使用。使用符号地址更容易将您的过程控制项目中的元件与程序中的元件相对应。
注意:在符号名中不允许使用两个连续的下划线,例如motor__on。
编程支持 :lad、fbd、stl中地址、参数、块名可用地址或符号表示。
用菜单命令view > display > symbolicrepresentation,可以切换地址和符号地址
为了使用符号地址编程更加容易,可以同时显示地址和符号名。使用菜单命令 view > display > symbolinbbbbation来激活。这就意味着stl语句的注释包含了更多的信息。不能在该界面下进行修改,只能在符号表(symboltable)或变量声明表(variable declaration table)中进行修改。
149:s7-300/400系统存储区域共有多少种?
s7 cpu的系统存储区域分为下表中列出的地址区域。在程序中可以根据相应的地址直接读取数据。
150:如何把一个date_and_time变量转换为bbbbbb变量?
为了以日期/时间字符串(bbbbbb)形式显示date_and_time变量,必须date_and_time变量的专用字节转换为相应的char字符。
读取date_and_time变量的专用字节并从这两位数所在ascii码中创建专用位。将确定了的char字符存储在字符串的期望位置。
示例:
l 字节年
sld 12
srw 4
srd 8
l w#16#3030
+ i
t 数字字符年
也可以用相反顺序将一个bbbbbb格式的日期/时间字符串转换为一个date_and_time变量
延安西门子plc总代理商
101:我如何做到对自己的程序块进行加密保护?
您能够通过step7软件的know_how_protect功能实现对您程序代码的加密保护。
如果您双击鼠标打开经过加密的程序块时,您只能看到该程序块的接口数据(即in,out 和 in/out 等类型的参数)和注释信息,而程序块中的代码及代码的注释,临时/静态变量是不能被看到的。同时您也无法对加密保护的程序块做出任何改动。
如何实现程序块保护:
1.打开程序编辑窗口lad/fbd/stl;
2.将要进行加密保护的程序块生成转换为源代码文件(通过选择菜单 file—>generate source生成);
3.在lad/fbd/stl窗口中关闭您的程序块,并在simatic
manager项目管理窗口的source文件夹中打开上一步所生成的source文件;
4.在程序块的声明部分,title行下面的一行中输入”know_how_protect”;
5.存盘并编译该source文件(选择菜单fileàsave,fileàcompile); plc资料网
6.现在就完成了您程序块的加密保护;
102:我如何做到对自己的程序块进行jie密?
取消对程序块的加密保护
1. 打开程序块的source源文件;
2. 删除文件中的know_how_protect;
3. 存盘并编译该source文件;
现在程序块的加密保护已经取消。
注意: 如果没有 stlsource 源文件,您是无法对已经加密的程序块进行编辑的;
103:在冗余电源配置中,电源模块掉电,调用那个ob可以防止cpu停机?
通过在程序中添加ob83可以防止cpu停机而添加ob81不能防止cpu停机。
通常我们很容易以为ob81就是处理所有电源故障的ob块,但对于冗余电源配置中,某个电源模块掉电故障,实际上cpu当作模块插拔故障来处理,因此需调用ob83。 plc资料网
104:wincc作为modbus主站,进行浮点数读取时数据不正确是什么原因?
wincc作为modbus主站,进行浮点数读取时,tag的类型应当选为浮点数32位,注意地址偏移为32的整数倍+1(即33、65、97),如果采用选用bbbbb bits/output bits方式读写(function code01,02),在plc当中应当将一个字的高低8位进行对调。如果选用bbbbb words/outputwords方式读写(function code 03,04),在plc当中将一个双字的高低16位进行对调,s7300modbus程序块的浮点数处理存在误差,大致在0.5%左右。
105:cp341 modibus通讯时,modibus功能码如何设定?
function code 01,05,15 对应m,q,t,c等数据区,可读可写,具体的字节范围由您在modbus从站组态时设定。
function code02对应m,i数据区,只读,具体的字节范围由您在modbus从站组态时设定。
function code 03,06,16 对应db区,可读可写,在modbus从站组态时设定对应的db块。
function code 04对应db区,只读,在modbus从站组态时设定对应的db块。
106: cp34x的通讯连接电缆中,自己制作电缆应该注意哪些?
如果你使用自己制作的电缆,那么必须使用带屏蔽外壳的d型接头,屏蔽线应当和接头的外壳连接,禁止将电缆的屏蔽层和gnd连接,否则会造成通讯接口的损坏,请注意rs232不支持热插拔,所以一定要断电后在插拔通讯电缆;
107:在用cp340,cp341与第三方产品通讯时(如pc机,用vb,vc读数据)怎样识别联线是否是好的?
在用cp340,cp341与pc机通讯时,常常读不出数据,这样有两个方面原因。
其一,在plc侧程序是否正确。用上升沿触发p_send,可以看见txd灯闪,这样可以判断plc侧程序没问题;
其二,pc侧vb,vc程序的问题及电缆线的联接好坏,无从知道,如果联线没问题,就可以集中精力在pc侧找原因,判定联线是否接好,显得非常重要,有一个小方法可以测出。在plc侧修改cp340用ascii方式传送,在发送db块中写几个字符形式的数据(chat如'1','2','a'等)并间隔触发p_send功能块。
在pc侧修改串口参数与plc一致,如波特率,数据长度,停止位,奇偶校验,无握手信号等。在bbbbbbs下附件中打开"hyperterminal"建立一个直接到串口的连接,这样就可以读到从plc中发送的数据如‘12a’等。同样用"send textfile"的功能,把一些字符送到plc。这样如果联接电缆是好的,那么可以简单地判断问题是出在哪里。
108:如何使用cp341模板实现modbus主站或从站通讯,我应当定购那些产品?
1)cp341 模块: 6es7 341-1xh01-0ae0 (x:= a:rs232; x:= b: tty; x:= c: rs422/485)
2)**(modbus master): 6es7870-1aa01-0ya0
或者**(modbus slave): 6es7 870-1ab01-0ya0
109:每当断电重启后,cp341模板和调制解调器(如sabbb的modem)之间的通讯出错是什么原因?
这是因为 dtr 、 rts信号默认为0造成的,可以在ob1中调用fc6 (v24_set).参数rts 和 dtr 设置为"true".
110:配置"cp 340 rs232c"打印工作应注意什么?
调用功能块fb4"p_print"打印字符信息。功能块"p_print"传送信息给通讯处理器cp340,cp340发送信息给打印机把信息打印出来。为了打印这些信息必须知道参数"p_print","pointerdb","variables db"和"bbbbat bbbbbb"的相对关系。
111:cp 341 / cp 441-2 需要多少许可证(license)?
在任何情况下,每一个modbus站都需要一个单独的许可证。6es7870-1aa01-0ya0包含软件cd,文档(pdf文件)和硬件狗。如果在同一个站使用几个cp341或cp441通讯处理器,则每个cp都需要一个modbus许可证副本(copylicense),即不带手册和软件的modbus dongle,只有一个硬件狗,订货号为6es7870-1aa01-0ya1。 plc资料网
注意事项:
对于有两个接口的 cp441-2,仅需要一个许可证,并且每个接口都可以使用任何协议。
112:关于cp34x串行通讯中的起始位、数据位、校验位、停止位的说明?
cp34x通讯模板与其他设备进行通讯时,串口传输的是一个10位或11位的数据帧,在模块的bbbbbeters属性窗口中您可以设置数据帧的格式,对这个10或11位组成的数据帧的组成遵循以下规则:
帧的位必须是起始位,始终为1,不能修改;
起始位之后是7-8位数据位,由用户收发的数据组成;
数据位之后是校验位,odd奇校验,even偶校验,any不校验但校验位为0,none无校验位;
校验位之后是停止位,可以设为1-2个位,始终为1,不能修改;
113:如何通过单向通信从s7-300 / 400访问s7-200上的数据?
通过mpi,从带有x_put / x_get的s7-300 / 400 可以访问几个s7-200cpu。在这种情况下,g s7-300 / 400 是主站,s7-200 是从站。
对于cpu22x系列的s7-200 cpu,可以在19,2 kbd 和 187,5kbd下工作。从某个固件状态起,cpu21x系列的s7-200 cpu只能控制波特率19,2 kbd。
114:使用通讯处理器(cp340, cp341, cp441-2, cp441-1)时对于协议 3964(r) 和rk512 可以使用 2 线和 4 线模式吗?
在点对点通讯中,在使用上述的通讯处理器时,只能在 4 线模式中执行协议 3964(r) 和rk512.
115:当传输字符串或ascii字符应注意什么?
当传送字符串必须确认高为254字符。一个bbbbbb(characterbbbbbb)的数据格式大256字符,包括254个字符,大的字符长度在字符串的字节中定义,实际长度在第二个字节中定义,接下来的是字符ascii格式。
当传送字符串数据时,指针必须指向用户数据的位而不是字符串的个位。
116:通过profibus-dp使用sfc 58/59或者 sfb52/53进行通信时,存在通信限制吗?
当使用写操作标签和读操作标签(sfc 58/59或者sfb52/53)时,存在根据cpu而定的对活动工作的限制:
cpu 31x-2dp: 每个dp链上允许同时进行4个写操作和4个读操作。
cpu 317, cpu 318-2: 每个dp链上允许同时进行8个写操作和8个读操作。
cpu 41x-2dp: 每个 dp链上允许同时进行8个写操作和8个读操作。
在外部链上,每个sfc/sfb同时进行的写操作和读操作的数目总共不能超过32。因此,每个cpu和sfc/sfb上可以同时进行多40个(内部链上8个+ 外部链上32个)作业。 plc
如果在profibusnet上运行几个通信伙伴,请确保不要激活比指示值更多的作业。一个sfc/sfb可能持续几个cpu循环周期.
117:mpi/dp接口的分配如何定义?
118:可以用模拟输入模块sm 331-7nf00进行参数设置的大干扰频率是多少?
通过硬件配置,可以设置参数为400hz的大干扰频率。通过特殊的滤波器可以得到这个数值。
小的有效综合时间是10ms——这样就可抑制100hz的干扰频率。模块的小基本执行时间(释放所有通路)是140ms.
119:关于机架故障,在编程ob86时需要注意哪些事项?
只要检测出机架故障,操作系统就会调用ob86,例如:报告机架故障(例如:缺少im或im故障导致连接电缆中断),机架的分布式电源故障, 在总线系统profibus-dp的主站系统中,dp从站发生故障。
在s7-300和s7-400中处理故障的方法不同:
在s7-300中,当中央机架出现故障时,不调用ob 86;只有分布式机架发生故障才调用它。
在s7-400中,非分布式或分布式机架出现故障的情况下,均调用ob 86。
120:关于300的硬件安装配置应该注意什么?
通常一套s7-300plc系统有一个主机架,安装有cpu的机架称为主机架,当主机架上的i/o模块(多8块)上的控制点数不够时,可以再增加1-3个扩展机架,每个扩展机架多可安装8个i/o模块,装在4到11槽,3个扩展机架多安装24个i/o模块。
在使用扩展机架时,需要机架(rack),电源模块(ps),接口模块(im),连接电缆368,s7-300的模块(信号模块、通讯模块、功能模块等)。
s7-300的安装机架是一种导轨。你可以使用该导轨,安装s7-300系统的所有模板。s7-300既可以水平安装,也可以垂直安装。要注意其允许的环境温度为:
垂直安装:0 至 40°c、水平安装:0 至 60°c、 cpu和电源必须安装在左侧或底部
121:如何判断电源出错,如:电池故障?
如果电源(仅s7-400)或缓冲区中的一个错误触发一个事件,则cpu操作系统访问ob81。
错误纠正后,重新访问ob81。电池故障情况下,如果电池检测中的batt.indic开关是激活的,则s7-400仅访问ob81。如果没有组态ob81,则cpu不会进入操作状态stop。如果ob81不可用,则当电源出错时,cpu仍保持运行。
122:如何诊断模拟量模板?
cpu 可以中断用户程序的执行处理诊断报警块ob 82。
在用户程序中你可以调用ob 82 中的sfc 51 或sfc 59 以从模板中获得更为详细
的诊断信息。
诊断信息在ob 82 退出之前都是一致的当ob 82 退出时将对模板作出诊断中断响
应。
123:对于小功率输入的触发器,如何避免线路损坏?
将触发器连接到sm322-8bf,如果它的1信号功率输入低于10ma(例如1ma),则可能会报告线路损坏。 不建议禁用“wirebreakage”诊断,因为这将禁用所有的诊断,并且当sm322-8bf在一定电流范围(0.5到10ma)内工作时,可能无法安全地开关。
补救措施:接一个与触发器平行的电阻,这样至少有10ma(24v ca. 2.4kohm)的电流。该电阻应该直接安放在触发器上,从而可以方便检测线路损坏。
语句l p##test首先将地址装载到accu1,然后通过lar1语句装载到地址寄存器ar1中(可能是lar1p##test的简化格式)。通过寄存器间接寻址将any指针(10 字节长)中的地址信息读出:
代码 注释
0 l w[ar1,p#0.0] 读出当前accu1中参数数据类型的代码。
2 l w[ar1,p#2.0]读出accu1中的重复因数。重复因数表明通过参数类型any传递的数据类型的大小。
4 l w[ar1,p#4.0] 读数据块的号或者从any指针中读出“0”(这个对应于any指针的第 4 到第 5字节)。
6 l d[ar1, p#6.0] 将区域指针读入 accu1。
每次读地址寄存器ar1之后,数据被保存或者缓存(如t lw0)在临时变量“test2”中(any指针)。按照network 1中的语句顺序,传送到功能块fb1的any指针被复制到临时变量“test2”中。
137:怎样通过交叉区域寄存器间接寻址访问功能块的本地数据或者功能?
这里必须预先定义本地数据。您可以使用下列语句访问fb或fc的本地数据:
对于存储器间接指针寻址,本地变量必须声明为临时变量(temp):
l p##lokalvariable
lar1
l w[ar1,p#x.x]
此处不能使用变量类型“bbbbb”、“output”和“in_out”,将被语法检查视为非法。
138:怎样编程间接访问一个array类型变量的元素?
一个位、字节或者字符域的尺寸是按照字节限制排列的——在所有其它情况下是按照字对齐的。表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]。
139:step 7 以哪种格式存储pointer参数类型?
step 7以 6个字节保存pointer参数。表4-1显示了用于保存pointer参数类型的内存区域以及每个字节中保存的数据。ipointer参数类型保存了下列信息:
图片: