电梯模拟 - Matlab

时间:2015-11-29 01:18:08

标签: matlab simulation

我正在做一个关于电梯模拟的项目并遇到了这个问题。我有一个listbox用户可以选择他们想去的楼层,但我不知道如何让电梯的门以正确的顺序打开。

例如,第一个人想要去一楼而第二个人想要去三楼。他们首先选择1然后选择3,但是当我这样做时,Matlab总是首先打开3楼,然后打开1楼。

我正在考虑将列表框的值存储在矩阵中,然后使用for循环按照其楼层以正确的顺序打开电梯门。

这是我项目的GUI。 GUI

listbox1_Callback下。我试图这样做,但我的数组只有一个元素。

A = [];
listValue = get(handles.listbox1,'Value');
A = [A,listValue];

我希望A保存一系列值,以便我可以将foor循环应用于A并逐个元素地执行。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

例如,假设您有一个名为open的函数,它接受一个参数,即楼层号,并打开该楼层的电梯门。要遍历每个选定的楼层,请执行以下操作:

handles.listbox1 = uicontrol('Style', 'listbox', ...
   'String', [1 2 3 4], ...
   'Position', [10 10 40 100], ...
   'Max', 2);
selectedFloor = get(handles.listbox1, 'Value');
for ii = 1:length(selectedFloor)
    open(selectedFloor(ii));
end

答案 1 :(得分:-1)

您的项目可能已结束,但我仍然会做出贡献。不是关于编程代码本身,而是关于电梯原理,这可能有助于您和其他人在下次正确构思系统。

当驾驶室处于或非常靠近(通常<8厘米)该地板时,电梯门仅在特定楼层打开。原因很简单:打开车门的电机和机构在驾驶室上。登机门实际上是通过驾驶室门移动的,使用带有溜冰鞋和捡拾辊的离合器。因此,您在程序中必须关注的是驾驶室的位置,这是一个简单的物体,从地板到地板顺序移动。

因此,当注册呼叫时,您必须将它们与驾驶室的位置进行比较。然后你决定走哪条路,向上或向下(或者只要位置已经正确就打开门)。你保持一个首选方向,直到你到达最远的电话,然后你改变方向或等待新的电话。只需在实际位置加1或减1(让每个操作之间经过几秒钟,使其看起来真实),将位置与调用数组的相应索引进行比较,然后决定停止并打开门(如果是通话存在)或继续(如果不存在)。不要忘记停在四肢,即使由于某种原因没有呼叫存在。

如果您想在混音中引入登陆电话,则必须考虑它们是上电还是下电。您在上升时仅停止呼叫,仅在停机时停止呼叫。