西门子plc指令sr写不上偶尔
1. 先检查PLC的程序是否正确,确认指令输入的位置和变量类型是否正确;
2. 检查PLC的输入和输出电路是否正常,确保指令输入的位置有足够的电压;
3. 检查PLC的系统参数是否正确,确保PLC的参数设置正确;
4. 若PLC出现偶尔写不上的情况,可以尝试更换PLC的模块,以及检查PLC的电源是否正常;
5. 如果PLC的程序内容比较复杂,可以尝试把PLC程序拆分成多个小程序,这样可以减少PLC的运行压力,提高PLC的运行稳定性。
UINT8U time = 0//设置时间为0
void YouTask(void * pdata)//函数名
{
# if OS_CRITICAL_METHGD == 3
OS_CPU_SR cpu_sr//当OS_CRITICAL_METHGD等于3时,执行这条语句
# endif
pdata = pdata//把指针保存成局部变量使用
for( )//做循环
{
if(time == 20)//时间为20时,执行OSTaskSuspend(0)
{
OSTaskSuspend(0)
}
if(time == 40)//时间为20时,执行OSTaskResume(0)
{
OSTaskResume(0)
}
time += 1//每次时间加1
if (x>50)//x大于50的时候,重置x为0,y加2
{
x = 0
y += 2
}//x小于50时,执行函数PC_DispChar
PC_DispChar(x,y,
*(char * )pdata,
DISP_BGND_BLACK+DISP_FGND_WHITE)
x += 1//执行加 *** 作,以便再次出现x大于50 的情况
OSTimeDlyHMSM(0,0,1,0)//重置 *** 作
}
}
通常以text保存(streamWriter),任何系统都可以调用,文件后缀可以自行保存为“.ini/.dat”等等,但是调用数据需要逐行string分析,从而实现数据库的基本使用性。给你个小例子:
using System.IO
private static string getConnDetail(string parameter)//gets the connection details from txt file
{
try
{
string filename = "conn.txt"
using (StreamReader sr = new StreamReader(filename))
{
string line
while ((line = sr.ReadLine()) != null)
{
//do stuff
string[] subs = line.Split(':')
if (subs[0] == parameter)
{
sr.Close()
return subs[1]
}
}
sr.Close()
return "fail"
}
}
catch (Exception ex)
{
return ex.Message
}
}
然后在同一路径下创建一个.txt文件命名conn.txt,内容:
Server:YourComputerName\SQLEXPRESS
DB:YourDBName
User:sa
Pass:pass
最后你如果想察看servername,就调用getConnDetail(“Server”)
返回string: "YourComputerName\SQLEXPRESS"
这个例子是从.txt读取数据,如果要写入数据,参考3楼的连接。也可以直接用openfile(filepath/filename,opentype)指令打开文件然后写入或者读取。 具体可以查找关键词:File.OpenText ,主要阅读与File指令相关。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)