编程问题网站题

(5条)09-25? &
(5条)09-25? &
(6条)09-24? &
(4条)09-23? &
(4条)09-23? &
(5条)09-22? &
(5条)09-22? &
(8条)09-21? &
(5条)09-21? &
(4条)09-20? &
(13条)09-09? &
(9条)09-09? &
(5条)09-08? &
(4条)09-08? &
(4条)09-08
编程中国 版权所有
Copyright (C)2004 - 2016, BCCN.NET, Inc. All Rights Reserved一个编程问题_百度知道每日登录:+1西币&+1积分
&下次自动登录
绑定第三方账号登录 & & &
扫描二维码登录支持中心移动端
获取动态密码
| 新手必读 |
You are here:
西门子300编程问题
热点活动:
西门子300编程问题 - 已解决问题
本人接触plc编程时间不长,对编程中有些问题不大会处理,也就是编程经验不丰富,我按照客户的要求做好程序,不过在程序中对于急停和出现误操作的处理很头疼。举个例子,我按下急停按钮后设备停止了,当我复位急停按钮后设备并没有回到初始状态,而是相应的输出又有了,很是头疼,对于误操作也是,当我从自动换到手动时,自动停止了,但是再换回去自动又从原来的地方动作了。我是想按下急停或者误操作时,设备处于初始状态。求大师们给点经验,谢谢了。
问题补充:急停控制也对相应的输出复位了,我自己感觉有两方面的原因,一个是我感觉我的急停没有启到作用,点动,手动,自动都是做成fb块在fc中调用,然后主程序ob1调用fc,我一直感觉还没等到急停起作用程序就不扫描子程序了,所以达不到复位的作用。还有就是之前没注意断电保持的中间寄存器M,在硬件组态cpu设置中默认的一些字节是断电保持的。应该也是有影响吧。
产品版区:
悬赏分:20 | 解决时间: 12:59:20 | 提问者: -
问题ID:119913
1.新手在做程序时把程序分成几个功能块,用于完成不同的功能,比如:手动块,自动块,故障块,COM块,在主程序里高调用所有的块,不要在所调用的块前面加任何逻辑处理。2.在做程序运行中》》》当前在自动运行模式》》》突然切换到手动模式,造成自动模式不能停止,卡步等情况。在手动模拟切换到》》》自动模式,造成输出点接着输出。&&&&&解决办法:(1&在手动模式里把手动模式I0.0,串如手动块里的每一个网络,编程时尽量不要用置位指令,以免后面忘记复位,用起保停最安全。采用起保停编程并在每一个网络加个I0.0这个点,随意切换都不会有什么影响了。&&&&&&&&&&&&&&&&&&&&&&&&(2&在手动模式或者自动模式里加入能流,能流相当于一个总开关(手动模式+急停+故障=能流),能流在每一个网络+起保停,这时可以随意切换了。&&&&&&&&&&&&&&&&&&&&&&&&&&(3&&加我QQ,我传一个程序给你,你马上就明白了修改:列子:I0.0手动&&&I0.1自动&&&I0.2故障&&I0.3急停&&&手动FC1&&&自动FC2&&&故障FC3&&&在手动与自动块做一个总的能流:I0.0+I0.2+I0.3=M200.0(允许运行信号)条件达到,才能运行FC1里的程序然后在每一个网络里加上M200.0,这样子怎么切换都是能正常。
图片说明:1,&&2,&&3,&&4,&&
学长&nbsp&nbsp第2级&
填写您的评论...
提问者对于答案的评价:给你吧,打了这么多字,不容易。
更多相关问题
本版精华问答
等待您来回答
作者/最新回复
最后回复时间
--------首先你描述的不够清楚&有点语无伦次的感觉&---------你这是什么设备&动作流程是怎么个顺序&一一说清楚
- 中级工程师&nbsp&nbsp第10级
& 20:42:41
这说明你的程序存在问题。你可以加上复位的程序,当按下急停或者误操作,即对相应的输出点复位,使它们停止输出。但最好看到你的程序,这样能更有针对性的解释。补充:有无影响关键在你的程序是怎样编写的,可能你的程序存在一些问题。把急停串到最简单的起保停程序中就不会出现问题的。
- 资深顾问&nbsp&nbsp第13级
& 20:44:04
你的编程思路有问题,急停不是不扫描程序,而是把相应的输出关闭,如果要恢复初始状态还要置位复位相关的位。手动自动切换你需要做一个跟随功能即自动控制时手动输出跟踪自动输出值,反之自动输出跟踪手动输出值,这样在切换的时候就不会乱动了。
- 高级顾问&nbsp&nbsp第14级
& 07:39:30
在急停和手动信号的上升沿时做个置位点信号,用这个点把会通的回路断开,再把启动信号也复位掉&延时1s再把置位信号复位
- 资深学长&nbsp&nbsp第3级
& 00:41:21
上一页1下一页&
扫描打开手机版
20秒帮我们优化支持中心!
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!
欢迎您来到找答案
在“找答案”,已有超过7万个被解决的技术问题供您参考!
西门子技术专家亲自把关!常规的,简单的问题,在这里您都可以找到答案!
遇到了问题,就来“找答案”提问。
点击搜索框右侧的提问按钮,只需2步就能成功提交问题!分分钟就有无数大侠前来帮你。
在“找答案”每天都有大量的新问题。
别犹豫,只需要点击问题下方的“我要回答”就能参与。答题不光有积分相送,也会给您积攒大侠人气。
“找答案”定期开展各种有奖活动期待您的参与。
更有机会参加西门子高端用户峰会。领略西门子的博大精深!问题处理(21)
ofstream.flush没有立即输出到文件
在对客户端程序进行分析时,需要对每步操作服务器响应的日志进行分析。
默认情况下,os会缓存而不是立即输出文件.需要强制flush到文件.
本以为flush可以满足:
log_ostream_-&flush();
测试发现并没有立即输出.根据搜索到的资料,尝试了以下各种方法都没有达到预期效果。
&//&(*log_ostream_)&&std::
&&//log_ostream_-&rdbuf()-&pubsetbuf(0,0);
& //&&log_ostream_-&flush();
&//&log_ostream_-&rdbuf()-&sync();&&
最后在这里找到了官方的解释:
分析ofstream,basic_filebuf的代码,
&virtual int __CLR_OR_THIS_CALL sync()
&&{&// synchronize C stream with external file
&&return (_Myfile == 0
&&&|| _Traits::eq_int_type(_Traits::eof(), overflow())
&&&|| 0 &= fflush(_Myfile) ? 0 : -1);
&_Myt *close()
&&{&// close the C stream
&&_Myt *_Ans =
&&if (_Myfile == 0)
&&&_Ans = 0;
&&&{&// put any homing sequence and close file
&&&if (!_Endwrite())
&&&&_Ans = 0;
&&&if (fclose(_Myfile) != 0)
&&&&_Ans = 0;
&&_Init(0, _Closefl);
&&return (_Ans);
Getting a FILE* from a std::fstream
&basic_filebuf没有提供_Myfile的访问方法.
Buffers are normally maintained by the operating system, which determines the optimal time to write the data automatically to disk: when a buffer is full, when a stream is closed, or when a program terminates normally without closing the stream. The commit-to-disk
feature of the run-time library lets you ensure that critical data is written directly to disk rather than to the operating-system buffers. Without rewriting an existing program, you can enable this feature by linking the program's object files with COMMODE.OBJ.
In the resulting executable file, calls to _flushall write the contents of all buffers to disk. Only _flushall and fflush are affected by COMMODE.OBJ.
程序连接选项Linker|Input|Additional Dependencies增加:COMMODE.OBJ&&
问题得以解决.
事件队列阻塞问题
事件队列是一个单线程任务,如果事件处理耗时长(如数据库操作,文件操作)可能导致队列阻塞,进而影响到请求的处理.
事件机制常用于一个请求的后续动作,这些动作的实时性要求不高.
事件机制较定时处理更经济和有效.
修改的策略:
.把耗时的操作由另外的线程执行,事件处理者的任务就是唤醒它.从而避免主要
路径上的阻塞.
class CPOSUPlugin :
public CQQBasePlugin ,
public IEventHandler
IDeamonTask *data_sync_task_;
///& 数据同步任务
int CPOSUPlugin::Activate() {
parent::Activate();
data_sync_task_ = deamon_mgr_-&add(deamon_thr_proc_Syncdata,&CPOSUPlugin::OnSyncdataTimerer&,this);
int CPOSUPlugin::OnDataSyncChangedOrderDoc() {
SyncTimeoutdata();
int CPOSUPlugin::OnDataSyncChangedOrderDoc() {
data_sync_task_-&SyncTimeoutdata();
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:122394次
积分:2994
积分:2994
排名:第7959名
原创:192篇
(2)(1)(1)(2)(3)(10)(1)(2)(8)(10)(2)(1)(10)(9)(1)(3)(3)(1)(5)(7)(5)(5)(8)(11)(3)(4)(3)(10)(1)(6)(2)(3)(4)(1)(2)(2)(1)(3)(1)(3)(5)(2)(4)(2)(1)(2)(1)(5)(1)(1)(1)(1)(6)(1)

我要回帖

更多关于 编程问题网站 的文章

 

随机推荐